night-autopilot · diff
v0.1.0 to v0.2.0
68 added, 51 removed. Audit A to A.
---
name: night-autopilot
homepage: https://github.com/cat-xierluo/legal-skills
author: 杨卫薪律师(微信ywxlaw)
- version: "0.1.0"
+ version: "0.2.0"
license: MIT
- description: 无人值守夜间自主推进模式——用户睡前授权后,PM 会话以定时任务驱动「巡检在途 worker → 验收 PR(测试+审查+合并)→ 按队列续派 → 记录泊车」循环,持续把项目往前推,醒来自动获得交接报告。在用户说「我要去睡觉了/今晚继续推进/不间断运行/明早给我结果」并要求定时派发验收时使用。不要用于:单次后台任务(直接派发即可)、用户在场的普通编排(用 multi-agent-orchestration)、一次性定时提醒。
+ description: 无人值守自主推进模式(宿主无关、领域无关)——定时触发下,Agent 自动整理任务、查找下一项、完成或派发、监测 subagent/独立 worker、验收推进并记录交接。适用于代码项目(PR/测试验收)与法律项目(文书核对+律师终审门)等任何有任务源和可定义验收判据的领域。在用户说「我要去睡觉了/今晚继续推进/不间断运行/明早给我结果」并要求定时派发验收时使用。不要用于:单次后台任务(直接派发即可)、用户在场的普通编排(用 multi-agent-orchestration)、一次性定时提醒。
---
- # Night Autopilot(夜间自主推进)
+ # Night Autopilot(无人值守自主推进)
- 把「用户睡觉、PM 通宵干活」固化为可复用流程。首战:dsh-plugins 仓 2026-09-30 夜(15 分钟轮、宿主 subagent worker、两卡在途起步,用户授权全晚连续运行)。
+ 把「用户离开、Agent 通宵推进」固化为可复用循环。**v0.2.0 起宿主无关、领域无关**:定时只是触发器,循环本体是五步通用流程;验收判据按领域参数化(代码型 / 法律型)。
- **定位与分工**:本 skill 是**场景编排层**——定时节奏、队列锚点、验收收口、晨间交接。通道选择、派发门禁、worker 纪律、清理协议一律以其宿主规则 [multi-agent-orchestration](../multi-agent-orchestration/SKILL.md) 为准;Git/PR 规则用 git-workflow。本 skill 不重复它们的内容。
+ 首战实例:dsh-plugins 仓 2026-09-30 夜(ZCode 宿主、15 分钟轮、代码域、六卡交付);泛化需求来自用户同日指示(其他宿主定时机制不同 + 法律项目也要能夜跑)。
- ## 1. 启动前核对(任一不满足不进入夜间模式)
+ **定位与分工**:本 skill 是**自主推进循环层**——任务自组织、定时触发、巡检验收、记录交接。通道选择、派发门禁、worker 纪律以其宿主规则 [multi-agent-orchestration](../multi-agent-orchestration/SKILL.md) 为准;Git/PR 规则用 git-workflow。本 skill 不重复它们的内容。
- | # | 前提 | 说明 |
+ ## 1. 核心循环(五步,宿主无关)
+
+ 1. **整理任务**:从任务源自动聚合生成/刷新候选队列——项目 TASKS 文件、issue、会话遗留待办、用户口述。去重、按依赖排序;价值判据自动分桶:**可派**(实现/验证类,交 worker)、**Agent 自留**(研究/调查类)、**需用户**(决策/在场/授权类,只登记不推进);存疑项标记待确认,不猜。
+ 2. **查找下一项**:按桶取件——可派且活跃 worker 未满(默认 ≤3)则派发;只有自留项则本循环自己做;只剩需用户项则转纯巡检记录。
+ 3. **完成或派发**:派发按 orchestration 通道判据选型(中小卡宿主 subagent,独立 worker 场景走其模式表);任务卡自包含(目标/allowed/禁止项/验收命令/交付协议)。
+ 4. **验收推进**:按领域验收判据(§4)核验交付,过则收口(合并/归档/登记),不过则小修闭环或泊车——无人值守期**宁保守**。
+ 5. **记录与交接**:每轮更新队列锚点(状态机:完成/在途/待派/泊车);结束时出三类交接报告(完成/泊车/待用户)。
+
+ ## 2. 定时触发层(与循环解耦)
+
+ 循环本体不含任何定时机制;触发器契约:**输入** = 队列锚点路径 + 安全边界(谁可写/禁碰清单)+ 循环 prompt;**输出** = 锚点状态写回 + 交接产物。满足契约的任意调度器都可驱动。
+
+ | 宿主 | 定时驱动 | 状态 |
|---|---|---|
- | 1 | **用户明确授权** | 无人值守 + 巡检频率(默认 30 分钟,用户可改)+ 大致时长(过夜)。无授权不得自设定时任务 |
- | 2 | **工作队列已盘点** | 可派卡与需用户项分离;卡片须过价值判据(实现类/可复用验证类可派 worker;纯调查/研究类 PM 自留);每卡有 allowed files 与验证命令 |
- | 3 | **安全边界成文** | 生产环境(如真实桌面/服务器)、主检出归属(并行会话)、禁改目录、禁装依赖、禁发布——写进 worker prompt 与队列锚点 |
- | 4 | **交付通道明确** | worker 只交 PR 不合并;PM 独立验收(角色分离)后才合并 |
- | 5 | **恢复锚点落盘** | 队列状态(在途/待派/泊车/完成)写入持久文件——会话上下文可能被摘要,锚点必须独立可恢复(项目记忆文件或仓库内 notes) |
+ | ZCode | 内建定时任务(CronCreate/CronUpdate,prompt 注入本循环) | 首战实测 |
+ | Claude Code | 无内建定时器为主——hooks / 无头 CLI(`claude -p`)+ 系统调度 | 待实测 |
+ | Codex | 无头 CLI(`codex exec`)+ 系统调度 | 待实测 |
+ | **OS 级兜底** | cron / launchd 调宿主 CLI 无头入口,参数喂循环 prompt 与锚点路径 | 任何宿主可用 |
- ## 2. 启动序列(用户睡前完成,五步)
+ 兜底路径要点:调度器只负责「到点拉起 Agent + 传参」,循环状态全部落锚点文件(进程无常驻假设);每轮超时自限(如 15 分钟 kill),防调度堆积。
- 1. **加载 SOP**:读 multi-agent-orchestration,按其通道判据选型——中小任务卡(≤1h)、质量敏感、宿主额度充裕时**宿主 subagent 首选**(无进程/分支开销,完成权威=PM 验收)。
- 2. **建定时任务**(CronCreate 或宿主等价物):
- - 频率按用户(如每 15 分钟:cron `*/15 * * * *` + intervalUnit minute + interval 15);title 带自然语言频率(改频率时 title 同步改)。
- - prompt 用 §3 模板,必须自包含(不假设用户在场回答问题)。
- 3. **写队列锚点**:持久文件记录队列状态 + rails + 停止条件(模板见 §5)。
- 4. **立即派发首批 worker**(睡前把机器跑起来):每卡一个后台 subagent,prompt 含任务卡/allowed files/禁止项/scoped 验证命令/交付协议/四段自陈模板。活跃 worker ≤3、PM 待验收 >2 时停止扩波。
- 5. **睡前报告**:已派什么、护栏是什么、早上会看到什么(完成/泊车/待决策三类)。
+ ## 3. 启动前核对(任一不满足不进入)
- ## 3. 每轮巡检模板(cron prompt 骨架)
+ | # | 前提 | 说明 |
+ |---|---|---|
+ | 1 | **用户明确授权** | 无人值守 + 频率 + 大致时长;无授权不得自设定时任务 |
+ | 2 | **任务源可读** | 队列可自动聚合(§1.1),但**安全边界必须成文**:可写范围、禁碰清单(生产环境/他人领地/敏感数据)、交付通道 |
+ | 3 | **验收判据成文** | 按领域选型(§4)并在锚点声明;法律域必须显式列出人工终审门 |
+ | 4 | **恢复锚点落盘** | 队列状态 + rails + 停止条件写入持久文件(会话上下文可能被摘要/重启) |
+ | 5 | **触发器就绪** | 按宿主表建定时任务;睡前报告(已派什么/护栏/醒来会看到什么) |
- 按序执行,全部走工具调用,不向用户提问:
+ ## 4. 验收判据(领域参数化)
- 1. **在途巡检**:非阻塞查后台 worker 状态。
- 2. **验收完成的**:读报告与 PR → diff 范围核对(allowed files 内)→ 跑全套测试 + 机械审查/lint → **全过才合并** + 删远端分支 + 同步本地 main + 更新任务源;不过则在 worker 分支上修(小修)或留 PR 评论待晨审(夜间宁保守)。
- 3. **续派检查**:活跃 <3 且待验收 ≤2 时,从锚点队列取下一卡派发。
- 4. **PM 自留项**:研究/巡检类(如上游版本差异、并行会话 PR 审查)——不派 worker,PM 轮内自己做或推进。
- 5. **纪律执行**:越界/停滞/失败按退避处理(worker 连续 2 次同类失败 → 泊车记录,不盲目重拉);不可判定 → 记录后跳过。
- 6. **更新锚点**:每轮结束写回队列状态;队列只剩需用户项 → 本轮只巡检记录,不空转派发。
+ **代码型**(默认):全套测试绿 + lint/机械审查 0 FAIL + diff 在 allowed 范围 + NOT_VERIFIED 如实标注。交付形态 = 分支 + PR(Git 规则走 git-workflow)。
- ## 4. 验收纪律(夜间与白天的差别)
+ **法律型**(文书/检索类任务):
+ - **机械可验层**(Agent 可自动核):核对清单逐项(文书要件齐全)、引用核验(法条/案号与权威库比对——工具如元典幻觉校验)、当事人与案号信息一致性、格式与期限计算复核(日期/金额/次数)、版本与留痕(文件名/修改记录)。
+ - **人工终审门(不可自动越过)**:律师终审、签署、对外发送(法院/对方/客户)一律留给用户——夜间产出只能是「初稿 + 核对记录 + 晨间审阅清单」。
+ - 交付形态 = 文件 + 核对记录(不强制 git/PR;有仓则走仓)。
+ - **数据红线**:实际客户材料默认不进无人值守循环——脱敏/合成先行,涉密材料永远在场处理。
- - **合并标准不降**:全套测试绿 + lint 0 FAIL + diff 在范围 + 声明如实(NOT_VERIFIED 不拔高)。夜间无人兜底,**宁可留 PR 待晨审,不勉强合并**。
- - **小修闭环**:验收发现小问题,PM 在 worker 分支补修后重验(注明);大问题整卡泊车。
- - **每完成节点即提交**(合并/泊车都落账),锚点随时反映真实状态。
+ 自定义领域按同构扩展:定义「机械可验层 + 人工终审门 + 交付形态」三元组即可。
- ## 5. 队列锚点模板
+ ## 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. 队列锚点模板(标准化)
+
```markdown
- ## 夜间运行授权与 rails
- 授权(日期+频率)/ 禁碰清单(生产环境、主检出归属、禁改目录)/ worker 纪律(专属 worktree + 基线 + PR 交付 + 合并即删)/ 停止条件。定时任务 id。
+ ## 授权与 rails
+ 授权(日期+频率+时长)/ 定时任务 id / 领域与验收判据型 / 禁碰清单 / 交付形态 / 停止条件
- ## 工作队列状态(每轮更新)
- 1. [在途·workerX] 卡名(要点 + allowed)
- 2. [PM 自留] 研究项(已知线索)
- 3. [待派] 卡名(派发前置)
- 4. [巡检项] 依赖项(如并行会话 PR)
+ ## 队列状态(每轮更新)
+ 1. [完成·PR/交付物] 卡名(去向)
+ 2. [在途·workerX] 卡名(要点 + allowed)
+ 3. [自留] 研究项
+ 4. [待派] 卡名(派发前置)
+ 5. [泊车] 卡名(原因 + 证据)
+ 6. [需用户] 事项
- ## 停止条件
- 只剩需用户项时只巡检;用户醒后删除定时任务。
+ ## 巡检日志
+ - HH:MM 轮:一行结论(做了什么/全静/泊车原因)
```
- ## 6. 晨间交接
+ ## 7. 晨间交接
- - 汇总三类:**已完成**(PR 列表+去向)、**泊车**(原因+证据,通常是验收不过/语义不可判定/依赖未出现)、**待用户决策**。
- - 提醒用户删除定时任务(或用户说停即删)。
- - 清理一次性资源:worker worktree、已删分支残留。
+ - 三类汇总:**已完成**(交付物清单+去向)、**泊车**(原因+证据)、**待用户决策**。
+ - 提醒用户停止定时任务(或用户说停即删);清理一次性资源。
- ## 7. 边界与已知限制
+ ## 8. 边界与已知限制
- - **会话绑定**:定时任务属当前会话,会话终止即停(不自称持久控制器;跨会话持久调度需宿主级方案)。
- - **额度共享**:宿主 subagent 与 PM 共享额度,撞限时在途全灭——巡检发现额度停滞按 multi-agent-orchestration 的 429 恢复纪律退避。
- - **不能做需用户在场的事**:GUI 验证、生产实例操作、付费授权等——这些留在「待用户决策」清单里,夜间不碰。
- - 每轮时长自限(巡检+验收+一卡推进),不做无界长任务。
+ - 触发器宿主表中 Claude Code / Codex 两行为待实测——实测后更新本表(这是本 skill 唯一的宿主相关内容)。
+ - 法律域机械可验层是框架不是清单——具体核对项按项目定制,且**永不把人工终审门自动化**。
+ - 会话绑定的内建定时器随会话终止而停;跨会话持久调度用 OS 级兜底。
+ - 额度共享(宿主 subagent 与主会话);每轮时长自限,不做无界长任务。