feat: 切换为顺序 Todo + inline SubAgent 执行闭环(非 DAG)#365
Conversation
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
|
@xgopilot 针对本次PR,请给我一份给AIreview用的提示词,针对的是修改中所有可能存在的风险点,也可以是当前涉及模块一直存在的风险点 |
|
@xgopilot 你现在是本 PR 的严格风险审查器。请只输出“问题”,不要输出表扬或泛泛建议。 审查对象:PR #365 feat: 接入 SubAgent 自动派发与 Todo DAG 自主执行闭环 internal/runtime/run.go 运行时闭环风险:len(toolCalls)==0 分支下 dispatch 与 agent_done 的停止条件是否可能误判,是否会导致提前结束、空转循环、或遗漏待执行 todo。 仅输出以下三段:Findings、Open Questions、Regression Tests Needed |
|
@xgopilot 解决上述提到的review和comment问题, |
处理结果已按你的要求完成并推送到
新增回归测试
验证
|
|
@xgopilot 提高覆盖率,然后帮我查找bug修复 |
处理结果本次已在当前 PR 分支完成“提覆盖率 + 查 bug 并修复”,并推送到 已修复的 bug
覆盖率提升改动补充了
验证结果
说明
|
|
@xgopilot 针对本次PR,请给我一份给AIreview用的提示词,针对的是可能存在的风险点、方案是否合理等等。 |
|
@xgopilot 请你作为严格的 Go 架构与稳定性审查助手,审查 PR #365: 审查目标:聚焦风险点与方案合理性,不要写表扬性内容。请重点验证以下内容:
输出格式要求:
补充约束:
|
|
@xgopilot 解决CI冲突 |
处理结果已完成“解决 CI 冲突”,并将修复推送到当前 PR 分支 修复内容
验证
说明
|
|
@xgopilot 请你作为严格的 Go 架构与稳定性审查助手,审查 PR https://github.com/1024XEngineer/neo-code/pull/365:feat: 接入 SubAgent 自动派发与 Todo DAG 自主执行闭环(分支 feat/subagent-auto-dispatch)。 审查目标:聚焦风险点与方案合理性,不要写表扬性内容。请重点验证以下内容: 闭环正确性 按严重级别输出:Blocking、Major、Minor。 不要泛泛而谈,必须基于本 PR 实际变更文件。 |
|
@xgopilot 修复review到的问题 |
修复结果已按你指定的评论(
已修复内容
验证已执行并通过:
未处理项
|
|
@xgopilot 该分支存在冲突,必须解决 internal/config/runtime.go |
处理结果已解决你指定的 CI 冲突并直接推送到当前 PR 分支: 已推送提交: 本次修复:
验证结果:
未处理项:
|
|
@xgopilot,CI还是冲突,请重新修复并推送,还有刚刚最新的两条review的问题需要被解决 |
|
/code CI还是冲突,请重新修复并推送,还有刚刚最新的两条review的问题需要被解决 |
处理完成已按你说的“最新两条 review + 重新修复并推送”处理完并推送到当前 PR 分支。
本次修复
回归测试
验证
说明本地未发现冲突标记,且全量测试通过;我无法直接查看 GitHub Actions 运行日志,如果 CI 仍报冲突/失败,请贴出具体 job 报错,我会继续按报错点修复。 |
|
/code 你拉一下 main分支和我当前 pr分支,runtime 和runtime test有冲突,请解决冲突后推到此pr分支 |
处理结果已完成 变更说明
验证
提交信息
|
|
AIReview 提示词(风险点 + 方案合理性) 审查对象:PR #365 feat: 切换为顺序 Todo + inline SubAgent 执行闭环(非 DAG) 请重点审查以下文件: internal/runtime/run.go 主链路收敛正确性:顺序 Todo + inline subagent 是否与 runtime 主循环一致,是否仍有隐式 DAG 假设残留导致误调度。 仅输出三段:Findings、Open Questions、Regression Tests Needed |
|
@xgopilot 修复comment提到的问题,其中熔断移除不用修复,这是有意为之,然后提高测试覆盖率到100 |
完成结果已按你在 已推送提交: 已修复项
测试与覆盖率已执行并通过:
覆盖率结果:
未完成项
|
- add spawn_subagent permission mapping with stable target extraction - forward subagent capability into permission execution via signed token - strengthen legacy todo executor inference for retry metadata - expand regression coverage for mapper/capability/session migration Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: Cai-Tang-www <106404101+Cai-Tang-www@users.noreply.github.com>
|
AIReview 提示词(风险点 + 方案合理性) 审查对象:PR #365 feat: 切换为顺序 Todo + inline SubAgent 执行闭环(非 DAG) 请重点审查以下文件: internal/runtime/run.go 主链路收敛正确性:顺序 Todo + inline subagent 是否与 runtime 主循环一致,是否仍有隐式 DAG 假设残留导致误调度。 仅输出三段:Findings、Open Questions、Regression Tests Needed |
|
#365 (comment) |
完成情况已按你指定的评论 已推送提交:
关键修复
测试补齐
验证结果已执行并通过:
覆盖率结果:
未完成项
|
…ontract Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: Cai-Tang-www <106404101+Cai-Tang-www@users.noreply.github.com>
fix: tighten inline subagent capability and output contract
|
@xgopilot 提高覆盖率到95 |
结果已完成一轮覆盖率增强并推送到当前 PR 分支。新增提交: 本次改动
覆盖率结果
测试
推送
说明:如果你这里要求的是“全仓总覆盖率 >=95%”,当前仓库基线仍在 |
Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: Cai-Tang-www <106404101+Cai-Tang-www@users.noreply.github.com>
test: improve coverage for subagent dispatch and chatcompletions
|
该分支存在冲突,必须解决 internal/promptasset/templates/core/tool_usage.md @xgopilot 帮我解决CI冲突 |
处理结果已完成当前 PR 分支的冲突修复,并直接推送到
已推送提交: 验证
未执行项
|
Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: Cai-Tang-www <106404101+Cai-Tang-www@users.noreply.github.com>
|
你现在是本 PR 的严格审查器。只输出问题与风险,不要输出表扬或泛泛建议。 审查对象:PR #365 feat: 切换为顺序 Todo + inline SubAgent 执行闭环(非 DAG) 请重点审查以下文件: internal/runtime/run.go 主链路收敛正确性:顺序 Todo + inline subagent 是否与 runtime 主循环一致,是否仍有隐式 DAG 假设残留导致误调度。 仅输出三段:Findings、Open Questions、Regression Tests Needed |
|
@xgopilot [P0] spawn_subagent(inline) capability token 可能绕过既有权限/审批策略。 [P1] mode=todo 写入了 executor=subagent,但主链路未看到生产代码接入调度执行,存在“残留 DAG 语义但不可执行”风险。 |
修复结果已按你触发评论中的两项问题完成修复并推送到当前 PR 分支。 本次提交: 关键改动:
测试与回归:
推送与 fork 同步:
未做项:
|
Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: Cai-Tang-www <106404101+Cai-Tang-www@users.noreply.github.com>
fix: inline-only spawn_subagent mode and capability inheritance hardening
|
@xgopilot 提高测试覆盖率到100 |
结果同步已按你这条指令补充测试并推送到当前 PR 分支 本次主要补齐了
验证结果已执行:
覆盖率变化(关键包):
未完成项说明你要求“提高测试覆盖率到 100%”。 |
Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: Cai-Tang-www <106404101+Cai-Tang-www@users.noreply.github.com>
|
review @xgopilot |
|
|
||
| // Run 执行一次完整的 ReAct 闭环:保存用户输入、驱动模型、执行工具并发出事件。 | ||
| // 已有会话会先加锁再加载/更新,确保同一会话并发 Run 不会出现状态覆盖; | ||
| // 新会话在创建后再绑定会话锁,不同会话可并行执行。 |
There was a problem hiding this comment.
这里对应的实现已经移除了 NoProgressStreak/RepeatCycle 硬停;当前 run 只依赖“模型自行停止或外部取消”。如果模型持续返回重复/无进展的 tool calls,run 会无限继续并长期持有 session 锁。建议恢复至少一个 fail-safe(max turn 或 no-progress hard cap)避免会话卡死。
| if maxSteps > subAgentMaxStepTurnsLimit { | ||
| return subAgentMaxStepTurnsLimit | ||
| } | ||
| return maxSteps |
There was a problem hiding this comment.
maxSteps 现在不再有上限截断,而 spawn_subagent 入参校验只要求 max_steps >= 0。这会让单次 inline 子代理轮次可被无界放大,带来高成本/高延迟和限流风险。建议恢复统一 hard cap(如 12/20)并在参数解析阶段做 clamp。
关联 Issue
Closes #364
目标变更说明
本 PR 目标已从“SubAgent 自动派发 + Todo DAG 自主执行”切换为:
顺序 Todo 执行 + 主代理按需 inline 调用 subagent(非 DAG 主路径)。
变更原因:当前阶段优先保障主链路稳定、可观测、可调试,避免复杂调度带来的不确定性。
本次改动
1) 执行模型收敛(稳定优先)
spawn_subagent(mode=inline)2) SubAgent 工具链路与安全保持一致
3) 提示词与契约增强
spawn_subagent两种模式语义,强调 inline 为即时执行闭环allowed_tools/allowed_paths)4) 稳定性与可观测性修复
测试
已执行并通过(改动相关包):
go test ./internal/context ./internal/promptasset ./internal/provider/openaicompat/chatcompletions ./internal/runtime ./internal/tools/spawnsubagent ./internal/tui/core/app -count=1说明:全量
go test ./...在当前 upstream 下仍有与本 PR 无关的既有失败(internal/app临时目录 sqlite 文件占用、internal/session目录异常分支断言)。本 PR 未引入这些问题。