内容
# 超越
**查看您的AI是否更改了您要求以外的部分。**
[](https://www.npmjs.com/package/overreach)
[](https://github.com/Naveja00/OverReach)
您要求一个登录表单。您的AI代理还添加了Stripe、一个密钥和一个结账端点。超越告诉您请求之外究竟发生了什么变化——这样您就可以在合并之前知道要审查什么。
## 看看
```
$ npx -y overreach demo
超越 — AI PR 审查
─────────────────────────────────────────────────
您要求: "在设置页面添加登录表单"
5 个文件更改 · 4 个在范围内 · 1 个在范围外
发现
✗ 新环境变量: STRIPE_SECRET
.env.example
✗ 新 API 端点: /api/checkout
src/app/api/checkout/route.ts
✗ 添加定时任务
cron.config.ts
⚠ 范围外文件: cron.config.ts
cron.config.ts
⚠ 添加依赖: stripe
package.json
注意
→ 添加了新的 API 路由,但未更新测试文件
→ 依赖项已更改,但锁定文件未更新
→ 3 个源文件更改,但未更新测试
─────────────────────────────────────────────────
5 个发现 · 仔细审查 · 确定性
```
您要求一个登录表单。超越发现了一个支付系统。在合并之前审查这些文件。
## 安装
```bash
# 直接运行 - 零设置
cd your-project
npx -y overreach
```
就是这样。它会自动检测您的更改,询问您告诉AI要执行的操作,并显示审查结果。无需配置文件,无需记住标志。
或者永久安装:
```bash
npm install -g overreach
# 通过管道传递差异并带有明确的提示
git diff | overreach --prompt "添加用户身份验证"
# 安装为预提交钩子
overreach init
```
**无需 API 密钥? 没问题。** 如果没有密钥,超越会离线使用正则表达式解析您的提示。 即时,免费,完全确定。
## 支持
- Claude Code
- Cursor
- Codex
- GitHub Copilot
- Windsurf
- Aider
任何根据提示编写代码的工具。超越审查输出,而不是工具。
## 它能捕获什么
### 意外的更改(AI 执行的操作不是您要求的)
| 检查 | 示例 |
|---|---|
| 依赖项 | 在您要求登录表单时添加 `stripe` |
| 环境变量 | `.env` 中出现 `STRIPE_SECRET` |
| API 端点 | 您从未请求的 `/api/checkout` 路由 |
| 定时任务 | 静默添加的定时任务或后台任务 |
| 运行时监听器 | 服务器,WebSocket 处理程序,`process.on` 钩子 |
| 范围外文件 | 修改了提示中未提及的文件 |
| 功能蔓延 | 请求以外的新函数/类 |
每个发现都是 **确定性** 的 - 通过集合算术从提示和差异中得出。 没有AI意见。 只有:"您要求X,差异还包含Y,而Y不在X中。"
### 注意(您可能需要检查的内容)
超越还扫描开发人员在审查过程中可能遗漏的实用跨文件问题:
| 警告 | 它能捕获什么 |
|---|---|
| 模式无迁移 | 更改了 `schema.prisma` 但未添加迁移 |
| 环境变量不匹配 | 代码使用 `process.env.FOO` 但 `.env` 未定义 |
| 路由无测试 | 添加了新的 API 路由但未更新测试文件 |
| 完全无测试 | 更改了 3+ 源文件,但未触及零测试文件 |
| 依赖项无锁定文件 | `package.json` 更改但无 `package-lock.json` |
| 身份验证/中间件更改 | 修改了安全敏感文件 |
| 硬编码密钥 | 在源代码中直接编写 API 密钥或令牌 |
| 大文件 | 在一个文件中添加了 200+ 行 - 可能需要拆分 |
| 死亡新文件 | 创建了新文件但从未在任何地方导入 |
| 技术债务增加 | 2+ 文件中的 TODO/FIXME/HACK |
| API 无文档 | API 路由更改但文档未更新 |
| 孤立样式 | 更改了 CSS 但未更新任何组件 |
| 配置扩散 | 3+ 配置文件同时更改 |
| 基础设施专有 | Docker/CI 更改但源代码未更改 |
这些不是范围蔓延 - 它们是您在凌晨2点忘记并在生产中发现的东西。
## 为什么是确定性的
大多数 AI 代码审查器使用另一个 AI 来评估您的代码。 这意味着意见,幻觉和结果在运行之间发生变化。
超越不是这样。
它运行一个 3 阶段的管道:
1. **提取范围** - 一个廉价的LLM调用读取您的提示并提取您授权的内容(文件,依赖项,环境变量,端点)。 或者在零密钥模式下完全跳过LLM。
2. **解析差异** - 基于正则表达式的提取。 无LLM。 找到每个更改的文件,添加的依赖项,设置的env变量,创建的端点。 在毫秒内运行。
3. **比较** - `actual − authorized = findings`。 纯粹的集合算术。 差异中的所有内容,如果不在您的提示中,就是一个发现。
第2阶段和第3阶段是纯函数 - 相同的输入,每次输出相同。 没有推理,没有模型漂移。
## CI 门控
将超越用作 GitHub Action,以阻止每个 PR 上的 AI 范围蔓延:
```yaml
# .github/workflows/overreach.yml
- uses: Naveja00/OverReach@v1
```
当找到意外更改时,退出代码为 `1` - AI 代理无法跳过此检查。
## MCP 服务器(用于 AI 代理)
AI 代理可以使用超越来在提交前检查自己的工作:
```bash
# Claude Code
claude mcp add overreach -- npx -y overreach --serve
# Claude Desktop / Cursor - 添加到 MCP 配置:
{ "mcpServers": { "overreach": { "command": "npx", "args": ["-y", "overreach", "--serve"] } } }
```
## 内部
### API 密钥(可选)
超越会自动检测您的 AI 提供商:
| 提供商 | 环境变量 |
|---|---|
| Anthropic | `ANTHROPIC_API_KEY` |
| OpenAI / 兼容 | `OPENAI_API_KEY` |
| Ollama(本地) | 无需密钥 |
### CLI 标志
```
overreach # 交互模式(推荐)
overreach demo # 零密钥演示,带有示例差异
overreach init # 安装为预提交钩子
git diff | overreach --prompt "…" # 通过管道传递差异并带有明确的提示
overreach --diff file.diff --prompt "…" # 从文件中读取差异
overreach --scope scope.json --prompt "…" # 跳过LLM,使用预提取的范围
overreach --json # 机器可读的JSON输出
overreach --serve # 启动为MCP服务器
```
### JSON 输出
添加 `--json` 以获取结构化输出(CI,管道,集成):
```json
{
"scope": { "files_allowed": [], "features_allowed": [] },
"actual": { "files_changed": [], "symbols_added": [] },
"findings": [
{
"kind": "scope.env",
"detail": "New environment variable STRIPE_SECRET not in authorized scope",
"file": ".env.example",
"severity": "high",
"evidence": "STRIPE_SECRET"
}
],
"scope_creep_score": "HIGH",
"blast_radius": {
"warnings": [
{
"pattern": "route-no-test",
"message": "New API route added but no test file updated",
"files": ["src/app/api/checkout/route.ts"],
"suggestion": "Add tests for the new endpoint"
}
]
}
}
```
### 发现类型
| 类型 | 严重程度 | 触发原因 |
|---|---|---|
| `scope.env` | 高 | 环境变量未在提示中提及 |
| `scope.endpoint` | 高 | 未授权添加 API 路由 |
| `scope.cron` | 高 | 添加了定时任务 |
| `scope.listener` | 高 | 运行时监听器(服务器,WebSocket,`process.on`) |
| `scope.dep` | 中等 | 添加了包依赖 |
| `scope.file` | 中等 | 文件更改范围外 |
| `scope.feature` | 低 | 新增符号不匹配任何授权功能 |
### 测试
```bash
npm test # 444 个确定性断言,零 API 调用
```
## 许可证
MIT - 免费开源。
## 链接
- [npm](https://www.npmjs.com/package/overreach)
- [GitHub](https://github.com/Naveja00/OverReach)
- [问题和反馈](https://github.com/Naveja00/OverReach/issues)