不跑一次可以复核的检查 —— 一个测试、一个构建退出码、一张截图 ——
就没有”完成”。Forge 的每一个验证门都多接住一次。设每个任务的漏检率
为 1 − p,某个门的接住率为 c,那么被漏掉的错误会降到 (1 − p)(1 − c),
这里每一个门都是多一个 c。
验证是减轻,不是认证。 Crew 验证者和幻觉符号
标记能减少评审负担;它们并不证明代码是正确的。测试和人的
修正永远拥有最终发言权。
独立验证 —— forge verify
一个独立的门:它跑仓库真正的测试、标出幻觉符号,并
检查出处溯源。
--deep(v0.19+)升级为一个多视角共识:变更必须过几个
独立的验证视角,而不只是一个。
forge verify --deep 汇报的是一个四态的 status,不是二元的 pass/fail:
PASS —— 每一个视角都一致通过,并且核心 forge verify 的测试状态也是
PASS。只有这个状态才算已验证。
FAIL —— 至少有一个视角报出了真实的失败。
INCOMPLETE —— 某个视角没能跑完(超时、崩溃、依赖缺失)。什么都没被证伪,
但也什么都没被证明。
NOT_CONFIGURED —— 这个仓库没有接通任何视角,所以 --deep 无东西可查。
PASS 蕴含 base 也是 PASS 这条规则是有意为之:一次绿色的 deep 共识永远
不能跑赢一次红色的 base 运行,所以 base 测试视角上的 INCOMPLETE 或
NOT_CONFIGURED 会把 deep 的结果同步降级。
幻觉符号标记 —— forge atlas has
forge atlas has <symbol> 是幻觉检查:如果模型调用了一个不在代码图里的
符号,这个门会标出来。
atlas 有意做成纯 JSON —— Codex、Cursor、Gemini 和 Aider 都能通过 CLI 或
简单的 jq 来读 .forge/atlas.json,消费端不需要依赖 MCP。
规范即契约 —— forge spec
把行为钉在一份规范上,并检测相对它的漂移:
技能门 —— forge scan
在安装一个 skill 或 MCP 服务器之前,审核它是否有注入、RCE 或数据外泄的风险:
一次干净的扫描不等于安全认证。 内置启发式只能捕捉
已知的攻击形状(critical)和少数几种高严重度模式;通过意味着 “没有检测到
critical 特征”,而不是 “可以放心安装”。始终自己审阅源码、
权限、包的来源和网络行为。一次 high 严重度的发现即便没有硬阻塞,
也不会被标记为安全。外部扫描器是按需启用的,除非你打开,否则不会
发起任何网络调用。
加固 —— forge harden
接通把秘密和不安全变更挡在外面的安全控制:
提交级门 —— forge precommit
forge precommit(v0.19+)是一个提交级门 —— 它在提交时跑一遍验证底线,
让部分完成或未验证的工作在落地之前就被拦住。
完成门 —— 必须有测试证据
Stop 路径上的完成门(见
跨会话记忆)不再接受一份代理 handoff 作为
代码变更已完成的证明。对任何动了源码的会话,这个门都要求真实的测试证据:
- 会话 diff 里改动过一个测试文件,或者
- 针对当前变更有一次新鲜通过的
forge verify 记录在案。
单独一份 forge handoff 快照并不能满足这个门 —— 它记录的是意图,而不是
验证。如果两种证据都没有,这个门会阻塞一次,并附上一份修复清单:
只改文档、只改配置以及其他非代码的会话不受影响 —— 只有当会话的 diff 真的
动了代码时,测试证据的要求才会触发。
UI 检查 —— forge uicheck
确定性的 UI 检查,前三个视角不需要 LLM 也不需要截图:
配合 forge taste 用来挑一个视觉方向(brutalist、corporate、
editorial、minimalist、playful),并对 design 门的阈值做参数化。