ocra

安装

环境要求、从 npm 安装 ocra,以及从源码构建。

ocra 目前是早期的 0.x 版本:不同的次版本之间,选项和输出仍可能变化。质量实测说明了它的审查能发现什么、会漏掉什么。

环境要求

  • Node.js 22.19 或更高版本
  • Git
  • 至少一个模型供应商的 API key

默认的 OpenCode agent 运行时会作为可选依赖自动安装,不需要单独安装。不想装它,见不装 OpenCode。

从 npm 安装

npm install -g @open-cr-agent/cli
ocra --version

更新:npm install -g @open-cr-agent/cli@latest。卸载:npm uninstall -g @open-cr-agent/cli。

不想安装也可以用 npx,它会先下载再运行:

npx @open-cr-agent/cli review

请连同可选依赖一起安装(npm 默认如此):OpenCode 运行时和它的二进制文件都是可选依赖,--omit=optional 会把 OpenCode 整个略去(见不装 OpenCode)。

npm 11.16 及更高版本会提示 opencode-ai 有一个不在 allowScripts 允许范围内的安装脚本,npm 12 会直接拦下它。ocra 不需要这个脚本:没有它也能在平台包里找到 OpenCode 二进制文件,所以不必放行。

不装 OpenCode

OpenCode 运行时 @open-cr-agent/runtime-opencode 是 CLI 的可选依赖:连同它的原生二进制文件,约占一次安装 175 MB 中的 165 MB。如果你用的模型都在自己声明的端点上,并且配置里设了 "runtime": "direct"(见选择运行时),就可以不装它。npm install -g 不管传什么参数都会安装可选依赖,所以请把 ocra 装进一个单独的目录:

npm install --prefix ~/.ocra --omit=optional @open-cr-agent/cli
~/.ocra/node_modules/.bin/ocra --version   # 或者把 ~/.ocra/node_modules/.bin 加进 PATH

把 ocra 作为项目依赖安装时,同样可以用 --omit=optional。ocra 只在评审需要时才导入运行时,ocra review --plan 不需要运行时。如果配置选的是默认的 opencode,评审会在调用任何模型之前以退出码 2 停下,说明缺了哪个包,并给出两条出路:设置 "runtime": "direct",或者在 ocra 旁边安装与 ocra 版本完全一致的运行时(npm install --prefix ~/.ocra @open-cr-agent/runtime-opencode@<版本>)。

在 GitHub Action 里,输入 opencode: false 起同样的作用(见 GitHub)。

容器镜像

从 0.2.0 起,每个发布版本都同时提供 amd64 和 arm64 的容器镜像 ghcr.io/jma49/ocra:<版本>。它由发布 workflow 用刚发布的包构建,安装方式与 GitHub Action 相同(依赖版本固定,校验签名和 provenance),带有 git,以非特权用户 node 运行。

docker run --rm --user "$(id -u):$(id -g)" --volume "$PWD:/repo" \
  --env GEMINI_API_KEY ghcr.io/jma49/ocra:0.2.0 ocra review --from main

0.2.0 之后的镜像以 ocra 为入口点(entrypoint),所以写 docker run <镜像> review --from main 就够了;像上面那样在前面多写一个 ocra,对每个版本的镜像都有效。像上面这样以你自己的用户运行,它才能在你的代码目录里写 .ocra/sessions/。模型密钥和 OCRA_* 变量用 --env 传入。用 gh attestation verify oci://ghcr.io/jma49/ocra:<版本> --repo jma49/Open-CR-Agent 核对镜像的来源。

从源码安装

要参与开发 ocra,或者运行尚未发布的版本:

git clone https://github.com/jma49/Open-CR-Agent.git
cd Open-CR-Agent
npm install
npm run build
npm link --workspace @open-cr-agent/cli

npm link 会把 ocra 命令装到全局。更新时拉取代码并重新构建:

git pull && npm install && npm run build

卸载:npm unlink --global @open-cr-agent/cli。

也可以不 link,直接运行构建好的 CLI:

node /path/to/Open-CR-Agent/packages/cli/dist/main.js review

OpenCode 二进制文件

ocra 先在 opencode-ai 对应平台的包里找 OpenCode 二进制文件,再到 opencode-ai/bin/ 里找:这个包的安装脚本运行时会把二进制文件放在那里。两处都没有时,可以手动指定:

export OCRA_OPENCODE_BIN=/path/to/opencode
在 GitHub 上编辑

本页目录