<!-- repository-triage-2026-10-14 --> ### 2026-10-14 完成与整理记录 已由 [PR #239](https://github.com/CWNU-Open-Source-Community/Universal-Code/pull/239) 集成至 main(实现提交 `2215f2c0`)。Specialist 的持久任务约束、修正/替换/撤回和跨 attempt 恢复已实现,现有测试检查多轮实际请求和数据库重开。按已完成关闭。 核对版本:`main@88a7ba86`。以下保留原问题/PR 说明。 --- ## 问题 Specialist 当前依赖有限的近期历史和待消费父指令构建请求,缺少对子任务原始委托、仍有效的纠正和未完成事项的独立持续保留机制。 当早期父指令已被消费,并退出近期历史窗口,且没有另外写入持续保留的工作项、笔记或后续消息时,该指令可能不再进入后续请求。数据库保存着原记录,并不等于本轮模型仍能访问它。 审查基准:`0e15d1d104fe535965cf68df50bca6f106f20d52`。 影响范围:Go control plane、Specialist 请求构建、子代理指令投递与持久化恢复。 ## 当前代码依据 - `internal/application/specialist_runner.go`:`maxSpecialistHistoryMessages = 12`,`maxSpecialistHistoryBytes = 64 * 1024`;`specialistRequestWithLayout()` 选择近期历史,超过剩余字节预算的消息被跳过。这条路径没有调用主代理的持久历史压缩流程。 - `internal/store/specialist_context.go`:`listEligibleSpecialistContextMessagesTx()` 只选择状态为 `pending` 的父代理指令;`commitSpecialistContextTx()` 在提交后将其标记为 `consumed`。 - `internal/application/specialist_context.go`:子任务输入包括共同 Mission 目标、当前父指令、子代理工作项和笔记。共同 Mission 目标不必然包含某个子代理的具体委托和后续纠正。 - 当前 Specialist 不提供工具,不能自行读取已经退出近期历史的原始记录。 主代理已有持久摘要,因此本项只针对子代理路径,不重复建设主代理功能。 ## 触发场景 向某个 Specialist 发送具体委托,例如「仅检查鉴权模块,保持公共接口不变」。该消息成功消费后,继续多轮分析和补充输入,使最初消息退出最近 12 条历史;另增加独立的 64 KiB 历史预算压力场景。 若委托没有被另行保存为持续约束,当前请求可能只剩共同任务目标和近期讨论。预期仍能识别该子任务的当前范围、有效纠正与未完成事项,而不需要父代理每轮重新粘贴最初委托。 ## 最小可用目标 第一阶段建立有界、有来源和版本绑定的子任务连续性记录,必须持续投递当前委托、仍有效纠正及必要的未完成事项。已消费只代表该次指令已交付,不能自动等同于该约束已经失效;明确替代或撤回的旧指令则不得重新生效。优先复用现有 child-owned `WorkItem` 的描述、验收条件及来源记录,补足投递保证,不另建重复任务系统。 将近期历史之外的可选背景收敛为有界、持久、可校验摘要可作为第二阶段;自动摘要生成不是第一阶段正确投递当前约束的前提。保留原始消息和证据指针,第一阶段应能在现有 no-tool Specialist 上独立工作;受限历史回读可以随后与有工具子代理接线,不以全面开放工具作为修复前提。 区分任务约束的生命周期与执行 attempt:同一 child 的仍有效委托应能跨重试 attempt 延续;每次投递及消费收据必须重新绑定当前 attempt,不能复用旧 attempt 的投递状态、lease 或执行授权。 单纯把 12 条改成更多条目,或假定模型会在回答里主动复述关键约束,都不能提供上述保证。 ## 验收条件 - [ ] 多轮测试使原始委托退出近期消息窗口,实际发出的请求仍包含当前有效的子任务范围、关键纠正和未完成事项。 - [ ] 最近 12 条消息、64 KiB 历史字节上限及最终模型上下文窗口裁剪分别有回归;持续约束在最终实际请求中仍完整,必需内容无法容纳时明确停止或收敛,不静默丢失后继续。 - [ ] 测试包含多次真实纠正、替代和撤回:保留当前约束,不复活被明确替代的旧约束。 - [ ] 数据库重开后仍保留相同的当前约束和来源绑定;若实施第二阶段摘要,再验证压缩不会改写原始历史,摘要失败有明确且有界的处理方式。 - [ ] 两个不同子代理的委托和摘要不能混用;同一 child 跨 attempt 保留仍有效约束,但投递/消费收据只绑定当前 attempt,不恢复旧 lease,父指令消费仍保持幂等。 - [ ] 生成摘要若发起模型调用,其 token、费用和重试纳入现有预算;摘要不授予工具、凭据、审批或旧 lease。 - [ ] 验收检查实际模型输入、持久记录和失败状态,不以模型偶然复述了目标作为唯一通过证据。 ## 权限与非目标 本项涉及子代理上下文与持久化,不增加文件修改、Shell、网络或其他子代理的读取权限。历史材料仍是带来源的任务上下文,不恢复旧执行权限。若扩展持久协议,应补齐兼容、恢复和回滚读取边界。 ## 证据边界 依据固定提交的历史选择和指令消费链路确认条件性缺口,不声称每个子任务都会丢失目标,也不声称已用真实模型复现错误交付。
Activity