kcemate/ratchet

GitHub: kcemate/ratchet

Ratchet 是一款 AI 生成代码的安全与质量扫描工具,通过本地 AST 分析对代码库打分并提供带测试关卡的自动修复能力。

Stars: 1 | Forks: 0

# Ratchet [![npm version](https://img.shields.io/npm/v/ratchet-run)](https://npmjs.com/package/ratchet-run) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/59ba85d69c042958.svg)](https://github.com/kcemate/ratchet/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![node](https://img.shields.io/node/v/ratchet-run)](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 ```
更多命令 | 命令 | 描述 | | ----------------------------------- | ---------------------------------------- | | `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` | 查看运行日志 |
## 捕获的问题 | 类别 | 权重 | 发现的问题 | | --------------------- | ------ | --------------------------------------------------------------------- | | 🔒 **安全性 (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
标签:AI代码扫描, MITM代理, SOC Prime, 代码安全审计, 代码质量分析, 开发工具, 自动代码修复, 自动化攻击, 静态代码扫描