内容
# ClaudeRabbit
> **开源软件也可能携带恶意代码。**
2025年,超过454,600个新的恶意开源软件包出现,同比增长75%;而那些真正造成威胁的攻击并没有CVE编号,它们只在运行时存在。ClaudeRabbit是一款免费、开源的安全产品,适用于开发者社区。
将任何公开的GitHub仓库地址粘贴到ClaudeRabbit中,我们会克隆它到一个隔离的沙盒中,实际运行它,并给出一个诚实的**0-100的安全评分**:项目是什么,运行过程中做了什么,我们又能验证什么。每个报告都是公开且永久的,地址为`/owner/repo`,可分享和嵌入为信任徽章——这是一个公共产品,而不是付费墙。登录只会保存您的扫描历史;它不会让您获得更多权限。
## 工作原理 — 双速漏斗
```
粘贴URL → API/边缘函数 → 缓存检查(按提交SHA)
└─ 未命中 → 快速路径(~95%):静态信号 + 声誉 + 快速模型读取仅标记区域 → 分数 + 置信度
└─ 置信度高且干净 → 直接通过
└─ 可疑/置信度低 → 升级
→ 深度路径(~5%):在临时GCP VM上运行代理分析器 —
Gemini代理(大脑在爆炸半径之外)探索整个仓库,
然后在监控的隔离环境中引爆选定文件,
记录代码验证的事实(密封的,出口锁定的,无实际数据包离开,
每次扫描后重置)
→ 融合 → 0-100分数 → 从design.md生成报告 → 持久化 + 公开/owner/repo
```
始终有两道安全防护:**(1)** 没有表面上显示的“安全”——每个裁决都显示其证据和未验证的内容;**(2)** 沙盒是密封的(无真实凭证,出口锁定,资源上限),每次扫描后都会重新映像和删除。
## 使用方法
**在网页上** — 前往 **[clauderabbit.in](https://clauderabbit.in)**,粘贴GitHub URL(或`owner/repo`),点击扫描。无需登录;使用Google或电子邮件登录仅保存您的扫描历史。
**从终端** — [CLI](cli/) 已发布到npm为 [`clauderabbit`](https://www.npmjs.com/package/clauderabbit),在安装或克隆之前扫描仓库或npm包:
```bash
npm install -g clauderabbit # 一次性设置
clauderabbit scan expressjs/express # 运行实际扫描
```
**从AI编码代理** — [MCP服务器](mcp-server/) 通过stdio公开一个缓存感知的`scan`工具,以便代理在运行之前检查依赖项(也通过Streamable HTTP在`clauderabbit.in/mcp`为claude.ai自定义连接器提供远程服务)。只需构建一次(`cd mcp-server && npm install && npm run build`),然后使用`cd cli && npm install && npm run build && node dist/index.js mcp install`将其与Claude Desktop绑定 — 它会找到您真正的`claude_desktop_config.json`(包括Windows MSIX/Store安装的不同路径)并为您添加条目。
CLI和MCP服务器都调用与网站相同的公共扫描API,需要登录ClaudeRabbit账户(实际的产品/访问决策,而不是因为数据敏感——无论如何,报告页面都保持公开);第一次调用会打开您的浏览器进行一次登录,然后在您退出之前保持沉默。参见 [cli/README.md](cli/README.md) 和 [mcp-server/README.md](mcp-server/README.md) 以获取完整的命令/工具参考。
## 技术栈
| 层 | 选择 |
|---|---|
| 网页 | **Next.js 16(应用路由器)+ React 19 + TypeScript** — 首页SPA,SSR `/owner/repo` SEO页面,API |
| 数据库/身份验证/边缘 | **Supabase** (Postgres + RLS,Google + 电子邮件/OTP身份验证,Deno边缘函数) |
| 模型 | **全Gemini via Vertex AI** — 快速`gemini-3.1-flash-lite`,深度/代理`gemini-3.5-flash`(为未来的Kimi K2.7深度交换留有接口) |
| 评分 | **代码计算** 确定性公式( `_shared/scoring.ts` )— 模型提供加权信号;代码决定引用的0-100分数 |
| 沙盒 | **代理行为分析器** 在谷歌云上 — 知识图谱探索 + 隔离环境引爆,代码验证事实( `sandbox/` ) |
| 设计 | 对Claude设计规范的忠实移植( `design.md` ) |
## 模型交换接口
**Gemini-via-Vertex 是生产模型层** (全Gemini)。快速/深度模型ID从Supabase秘密`GEMINI_FAST_MODEL` / `GEMINI_DEEP_MODEL` 读取,并通过 `supabase/functions/_shared/vertex.ts` 调用;代理沙盒层( `sandbox/agent/vertex_client.py` )运行`gemini-3.1-flash-lite` (探索)+ `gemini-3.5-flash` (顾问/分析),在`global` Vertex位置(通过 `VERTEX_LOCATION` 解耦)实时验证。为未来的 **Kimi K2.7 代码** 深度交换留有接口 — 更改秘密/该模块;编排,代码计算的评分和升级门槛是真实且不变的。
## 本地开发
```bash
npm install
cp .env.example .env.local # 填写Supabase URL + 可发布密钥(公共值)
npm run dev # http://localhost:2311
```
`npm run lint` · `npm run typecheck` · `npm run build` 都运行干净(也在CI中强制执行)。
## 机密(仅服务器端 — 从不存储在客户端或仓库中)
客户端仅持有 ** `NEXT_PUBLIC_SUPABASE_URL` + `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY` **。其他所有内容都存储在Supabase边缘函数秘密中:`GOOGLE_SERVICE_ACCOUNT_JSON`,`GCP_PROJECT_ID`,`GCP_LOCATION`,`GEMINI_FAST_MODEL`,`GEMINI_DEEP_MODEL`,`GITHUB_TOKEN` (可选)。参见 `docs/INFRASTRUCTURE.md`。
```bash
supabase db push # 应用迁移 + 种子
supabase functions deploy scan --no-verify-jwt
supabase secrets set NAME="value"
```
## 部署到Vercel
1. 将仓库导入Vercel(自动检测框架:Next.js)。
2. 在Vercel项目中设置三个`NEXT_PUBLIC_*`环境变量(来自 `.env.example` )。
3. 部署。Supabase后端(数据库 + 边缘函数)已通过Supabase CLI单独部署并上线;Vercel托管Next.js网页层。
## 仓库布局
```
app/ Next.js路由(SPA首页,/[owner]/[repo] SSR报告,/badge,/auth/callback,/api/deep)
components/spa/ 忠实的Design移植(8个屏幕 + 共享Chrome + 状态机)
lib/ 评分逻辑,类型,演示种子,Supabase客户端,扫描客户端,报告视图
supabase/migrations/ 模式 + RLS + 扫描限制函数
supabase/functions/scan/ 快速路径编排器(Vertex接口,GitHub获取,静态信号)
sandbox/ 动态沙盒引擎(护城河) — 生产环境下作为Cloud Run作业执行
(sandbox/cloudrun/),取代了早期的持久主机上的microVM基板(sandbox/microvm/,已取代但保留 —
参见sandbox/cloudrun/harness/README.md,了解更改原因)
cli/ clauderabbit CLI(扫描,mcp安装,登录/注销)
mcp-server/ MCP服务器(为AI编码工具提供一个缓存感知的扫描工具,通过stdio)
docs/ 导航星,系统设计/PRD,UX,INFRASTRUCTURE
design.md 已发布的Claude设计规范(UI + 报告的真实来源)
```
免费且无限,无需登录或广告即可扫描。累积的已验证仓库数据库是真正的资产 — 参见 `docs/INFRASTRUCTURE.md` 以获取当前(尚未解决)商业化问题的诚实现状。