> ## Documentation Index
> Fetch the complete documentation index at: https://forgekit-docs-mintlify-6354fa49.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 验证关卡

> 独立验证、幻觉符号标记、规约即契约与技能关卡——你能实际运行的检查,它们能减少但从不能认证正确性。

没有可以真正跑一遍的检查,就不算 “完成”——一个测试、一个构建退出码、一张截图。Forge 的验证关卡各自多接住一次。设每任务漏率为 `1 − p`,关卡拦截率为 `c`,则静默漏失下降到 `(1 − p)(1 − c)`,而这里每一道关卡都多贡献一个 `c`。

<Warning>
  **验证是减少,不是认证。** Crew 校验者和幻觉符号标记能降低评审负担;它们并不证明代码正确。测试和人工纠正永远胜出。
</Warning>

## 独立验证 —— `forge verify`

一道独立关卡:它会跑仓库真实的测试、标出幻觉符号,并检查溯源。

```bash theme={null}
forge verify              # 测试 + 幻觉符号 + 溯源
forge verify --deep       # 多视角共识——多个独立检查必须一致
```

<Note>
  `--deep`(v0.19+)升级为多视角共识:变更必须通过多个独立的验证视角,而不只是一个。
</Note>

`forge verify --deep` 报告的是四态 `status`,不是二元的通过/失败:

* `PASS` —— 每个视角都一致通过,**并且**核心 `forge verify` 的测试状态也是 `PASS`。只有这个状态才算“已验证”。
* `FAIL` —— 至少有一个视角报告了真实的失败。
* `INCOMPLETE` —— 某个视角未能完成(超时、崩溃、缺依赖)。既没有被证伪,也没有被证明。
* `NOT_CONFIGURED` —— 本仓库没有接入任何视角,`--deep` 无从检查。

`PASS` 蕴含基础 `PASS` 的规则是有意为之:一次绿色的 deep 共识永远不能跑在红色的基础运行前面,因此基础测试视角上的 `INCOMPLETE` 或 `NOT_CONFIGURED` 会把 deep 的结果降级到相应状态。

## 幻觉符号标记 —— `forge atlas has`

`forge atlas has <symbol>` 是幻觉检查:如果模型调用了不在代码图里的符号,该关卡会把它标出来。

```bash theme={null}
forge atlas build          # 索引本仓库的符号 → .forge/atlas.json
forge atlas has useAuth    # “not found” = 很可能是幻觉
```

atlas 有意做成纯 JSON——Codex、Cursor、Gemini 和 Aider 都可以通过 CLI 或直接的 `jq` 消费 `.forge/atlas.json`,不需要依赖 MCP。

## 规约即契约 —— `forge spec`

把行为固定到一份规约上,并检测与之的漂移:

```bash theme={null}
forge spec init            # 生成一份 OpenSpec 契约
forge spec lock            # 把当前规约锁定为契约
forge spec check           # 报告与锁定契约的漂移
```

## 技能关卡 —— `forge scan`

在安装 skill 或 MCP 服务器之前,审查它是否有注入、RCE 或数据外泄风险:

```bash theme={null}
forge scan <path-to-SKILL.md-or-.mcp.json>
```

<Warning>
  扫描通过 **不是安全认证。** 内置启发式只能识别已知的攻击形态(critical)和少量高严重度的模式;通过意味着 *“未检测到 critical 特征”*,而不是 *“可以放心安装”*。永远要自己审阅源码、权限、包溯源和网络行为。**high** 严重度的发现即便不硬阻断,也不会被标记为安全。外部扫描器是可选的,除非你启用它,否则不会发起任何网络调用。
</Warning>

## 加固 —— `forge harden`

接线让密钥和不安全的变更进不了仓库的安全控制:

```bash theme={null}
forge harden               # gitleaks pre-commit + 沙箱设置
```

## commit 级别关卡 —— `forge precommit`

<Note>
  `forge precommit`(v0.19+)是一道 commit 级别的关卡——它在 commit 时运行验证下限,让部分或未验证的工作在落地前被拦下。
</Note>

## 完成关卡 —— 需要测试证据

Stop 路径上的完成关卡(见 [跨会话记忆](/concepts/cross-session-memory))不再把代理的 handoff 当作代码变更已完成的证据。对于任何触及源码的会话,该关卡要求**真实的测试证据**:

* 在会话 diff 中改动了一个测试文件,**或者**
* 针对当前改动重新跑了一次通过的 `forge verify`。

单凭一次 `forge handoff` 快照无法满足该关卡——它记录的是意图,不是验证。如果两种证据都没有,关卡会以修复清单**拦下一次**:

```bash theme={null}
forge verify                              # 生成测试证据
forge handoff "<done>" --next "<next>"    # 然后再对会话拍快照
```

只涉及文档、只涉及配置以及其他非代码会话不受影响——测试证据要求只在会话 diff 真正改动了代码时才会触发。

## UI 检查 —— `forge uicheck`

确定性 UI 检查,前三个视角不使用 LLM 也不使用截图:

```bash theme={null}
forge uicheck contrast <fg> <bg>     # WCAG 对比度
forge uicheck fingerprint <file...>  # 确定性设计指纹
forge uicheck design <file...>       # slop 距离 + 合规关卡
forge uicheck visual <file-or-url>   # 基于 Playwright 的渲染检查(可选层)
```

搭配 `forge taste` 选定一个视觉方向(brutalist、corporate、editorial、minimalist、playful),并参数化 `design` 关卡的阈值。
