second-opinion:用 Codex 或 Antigravity 对 Git 变更做外部代码审查

前言

在 IDE 里让主模型改完代码后,很多人会再开一轮「别的模型帮我看一眼」:未提交的 diff、相对 main 的分支变更,或某个 commit。自己拼 prompt、截 patch、对齐两份审查范围,既费时也容易漏掉未跟踪文件。下面介绍 Trail of Bits 在 skills 市场里提供的 second-opinion Skill:在 Agent 会话里选定审查提供方与范围,把同一份变更交给外部 CLI 做独立审查,并整理发现项;它不自动改代码,也不把结果发到远端服务。

这是什么

second-opinion 是 trailofbits/skills 仓库里 plugins/second-opinion/skills/second-opinion 下的 Agent Skill(SKILL.md 格式)。维护方是 Trail of Bits,与其 Code Auditing、安全审查类插件同属一个 Claude Code / Codex 插件市场。

一句话定位:对用户选定的 未提交变更、相对指定基线的分支 diff,或 指定 commit,调用 Codex 或 Antigravity(以及仍支持账户下的 Gemini CLI)做外部模型代码审查,输出 findings;可选双提供方并行、对比结论。

核心功能

Skill 元数据中的描述为:对 uncommitted changes、branch diffs、commits 从 Codex 或 Antigravity 获取独立审查;在用户要求 external review、second opinion、codex review、gemini review、antigravity review,或使用 /second-opinion 时启用。允许使用的工具包括 Bash、Read、Glob、Grep、AskUserQuestion。

审查维度(由用户或缺省补全)

  1. Provider:Codex、Antigravity,或两者同时(用于对比)。用户点名某一 CLI 时保留该选择。
  2. Scope:工作区未提交变更;相对命名基线的分支 diff;或单个 commit。未给基线时尝试用远端默认分支;无法确定时再问用户。
  3. Context:默认带上适用的项目说明(除非用户排除);用户显式要求与仓库内容在 prompt 里分开写。
  4. Focus:默认一般正确性与可维护性;用户可指定 security、performance 等。

未指定 Google 系 CLI 时,优先 Antigravity(agy)。用户明确要求 Gemini CLI 时按 Gemini 参考文档走;若账户返回 UNSUPPORTED_CLIENT,说明迁移到 Antigravity 并在改 CLI 前询问。

输入与 diff

执行前读取仓库内 references/review-input.md 中的共享 prompt 与 diff 配方。双提供方对比时使用同一份捕获的 diff。未提交审查包含 未跟踪文件;Git 报错保留原样,不当作空 diff。

无变更则不调用外部提供方。超出 CLI 或模型限制时说明限制并请用户缩小范围,不静默截断 patch。

临时 prompt、输出与诊断文件用 mktemp 建在 checkout 之外;每个提供方单独输出与诊断文件;仓库内容以字面量写入,避免 shell 展开。

提供方与调用方式

Provider 说明
Codex references/codex-invocation.md:codex exec,配合 references/codex-review-schema.json
Antigravity references/antigravity-invocation.md:agy 的 print 模式,散文体输出
Gemini CLI references/gemini-invocation.md:仍支持账户下的 headless gemini

Codex 路径不需要 MCP server;不要启动 codex mcp-server,也不要用 codex app-server 替代 CLI 调用。

双提供方且工具支持时并发执行;前台 Bash 审查可设 timeout: 600000(最长约十分钟)。不为审查运行开启自动批准写入。

结果与失败

呈现项包含:提供方与实际模型、严重程度、文件与行号、影响、修改建议;低严重度问题仍保留。Codex schema 严重程度:0 信息、1 低、2 中、3 高,按降序排列。

两份审查都完成时,概括一致与分歧,不把「一致」当作证明;区分外部 findings 与 Agent 自己的判断。

非零退出、无输出、无效 JSON、权限导致无法检查、或要求批准 plan,均视为未完成而非「干净通过」;报告失败与部分结果。仅在可诊断、可恢复原因下重试;认证或配额失败后不要轮换提供方死循环。

缺少可执行文件或账户配置视为审查失败,给出对应安装说明;若请求了双提供方,在可用的一方继续并标明跳过的一方。

安装与启用

Skill 随 trailofbits/skills 市场安装,不是单独 git clone 本 Skill 目录。

Claude Code 添加市场并安装插件:

/plugin marketplace add trailofbits/skills

浏览并安装:

/plugin menu

在菜单中选择包含 second-opinion 的对应插件(路径为 plugins/second-opinion/)。

Codex 可直接使用 Claude 插件市场兼容能力:

codex plugin marketplace add trailofbits/skills
codex plugin list
codex plugin add <plugin-name>@trailofbits

将 <plugin-name> 换为 codex plugin list 中与 second-opinion 对应的插件名(仓库目录为 second-opinion)。

本地开发时,在 本仓库的父目录 执行:

cd /path/to/parent
/plugins marketplace add ./skills

各提供方还需本机已安装并登录对应 CLI(codex、agy 或 gemini)。资料中未给出 Cursor 专用安装步骤,此处不展开。

典型用法

官方 SKILL 中的示例(斜杠命令形式,具体前缀以你所用宿主为准):

  1. 用 Codex 审查未提交变更(含 staged、unstaged、untracked),关注 bug:
/second-opinion:second-opinion use Codex to review my uncommitted changes for bugs
  1. 在同一分支相对 origin/main 的 patch 上对比 Codex 与 Antigravity:
/second-opinion:second-opinion compare Codex and Antigravity on this branch against origin/main
  1. 用 Gemini CLI 审查指定 commit,聚焦安全问题:
/second-opinion:second-opinion use Gemini CLI to review commit abc1234 for security issues

自然语言触发亦可:例如要求 external review、second opinion、codex / gemini / antigravity review。

适用场景与注意

适合:提交或开 PR 前希望第二模型扫 diff;安全或性能专项审查;对比 Codex 与 Antigravity 对同一变更的判断差异。

限制:只产出 findings,不自动修代码、不发帖到 GitHub 等远端;依赖外部 CLI 与账户配额;大 diff 需主动缩小范围;Gemini 账户若已不支持客户端需迁移 Antigravity。

与仓库内 differential-review(偏安全向的差分审查与 git 历史)等同属 Trail of Bits 审计类能力,second-opinion 侧重「外部 CLI 第二意见」与多提供方对比,可按需求选用。

结尾

second-opinion 把「同一 patch、多模型交叉审查」收成可复用的 Skill 流程,适合已在使用 Claude Code 或 Codex 插件市场、且本机配置了 Codex / Antigravity(或仍支持的 Gemini CLI)的团队。官方 Skill 与说明见:

https://github.com/trailofbits/skills/tree/main/plugins/second-opinion/skills/second-opinion

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜