# 深链接

> 用 crib:// 链接从笔记、其他应用或脚本直接打开 Crib 中的某一章节：怎样复制链接、两种链接格式、打不开时的提示，以及旧的 pgdash:// 链接。

---

LLMS 索引： [llms.txt](/llms.txt)

---

Crib 注册了 `crib` 协议。点击一个 `crib://` 链接，Crib 会打开它指向的章节。界面里把这类链接叫“链接”。

## 复制链接 {#copy}

- 在搜索结果上点右键，选“复制链接”。折叠起来的多版本结果，复制的是代表项那一条。
- 阅读时，从正文上方的“更多”菜单（版本、书签按钮右侧）选“复制链接”，复制正在阅读的章节。
- 本地 API 搜索结果中的 `load_url` 也是这种链接，见[本地 API](/docs/integrations/local-api/#search-params)。

复制得到的链接形如：

```text
crib://open?project=postgresql&branch=18&locale=zh-Hans&section=<章节键>&manifest=<资料包摘要>
```

`manifest` 记录结果来自哪个资料包。搜索结果和阅读器各自用自己所属的搜索世代生成链接，不会把一个版本的结果链到另一个版本。

## 两种格式 {#formats}

### crib://open {#open}

| 参数 | 必填 | 说明 |
| --- | --- | --- |
| `project` | 是 | 项目，如 `postgresql` |
| `branch` | 是 | 版本线，如 `18`、`9.6`；Wiki 为空 |
| `locale` | 是 | `zh-Hans` 或 `en` |
| `section` | | 章节键，必须精确匹配 |
| `manifest` | | 资料包摘要，64 位小写十六进制；给出时必须与已启用资料包的摘要一致 |
| `concept`、`semantic` | | 没有 `section` 时使用，必须恰好匹配一个章节 |
{.fields meta="required"}

带 `section` 时，该章节必须存在于当前已启用的内容中，且项目、版本线、语言都与参数一致。
未知参数、重复参数、超过 4096 字节的值都会让链接被拒绝。

### crib://section {#section}

```text
crib://section/<章节键>
crib://section/<章节键>?manifest=<资料包摘要>
```

路径只有一段，就是精确的章节键；只允许一个可选的 `manifest` 参数，不能带片段、用户名、端口或其他参数。
“复制链接”目前生成的是 `crib://open` 格式；这种短格式适合手写，或由脚本从本地 API 返回的 `section_key` 拼出来。

章节键和资料包摘要都来自签名资料包，详见[资料包格式](/docs/library/packs/#manifest)。

## 打不开时 {#errors}

Crib 只打开链接精确指向的章节，不会退而打开相似的页面或其他版本。打不开时，当前页面保持不变，Crib 显示：

| 提示 | 原因 |
| --- | --- |
| 无法打开链接：页面地址无效 | 链接格式不对，例如多了参数、路径不止一段、`manifest` 不是 64 位十六进制 |
| 无法打开链接：资料库中没有这个页面或文件 | 链接格式正确，但当前启用的内容里找不到：版本未安装或已停用，或 `manifest` 指向的修订不是当前启用的那个 |

版本已停用时，在[资料库](/docs/library/manage/#enable)中启用后再点链接。

> [!NOTE]
>
> Crib 没有运行时点击链接、由链接启动 Crib 的情况还没有实测。Crib 打开后如果没有跳到目标章节，再点一次链接。

## 旧的 pgdash:// 链接 {#legacy}

Crib 仍然注册 `pgdash` 协议，PGDash 时期复制的 `pgdash://open?...` 链接按上面相同的规则打开。PGDash 的 `pgdash://search` 没有实现，会被拒绝。
Crib 自己只生成 `crib://` 链接。

## pgdoc:// 不是给用户的 {#pgdoc}

阅读器内部用 `pgdoc://<资料包摘要>/<路径>` 加载资料包里的文件。这个协议不向系统注册，不能从其他应用打开，也不要把它当作链接保存。

---

反链：

- [文档](/docs/)
- [阅读与双语对照](/docs/guide/reader/)
- [本地 API](/docs/integrations/local-api/)
- [资料包格式](/docs/library/packs/)
- [用户数据与迁移](/docs/reference/data/)
