kcemate/ratchet
GitHub: kcemate/ratchet
Ratchet 是一款 AI 生成代码的安全与质量扫描工具,通过本地 AST 分析对代码库打分并提供带测试关卡的自动修复能力。
Stars: 1 | Forks: 0
# Ratchet
[](https://npmjs.com/package/ratchet-run) [](https://github.com/kcemate/ratchet/actions/workflows/ci.yml) [](LICENSE) [](https://nodejs.org)
**自审得分:100/100**(2026 年 5 月 — [我们在自己身上运行](https://github.com/kcemate/ratchet/actions/workflows/ci.yml))
```
$ ratchet scan
🔒 Security Score: 100/100
🧪 Testing ████████████████ 23/25
🔒 Security ███████████████████ 15/15
📝 Type Safety ███████████████████ 15/15
⚠️ Error Handling ████████████ 16/20
⚡ Performance ████████ 8/10
📖 Code Quality ████████ 12/15
```
## 快速开始
```
npm install -g ratchet-run
ratchet init # Set up your project
ratchet scan # Score your codebase
ratchet scan --explain-deductions # See what cost you points
```
## 捕获的问题
| 类别 | 权重 | 发现的问题 |
| --------------------- | ------ | --------------------------------------------------------------------- |
| 🔒 **安全性 (Security)** | 15 分 | 硬编码的密钥、缺少身份验证、未验证的输入、速率限制缺失 |
| 🧪 **测试 (Testing)** | 25 分 | 覆盖率盲区、缺失的边界情况、薄弱的断言 |
| 📝 **类型安全 (Type Safety)** | 15 分 | `any` 类型、缺少严格配置、类型逃生舱(后门) |
| ⚠️ **错误处理 (Error Handling)** | 20 分 | 空的 catch、缺失的 try/catch、没有结构化日志 |
| ⚡ **性能 (Performance)** | 10 分 | 循环中使用 await、生产环境中的 console.log、导入过度膨胀 |
| 📖 **代码质量 (Code Quality)** | 15 分 | 重复代码、过长的函数、死代码、TODO |
## 自动修复如何工作
棘轮扳手只能单向转动。Ratchet 也是如此:
1. **扫描 (Scan)** — 跨越所有 6 个类别为你的代码库评分
2. **修复 (Fix)** — AI 识别出影响最大的问题并编写修复代码
3. **测试 (Test)** — 在提交前运行你的完整测试套件
4. **提交 (Commit)** — 仅保留通过测试的改进
5. **重复 (Repeat)** — 每次“点击”都会提升分数。失败的修复将被静默回滚。
```
$ ratchet improve --clicks 7
✓ Click 1 — removed hardcoded API key [a3f9b21] — Score: 68 → 72 (+4)
✗ Click 2 — tests failed · rolled back
✓ Click 3 — added input validation [7bc1d44] — Score: 72 → 76 (+4)
✓ Click 4 — replaced empty catch [2e8f053] — Score: 76 → 79 (+3)
✗ Click 5 — tests failed · rolled back
✓ Click 6 — structured error logging [9da3c17] — Score: 79 → 81 (+2)
✓ Click 7 — added rate limiting [f81b44a] — Score: 81 → 82 (+1)
Done. 5 landed · 2 rolled back · Score: 68 → 82/100 (+14)
```
## 对比
| 功能 | Ratchet | Semgrep | SonarQube | CodeQL | Biome |
| ------------------------------ | ------- | ---------------- | --------- | ---------- | -------------- |
| 本地优先(无云端上传) | ✅ | ✅ | ❌ | ❌ | ✅ |
| 带有测试关卡的自动修复 | ✅ | ❌ | ❌ | ❌ | ✅(仅限 lint) |
| AI 驱动的语义分析 | ✅ | ❌ | ❌ | ❌ | ❌ |
| 零配置首次运行 | ✅ | ❌ | ❌ | ❌ | ✅ |
| 开源核心 | ✅ | ✅(OSS 版本) | ❌ | ❌ | ✅ |
| 自审得分(吃自己的狗粮) | 100/100 | N/A | N/A | N/A | N/A |
| Node.js 原生 | ✅ | ❌(Python) | ❌ (Java) | ❌ (OCaml) | ✅ |
## 隐私与安全
- **默认本地优先。** `ratchet scan`(不带 `--deep`)完全在你的机器上运行,没有网络调用。
- **AI 功能为可选并采用 BYOK。** `ratchet scan --deep` 和 `ratchet improve` 使用你自己的 API key 将相关代码片段发送到你选择的模型提供商(Anthropic、OpenAI、Ollama)——范围仅限于被分析的文件,绝不是整个 repo。
- **永远没有遥测。** Ratchet 本身没有可以看到你代码的服务器。
- **开源核心。** MIT 许可证。在 [github.com/kcemate/ratchet](https://github.com/kcemate/ratchet) 审计源代码。
- **自审。** 我们在自己身上运行 Ratchet。当前得分:100/100。
## 定价
| | 免费 | Pro |
| ----------------- | ------------------ | ----------------- |
| `ratchet scan` | ✅ | ✅ |
| AST autofix | ✅(确定性) | ✅ |
| AI 驱动的修复 | — | ✅ |
| 深度扫描 | — | ✅ |
| `ratchet improve` | — | ✅ |
| GitHub Action | ✅(仅限扫描) | ✅(扫描 + 修复) |
有关 Pro 版定价,请参见 [ratchetcli.com](https://ratchetcli.com)。
## 架构
Ratchet 是一个基于 commander CLI 的工具,底层有一个可插拔的扫描引擎和一个带有测试关卡的自动修复循环:
- **经典引擎** (`src/core/engines/`) — 确定性的、通过 `ts-morph` 进行的本地 AST 分析,在六个加权类别中打分 0–100。
- **深度引擎** (`src/core/providers/`) — 在 provider 无关的接口后端提供可选的 BYOK LLM 分析。
- **自动修复“点击”循环** (`src/core/click.ts`) — 选取影响最大的发现,应用 AST 转换或 agent 修复,然后 **仅在构建和完整测试套件仍然通过时才提交**(否则回滚)。得分在结构上是单调递增的。
有关完整的子系统分解和数据流,请参见 **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)**。
## 开发
```
git clone https://github.com/kcemate/ratchet.git
cd ratchet
npm ci
npm run build
npm link
npm test
npm run lint
npm run typecheck
```
有关分支策略、提交风格以及如何添加新的扫描器,请参见 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 链接
- **npm**: [ratchet-run](https://www.npmjs.com/package/ratchet-run)
- **GitHub**: [kcemate/ratchet](https://github.com/kcemate/ratchet)
- **License**: MIT
更多命令
| 命令 | 描述 | | ----------------------------------- | ---------------------------------------- | | `ratchet scan` | 为你的代码库评分(免费) | | `ratchet scan --deep` | LLM 驱动的深度安全分析(Pro) | | `ratchet scan --explain-deductions` | 查看导致扣分的精确文件/行 | | `ratchet improve --clicks N` | 自动修复 N 个问题(Pro) | | `ratchet map` | 交互式依赖图 | | `ratchet report` | 生成 PDF/HTML 报告 | | `ratchet init` | 初始化 config | | `ratchet status` | 检查当前运行状态 | | `ratchet log` | 查看运行日志 |标签:AI代码扫描, MITM代理, SOC Prime, 代码安全审计, 代码质量分析, 开发工具, 自动代码修复, 自动化攻击, 静态代码扫描