# 【BUG/建议】排班目标干员不可派遣时无限重试，建议自动降级补位

**URL:** <https://forum.zhaozuohong.vip/t/topic/117>\
**Category:** 基建\
**Created:** [2026 年10 月 9 日 17:39 UTC](https://forum.zhaozuohong.vip/t/topic/117 "2026-10-09T17:39:48Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

作者： ![TianTian](https://forum.zhaozuohong.vip/letter_avatar_proxy/v4/letter/t/ba8739/32.png) [@TianTian](https://forum.zhaozuohong.vip/u/TianTian)\
发布日期： [2026 年10 月 9 日 17:39 UTC](https://forum.zhaozuohong.vip/t/topic/117/1 "2026-10-09T17:39:48Z")

</div>

## 问题概述

当排班目标干员因训练室专精等原因暂时不可派遣、因此不出现在进驻选人列表中时，Mower-NG 会反复执行相同的选人计划，无法自动跳过该干员或降级补位，形成高频重试的“活锁”。

这类情况在长期无人值守时并不罕见：训练室通常持续有人，被训练者无法中途换下；只要该干员恰好又是当前排班需要的主力或替补，就可能阻塞整套基建调度。

## 复现步骤

1. 在固定排班中为某岗位设置主力 A，并设置替补 B。
2. 将 B 放入训练室作为被训练者进行专精，使其无法换下，也不出现在其他设施的进驻选人列表中。
3. 等待 A 需要休息，调度器选择 B 顶班。
4. Mower-NG 搜遍选人列表后提示缺少 B，房间验证失败。
5. 随后再次生成并执行同样的计划，仍然寻找 B；约二十余秒重复一轮，可持续到训练结束或人工干预。

## 当前行为

- 选人失败后没有顺延到其他替补；
- 同一不可派遣干员被高频重复搜索；
- 重试期间可能延误其他房间、无人机或收菜任务；
- 进程并未退出，但调度器事实上陷入活锁，不适合长期无人值守。

借助本地 Codex 梳理运行日志与调用链后，初步发现：选人求解器会返回“是否完整选中目标干员”，但上层调用未利用该结果切换候选人；后续房间验证失败后仍会重复原计划。

## 期望的最小容错

建议增加一个简单的 fail-open 降级流程：

1. 同一目标干员连续两次未找到后，本轮将其标记为“临时不可用”，避免将一次识别波动直接判成缺员。
2. 优先顺延到该岗位配置中的下一名替补。
3. 所有配置替补都不可用时，从以下候选池中临时补位：
  - 当前空闲且心情足够；
  - 未出现在任何固定主力/替补排班名单中；
  - 具备对应设施的通用效率提升或心情消耗降低技能。

4. 如果仍然无法补位，尽量保留当前在岗干员，并对该任务设置重试上限与退避时间，不阻塞其他调度任务。
5. 经过一定冷却时间（例如 30～60 分钟）后重新检测原目标干员，使其在专精结束后自动回归。
6. 对必须成组工作的组合，可整组回退到预设散件班，避免只替换一人破坏组合。

核心诉求并非限定具体实现方式，而是： **单个目标干员暂时不可派遣时，不应让整个基建调度无限重复同一失败计划。**

## 环境

- Mower-NG `main` 分支
- 可在 2026-10-01 附近版本复现
- 未附原始日志、排班表和截图；如开发者需要，可再提供去除本机路径及账户信息后的最小日志片段。
