Skip to content

feat: add kimi-cli support#75

Open
Svtter wants to merge 1 commit into
mainfrom
feat/add-kimi-cli-support
Open

feat: add kimi-cli support#75
Svtter wants to merge 1 commit into
mainfrom
feat/add-kimi-cli-support

Conversation

@Svtter
Copy link
Copy Markdown
Collaborator

@Svtter Svtter commented May 15, 2026

变更内容

  • 新增 setup-kimi-cli action:优先使用 uv tool install --upgrade kimi-cli 安装,回退到 venv + pip
  • 新增 run-kimi-cli action:执行 kimi --print --yolo,支持 retry、timeout、extra-env
  • review / feature-missing / spec-coverage action 新增 cli input(默认 opencode,可选 kimi-cli
  • 添加单元测试和 act smoke test

兼容性

默认行为不变,完全向后兼容。用户显式指定 cli: kimi-cli 时才会走 kimi-cli 路径。

本地测试

  • python3 tests/test_all.py:39 个测试全部通过
  • act -W .github/workflows/test-kimi-cli.yml -j smoke-kimi-cli:Job succeeded

- Add setup-kimi-cli action to install kimi-cli via pip/venv
- Add run-kimi-cli action to execute kimi with retry logic
- Support cli selection (opencode/kimi-cli) in review, feature-missing,
  and spec-coverage actions
- Add smoke tests and unit tests for kimi-cli components
- Add local act test workflow for kimi-cli
@github-actions
Copy link
Copy Markdown

发现遗漏

总结

PR 的大部分功能实现完整:setup-kimi-clirun-kimi-cli action 正确实现,review, feature-missing, spec-coverage 三个 action 都新增了 cli input 和 kimi-cli 条件分支,单元测试和 smoke test 也均已覆盖。

但发现 1 个遗漏:

MEDIUM

  • feature-missing/action.yml 缺少 extra-env input 定义
    PR 新增了 feature-missing/action.yml 的 kimi-cli 条件分支(第 274-292 行),第 292 行将 ${{ inputs.extra-env }} 传递给 run-kimi-cli action,但 feature-missing/action.yml 的 inputs 部分(第 4-158 行)未定义 extra-env input。作为对比,review/action.ymlspec-coverage/action.yml 都正确定义了 extra-env input。
    后果:用户使用 cli: kimi-cli 时无法通过 feature-missing action 向 kimi-cli 传递自定义环境变量,extra-env 功能不可用。
    修复:在 feature-missing/action.yml 的 inputs 中添加 extra-env 定义(可参考 review/action.yml:143-149 的定义方式),位置建议在 fallback-on-regex(第 158 行)之后、use-github-token(第 119 行)之前,保持与 review action 一致的 input 顺序。

New%20session%20-%202026-05-15T15%3A07%3A41.558Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

我现在已完成对变更文件的完整审查。以下是我的分析:

有条件合并

审查摘要

整体实现结构合理,向后兼容,测试覆盖基本到位。但存在一个安全问题和几个一致性问题需要处理。

阻塞项

  1. run-kimi-cli/action.yml shell 注入风险: action 使用内联 export KIMI_PROMPT='${{ inputs.prompt }}'(第61-70行)的方式传递输入值。如果任意用户输入(promptextra-env 等)内容中包含单引号,bash 引号会被破坏,导致任意代码执行。项目已有安全模式可以参考:run-opencode/action.yml 使用 env: block 传递变量(第53-62行),由 GitHub Actions 框架处理引号转义。建议将 run-kimi-cli/action.yml 的 inline export 改为 env: block。

建议项

  1. feature-missing/action.yml 引用了不存在的 input: 第292行 extra-env: ${{ inputs.extra-env }} 被传入 run-kimi-cli,但 feature-missing action 的 inputs 中没有定义 extra-envreviewspec-coverage 都有)。虽然 GitHub Actions 会将未定义 input 视为空字符串,功能上不会有问题,但代码不一致且容易引起困惑。建议添加 extra-env input 或移除引用。

  2. install-kimi-cli.sh uv 回退逻辑边缘情况: 当 uv tool install --upgrade 安装成功但 binary 无法正常工作时(第56行检测失败),脚本 fallthrough 到第64行的 command -v kimi 检查。如果 uv 将 kimi 放到了 PATH 上(如在 $HOME/.local/bin/kimi),即使 binary 是破损的,command -v kimi 也会找到它,创建 symlink 并 exit 0,导致 pip fallback 路径永远不会被执行。

  3. run-kimi-cli/action.yml 内联 export 风格不一致: 除 shell 注入风险外,该写法也与项目中 run-opencode/action.yml 已建立的 env: block 风格不一致。建议统一风格以降低维护成本。

New%20session%20-%202026-05-15T15%3A07%3A39.883Z
opencode session  |  github run

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.

1 participant