将MiMo-Code与spec-manager进行深度集成后,整个系统便构建起一套以三层规格为锚点的闭环反馈机制:L1 PRD精准界定问题影响范围,L2 Design明确约定修复路径,L3 Impl锁定具体修改点。所有Agent的输出结果必须严格对齐L3规格,随后生成结构化的反馈信号,这些信号共享在同一个spec ID之下,最终通过语义比对实现闭环验证——而非仅仅依赖简单跑一遍测试就草草收场。

在多Agent协同工作的反馈循环中,核心要点并非让AI反复无意义地重试,而是确保每一次执行都能留下可验证、可回溯、可进化的轨迹。MiMo-Code本身并不具备闭环能力,但一旦接入spec-manager,它便从“写完即走”的代码补全工具,蜕变为具备自我校准能力的智能修复引擎。
用规格锚定反馈起点
缺乏明确目标的修复过程,极易陷入语义镜像的陷阱:Agent A提出“修复空指针”,Agent B回复“已检查null值”,A看到“null”后又触发新一轮“请再确认边界条件”……如此反复,循环不止。
spec-manager强制要求在修复之前冻结三层规格:
- L1 PRD:定义问题影响范围(例如“登录页点击后崩溃,仅影响iOS 17+版本”)
- L2 Design:约定修复路径(例如“不改AuthSDK,仅添加空值guard保护”)
- L3 Impl:锁定具体修改点(例如“在UserSession.init()第42行插入非空断言”)
这三层规格构成了所有后续反馈的唯一参照标准。任何Agent的输出都必须与L3对齐,否则直接被拒绝,无法进入下一轮处理流程。
把修复动作转化为结构化反馈信号
MiMo-Code完成修复后,不再仅仅输出一个diff或日志就结束工作。spec-manager要求它同步生成三类结构化的反馈信号:
- 执行证据:git diff哈希值 + 测试覆盖率变化截图
- 自检结论:是否覆盖L3所有修改点?是否触发了L2约定的副作用检查?
- 环境反馈:CI是否通过?预发环境能否复现原始问题?
这些信号会被结构化地存储到spec实例中,成为后续同类问题的先验知识。例如,某次修复因未mock网络超时而失败,该失败模式会被自动标记为“L3 Impl必须包含timeout mock”的规则,下次同类任务直接生效。
让多个Agent在同一反馈轨道上接力
单次修复往往需要多个角色协同完成:静态分析Agent负责找出潜在空指针、测试Agent生成边界用例、部署Agent推送验证包。如果没有统一的反馈轨道,各Agent很容易各执一词,难以达成共识。
spec-manager提供了共享上下文空间:
- 所有Agent都读写同一个spec ID下的feedback日志
- 消息格式强制包含performative字段(例如"confirm" / "refute" / "extend"),避免模糊响应
- 当测试Agent发送"refute"并附带复现步骤时,系统会自动触发静态分析Agent的二次扫描,而不是让修复Agent盲目重试
这种设计切断了“你问我答、我再问你”的镜像循环链,将协作拉回到以规格为中心的负反馈轨道上。
闭环验证不是重跑,而是比对
传统做法是“修复 → 测试 → 失败 → 再修复”的循环。spec-manager则将验证转变为一次精准的语义比对:
- 提取L3规格中声明的“预期行为变更”(例如“点击登录按钮后,不再抛出NPE,而是显示Toast提示”)
- 调用自动化验收工具,提取实际运行中对应的事件流
- 计算二者的语义相似度(并非字符串匹配),低于阈值则判定闭环失败
这意味着:即使测试通过,但Toast文案与规格不符,照样会被拦截;即使测试失败,但错误堆栈指向L3之外的模块,系统会提示“问题超出当前规格范围”,而不是让Agent继续盲目猜测。
