9.8 KiB
9.8 KiB
主 Agent 线程状态文档与增量同步设计
日期:2026-04-04
1. 背景
当前 Boss 已经具备:
- 新设备导入时,主 Agent 会主动理解活跃线程的项目目标、当前进度、技术架构、阻塞点和建议下一步。
- 已导入设备上的活跃线程一旦继续活动,系统会自动同步项目理解,并在主 Agent 会话里补轻量提醒。
- 主 Agent 当前已经能读取最近的活跃项目理解,并基于这些理解给出下一步建议和接手提示。
当前问题也很明确:
-
主 Agent 为了跟上线程进展,仍然会在不少场景重新向线程发起完整理解请求。
- token 消耗偏高
- prompt 体积偏大
- 当活跃线程很多时,成本会快速放大
-
如果只依赖“完整项目理解快照”,实时性又不够。
- 用户继续在电脑上操作 Codex 线程时,主 Agent 可能落后一段时间
- 主 Agent 接手时,需要重新拉很多上下文
-
把状态写回线程项目工作区作为文档文件不可取。
- 会污染工作区
- 容易制造脏 diff
- 容易被误提交
- 多线程并行时容易冲突
因此,这个设计的目标是:
- 让主 Agent 平时更多依赖结构化状态,而不是反复扫整段聊天历史
- 保持接近实时的项目进展同步
- 只在关键时刻多花 token
- 不污染线程项目工作区
2. 目标与非目标
2.1 目标
- 为每个真实线程建立一份 线程状态文档,作为主 Agent 理解线程的主入口。
- 为每个线程建立一组 线程进展事件,用于记录最近的轻量增量变化。
- 主 Agent 默认改为基于:
- 线程状态文档
- 最近几条线程进展事件
- 项目记忆 来理解活跃线程。
- 仅在关键时刻再向线程发起完整深拉,以保持高实时性。
- 让“新设备导入”和“已导入设备的持续同步”共用同一套机制。
- 在线程详情或会话信息里提供一个只读的
线程状态入口,便于用户查看主 Agent 当前掌握的状态。
2.2 非目标
- 不把线程状态文档写入用户项目仓库。
- 不把线程状态文档开放成默认可编辑内容。
- 不引入向量数据库、复杂 embedding 检索或多级知识库系统。
- 不重写现有群聊审批、设备导入或主 Agent 记忆架构。
- 不把所有线程活动都升级成完整项目理解请求。
3. 设计概览
本设计采用三层结构:
-
线程状态文档
- 稳定快照
- 代表“当前线程现在是什么状态”
-
线程进展事件
- 轻量增量
- 代表“最近发生了什么变化”
-
关键时刻深拉
- 只在主 Agent 真要接手、真要调度、真要做关键判断时触发
- 用更高 token 成本换取更高准确度
主 Agent 后续默认读取路径为:
- 当前用户指令
- 对应线程/项目的线程状态文档
- 最近 3 到 5 条线程进展事件
- 项目记忆
- 必要时再向线程发起一次深拉
4. 数据模型
4.1 ThreadStatusDocument
新增线程级状态文档模型。
建议字段:
documentIdprojectIdthreadIdthreadDisplayNamefolderNamedeviceIdprojectGoalcurrentPhasecurrentProgresstechnicalArchitecturecurrentBlockersrecommendedNextStepkeyFiles: string[]keyCommands: string[]updatedAtsourceTaskIdsourceKind
说明:
currentPhase用于把线程从“当前在做什么阶段”抽出来,例如:- 需求梳理
- 架构设计
- 功能实现
- 联调验证
- 修复回归
- 部署上线
keyFiles和keyCommands不追求完整,只保留主 Agent 接手时最需要知道的关键点。
4.2 ThreadProgressEvent
新增线程增量进展事件模型。
建议字段:
eventIdprojectIdthreadIdthreadDisplayNamedeviceIdeventTypephase_changedprogress_updatedblocker_addedblocker_resolvednext_step_changedarchitecture_updatedhandoff_ready
summaryphaseblockerDeltanextStepDeltacreatedAtsourceTaskIdsourceMessageId
说明:
- 这层的目标不是完整审计,而是为主 Agent 提供低 token 的“最近变化摘要”。
- 事件数量需要限流和裁剪,例如每线程只保留最近 20 条。
4.3 与现有模型的关系
当前已有:
ProjectUnderstandingSnapshotMasterAgentMemorythreadContextSnapshots
本次关系建议:
ProjectUnderstandingSnapshot继续保留,用于兼容现有项目级理解视图。ThreadStatusDocument成为线程级主结构化状态。- 项目级
projectUnderstanding继续作为“项目展示层聚合结果”,但底层来源应逐步转向线程状态文档。 MasterAgentMemory继续负责长期记忆,不负责替代线程当前状态。threadContextSnapshots继续负责上下文预算和风险状态,不负责承载项目理解正文。
5. 同步策略
5.1 全量理解刷新
触发场景:
- 新设备导入后的首次理解
- 已导入设备中,主 Agent 第一次接触某个线程
- 用户明确要求主 Agent 接手当前项目
- 检测到线程进入明显新阶段
- 距离上一次全量理解已经超过阈值
行为:
- 向目标线程发起一次结构化“线程状态理解”任务
- 更新整份
ThreadStatusDocument - 必要时同步更新
ProjectUnderstandingSnapshot - 对主 Agent 会话补一条轻量进展提醒
5.2 轻量增量同步
触发场景:
- heartbeat 检测到线程最近活跃
- 线程刚回写了新执行结果
- 但当前还没有进入需要完整深拉的关键阶段
行为:
- 不重做完整线程理解
- 只抽取一条轻量
ThreadProgressEvent - 必要时更新
ThreadStatusDocument中的少数字段:currentProgresscurrentBlockersrecommendedNextStepupdatedAt
5.3 关键时刻深拉
触发场景:
- 主 Agent 要真正接手当前项目
- 主 Agent 要发起线程调度或群聊协作
- 主 Agent 要给出指导性的下一步开发建议
- 当前线程状态文档和最近事件不足以支撑判断
行为:
- 向线程发起一次完整深拉
- 允许在这个关键时刻多花 token
- 更新线程状态文档并刷新主 Agent 的接手上下文
6. Prompt 组装策略
主 Agent 以后默认不再反复扫线程完整聊天历史。
新的理解顺序为:
- 用户当前消息
- 线程状态文档
- 最近 3 到 5 条线程进展事件
- 项目级长期记忆
- 当前线程上下文预算和风险信息
- 必要时才深拉线程
这样做的收益:
- token 成本更稳定
- 主 Agent 理解更连续
- 接手时不需要每次从零重新扫历史
7. 主 Agent 与线程的交互变化
7.1 线程状态理解 Prompt
全量理解时,线程不再返回泛化的“项目理解 JSON”,而是更明确地返回线程状态文档字段。
要求:
- 只返回结构化 JSON
- 不返回无意义内部字段
- 不重复线程 ID、目录路径、设备 ID
- 只保留主 Agent 接手真正需要的事实
7.2 轻量事件 Prompt
增量同步时,线程不需要重写整份文档,只需返回:
- 是否进入新阶段
- 最近完成了什么
- 是否出现新阻塞
- 下一步是否变化
这类 prompt 需要尽量短,并显式禁止输出冗长总结。
8. 前台体验
8.1 主 Agent 会话
继续保留轻提醒,但来源改成“线程状态文档 + 最近进展事件”。
可见文案示例:
已同步线程状态:...最新进展:...建议下一步:...主 Agent 可接手:...
8.2 线程详情 / 会话信息
新增一个只读入口:线程状态
展示内容:
- 当前目标
- 当前阶段
- 当前进度
- 技术架构
- 当前阻塞
- 建议下一步
- 关键文件
- 关键命令
- 最近更新时间
默认不可编辑。
8.3 已导入设备与新导入设备
两者统一走同一套机制:
- 新导入设备:首次理解
- 已导入设备:活跃线程持续增量同步
- 主 Agent 最终都读取同一套线程状态文档和最近进展事件
9. 约束与风险
9.1 不能把线程状态文档写进项目仓库
原因:
- 污染工作区
- 容易制造脏 diff
- 容易被误提交
- 多线程并行修改时易冲突
所以文档必须由 Boss 自己维护,并保存在 Boss 状态层。
9.2 不能完全放弃深拉
如果完全变成“只查文档”,主 Agent 会因为文档滞后而接手失败。
所以深拉仍然保留,但只在关键时刻触发。
9.3 增量事件必须限流
如果线程每次活动都写大段事件,最终只是把 token 压力从“全量理解”转移成“事件堆积”。
因此:
- 每线程只保留最近有限数量事件
- 重复事件应合并
- 明显无价值事件不写入
10. 分期实现建议
第一批
- 新增
ThreadStatusDocument - 新增
ThreadProgressEvent - 新增线程状态文档的全量刷新任务
- 主 Agent prompt 默认改为读取“线程状态文档 + 最近事件”
第二批
- 新增轻量事件同步任务
- 为 heartbeat / thread reply 增加“轻量事件优先、全量理解兜底”的策略
- 主 Agent 会话补更稳定的轻提醒
第三批
- 在线程详情或会话信息增加
线程状态 - 对主 Agent 接手场景补更明确的接手卡片
- 对阶段切换、阻塞变化做更强的事件归并
11. 验收标准
- 主 Agent 平时不再因为线程每次活动都重跑完整项目理解。
- 活跃线程继续推进时,主 Agent 仍能在较短时间内获得最新进展。
- 当用户明确要求主 Agent 接手项目时,主 Agent 能依赖线程状态文档与最近事件快速进入正确上下文。
- 不会向线程项目工作区写入状态文档文件。
- APP 中能查看线程状态,但默认不可编辑。