Skip to content

fix(kimi): show plan approval in native Codex choices - #712

Merged
BytePioneer-AI merged 1 commit into
BytePioneer-AI:mainfrom
liki-0814:codex/fix-kimi-plan-approval
Nov 3, 2026
Merged

BytePioneer-AI merged 1 commit into
BytePioneer-AI:mainfrom
liki-0814:codex/fix-kimi-plan-approval

Conversation

@liki-0814

Copy link
Copy Markdown
Contributor

Summary

Kimi Code 的计划审批包含“批准方案”“修改计划”和“拒绝并退出”等不同选项。它们经通用审批映射后出现多个相同的 allow/deny effect,Desktop 因而展示 MCP 审批表单,而不是原生选择回答界面。

仅在 ExitPlanMode 工具名和已确认的原生 plan_* 选项格式同时匹配时,将计划审批投影为公共 Question 交互,使用 Codex item/tool/requestUserInput。保留计划正文、选项顺序与标签,选择结果原样回传 Kimi ACP optionId,因此 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、回滚等回归一并通过。
  • 四个修改/新增 TypeScript 文件通过 ESLint;五个改动文件通过 Prettier;node tools/check-boundaries.mjs 与 git diff --check 通过。

自动测试使用模拟 ACP 请求,没有发送模型请求。未替换本机运行中的插件,未完成真实 Kimi 模型生成计划与 Desktop UI 的端到端验收,因此不附未经验证的效果截图。

@coderabbitai

coderabbitai Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between b3094d5 and f1e44d3.

Files selected for processing: 5
  • docs/harnesses/capability-boundaries.md
  • packages/adapters/kimi-code/src/kimi-session.ts
  • packages/adapters/kimi-code/src/plan-approval.ts
  • packages/adapters/kimi-code/test/kimi-session.test.ts
  • packages/adapters/kimi-code/test/plan-approval.test.ts

Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 3 remain after this review.

Recent review details
Context from checks skipped due to timeout: 4
  • GitHub Check: CodeRabbit
  • GitHub Check: Check ubuntu-22.04
  • GitHub Check: Check windows-latest
  • GitHub Check: Check macos-15
Additional context used
Code guidelines: 1
AGENTS.md — auto-discovered
Path-based instructions: 1
Source excerpt: `codexhost` runs external Agent Harnesses as independent Threads inside Codex Desktop, preserving the official shell and native Codex path.

CodeRabbit inference engine (AGENTS.md)

Files:

  • docs/harnesses/capability-boundaries.md
  • packages/adapters/kimi-code/test/kimi-session.test.ts
  • packages/adapters/kimi-code/src/kimi-session.ts
  • packages/adapters/kimi-code/test/plan-approval.test.ts
  • packages/adapters/kimi-code/src/plan-approval.ts
Learnings: 1
Learning: 2026-10-23T15:37:32.051Z
Learnt from: CR
Repo: BytePioneer-AI/codex-host PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-10-23T15:37:32.051Z
Learning: Applies to ** : Source excerpt:
# Repository Guidelines

## Boundary Rules

- Harness-specific protocol details must remain inside the corresponding Adapter.

Applied to files:

  • packages/adapters/kimi-code/src/plan-approval.ts
Additional comments: 5
packages/adapters/kimi-code/src/plan-approval.ts: 1

13-13: LGTM!

Also applies to: 23-38, 42-69

packages/adapters/kimi-code/test/plan-approval.test.ts: 1

7-17: LGTM!

Also applies to: 19-67

packages/adapters/kimi-code/src/kimi-session.ts: 1

99-99: LGTM!

Also applies to: 766-778

packages/adapters/kimi-code/test/kimi-session.test.ts: 1

27-27: LGTM!

Also applies to: 1128-1225

docs/harnesses/capability-boundaries.md: 1

15-20: LGTM!

Summary

Summary by CodeRabbit

  • 新功能
    • Kimi Code 的计划审批现可通过原生选择界面处理,支持批准计划、修改计划或拒绝并退出;所选操作会按对应结果提交。
    • 取消审批仍会返回取消结果。
  • 兼容性
    • 不符合支持条件的计划选项及其他工具审批,仍沿用原有处理方式。

新增 Kimi Code 计划审批投影。符合条件的 ExitPlanMode 请求显示为 Codex 原生选择问题,所选选项映射回 ACP 权限响应;不符合条件的请求继续使用原有审批流程。

Changes: Kimi 计划审批

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 权限响应
Loading

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: Passed 4
Check name Status Explanation
Title check Passed 标题准确概括了主要变更:将 Kimi 计划审批显示为原生 Codex 选择项。标题简洁且与变更内容相关。
Description check Passed 描述与变更内容相关,并说明了适用条件、响应语义、兼容范围和测试结果。
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
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.

Share

@BytePioneer-AI
BytePioneer-AI merged commit bb90875 into BytePioneer-AI:main Nov 3, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants