mcpField
S
second-opinion

second-opinion

github.com/trailofbits测试与质量7.9k5.3k 次安装今天更新
代码仓库

关于 second-opinion

second-opinion 用于调用外部 CLI 审查用户选定的代码变更。它仅提供审查发现,不会修改代码或发布远程评论,并可用同一份差异比较 Codex 与 Antigravity。

主要功能

  1. 01审查未提交变更、分支差异或提交
  2. 02选择 Codex、Antigravity 或两者
  3. 03纳入项目指引与用户指定重点
  4. 04报告发现但不修改代码

适用场景

  1. 01审查暂存、未暂存及未跟踪变更
  2. 02比较两个 CLI 对同一分支差异的结果
  3. 03检查特定提交中的安全问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/trailofbits/skills --skill second-opinion

安装后在 Claude Code 中输入/second-opinion确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
assets/
trail-of-bits-mark.svg
references/
antigravity-invocation.md
codex-invocation.md
codex-review-schema.json
gemini-invocation.md
review-input.md

详细介绍

Second Opinion

对用户选定的更改运行外部 CLI 审查。此技能会生成审查结果;不会应用修复,也不会向远程服务发布审查内容。

审查选项

使用用户已提供的提供方、范围、模型和关注点。 仅询问缺失且会影响审查的选项;尽可能在一次调用中集中提问。

  • 提供方:Codex、Antigravity,或两者兼选。用户想要对比时提供两者;若用户明确指定了 CLI,则保留该选择。
  • 范围:未提交的更改、与指定基准分支对比的分支差异,或指定提交。若未指定基准分支,则从仓库的远程默认分支确定;若无法确定,则询问用户。
  • 上下文:除非用户明确排除,否则纳入适用的项目说明。在审查提示词中,将用户的明确要求与仓库内容分开。
  • 关注点:若用户未指定安全性、性能等关注点,则关注整体正确性和可维护性。

对于未指定的 Google CLI,优先使用 Antigravity(agy)。明确要求使用 Gemini CLI 时,参照下方的 Gemini 说明。若该账号返回 UNSUPPORTED_CLIENT,请说明迁移到 Antigravity 的方法,并在更换所选 CLI 前征求用户同意。

可执行文件缺失或账号未设置均视为审查失败。报告相关设置说明;若用户要求使用两种提供方,则继续使用可用的提供方,并指出跳过了哪一种。

输入准备

阅读 review-input.md,了解通用提示词和差异配方。对两种提供方使用同一份已捕获的差异,以确保对比涵盖相同的更改。审查未提交的更改时,纳入未跟踪文件,并保留 Git 错误,不要将其解释为空差异。

在调用提供方前,展示选定的范围和简要的更改摘要。若没有更改,则停止,不要调用提供方。若输入超过 CLI 或模型限制,请说明该限制并请求缩小范围;不要静默截断补丁。

使用 mktemp 在工作区之外创建提示词、输出和诊断文件。为每种提供方分别创建输出和诊断文件。在同一次 Bash 调用中定义并使用 shell 变量。后续调用时,将变量重新赋值为已保存的文件路径;shell 变量不会在调用之间保留。将仓库内容作为字面数据写入,不要进行 shell 展开。

提供方参考

仅阅读所选提供方对应的参考文档:

提供方调用方式和结果
Codexcodex-invocation.md:使用符合审查架构的 codex exec
Antigravityantigravity-invocation.md:使用 agy 的打印模式输出纯文本
Gemini CLIgemini-invocation.md:适用于仍支持 Gemini CLI 的账号,以无头模式运行 gemini

Codex 流程不需要 MCP 服务。不要启动 codex mcp-server,也不要用 codex app-server 替代 CLI 调用。

若用户要求使用两种提供方,且工具接口支持,则并发运行它们的命令。使用前台 Bash 进行审查时,将 timeout 设为 600000,以便最多运行十分钟。若支持后台执行或轮询,则使用这些方式保持进度可见。不要启用自动批准写入来运行审查。

结果与失败

呈现发现时,注明提供方、实际使用的模型、严重程度、文件和行号、影响及建议的修正方案。不要隐藏低严重程度的缺陷。对于 Codex,现有架构使用 0 表示信息级、1 表示低、2 表示中、3 表示高;按降序排列。

对于两份已完成的审查,总结一致和分歧之处,但不要将一致意见当作证据。区分外部发现与自己补充的评估。

阅读捕获的输出和诊断信息。非零退出、缺少输出、无效 JSON、阻止检查的权限拒绝,或要求批准计划,都表示工作尚未完成,不能视为审查无问题。报告失败及任何部分结果。仅在已诊断出可恢复原因时重试;遇到身份验证或配额失败时,不要轮流尝试其他提供方。

示例

  • /second-opinion:second-opinion use Codex to review my uncommitted changes for bugs 选择 Codex,并纳入已暂存、未暂存和未跟踪的更改。
  • /second-opinion:second-opinion compare Codex and Antigravity on this branch against origin/main 将同一份分支补丁发送给两者,并比较其发现。
  • /second-opinion:second-opinion use Gemini CLI to review commit abc1234 for security issues 保留指定的 CLI,并审查该提交。

评论

支持 Markdown