$ phreaker init
永不下班的
AI 代码审查。
在每一次 push 上,提供资深工程师水准的 PR 分析。在合并前发现 Bug、安全漏洞和代码异味。由小米 MiMo 提供算力。
每月免费 30 个 PR · 无需信用卡
14.2k
PRs reviewed
2,847
Bugs caught
312
Security issues
98.4%
Dev satisfaction
// FEATURES
Phreaker 能发现什么
基于数百万真实 PR 和 CVE 数据训练。
[01]
安全漏洞
SQL 注入、XSS、密钥泄露、不安全反序列化、命令注入。交叉引用 CVE 数据库。
[02]
逻辑 Bug
差一错误、空指针、竞态条件、错误的状态迁移、render 中的副作用。
[03]
性能问题
N+1 查询、不必要的重渲染、热路径阻塞 IO、事件监听器泄露、无界循环。
[04]
风格与规范
基于你仓库历史学习项目专属规范,不是通用规则的垃圾刷屏。
[05]
测试覆盖缺口
标记没有对应测试的新逻辑,为边界条件建议测试用例。
[06]
架构漂移
检测变更是否违反文档化架构(ADR、AGENTS.md、CONTRIBUTING.md)。
// 在线演示
看它审查一个真实 PR
这是 MiMo 在一段易受攻击的 Express 端点上的真实输出,无人工挑选。
PR #142 · feat: 通过 id 获取用户
phreaker-bot
api/users.ts
diff --git a/api/users.ts b/api/users.ts@@ -12,8 +12,15 @@ export async function getUser(req: Request) { const id = req.params.id;- const user = await db.query(- `SELECT * FROM users WHERE id = '${id}'`- );+ const user = await db.query(+ `SELECT * FROM users WHERE id = ${id}`+ ); return Response.json(user); }发现 3 个问题 · 1 严重 · 1 高危 · 1 中危
严重安全
L14SQL 注入漏洞
用户输入被直接拼接到 SQL 查询中。攻击者可通过 `1 OR 1=1; DROP TABLE users;--` 窃取或销毁数据。请使用参数化查询。
const user = await db.query('SELECT * FROM users WHERE id = $1', [id]);高危校验
L13`id` 字段缺乏输入校验
未对 `id` 进行类型/格式校验。若列是整型,非数字输入将引发异常并泄露调用栈。
if (!/^[0-9]+$/.test(id)) return new Response('Bad Request', { status: 400 });中危错误处理
L16缺少错误兜底
DB 查询失败时,未捕获的 Promise rejection 会泄露到运行时,返回 500 但没有日志上下文。请加 try/catch 并打结构化日志。