## Bug 之前 PR #59 修了 ExitPlanMode 没把计划发给用户的问题。但 ExitPlanMode 是 `requiresUserInteraction()` 的工具,CLI 在等用户点「批准」按钮。我们只 surface 了计划,没有 feed back 审批结果。 ## 表现 1. Agent 进入 plan 模式,写好计划,调用 ExitPlanMode 2. 计划发到 channel(PR #59 修好的部分) 3. CLI 阻塞,等待 tool_result 审批 4. 用户回复一句 → `run()` 调 `client.query(reply)` 当作新消息发进去 5. CLI 的 pending tool_use 没被解决,重新 emit → 计划又被发一遍 → 死循环 ## 期望 用户回复后能正常 break 出 plan 模式,开始执行或者根据反馈修改计划。 ## 解决方向 复用 AskUserQuestion 的 `_pending_ask` 机制: - ExitPlanMode 触发时,surface 计划 + 提示文字("回复 Yes 批准 / No <修改意见>"),设置 pending state,return - 下一次 `run()` 解析用户回复(Yes/No 前缀,中英文都支持),把对应的 tool_result 发回去让 CLI 继续 - No 后面的文字作为修改意见发回 LLM - 没匹配上 Yes 的回复默认拒绝 + feedback,避免没明确批准就跑计划
Bug
之前 PR #59 修了 ExitPlanMode 没把计划发给用户的问题。但 ExitPlanMode 是
requiresUserInteraction()的工具,CLI 在等用户点「批准」按钮。我们只 surface 了计划,没有 feed back 审批结果。表现
run()调client.query(reply)当作新消息发进去期望
用户回复后能正常 break 出 plan 模式,开始执行或者根据反馈修改计划。
解决方向
复用 AskUserQuestion 的
_pending_ask机制:run()解析用户回复(Yes/No 前缀,中英文都支持),把对应的 tool_result 发回去让 CLI 继续