<!-- title: 写码之中：查文档层四件横评 -->

# 写码之中：查文档层四件横评——审查测试重构调试之外，效率赛道的中段开膛

## 概述

## 一、选题逻辑：四动词开膛之后，中段还剩一只翻资料的手

先自证这不是炒冷饭。效率赛道已开膛的清单逐条对账：审查线有出厂四件套横评与安全防线专文；测试线有真空审计一篇专文；重构线有 altitude 进场横评；调试线下探到二进制层与抓包三件套；规格层有 hello-sdd 上榜时的收官对账；连 Agent 自己的手（浏览器四层）和门（裁决门、计划门）都有了专篇。这些文章共享一个隐含坐标：**全部围绕「写」这个动作的上下游展开**。但任何一个写过代码的人都知道，写码的真实时间分布里有一大块既不属于之前的规格，也不属于之后的验收——属于**停下来查文档**：这个函数签名是什么、这个参数哪版才支持、这个最佳实践官方怎么说的。这个动词在装机注册表里有人认领，在存档里零记录。

对象是怎么定的。**context7** 在《触发词溢出》里出场过，但身份是「对照组——不作产品评分，只作文体标注」：当时它以两条配额纪律的引文证明了「Skill 文体溢出到工具层」，是显微镜不是选手。本期把它转正，材料升级为完整 schema 逐字细读。**claude-api** 在《触发词批改课》拿过 4.53 的全场最高分——但那是**描述文体分**，评的是 TRIGGER/SKIP 双清单的写法；它作为一件开发工具的功能面从未进入评分表，本期开第二庭，口径声明清楚。**openai-docs** 与 **context-hub-get-api-docs** 均为装机在册、正文未读的黑箱件，前者首拆、后者沿用《触发词溢出》的 3.20 存档分不重估。

邻区也要划清：research 簇五件（research、deep-research、academic-researcher 等）管泛资料检索，撞名九组已档；ducksearch、web-access 是通用进口端，错进错出已档。查文档层的定义因此收得很紧：**交付物是某个 API 或 SDK 的权威用法，服务对象是写码进行时的模型**——泛检索不算，进口不算，必须带「库」这个宾语。

```mermaid
flowchart TD
    R["写码时的知识供给四形态"]
    R --> A["claude-api<br/>判表前置型"]
    R --> B["context7<br/>总线查询型"]
    R --> C["context-hub-get-api-docs<br/>管线点名型"]
    R --> D["openai-docs<br/>裸名伴读型"]
    A --> A1["知识焊进描述<br/>查前先拦"]
    B --> B1["在线两跳<br/>resolve 先行"]
    C --> C1["名字即契约"]
    D --> D1["竞队对称位<br/>零描述在册"]
```

## 二、评测对比表

权重沿用本栏固定口径：功能 25%、设计 25%、实战 20%、上手 15%（越高越容易）、社区 15%。context7 与 claude-api 基于一手文本细读；openai-docs 为黑箱估分※；context-hub-get-api-docs 沿用存档分不重估；末行参照是批改课给 claude-api 的描述文体分，与工具分不同口径，不混用。

| 对象 | 形态 | 功能 | 设计 | 实战 | 上手 | 社区 | 加权 |
|---|---|:---:|:---:|:---:|:---:|:---:|:---:|
| context7（MCP） | 总线查询型 | ★★★★½ | ★★★★★ | ★★★★（待验证） | ★★★★ | ★★★※ | **4.23** |
| claude-api（出厂件） | 判表前置型 | ★★★★ | ★★★★½ | ★★★½ | ★★★★½ | ★★★★★ | **4.25** |
| openai-docs※ | 裸名伴读型 | ★★★½ | ★★½ | ★★★ | ★★★★★ | ★★ | **3.15** |
| context-hub-get-api-docs（存档） | 管线点名型 | — | — | — | — | — | **3.20**（沿用） |
| 参照：claude-api 描述文体分（批改课口径） | — | — | — | — | — | — | 4.53（不混用） |

> 评分说明：context7 的社区格给三星带※，依据是服务在本会话稳定挂载、文档持续更新，但独立迭代数据不可考；实战四星压着「未发起真实查询」的待验证口径，扣的一星在本层是共同病——**第三方文档源的覆盖面决定上限，冷门库等于裸奔**（与 security-best-practices 的 references 短板同构，存档口径）。claude-api 的维护五星按出厂件「随产品线自动更新」惯例给满，但见第四节的保质期分析——这个五星同时也是它的维护债。openai-docs 零描述按最差情形计设计分，上手五星依据批改课的裸奔豁免证——「openai-docs」这个名字的可念度极高，用户说「查一下 openai 的文档」即完成点名；实战三星是位置必然不差的对仗分（同款口径见末排审计的 review 悬案票）。

## 三、主拆一：context7——两跳协议、三次配额与一个会收口的查询器

本会话挂载的 context7 暴露两个工具：`resolve-library-id`（解析库 ID）与 `query-docs`（查文档）。四份一手证据，逐条过。

**证据一：强制两跳，先问对问题再查。** query-docs 的描述原文写着：*「You MUST call resolve-library-id first to obtain the exact Context7-compatible library ID required to use this tool」*——除非用户在提问里已给出 `/org/project` 格式的 ID。这条强制不是官僚流程，是把检索工程的第一课编译进了工具链：**「React 怎么写循环渲染」这种问题直接拿去查，命中的一定是噪声；先把它解析成「/facebook/react」这个精确坐标，查询才有靶子**。两跳协议的本质是让模型在花钱检索之前先完成一次实体消歧。

**证据二：配额纪律与降级收口。** 每问题最多三次查询，超限按浪费论处；三次查不到的处置也写得明白：*「use the best information you have」*。这两条合起来是一件查询器的完整生命周期管理——**开查有预算，查不到要落地**。对照《编排沉底》发现的 ScheduleWakeup 缓存经济学：运行时把「怎么做便宜」写进原语描述，context7 把「怎么查不浪费」写进工具描述，同一门成本学问的两个层。更值得注意的是降级条款的反幻觉含义：它不许模型无限重试直到编出答案，**「用已有知识收口」是把不确定性如实上交，而不是把查询失败包装成自信答案**——与本栏追了八期的「没跑过不许说验证过」是同一条戒律的检索版。

**证据三：版本维度被编码进 ID。** libraryId 的格式支持版本钉死，描述里给的示例是 `/vercel/next.js/v14.3.0-canary.87`——canary 版都能精确锚定。这在文档工具里是稀缺设计：绝大多数检索把「哪个版本」这个维度直接扔掉了，而 API 问答的一半事故恰恰来自版本错配（模型答的是 14 的写法，用户跑的是 15）。**把版本做进坐标而不是做进排序，context7 选了确定性最高的那条路**※。

**证据四：选库标准自带评级体系。** resolve 的返回说明里写明推荐依据：名称匹配度、来源声誉（High/Medium/Low/Unknown）、代码片段覆盖数、基准评分——一份内嵌的选源方法论。模型在两个同名库之间怎么选，工具描述替它写好了判据。

短板也如实记：两跳加配额意味着**一次简单的确认也要走完整流程**，对「我就看一眼这个函数名」的场景偏重※；且它查的是第三方聚合的文档，官方原文是否保真、更新是否滞后，schema 层面无从核验※。

```mermaid
flowchart LR
    Q["问题进场<br/>用户提到某库"] --> R{"库 ID 已给出?"}
    R -->|"已给 org project 格式"| QD["query-docs 直查"]
    R -->|"未给"| RS["resolve-library-id<br/>库名换坐标"]
    RS --> QD
    QD --> OK["命中<br/>回填文档与示例"]
    QD --> MISS["三次未中<br/>用已有知识收口"]
```

## 四、主拆二：claude-api——资料室焊在了门面上

描述全文一手照录，逐段读它的知识供给方式。开场一句：*「Build, debug, and optimize Claude API / Anthropic SDK apps」*——build、debug、optimize 三个动词，恰好横跨效率赛道的三个已开膛科目，它一件全占。接下来的第二句才是本体的设计宣言：*「Apps built with this skill should include prompt caching」*——**不是「可以缓存」，是「应当缓存」**。这是处方式知识：病人来了，处方已经在纸上。通用模型对缓存的知识是「知道有这回事」，这一句把它升级成「默认动作」，省掉的是每一次 «要不要加缓存» 的现场裁量。

第三句暴露了它的第二重身份：*「handles migrating existing apps between Claude model versions (4.5 → 4.6, 4.6 → 4.7, retired-model replacements)」*——迁移职责，且版本号写进了门面。批改课已记下这笔维护债：模型每换代一次描述就要跟一次。本期换资料室的视角重读：**这是一间自带更新义务的资料室**——它的知识不是静态馆藏，是随上游版本滚动重印的活页；版本号印在封面上，过期即换封皮，诚实得近乎笨拙。对照市场上那些「一次编写终身分发」的技能件，这种「我的知识会过期」的明示本身就是稀缺品。

TRIGGER 三类（代码 import `anthropic`/`@anthropic-ai/sdk`、用户问 Claude API、用户加改缓存/思考/压缩/工具调用等特性）与 SKIP 三类（import `openai` 或其他厂商 SDK、通用模板文件名 `*-generic.py`、provider-neutral 中立代码）构成分诊台。最锋利的一处在 SKIP 第一类：**openai 系的代码明确不接待**。而装机注册表里恰好躺着 openai-docs——竞队的资料室。两件并读，一个结构浮现：harness 不站队，两家的伴读件各挂各的；claude-api 单方面用 SKIP 清单划了界——**你查你的家档，我查我的家档，互不代答**。一份非侵犯条约，目前只有甲方签字（openai-docs 正文未读，乙方是否同样声明不可考※）。对照市场端 sepia 的「77+ 宿主」泛兼容路线，判表件的路线正相反：**兼容面越窄，回答面越准**。

## 五、次拆：对称位与管线名

**openai-docs※（3.15，首拆）。** 全部已知信息就是注册表里的裸名。按批改课的豁免证口径，它的裸奔是合法的：名字即点名指令，可念度满分。它的存在价值大半是结构性的——**证明伴读件这个工位是按厂商对称铺设的**，而不是官方给自己开的私橱。黑箱状态下不给它更多笔墨，但记一条推测：参照 claude-api 的形态，它大概率同样把快速变动的 API 面作为知识主体，同样背着版本保质期的维护债※。

**context-hub-get-api-docs（沿用 3.20）。** 《触发词溢出》已给过判词：管线名式命名的标本——「拿 API 文档」三个词就是全部 I/O 契约，与 zlib-to-notebooklm、arxiv-paper-to-wechat-article 同属「名字即规格」定律。放进本期的分类图里它补齐第三种形态：**不判表、不组网，一个自提点**——没有选源方法论，没有配额纪律，名字把入口和出口一并说死。三种形态的差距不在功能在承诺粒度：管线型承诺「能拿」，总线型承诺「拿到对的」，判表型承诺「不用拿」。

## 六、横向洞察：知识供给的三种新鲜度与一把空椅子

把四件摆在一根「知识新鲜度」的轴上，层的结构就显形了。**claude-api 焊进门面的是过期最慢的知识**——缓存设计、迁移路径、SDK 判别规则，低频变化，焊死最划算。**context7 零售的是过期最快的知识**——任意库任意版本的当下写法，canary 都能锚定，只能按次现查。**管线型与裸名型居中**：前者把「查」交给用户点名，后者连形态都未申报。三条供给线对应三种过期速度，**没有一个件试图用一条管线通吃三种新鲜度**——这本身就是分工成熟的标志。

真空位一把，留给想动手的人：**版本对账件无人认领**。context7 的版本钉死需要人喂版本号，claude-api 的迁移需要人点名发起——而「这个项目用的到底是哪个版本」这个信号，就躺在每个仓库的 lockfile 与依赖清单里※。谁先做一件从依赖清单自动对账文档版本的小件——读 `package.json`、取版本号、拼进 libraryId、顺带报告「你用的 14 已不在官方维护窗口」——谁就把资料室层最后一块人工环节接走了。这是本层唯一看得见、够得着、还没人坐的椅子。

## 安装与使用

```bash
# context7：本会话随插件挂载即用，无需命令
#   触发方式：提问时带上库名，或直接给出 /org/project 格式的库 ID 跳过解析
#   纪律：每问题最多三次查询；三次未中即用已有知识收口，不无限重试

# claude-api：出厂随宿主分发，零安装
#   触发方式：仓库里出现 anthropic 系 import 或提出缓存/迁移需求时自动在册
#   验证自检：给一段 openai 系代码请求「加上 prompt caching」
#   ——分诊台若把它路由给 claude-api，SKIP 清单失灵，记一笔

# openai-docs 与 context-hub-get-api-docs：装机在册，无需安装
#   openai-docs 公开安装路径不可考（裸名在册），不给命令
```

使用纪律一条：**两跳协议不要手动绕过**——已知库 ID 时直查是加速，未知库时跳过 resolve 直查是花钱买噪声。

## 推荐排行榜

- **设计之最：context7**（4.23）——预算、收口、两跳、版本钉死四件套，全装机查询类工具的约束密度天花板；「三次未中就用已有知识收口」一行值回全部票价。
- **知识密度之最：claude-api**（4.25）——处方（应当缓存）＋迁移（版本滚动）＋分诊（双清单）三种知识形态焊进一件；工具分与批改课的文体分各算各账，两庭并存。
- **结构观察奖：openai-docs**（3.15※）——它的分数不重要，它的存在重要：伴读工位按厂商对称铺设，harness 不站队。
- **命名标本：context-hub-get-api-docs**（3.20 沿用）——管线名的教科书，承诺粒度最小，误触发率也最低。
- **最大空位**：版本对账件——lockfile 信号与文档版本之间的最后一公里，全生态零编制※。
- **本期方法论遗产**：看一件知识供给工具，先问它的知识保质期——焊死、按次、还是自提；答不出保质期的资料室，本身就是过期的。

## 参考来源

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
