fix(agent-engine): persist review comment, fix sync and ci log bugs#29
fix(agent-engine): persist review comment, fix sync and ci log bugs#29HelloWorldU wants to merge 2 commits into
Conversation
Fix four active bugs: review comment missing, false sync commit failure, CI logs truncated from wrong end, and stop not breaking retry loops. 已有功能测试覆盖,手动验证各修复路径通过。
HelloWorldU
left a comment
There was a problem hiding this comment.
[自审] 审阅发现潜在问题,kimi 输出如下:
审阅完毕,发现 2 个问题(1 个功能体验问题、1 个文档一致性问题),具体如下:
1. github-api.ts — 截断标记位置错误(用户体验问题)
return text.length > 8000 ? text.slice(-8000) + '\n...[truncated]' : textslice(-8000) 截掉的是日志开头的 2000+ 字符(即 setup 噪音),保留的是末尾 8000 字符。但 ...[truncated] 标记仍放在末尾,会让人误以为尾部还有内容被截断,而实际上被截断的是头部。
建议:改为在头部提示截断,例如:
return text.length > 8000 ? '...[truncated]\n' + text.slice(-8000) : text或采用 backlog 里提到的“稳版”:首部 500 + [middle truncated] + 末尾 7500。
2. docs/exec-plans/backlog.md — 文末更新说明未同步
diff 中已移除 4 个 bug(#1 review.comment 丢失、#2 stop 不级联、#3 sync 误报、#5 CI log 截断方向),目前活跃 bug 仅剩 #4(F5 刷新 dashboard 后 agents 不可见) 1 个。
但文末仍保留:
Updated: 2026-05-28 — 新增架构决策项 + 4 个活跃 bug …
建议:更新为 1 个活跃 bug(#4 F5 失踪),并更新日期。
其他说明(非阻塞)
stop()修复为最小可行方案:仅在sendInstruction返回后检查this.state.status === 'stopped',若sendInstruction内部长时间挂起,停止按钮不会立即生效。这与 backlog 原描述的“AbortController 级联取消”根治方案有差距,但作为增量修复功能正确,可接受。review.comment = comment || ''修复了 #1 的根因,且空字符串兜底避免了undefined污染持久化状态,合理。- 删除
syncBranchWithMain中多余的gitCommit正确解决了 squash merge 场景下的误报,且同时删除了配套的abortMerge调用,逻辑自洽。
请确认是否修复上述 2 个问题,修复后便可合并。
注:GitHub 不允许 PR 作者 approve 自己的 PR,此评论仅作为审阅记录。
HelloWorldU
left a comment
There was a problem hiding this comment.
[自审] 自动审阅通过(LGTM)
注:GitHub 不允许 PR 作者 approve 自己的 PR,此评论仅作为审阅记录。
HelloWorldU
left a comment
There was a problem hiding this comment.
[自审] 审阅发现潜在问题,kimi 输出如下:
审阅意见
1. github-api.ts — 截断标记位置错误(需修复)
两处 getCheckRunLogs 的改动:
return text.length > 8000 ? text.slice(-8000) + '\n...[truncated]' : texttext.slice(-8000) 保留的是日志尾部、截掉的是首部,但 ...[truncated] 却追加在末尾。这会误导阅读者(及 LLM)以为末尾被截断了,实际上被截掉的是开头的 setup 噪音。
建议改为首部标记:
return text.length > 8000
? '...[truncated]\n' + text.slice(-7985)
: text2. agent.ts — stop() 检查是协作式而非级联取消(提醒,非阻断)
用 if (this.state.status === 'stopped') return 做中断检查是务实的改进,能缓解症状。但需注意:
- 若
sendInstruction内部有finally或在完成后把状态重置为ready,则这两个检查点可能失效。 - 这并没有实现 backlog 里提到的 AbortController / cancellation token 级联取消,只是两个显式埋点。作为战术修复可以合入,但架构上并未彻底消除「异步链停不下来」的根因。
3. 其余改动 — 正确
| 改动 | 评估 |
|---|---|
review.comment = comment || '' |
✅ 补全了 comment 持久化,闭环修复 |
syncBranchWithMain 移除多余的 gitCommit |
✅ 自动 merge 后无 staged changes,gitCommit 必报 nothing to commit,删除正确 |
backlog.md 移除已修复条目 |
✅ 与代码变更对应 |
结论
除 第 1 点(截断标记位置) 需要修正外,其余改动逻辑正确、无安全隐患、无规范问题。请修复标记位置后可合入。
注:GitHub 不允许 PR 作者 approve 自己的 PR,此评论仅作为审阅记录。
HelloWorldU
left a comment
There was a problem hiding this comment.
[自审] 自动审阅通过(LGTM)
注:GitHub 不允许 PR 作者 approve 自己的 PR,此评论仅作为审阅记录。
Add AgentDetail component with swarm store integration and update agent-engine agent interface. Synchronize architecture, component patterns and frontend documentation. 暂无新增测试文件,需后续补充。
HelloWorldU
left a comment
There was a problem hiding this comment.
[自审] 自动审阅通过(LGTM)
注:GitHub 不允许 PR 作者 approve 自己的 PR,此评论仅作为审阅记录。
HelloWorldU
left a comment
There was a problem hiding this comment.
[自审] 自动审阅通过(LGTM)
注:GitHub 不允许 PR 作者 approve 自己的 PR,此评论仅作为审阅记录。
HelloWorldU
left a comment
There was a problem hiding this comment.
[自审] 自动审阅通过(LGTM)
注:GitHub 不允许 PR 作者 approve 自己的 PR,此评论仅作为审阅记录。
…iewer 修订 接管 PR #29 + 应用自审 reviewer 两处修订: PR #29 原内容: - agent.ts submitReview: 补 review.comment = comment || '',解决 fix loop 拿不到具体审阅意见的根因(Bug #1) - agent.ts syncBranchWithMain: 删 merge 成功后多余的 gitCommit/abortMerge,squash merge 场景不再误报「同步提交失败」(Bug #3) - agent.ts: sendInstruction 后增加 stopped 状态检查,最小可行的 stop 级联兜底(Bug #2 增量修,根治仍归并到架构决策项) - github-api.ts getCheckRunLogs: 截断方向从 slice(0, 8000) 改为 slice(-8000)(Bug #5) - 配套文档同步 + AgentDetail/Store 透传 review.comment 字段 reviewer 修订(本次额外): - github-api.ts: '...[truncated]' 标记从尾部挪到头部,避免误导用户以为尾部还有截断 - backlog.md: footer 同步更新(4 个活跃 bug → 1 个 #4 F5 失踪)+ 应用本地删除架构项「风险」段
HelloWorldU
left a comment
There was a problem hiding this comment.
[自审] 审阅发现潜在问题,kimi 输出如下:
审阅发现以下问题:
1. github-api.ts 截断标记位置误导
text.slice(-8000) 改为保留日志末尾(正确),但 ...\n[truncated] 仍放在返回内容末尾,会让用户误以为"后面还有内容被截断了",而实际是开头被截断。
建议:将标记移至被截断的一侧,例如:
return text.length > 8000 ? '...[truncated]\n' + text.slice(-8000) : text2. agent.ts 停止状态检查未覆盖异常路径
在 fixBasedOnReviews 的循环中,stopped 检查仅在 sendInstruction 成功返回后执行:
await this.sendInstruction(fixPrompt, ...)
if (this.state.status === 'stopped') return若用户点击「停止」导致 kimi 子进程被 kill,sendInstruction 会抛出异常进入 catch 块,此时 stopped 检查被跳过,循环会继续处理下一个 review。backlog #2(stop 不级联)因此未完全修复。
建议:在 catch 块内补充 if (this.state.status === 'stopped') return;,避免停止后继续重试。
3. docs/exec-plans/backlog.md 更新日志未同步
文档已移除 bug #1、#2、#3、#5,但文末 Updated 行仍将其列为"4 个活跃 bug",描述与当前内容矛盾。
建议:同步更新末尾时间戳说明,例如改为"剩余活跃 bug:#4(F5 刷新后 agents 不可见)"。
其余变更(submitReview 传递 comment、移除多余的 gitCommit、Vue 组件 emit 类型扩展、store 逻辑同步)逻辑正确,无安全隐患。
注:GitHub 不允许 PR 作者 approve 自己的 PR,此评论仅作为审阅记录。
变更内容
kimi-code-swarm/agent-engine/src/agent.tssubmitReview遗漏review.comment字段,导致审阅评论丢失(Bug feat: 前端专家 #1)syncBranchWithMainmerge 成功后多余调用gitCommit导致误报「同步提交失败」(Bug feat(frontend): add SwarmConfirmModal, SwarmToast, useConfirm, useToast #3)autoSubmitForReview和fixBasedOnReviews中增加stopped状态检查,支持停止按钮中断重试循环(Bug feat(agent-engine): CI failure auto-detect & fix loop #2)kimi-code-swarm/agent-engine/src/github-api.tsgetCheckRunLogs截断方向:从取日志前 8K 改为取后 8K,保留尾部错误信息(Bug refactor: update lib.rs #5)docs/exec-plans/backlog.md类型
检查项