Fornaxlabs/Forge

GitHub: Fornaxlabs/Forge

Forge 为 AI 编程智能体提供确定性的执行护栏,通过 hooks 强制拦截破坏性命令、失控循环和超范围编辑,并生成合规就绪的审计追踪。

Stars: 1 | Forks: 0

# Forge — AI 编程智能体的治理与安全护栏 **如果你放任不管,你的 AI 编程智能体会执行 `rm -rf /`。而 Forge 不会允许它这么做。** Forge 是一个开源的 **AI 编程治理框架**,它为 AI 编程智能体——如 Claude Code、Codex、Cursor、Gemini CLI、 Cline、Kiro 等——提供了一个确定性的 执行底线。它**会拦截破坏性命令、阻止失控的智能体循环、 防止超范围编辑、抓出提交的机密信息,并拒绝在没有验证证据的情况下将任务 标记为“已完成”。** 不是建议。也不是一句客客气气请求模型的 prompt。**而是返回 exit 2 并直接中止工具调用的 Hooks。** ``` git clone https://github.com/Fornaxlabs/Forge.git ~/Forge && bash ~/Forge/install.sh ``` 安装程序会在声称成功之前,先验证强制执行机制是否确实生效。 ## 为什么会有这个项目 AI 编程工具的采用率已达到约 84% —— 而开发者对输出结果的*信任度*却跌至 历史最低点。团队现在**花费在审查 AI 生成代码上的时间比编写代码的时间还要多**, 而且研究不断发现,很大一部分 AI 生成的代码都带着本可避免的 安全漏洞。真正从中获得价值的开发者,并不是那些最信任 AI 的人 — — 他们是那些将**系统性审查内建到工作流中的人**。 Forge 就是那个被强制执行的工作流 —— 这样在你疲惫不堪的那天,也无法跳过它。 ### 令人不安的事实:大多数“护栏”起不到保护作用 “强制执行” hooks 很容易写错。阅读 GitHub 上最受关注的 Claude Code 工具包之一源码可以发现,它那两个“拦截” hooks 只是打印了 `BLOCKED` 然后调用 `process.exit(1)`。根据 Claude Code 的 [hook 文档](https://code.claude.com/docs/en/hooks.md),**只有 exit code 2 才能拦截工具调用** —— exit 1 是一个*非拦截性*错误,操作仍会继续执行: 一个在命令运行时嘴上说着“已拦截”的护栏,还不如没有护栏 —— 它只会换来 虚假的信心。**Forge 使用 exit 2,并附带了一个证明它始终如一的自我审计机制。** ## Forge 强制执行的内容 | 控制项 | 它阻止的行为 | 执行方式 | |---|---|---| | **破坏性命令拒绝** | `rm -rf /`、强制推送 (force-push)、`DROP TABLE`、`mkfs`、fork 炸弹、`curl … \| sh` | PreToolUse hook,exit 2 | | **子智能体扩散上限** | 运行过程悄悄生成大量智能体集群 | 全局智能体名册 | | **工具调用上限** | 失控的智能体在循环中消耗 token | 全局计数器,适用于所有子智能体 | | **死循环上限** | 同一阻碍被反反复复“修复” | 基于 trace 驱动,并升级交由人工处理 | | **范围守卫** | 对计划中未声明的文件进行编辑 | hook 拦截写入 | | **完成定义闸门** | 在没有验证的情况下将任务标记为“完成” | 没有证据,运行无法关闭 | | **机密信息闸门** | 凭据被推送到远端仓库 | git pre-commit + pre-push (在 agent 之外运行) | | **自我审计** | *护栏被悄悄削弱* | `forge-doctor`,9 种篡改类别 | 此外还有一个受治理的 pipeline —— **分流 → 计划 → 人工审批 → 构建 → 对抗性 审查 → 验证** —— 并为每次运行提供 JSONL trace。 ## 合规就绪的审计追踪 每一次受治理的运行都会被记录,`forge_audit.py` 会将其导出为凭证:谁 批准了什么、处于哪个风险等级、声明了什么范围,以及在关闭前是否进行了 验证。 ``` python3 status/forge_audit.py . --out audit.md # or --json ``` 这就是有溯源支持、有人工监督的记录,是 **EU AI Act** 合规就绪和 **ISO 42001** 体系所要求的 —— 它基于真实发生的事件生成,而不是 一份调查问卷。 ## 快速开始 ``` bash install.sh # installs + self-verifies source ~/.zshrc # required: load the launcher (or open a new terminal) cd /your/project claude forge # governed session: plugin + plan-mode ``` `claude forge` 是一个**安装程序添加到你 rc 文件中的 shell 函数**(并非原生的 `claude` 子命令) —— 它会加载 Forge 并开启 plan 模式启动 Claude Code, 同时打印出 `🔨 Forge` 横幅,让你确认它已生效。其他任何 `claude …` 命令都不会受影响。 没有横幅意味着它没有加载:你要么跳过了 `source ~/.zshrc`,要么运行了 `install.sh --no-cli`。想要使用原生 flags?可以使用 `claude --plugin-dir ~/Forge --permission-mode plan`。 在会话中: ``` /forge:forge-init # stamp gates into this project /forge:forge-doctor # confirm it's actually armed ← never skip this /forge add rate limiting to the login route ``` 完整指南:**[QUICKSTART.md](QUICKSTART.md)** ## 自己验证 —— 不要只听我们说 Forge 的原则是,任何声明都必须有可复现的证据才能发布: ``` python3 evals/prove_guard.py # 24/24 catastrophic blocked, 0 false positives python3 selfaudit/forge_doctor.py # verdict: OK — enforcement layer intact python3 -m pytest -q # 324 tests ``` - **[PROOF.md](PROOF.md)** — 每一项声明,以及复现它的命令 - **[docs/ENFORCEMENT-TEST-PLAN.md](docs/ENFORCEMENT-TEST-PLAN.md)** — 安全地在你的机器上 验证每一项控制是否都能成功拦截 ## 它维护自身的校准 护栏会随着时间推移而失效。为去年的模型调整的限制可能会在今天正常的任务中误报 — — 而惹人烦的护栏只会被你关掉。有两个工具能让 Forge 长期保持可靠: ``` python3 status/forge_calibrate.py . # are my limits still right? bash scripts/forge-update.sh # update, re-verify, auto-rollback ``` - **`forge_calibrate`** 会读取*你的*运行历史,并报告**过于严格** (在正常工作中触发)或**过于宽松**(从不触发 —— 纯属安全表演)的限制,同时 提供证据和修复命令。它绝不会编辑你的配置:一个会自行放松的控制无异于 一个自我解除武装的控制,所以 Forge 只提出建议,由你做决定。 - **`forge-update`** 并不是 `git pull`。更新后它会重新运行强制执行测试套件, 并且**如果任何检查失败,它会自动回滚更新** —— 这一点已经过模拟供应链攻击验证, 该攻击在看似无害的提交消息下隐藏了拒绝列表。治理工具 绝不能具备悄悄解除自身武装的能力。 模型也会变化:针对当前模型的指导在某些地方是*截然相反*的(一个模型是字面意义的跟随者, 极少生成子智能体;另一个则倾向于扩大范围并频繁委派)。各引擎的 prompt 差异 —— 及其背后的测量数据 —— 都在 [docs/ENGINE-PROFILES.md](docs/ENGINE-PROFILES.md) 中。**强制执行机制本身与模型无关:** 护栏审查的是工具调用,而不是模型,因此无论是谁触发了 `curl … | sh`,都会被拒绝。 ## 现实的局限(请务必阅读) - **内置拒绝列表只是防呆设计,不是安全边界。** 它阻止的是无心之失 和失控循环 —— 无法阻挡蓄意攻击。它拦截不住 0/6 故意混淆的命令, 我们公布这一数据。真正的保护在于最小权限原则 + 人工审批 + 不执行不受信任的输入。 - **Forge 不会为你设计软件。** 它只执行*你的*标准。遇到模糊不清的 任务 → 它会询问你;它绝不会瞎猜。 - **早期项目。** 经过测试、具备自我审计功能,并已应用于实际工作 —— 但仍处于起步阶段,目前 仅支持 Python/Claude-Code 风格。其他框架已对接至其文档记录的 hook 契约,但在完成实时验证之前,均被标记为实验性质。 - **Trace 由每次运行自行报告** —— 它们证明了受治理的纪律; 而强制执行的完整性则由自我审计单独证明。 ## 多框架支持 一个与框架无关的核心决策层 (`hooks/guard.py`) 同时支持两种文档中记载的拦截 信号 —— exit-2 + stderr,或 deny-JSON (`FORGE_BLOCK_MODE=json`) —— 并在 `adapters/` 中为 Codex CLI、Gemini CLI、Cline、Kiro、Goose、Kimi 和 grok-build 提供了轻量级的安装配置。各框架的验证状态:**[docs/HARNESSES.md](docs/HARNESSES.md)**。 ## 许可证与商标 版权所有 2026 Fornaxlabs。本**软件**基于 Apache-2.0 协议开源 —— 详见 [LICENSE](LICENSE) 和 [NOTICE](NOTICE)。 **名称** "Forge" 和 "Fornaxlabs" 是 Fornaxlabs 的商标;Apache-2.0 §6 未授予任何商标权。欢迎自由 fork —— 但请为你的 fork 重命名,以免 误导他人他们实际运行的强制机制到底是什么。参见 [TRADEMARK.md](TRADEMARK.md)。 **关键词:** AI 编程智能体治理 · AI 代码安全护栏 · Claude Code hooks · AI agent 护栏 · LLM 代码审查强制执行 · AI 编程合规 · EU AI Act AI 代码审计追踪 · ISO 42001 AI 治理 · 阻止 AI agent 破坏性命令 · 代理编程安全 · AI 代码质量门禁
标签:AI编程智能体, Cutter, DevSecOps, 上游代理, 代码安全, 时序数据库, 漏洞枚举, 自动化防护, 逆向工具, 钩子机制