代码审查与计划检查工具

DoubleCheck是一个MCP服务器,提供Gemini计划检查和Claude Sonnet代码审查功能,帮助开发者获得第二意见。

  • by catid
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 catid/doublecheck-mcp

使用说明

DoubleCheck MCP服务器

DoubleCheck 是一个最小的MCP服务器,它为Codex CLI提供了两个“第二意见”工具:Gemini计划检查(gemini_plan_check,默认模型 models/gemini-3-pro-preview)以及Claude Sonnet代码审查(sonnet_code_review,默认模型 claude-sonnet-4-5-20250929).

快速开始

  • 要求:macOS/Linux shell,Python 3.11+, uv,出站网络接入。

  • 从该目录中,运行 ./setup.sh (或 bash setup.sh 如果文件不可执行)。它通过以下方式安装依赖项 uv,确保 .env 存在,并写入 [mcp_servers.doublecheck] 进入 ~/.codex/config.toml 使用绝对路径(如果需要,创建文件)。

  • 打开 .env 并设置API密钥(文件已经 .gitignored

    GOOGLE_API_KEY=your-google-api-key   # get from ai.google.dev
    ANTHROPIC_API_KEY=your-anthropic-key # get from console.anthropic.com
    
  • 复制 AGENTS.md 您将在其中使用Codex,以便它可以加载此MCP服务器(它是代理清单),例如。 cp /path/to/doublecheck-mcp/AGENTS.md /path/to/your/repo/AGENTS.md.

  • 在该仓库中,运行Codex并指向代理文件,例如: codex --agents ./AGENTS.md "review this diff" (如果您的Codex CLI使用不同的标志,请调整该标志)。Codex将自动启动配置的DoubleCheck服务器,无需运行 server.py 手动。

工具

  • gemini_plan_check(plan_description, expectations=None, context=None) --向谷歌Gemini模型发送计划批评(默认 models/gemini-3-pro-preview).可选的 context 包裹在 <context> 分隔符和截断为约6000个字符,以保持计划和元数据的不同。
  • gemini_edit_plan_check(plan_description, file_contents, file_path=None, expectations=None, context=None) --喜欢 gemini_plan_check,但在提示中包含目标文件内容(截断)和可选路径,因此可以使用实时文件上下文查看编辑计划。
  • sonnet_code_review(code_snippet, context=None) --代码审查已发送至Anthropic的Claude Sonnet模型(默认 claude-sonnet-4-5-20250929).

备注

  • 默认使用 models/gemini-3-pro-preview 和 claude-sonnet-4-5-20250929;用以下命令覆盖它们 DOUBLECHECK_GEMINI_MODEL 和 DOUBLECHECK_SONNET_MODEL 如果你的帐户使用不同的slug。
  • setup.sh 通过安装 uv 并将Codex连接到该服务器;之后您不需要激活virtualenv。
  • 安装脚本以Unix shell为目标;在Windows上使用WSL或手动镜像步骤(uv sync,创建 .env,更新 ~/.codex/config.toml).
  • 保持 .env private(已被git忽略)。用以下方式将其锁定 chmod 600 .env.
  • 服务器在磁盘上不保持任何状态;它只是将请求转发到托管模型。确保您可以放心地将提供的代码/计划发送给谷歌和Anthropic。您可以复制 AGENTS.md 因为它依赖于写入的绝对MCP条目 ~/.codex/config.toml.

考虑编辑~/.codex/config.toml以添加:

[features]
web_search_request = true