---
title: 标识符
---

# 标识符体系 (Identifiers)

Typedown 在不同的阶段使用不同精度的标识符。

## 标识符类型 (Identifier Types)

我们将标识符定义为三种不同的**解析状态 (Resolution States)**：

| 层级 | 策略 | 阶段 | 特征 |
| :--- | :--- | :--- | :--- |
| **L0** | Hash | 运行时 | **绝对锚定**。基于内容 Hash 校验。 |
| **L1** | Exact | 编译器 | **精确索引**。唯一字符串匹配。 |
| **L2** | Fuzzy | 编辑时 | **模糊推断**。上下文自动推导。 |

> **提示**: L2 (Handle) 与 L1 (System ID) 的本质区别在于 **是否允许模糊匹配**。
>
> - 在 **IDE 输入时**，你输入 `alice` (L2)，补全工具将其识别为 `user-alice-v1`。
> - 在 **文件保存时**，代码中必须固化为 `user-alice-v1` (L1) 以供编译器精确解析。

### System ID 的风格 (Styles)

对于编译器内核而言，**Name, Slug, UUID 本质上没有任何区别**，它们都是作为 **L1 System ID** 的字符串键值 (Key)。选择何种风格纯粹取决于项目规范：

- **Name Style**: `alice` (简短，但在大型项目中易冲突)
- **Slug Style**: `user-alice-v1` (推荐，命名空间清晰)
- **UUID Style**: `550e84...` (机器生成，无语义)

无论选择哪种风格，只要它在全局范围内是唯一的且被精确引用，它就是 **L1 System ID**。

## 标识符解析优先级 (Resolution Priority)

当发生引用 `[[target]]` 时，解析器严格遵循 **L0 -> L1 -> L2** 的顺序：

1. **L0 Check (Hash)**: 检查是否符合 `sha256:...` 格式。如果是，直接进行内容寻址。
2. **L1 Check (ID)**: 在全局索引中精确查找对应的 `id` 或 `uuid`。
3. **L2 Check (Handle)**: 在局部上下文中进行模糊匹配查找 Handle。

> **设计意图**: 精确优于模糊，全局优于局部。这确保了引用的确定性，同时保留了开发体验的灵活性。
