Night Autopilot(无人值守自主推进)
把「用户离开、Agent 通宵推进」固化为可复用循环。v0.2.0 起宿主无关、领域无关:定时只是触发器,循环本体是五步通用流程;验收判据按领域参数化(代码型 / 法律型)。
首战实例:dsh-plugins 仓 2026-09-30 夜(ZCode 宿主、15 分钟轮、代码域、六卡交付);泛化需求来自用户同日指示(其他宿主定时机制不同 + 法律项目也要能夜跑)。
定位与分工:本 skill 是自主推进循环层——任务自组织、定时触发、巡检验收、记录交接。通道选择、派发门禁、worker 纪律以其宿主规则 multi-agent-orchestration 为准;Git/PR 规则用 git-workflow。本 skill 不重复它们的内容。
1. 核心循环(五步,宿主无关)
- 整理任务:从任务源自动聚合生成/刷新候选队列——项目 TASKS 文件、issue、会话遗留待办、用户口述。去重、按依赖排序;价值判据自动分桶:可派(实现/验证类,交 worker)、Agent 自留(研究/调查类)、需用户(决策/在场/授权类,只登记不推进);存疑项标记待确认,不猜。
- 查找下一项:按桶取件——可派且活跃 worker 未满(默认 ≤3)则派发;只有自留项则本循环自己做;只剩需用户项则转纯巡检记录。
- 完成或派发:派发按 orchestration 通道判据选型(中小卡宿主 subagent,独立 worker 场景走其模式表);任务卡自包含(目标/allowed/禁止项/验收命令/交付协议)。
- 验收推进:按领域验收判据(§4)核验交付,过则收口(合并/归档/登记),不过则小修闭环或泊车——无人值守期宁保守。
- 记录与交接:每轮更新队列锚点(状态机:完成/在途/待派/泊车);结束时出三类交接报告(完成/泊车/待用户)。
2. 定时触发层(与循环解耦)
循环本体不含任何定时机制;触发器契约:输入 = 队列锚点路径 + 安全边界(谁可写/禁碰清单)+ 循环 prompt;输出 = 锚点状态写回 + 交接产物。满足契约的任意调度器都可驱动。
| 宿主 | 定时驱动 | 状态 |
|---|---|---|
| ZCode | 内建定时任务(CronCreate/CronUpdate,prompt 注入本循环) | 首战实测 |
| Claude Code | 原生 /goal 模式(目标驱动自主迭代,progress/audit 双面)优先;次选 headless CLI(claude -p --continue)+ 系统调度 |
待实测(映射规范见本地 TASKS NA-D6) |
| Codex | goal mode(迭代下一工作单元直至目标达成)优先;次选无头 CLI(codex exec)+ 系统调度 |
待实测 |
| OS 级兜底 | cron / launchd 调宿主 CLI 无头入口,参数喂循环 prompt 与锚点路径 | 任何宿主可用 |
兜底路径要点:调度器只负责「到点拉起 Agent + 传参」,循环状态全部落锚点文件(进程无常驻假设);每轮超时自限(如 15 分钟 kill),防调度堆积。
3. 启动前核对(任一不满足不进入)
| # | 前提 | 说明 |
|---|---|---|
| 1 | 用户明确授权 | 无人值守 + 频率 + 大致时长;无授权不得自设定时任务 |
| 2 | 任务源可读 | 队列可自动聚合(§1.1),但安全边界必须成文:可写范围、禁碰清单(生产环境/他人领地/敏感数据)、交付通道 |
| 3 | 验收判据成文 | 按领域选型(§4)并在锚点声明;法律域必须显式列出人工终审门 |
| 4 | 恢复锚点落盘 | 队列状态 + rails + 停止条件写入持久文件(会话上下文可能被摘要/重启) |
| 5 | 触发器就绪 | 按宿主表建定时任务;睡前报告(已派什么/护栏/醒来会看到什么) |
4. 验收判据(领域参数化)
代码型(默认):全套测试绿 + lint/机械审查 0 FAIL + diff 在 allowed 范围 + NOT_VERIFIED 如实标注。交付形态 = 分支 + PR(Git 规则走 git-workflow)。
法律型(文书/检索类任务):
- 机械可验层(Agent 可自动核):核对清单逐项(文书要件齐全)、引用核验(法条/案号与权威库比对——工具如元典幻觉校验)、当事人与案号信息一致性、格式与期限计算复核(日期/金额/次数)、版本与留痕(文件名/修改记录)。
- 人工终审门(不可自动越过):律师终审、签署、对外发送(法院/对方/客户)一律留给用户——夜间产出只能是「初稿 + 核对记录 + 晨间审阅清单」。
- 交付形态 = 文件 + 核对记录(不强制 git/PR;有仓则走仓)。
- 数据红线:实际客户材料默认不进无人值守循环——脱敏/合成先行,涉密材料永远在场处理。
自定义领域按同构扩展:定义「机械可验层 + 人工终审门 + 交付形态」三元组即可。
5. 巡检与 worker 监测
- 双通道:宿主 subagent 与独立 worker(Orca supervised/terminal-managed/tmux)——完成权威与巡检证据优先级按 orchestration §2 模式表执行,本 skill 不另造。
- 死 worker 判定(双证,2026-09-30 两次实战提炼):①会话/输出记录停更(转录 mtime 长期不变)②worktree/产物无进展(文件 mtime 停滞、无 commit)。双证齐 → 判死;单证不判(可能在跑长测试)。
- 处置分级:完整交付未推送 → PM 独立复验后代交付;半途 WIP → 清理重派(任务卡可重放);同卡连续 2 次失败 → 泊车记录,不盲目重拉。
- 僵尸 UI 条目:界面显示运行中但任务系统查无此任务——用停止接口验证(返回 No task found 即纯显示残留,刷新即消)。
- 基础设施故障回退:如 GitHub GraphQL 建 PR 持续报错 → REST API(
gh api repos/<o>/<r>/pulls)。
6. 队列锚点模板(标准化)
## 授权与 rails
授权(日期+频率+时长)/ 定时任务 id / 领域与验收判据型 / 禁碰清单 / 交付形态 / 停止条件
## 队列状态(每轮更新)
1. [完成·PR/交付物] 卡名(去向)
2. [在途·workerX] 卡名(要点 + allowed)
3. [自留] 研究项
4. [待派] 卡名(派发前置)
5. [泊车] 卡名(原因 + 证据)
6. [需用户] 事项
## 巡检日志
- HH:MM 轮:一行结论(做了什么/全静/泊车原因)7. 晨间交接
- 三类汇总:已完成(交付物清单+去向)、泊车(原因+证据)、待用户决策。
- 提醒用户停止定时任务(或用户说停即删);清理一次性资源。
8. 边界与已知限制
- 触发器宿主表中 Claude Code(
/goal)/ Codex(goal mode)两行为待实测——实测后更新本表与映射规范(NA-D6)。原生模式只替代循环驱动,不替代锚点、验收判据与人工终审门。 - 法律域机械可验层是框架不是清单——具体核对项按项目定制,且永不把人工终审门自动化。
- 会话绑定的内建定时器随会话终止而停;跨会话持久调度用 OS 级兜底。
- 额度共享(宿主 subagent 与主会话);每轮时长自限,不做无界长任务。