mcpField
O
OhMyBug

OhMyBug

远程服务
ohmybug.ai开发工具01 天前更新

关于 OhMyBug

OhMyBug 是面向编码 Agent 的云端代码审查服务,可查找变更中的漏洞,并由 Agent 核实发现。它提供快速和深度审查,仅对确认的真实漏洞收费。

主要功能

  1. 01快速与深度云端审查
  2. 02审查差异、文件或提交范围
  3. 03由 Agent 核实发现后计费
  4. 04对受支持的上传进行密钥扫描
  5. 05合并门禁检查差异是否已审查
  6. 06查看审查与漏洞统计

适用场景

  1. 01合并前检查代码变更
  2. 02审查未提交文件或近期提交
  3. 03扫描 GitHub 仓库近期变更
  4. 04最终差异审查前阻止合并

MCP 相关

MCP 服务提供提交审查、获取发现、补充所需文件、确认判定和查询余额的工具。客户端可连接远程端点 https://mcp.ohmybug.ai/mcp。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.ohmybug.ai/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

README 配图

OhMyBug 插件 — bughunter


Discord

我们能找到 Claude Code 漏掉的 bug。只有当你自己的 Claude 确认了真实 bug 时,你才需要付费:每次 bug 查找审查收费 $4(无论发现多少个 bug),你选择的深度排查收费 $12(大范围变更时为 $24);轻微问题免费,首次审查免费。

  • 快速审查 · $4 · 找出 73% 的重大 bug · 最多 15 分钟
  • 深度审查 · $12(大范围变更时为 $24)· 找出 90% 的重大 bug · 最多 2 小时

安装(Claude Code)

claude plugin marketplace add OhMyX-AI/ohmybug-plugin
claude plugin install bughunter@ohmybug

全部设置就这么简单。首次使用时,Claude Code 会在浏览器中打开 GitHub 登录页面;系统会自动创建你的账户(包含一次免费首次审查)。无需复制密钥,也不会在配置文件中留下任何内容。

安装(pi)

pi 没有内置 MCP — 先添加适配器,再添加服务:

pi install npm:pi-mcp-adapter
npx skills add OhMyX-AI/ohmybug-plugin --skill bughunter

将以下内容添加到项目根目录中的 .mcp.json(或 ~/.config/mcp/mcp.json):

{
  "mcpServers": {
    "ohmybug": { "url": "https://mcp.ohmybug.ai/mcp", "auth": "oauth" }
  }
}

重启 pi,运行一次 /mcp-auth ohmybug — 浏览器会打开 GitHub 页面,并自动创建包含一次免费首次审查的账户。然后说“排查 bug”或使用 /skill:bughunter。

更喜欢使用原始密钥(CI)?使用 "auth": "bearer", "bearerTokenEnv": "OHMYBUG_API_KEY" 替代 "auth": "oauth"。

可选的合并门禁(pi 支持阻塞式工具钩子)— .pi/extensions/ohmybug-gate.ts:

import { isToolCallEventType } from "@earendil-works/pi-coding-agent";

pi.on("tool_call", async (event) => {
  if (isToolCallEventType("bash", event) && /\bgh pr merge\b/.test(event.input.command)
      && !process.env.SKIP_BUGHUNT) {
    return { block: true, reason: "Final diff not hunted — run /skill:bughunter first (or SKIP_BUGHUNT=1)" };
  }
});

安装(Codex app / CLI)

该插件包会在一次安装中配置技能、MCP 服务和 Codex 审查路由。Codex 使用与 Claude Code 相同的 GitHub OAuth 流程:

codex plugin marketplace add OhMyX-AI/ohmybug-plugin
codex plugin add bughunter@ohmybug
codex mcp login ohmybug
codex update

最后一行会将 Codex 本身更新到最新版本,而且必须放在最后:如果 Codex 无法判断自身是如何安装的(例如,它捆绑在另一个应用中),就会报错退出;此时插件、MCP 服务和登录都已就绪。请按照 Codex 的安装方式更新它。

安装后打开一次 /hooks,检查并信任 OhMyBug 钩子定义,然后启动新的 Codex 对话线程。在你信任其当前定义之前,Codex 会跳过非托管插件钩子;如果不执行这一步,技能和 MCP 仍会安装,但自动审查路由不会启用。然后让 Codex 运行 OhMyBug 云端排查(或使用插件的入门提示词)。代码审查 Agent 在本地给出的 APPROVE 不能作为合并依据。

仅安装了现有技能的情况

如果通过 npx skills add 安装了插件,请保留该技能,并显式添加相同的 MCP 服务:

npx skills add OhMyX-AI/ohmybug-plugin --skill bughunter
codex mcp add ohmybug --url https://mcp.ohmybug.ai/mcp

codex mcp add 会自动检测 OAuth 并打开 GitHub 登录流程。

对于无头 CI,请使用由操作员签发的原始 omb_ 密钥 — 写信至 [email protected] 或私信 @ohmybug 获取密钥:

export OHMYBUG_API_KEY=omb_...
codex mcp add ohmybug --url https://mcp.ohmybug.ai/mcp \
  --bearer-token-env-var OHMYBUG_API_KEY

(偏好使用密钥而非 OAuth 的 Claude Code 用户也可执行相同操作:claude mcp add --transport http ohmybug https://mcp.ohmybug.ai/mcp --header "Authorization: Bearer $OHMYBUG_API_KEY" — 显式的 Authorization 标头会禁用 OAuth 流程。)

有疑问?→ Discord。

首次运行:无需拉取请求

在项目中打开你的 Agent 并运行 /bughunter:review(或说“排查我代码中的 错误”)。它会排查现有内容:针对 main 的分支、未提交的更改、最近的提交,或者——在一个完全不是 git 仓库的文件夹中——将文件本身作为新代码进行排查。它会在发送任何内容前说明选择了哪种范围,你也可以指定其他范围(“排查 src/solver/”、“最近 3 次提交”)。

在 GitHub 仓库中,/bughunter:scan 会排查该仓库在最近 30 天内更改的代码 (两周可用 /bughunter:scan 14)。服务会从 GitHub 读取历史记录,并在其一侧克隆仓库——不会从你的 计算机上传任何内容——然后在时间范围内更改的代码上进行深度排查(最多 150 分钟), 并返回一份合并后的审查结果,其中列出所有 未读取的内容。你的 Agent 会像处理任何排查结果一样验证发现的问题;只有确认存在真实错误时,才按深度排查计费:$12;如果更改范围较广,则为 $24。此功能需要该仓库安装 OhMyBug GitHub App,每个仓库每周运行一次,且不会作为合并门禁。

功能说明

  • 排查就是审查:更改准备就绪后立即运行,而不是进行 本地审查。在每次 gh pr merge 前,门禁会作为安全网:它会检查最终差异是否经过排查(可用 SKIP_BUGHUNT=1 跳过一次;审查后的修复 会改变差异,因此会重新启用门禁)。
  • /bughunter:review(或直接请求“排查错误”)会将你的差异 + 所选上下文发送到 OhMyBug 云端。上传前,你会看到确切的文件清单。
  • 由多个对抗式审查者组成的协同团队会使用 OhMyBug 的模型进行排查。 只有通过分流筛选的发现结果才会返回。
  • 你自己的 Agent 会根据你的代码库验证每项发现,并报告 REAL / NOT_REAL / UNCLEAR。你可以查看并批准这些判定。
  • 计费:每次审查按确认存在真实错误收取固定费用——一个或十个, 价格相同:快速排查 $4,深度排查 $12,范围较广的更改(11 个或更多文件夹块)进行深度排查为 $24。次要发现、审查运行、误报、无法判定的结果——$0。
  • /bughunter:stats 会显示你的记录:发现的错误数、运行的审查次数、余额。
  • 在差异或文件内容离开你的计算机之前(submit_review、 provide_files),秘密扫描会拒绝包含凭证的负载 (带供应商前缀的令牌、私钥、密钥文件),并指出文件和 行号,同时掩盖具体值。无法读取的负载也会被拒绝。只有以下四种情况会放行未经扫描的负载:提交内容不含负载(仓库 + 引用)时无需扫描;没有 python3 时无法运行扫描, 系统消息会说明原因;在 Windows 上不会运行;超大差异的带外上传不会经过扫描。设置 OHMYBUG_SECRET_SCAN=0(在 settings.json 的 env 块中)即可关闭 扫描。
各部分的运行位置

所有拦截或拒绝操作都在 shell 钩子中执行,因此在每个客户端中的行为都相同。Claude Code 插件只显示并提供选项;它绝不会拒绝。只有在需要你做决定时,它才会显示按钮(深度搜索选项需要付费);Agent 自己的监视机制会发现已完成的搜索,因此提示栏只会说明发生了什么。

Claude Code 2.1.287+较旧版本的 Claude CodeCodex
合并门禁、密钥扫描、搜索记录是是是
状态栏中的搜索状态;搜索完成或请求文件时显示通知是——
跟踪中的搜索完成、失败或请求文件时,在提示词上方显示提示栏:仅显示消息,不含按钮;Agent 读取搜索结果或下一轮开始后,提示栏消失是——
深度搜索选项(跟踪中的搜索的 get_findings 返回的 deep_offer),显示为 运行深度搜索——按下即表示你同意;暂不,不发送任何内容;以及 今天不再询问,请求 Agent 暂停提供此选项 24 小时是——
被门禁拒绝的合并:提示栏显示门禁原文,不含按钮;下一轮开始后,提示栏消失是——
将发现显示为卡片(show the raw answer 保留原始内容)是——
/hunts 面板是——
已读取但尚未确认的搜索:系统提示词和状态栏中都会显示一行内容(bughunt <id> · verdicts not sent),直到对此 ID 调用 confirm_findings;另一个搜索正在运行或等待读取时,状态栏会显示那个搜索是——

如果某人已在其他聊天中,或以插件未检测到的方式读取或判定了已完成的搜索结果,这里不会显示通知、提示栏、恢复操作或判定提示行:插件会查询状态 URL(每隔几分钟重新查询一次已完成但未读的搜索),由服务端告知结果是否已读取或是否已有判定。如果无法访问状态 URL,提示栏会一直显示,直到 Agent 读取搜索结果或你开始下一轮。

除非你选择启用,否则插件绝不会自行开始新一轮。可通过两个环境变量进行调整(在 settings.json 的 env 块中设置,或在团队的托管设置中设置):

  • OHMYBUG_AUTO_RESUME=1 — 跟踪中的搜索完成、失败或请求文件时,如果会话处于空闲状态,则发送该搜索的下一步操作,而不是显示提示栏。默认关闭。
  • OHMYBUG_STATUS=0 — 清除状态栏;提示词行也会一并清除,因此 Agent 不会被告知用户看不到的内容。

VS Code 扩展不会在提示词上方显示提示栏;此处会通过通知和状态栏显示相关信息。 像停用任何内置插件一样,通过 /plugin 停用此插件;shell 钩子仍会保留。

MCP 合约(服务端:https://mcp.ohmybug.ai/mcp)

工具输入输出
submit_reviewdiff、files[{path, content}]、meta{language?, base_branch?, repo?, ref?}{review_id, status, mode, pending_verdicts[]}
get_findingsreview_id{status: running|needs_files|done|failed, findings[{finding_id, severity, file, line?, title, failure_scenario, suggested_fix?}]}
provide_filesreview_id、paths[](Claude Code:插件的钩子从磁盘读取文件)或 files[{path, content}]{status, delivered}
confirm_findingsreview_id、verdicts[{finding_id, verdict: REAL|NOT_REAL|UNCLEAR, reason}]{confirmed, minor_confirmed, billed_usd, free_review_used, balance_usd, receipt_id}
get_balance—{balance_usd, free_reviews_left, confirmed_total, stats{…}}

错误:payment_required(充值)、pending_verdicts(请先处理上一次审查的判定)。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。