跳转到主要内容
你只写一次基底。forge sync 会把这份来源编译成每个工具的原生 配置。四层描述的是 大脑如何被表达;编译器描述的是它 如何被 交付

一份来源,多个输出

规则只写一次source/rules.json);一个确定性的编译器(forge sync) 把它输出成每个工具的原生格式,带一个内容哈希头,所以漂移是可探测的, 再跑一次是幂等的。任何一条规则都不会被写两遍。规范来源由三个 文件组成:

四层

每一层都有品牌名,并且跨工具输出。
~/.forge/tools/~/.claude/skills/。模型可调用的 skill,遵循 SKILL.md 标准(frontmatter 里的 name + description)。
~/.forge/crew/~/.claude/agents/。上下文隔离的子代理,例如 scout、 verifier 和 frontend-verifier。
~/.forge/guards/settings.json hooks。唯一进行 强制 而不只是 建议 的层。 一个 guard 就是一个确定性钩子,模型没法漂离它。 CLAUDE.md 里的自然语言规则会被口头承认,然后在压缩之后被遗忘;一个 guard 不会。每一条可强制的不变量都应该落在这里。
Forge 内置一个 stdio 服务器(src/cortex_mcp.js),暴露 19 个 MCP 工具: 基底检查(substrate_check / predict_impact / assumption_gate / …)、 记忆的读 写(forge_remember、账本的 ratify/retract),以及运维/健康检查。
有几个横切关注点贯穿四层:atlas(代码图)、lean (最小性 —— 既作为一个 tool 又作为一个 Stop-guard 交付,所以不管 模型是否主动调用它都会生效),以及 recall(记忆)。

Guard 胜过自然语言

模型允许漂离的规则活在自然语言里;模型永远不能打破的规则 活在 guards 里(确定性 shell 钩子)。一个 guard 在上下文 压缩之后也不会被遗忘。
把每一条可强制的不变量从 CLAUDE.md 里挪进一个 guard;让自然语言 尽量薄。这是 Forge 设计里最重要的一条纪律。

已验证的跨工具输出矩阵

Forge 为九个工具输出配置,加上一个给 Roo Code 和 VS Code 的 MCP 服务器。每 一行都对着厂商文档核对过。 Roo Code 和 VS Code 通过 forge init.roo/mcp.json.vscode/mcp.json)拿到 Forge 的 MCP 服务器,而不是一份规则文件。
字符上限是真的存在。 Codex 在 32 KiB 处截断,Windsurf 在 6k/12k 处截断。 forge sync 会强制一个源大小预算,避免配置被悄悄截断。