关于 OhMyBug
OhMyBug 是面向编码 Agent 的云端代码审查服务,可查找变更中的漏洞,并由 Agent 核实发现。它提供快速和深度审查,仅对确认的真实漏洞收费。
主要功能
- 01快速与深度云端审查
- 02审查差异、文件或提交范围
- 03由 Agent 核实发现后计费
- 04对受支持的上传进行密钥扫描
- 05合并门禁检查差异是否已审查
- 06查看审查与漏洞统计
适用场景
- 01合并前检查代码变更
- 02审查未提交文件或近期提交
- 03扫描 GitHub 仓库近期变更
- 04最终差异审查前阻止合并
MCP 相关
MCP 服务提供提交审查、获取发现、补充所需文件、确认判定和查询余额的工具。客户端可连接远程端点 https://mcp.ohmybug.ai/mcp。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.ohmybug.ai/mcpclaude mcp add --transport http ai-ohmybug-bughunter https://mcp.ohmybug.ai/mcp{"mcpServers":{"ai-ohmybug-bughunter":{"type":"http","url":"https://mcp.ohmybug.ai/mcp"}}}在 Cursor 中打开{"servers":{"ai-ohmybug-bughunter":{"type":"http","url":"https://mcp.ohmybug.ai/mcp"}}}在 VS Code 中打开{"mcpServers":{"ai-ohmybug-bughunter":{"type":"http","url":"https://mcp.ohmybug.ai/mcp"}}}{"mcpServers":{"ai-ohmybug-bughunter":{"serverUrl":"https://mcp.ohmybug.ai/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
OhMyBug 插件 — bughunter
我们能找到 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 Code | Codex | |
|---|---|---|---|
| 合并门禁、密钥扫描、搜索记录 | 是 | 是 | 是 |
| 状态栏中的搜索状态;搜索完成或请求文件时显示通知 | 是 | — | — |
| 跟踪中的搜索完成、失败或请求文件时,在提示词上方显示提示栏:仅显示消息,不含按钮;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_review | diff、files[{path, content}]、meta{language?, base_branch?, repo?, ref?} | {review_id, status, mode, pending_verdicts[]} |
get_findings | review_id | {status: running|needs_files|done|failed, findings[{finding_id, severity, file, line?, title, failure_scenario, suggested_fix?}]} |
provide_files | review_id、paths[](Claude Code:插件的钩子从磁盘读取文件)或 files[{path, content}] | {status, delivered} |
confirm_findings | review_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(请先处理上一次审查的判定)。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。