Repository navigation
fix(kimi): show plan approval in native Codex choices - #712
Conversation
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
计划审批投影与校验 packages/adapters/kimi-code/src/plan-approval.ts, packages/adapters/kimi-code/test/plan-approval.test.ts |
新增请求校验、单选问题构造和响应解析。测试覆盖标题、选项约束及取消结果。 |
会话接入与桥接验证 packages/adapters/kimi-code/src/kimi-session.ts, packages/adapters/kimi-code/test/kimi-session.test.ts, docs/harnesses/capability-boundaries.md |
会话处理器接入计划审批投影。集成测试验证选项映射、无效答案和取消行为;文档说明该映射及其适用条件。 |
Estimated code review effort: 3 (Moderate) | ~20 minutes
Change: Bug fix
Sequence Diagram(s)
sequenceDiagram
participant KimiACP
participant KimiSession
participant PlanApprovalProjection
participant CodexQuestion
KimiACP->>KimiSession: 发送 ExitPlanMode 权限请求
KimiSession->>PlanApprovalProjection: 校验并投影请求
PlanApprovalProjection-->>KimiSession: 返回计划审批问题
KimiSession->>CodexQuestion: 显示计划正文和选项
CodexQuestion-->>KimiSession: 返回所选 optionId 或取消
KimiSession-->>KimiACP: 返回 ACP 权限响应
Suggested labels: 范围:适配器
Suggested reviewers: bytepioneer-ai
Merge Risk: 
Minimal · up to f1e44
-
No actionable merge-blocking risk was identified in the plan approval change.
Pre-merge checks: 
4
Finishing Touches
-
Generate unit tests (beta)
-
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Summary
Kimi Code 的计划审批包含“批准方案”“修改计划”和“拒绝并退出”等不同选项。它们经通用审批映射后出现多个相同的 allow/deny effect,Desktop 因而展示 MCP 审批表单,而不是原生选择回答界面。
仅在
ExitPlanMode工具名和已确认的原生plan_*选项格式同时匹配时,将计划审批投影为公共 Question 交互,使用 Codexitem/tool/requestUserInput。保留计划正文、选项顺序与标签,选择结果原样回传 Kimi ACPoptionId,因此plan_revise与plan_reject_and_exit保持不同含义。取消或会话关闭回传原生cancelled,不会默认批准。生产改动只有 Kimi Session 的一处分流和一个局部投影 helper,复用既有问答校验、交互关闭和响应处理。普通工具审批、未知或不完整的计划格式、重复标签仍走现有审批路径。未改公共协议、Renderer、权限模式、普通会话创建或其他 Harness。
本机 Kimi Code 2.4.0 可执行文件内的 ACP 实现(
approvalRequestToPermissionOptions/buildPermissionToolCallUpdate/mapPlanReviewOptionId)用于核对工具名、选项 ID、kind 和回传语义;没有依赖自然语言标题猜测计划审批。Related issues
N/A。此 PR 从 main 独立创建,不包含 #710 或 #711 的提交。
Test plan
macOS,Node 24.22.2:
npx tsc -b packages/adapters/kimi-code packages/protocol-core:通过。tests/tsconfig.json的临时聚焦配置,对两个修改/新增测试文件执行tsc --noEmit:通过,临时文件已删除。npx vitest run --config tests/vitest.config.js packages/adapters/kimi-code/test:14 个文件、181 项通过。新增覆盖批准、两个方案、修改计划、拒绝并退出、取消和关闭,并贯通 Session → Codex 问答投影 → 标签转 ID → 原生 ACP 响应;非法答案不会完成待处理审批。隔离测试覆盖其他工具、未知/缺失选项、重复 ID/标签等格式保持原审批路径。原有普通审批、提问、会话创建与配置、恢复、Fork、回滚等回归一并通过。node tools/check-boundaries.mjs与git diff --check通过。自动测试使用模拟 ACP 请求,没有发送模型请求。未替换本机运行中的插件,未完成真实 Kimi 模型生成计划与 Desktop UI 的端到端验收,因此不附未经验证的效果截图。