> ## 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              # tests + hallucinated-symbol + provenance
forge verify --deep       # multi-lens consensus — several independent checks must agree
```

<Note>
  `--deep`（v0.19+）升级为一个多视角共识：变更必须过几个
  独立的验证视角，而不只是一个。
</Note>

`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>` 是幻觉检查：如果模型调用了一个不在代码图里的
符号，这个门会标出来。

```bash theme={null}
forge atlas build          # index this repo's symbols → .forge/atlas.json
forge atlas has useAuth    # "not found" = likely hallucinated
```

atlas 有意做成纯 JSON —— Codex、Cursor、Gemini 和 Aider 都能通过 CLI 或
简单的 `jq` 来读 `.forge/atlas.json`，消费端不需要依赖 MCP。

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

把行为钉在一份规范上，并检测相对它的漂移：

```bash theme={null}
forge spec init            # scaffold an OpenSpec contract
forge spec lock            # lock the current spec as the contract
forge spec check           # report drift against the locked contract
```

## 技能门 —— `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 + sandbox settings
```

## 提交级门 —— `forge precommit`

<Note>
  `forge precommit`（v0.19+）是一个提交级门 —— 它在提交时跑一遍验证底线，
  让部分完成或未验证的工作在落地之前就被拦住。
</Note>

## 完成门 —— 必须有测试证据

Stop 路径上的完成门（见
[跨会话记忆](/concepts/cross-session-memory)）不再接受一份代理 handoff 作为
代码变更已完成的证明。对任何动了源码的会话，这个门都要求**真实的测试证据**：

* 会话 diff 里改动过一个测试文件，**或者**
* 针对当前变更有一次新鲜通过的 `forge verify` 记录在案。

单独一份 `forge handoff` 快照并不能满足这个门 —— 它记录的是意图，而不是
验证。如果两种证据都没有，这个门会**阻塞一次**，并附上一份修复清单：

```bash theme={null}
forge verify                              # produce the test evidence
forge handoff "<done>" --next "<next>"    # then snapshot the session
```

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

## UI 检查 —— `forge uicheck`

确定性的 UI 检查，前三个视角不需要 LLM 也不需要截图：

```bash theme={null}
forge uicheck contrast <fg> <bg>     # WCAG contrast ratio
forge uicheck fingerprint <file...>  # deterministic design fingerprint
forge uicheck design <file...>       # slop-distance + conformance gate
forge uicheck visual <file-or-url>   # Playwright-rendered check (opt-in tier)
```

配合 `forge taste` 用来挑一个视觉方向（brutalist、corporate、
editorial、minimalist、playful），并对 `design` 门的阈值做参数化。
