Files
DevFlow/docs/02-架构设计/无人值守可靠性专项设计-20261006.md
T

45 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 无人值守可靠性专项设计(2026-10-06 swarm 产出)
> 对象:会话侧挂机护栏四条 + 任务侧 V49 断点续跑收尾。标准:合理·兼容·优雅·可扩张。
> 侦察/设计产出:temp/V49断点续跑设计-20261006.md(详设)+ 本档(总纲与任务单)。
## 一、本质定性
挂机≠无人值守:挂机是行为模式,无人值守是它最危险的子场景(无人工兜底)。
今天三案例:09:48 桌面纠偏(在场,安全)/ 11:23 汇报失实(离机,自报≠事实)/ 09:51 跨端互斥(正确但话术吞因)。
结论:在场靠「过程可见」,离机靠「机制护栏」——本专项只做机制,不做提示词说教。
## 二、会话侧护栏四条(落点全部现成,最小增量)
### H1 汇报附 git 实测
落点:chat.rs:919-941 单一发出点——组装 summary 前调 tools/git.rs exec_git_exit 取 branch/HEAD/未提交计数,追加「实测附录」段。
收益:飞书 watcher 与桌面任务卡零改动同享(单一事实源)。
### H2 token 预算闸
落点:主 loop 抄 sub_agent.rs:346 round_budget_stop 三闸(轮数/token/挂钟),挂 agentic/mod.rs:1115 for 头部(tokens.total() 现成)。
超限走既有 emit_task_parked("token_budget")——前端词表已预留,零新契约。
### H3 外部干预感知
落点:mod.rs:1119 轮首——loop_epoch 之外轻量 git 实测(HEAD 是否仍为自己上次记录),变更即 emit_task_parked("external_change")。
ConvStateStore.transition 唯一写口,补干预事件 emit。
### H4 产出审计
落点:AiToolCallStarted/Completed 已全量双写 event_bus——加审计 subscriber(event_bus.rs:157)或挂 audit 落库点,不动 loop。
## 三、任务侧 V49(详见 temp/V49断点续跑设计-20261006.md)
核心选型:①防覆盖=独立单列 UPDATE+摘除 SET 列(单写者根除,非乐观锁)②list_parked 补唯一 IPC ai_list_recoverable(完备真相查询,兼飞书投影源)③续跑新命令 ai_recover_parked(进程死后复活与进程内流断路径不同,禁混一个命令)。
状态机:LoopState{Idle,Running,Parked}(持久层,跨重启真相)/ ConvState{Idle,Generating,Stopping,Error}(进程内)分层;写点收敛 6 处全走 set_loop_state 单方法。
新识别 P4:重启后 parked 会话无 DB→内存重建+重 spawn 路径——闭环最后一块。
## 四、与异步架构(13/14/16/17)兼容性
- H1 单点改动:飞书/桌面零改动 ✔
- H2 走既有 emit_task_parked:前端零新契约 ✔
- 13 过程流式白得事件源:AiTaskProgress(每 5 轮,mod.rs:1119)已存在,飞书 refresher 补消费即可
- 14 委托引擎的 watcher 与 H1/H3 同通道,零竞态新增 ✔
- 16 纠偏注入与 H3 互补(人在场=16,离机=H3) ✔
## 五、实施序(4 批次,S/M/L/S 全可独立交付)
B1(S):H1 汇报 git 实测 + 看门狗口径修正(inflight 覆盖 spawn 窗口)
B2(M):H2 token 三闸 + H4 审计 subscriber
B3(M):V49 防覆盖定稿+回归单测 + ai_list_recoverable IPC + 桌面「可恢复」入口
B4(L):ai_recover_parked 重启恢复路径 + H3 外部干预感知