1. 从零建库的真实痛点:为什么你的笔记越记越乱
先说一个我观察到的普遍现象:大多数人记笔记的路径是「收藏夹 → 文件夹 → 吃灰」。看到一篇好文章,存下来;学到一个新概念,记两行;过两周想找,翻遍文件夹也找不到,最后干脆重新问 AI。问题不在于你不够勤奋,而在于传统笔记是「树状分类」,而知识本身是「网状关联」。
LLM Wiki 这个思路来自 Andrej Karpathy 在 2024 年提出的一个观点:不要让 AI 每次查询都重新检索原文,而是让它一次性读完、提炼、结构化,把知识编译成 Wiki 页面。下次查询直接读它自己写好的精炼内容——交叉引用已经写好,矛盾已经标记,综合判断已经完成。说白了,就是让 AI 替你读文档、写笔记、做索引,你只负责审核。
这套方法要落地,需要三个东西配合:一个能读写文件、执行命令的 AI Agent 执行引擎;一份定义「怎么建 Wiki」的规则文件(也就是 Skill);一个能可视化浏览知识网络的展示层。我选的是 Obsidian 作为知识载体,Hermes 风格的 Skill 组织方式作为参照,而让 Agent 稳定跑起来的关键,是先把模型调用的入口统一掉——这就是 TaoToken 在这篇里要解决的问题。
适合谁看:有大量 PDF/网页/文档需要消化的人、想搭个人技能知识库但被目录结构劝退的人、已经在用 Obsidian 但笔记不成体系的人。整篇按「建库 → 摄入 → 验证」的完整流程走,每一步都给可复制的配置和命令,跟着做就能出一个能检索、能召回的知识库。
2. TaoToken 前置准备:统一 Key 让 Agent 稳定调用模型
在动手建库之前,得先解决一个容易被忽略但很致命的问题:Agent 建库过程中会高频调用模型——目录规划、条目抽取、索引生成、交叉引用检查,每一步都是几十上百次请求。如果 Key 管理混乱、模型入口不统一,跑到一半报个 401 或者连接失败,整个建库流程就断了。
TaoToken 在这里的角色是「统一入口」:一个 Key 覆盖多种模型,Base URL 固定,Agent 的配置文件里只写一份凭证,不用在多个平台之间来回切换。对建库这种长流程任务来说,稳定性比什么都重要。
先拿 Key。打开控制台创建 API Key,地址是 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite ,创建后复制保存,后面配置文件里要用。
拿到 Key 之后,你需要记住三个核心参数,这是后面所有配置的基础:
| 参数 | 值 | 说明 |
|---|---|---|
| Base URL | https://taotoken.net/api | 所有请求的统一入口,不加 UTM |
| API Key | 控制台创建的那串 | 只写一份,全局复用 |
| Model ID | 按需选择 | 建库推荐长上下文模型 |
如果你用的是 Claude Code 这类编码 Agent 来做建库,还需要走一遍接入配置。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,里面有各客户端的详细步骤。想先验证模型能不能正常对话,可以直接用模型对话页面测一下: https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite 。
这里有个我踩过的坑要提醒:很多人建库失败不是 Skill 写错了,而是 Agent 的模型配置里 Base URL 写成了带路径的完整地址,导致请求 404。记住 Base URL 就是https://taotoken.net/api,不要自己拼/v1/chat/completions之类的后缀,客户端会自己处理。
另外,如果你的建库任务是长期、批量的(比如几百份 PDF 要持续摄入),建议用 Coding Plan 而不是按次调用,成本更可控,地址在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite 。建库是个持续过程,不是一次性任务,这点后面维护章节还会讲。
3. 可复制配置:Skill 文件、目录结构与元数据
这一节是整篇的核心,所有配置都能直接复制。先讲 Skill 文件的写法,再讲目录结构,最后给元数据模板。
3.1 写 llm-wiki Skill 文件
Skill 本质上就是一个 Markdown 文件,放在 Agent 能读到的 skills 目录下。它的作用是告诉 Agent「建 Wiki 的方法论」。没有这个文件,Agent 会零零散散建一堆 markdown,不成体系。
下面是我实际在用的llm-wiki.md核心内容,你可以直接复制改领域:
# Skill: llm-wiki ## Domain 个人技能知识库,聚焦嵌入式、AI 工程、工具链。 ## Architecture wiki/ ├── SCHEMA.md # 规则书 ├── index.md # 内容目录 ├── log.md # 操作日志(只追加) ├── raw/ # 第一层:原始材料,不可修改 │ ├── articles/ │ ├── papers/ │ └── assets/ ├── entities/ # 第二层:实体页面 ├── concepts/ # 第二层:概念页面 ├── comparisons/ # 第二层:对比分析 └── queries/ # 第二层:问题答案 ## Page Rules - 每个页面必须有 YAML frontmatter - 每个页面至少 2 个出站 [[wikilink]] - 标签必须来自 SCHEMA 标签库 - 超过 200 行必须拆分 - 只在 2+ 来源出现的关键概念才建独立页面 ## Ingest Flow 1. 捕获源文件到 raw/ 2. 讨论要点 3. 检查已有页面避免重复 4. 写页面(正文 + YAML + 交叉引用) 5. 更新 index.md 和 log.md 6. 汇报变更3.2 目录初始化命令
Skill 写好后,建库就是标准化流程。在 Obsidian vault 里选一个目录作为 Wiki 根,然后执行:
mkdir -p wiki/raw/articles wiki/raw/papers wiki/raw/assets mkdir -p wiki/entities wiki/concepts wiki/comparisons wiki/queries touch wiki/SCHEMA.md wiki/index.md wiki/log.md执行完tree wiki应该看到和 Skill 里定义一致的结构。这一步别偷懒,目录不对后面 Agent 写入会乱。
3.3 元数据模板(Frontmatter)
每个 Wiki 页面开头必须写 YAML,这是让 Agent 能做自动化质量检查的基础:
--- title: STM32H753 时钟树 created: 2026-07-02 updated: 2026-07-02 type: concept tags: [mcu-core, stm32cube] sources: [raw/papers/stm32h753-datasheet.pdf] confidence: high ---字段含义:type只能是 entity/concept/comparison/query 四选一;tags必须来自 SCHEMA 标签库,不能随便发明;sources指向 raw 里的原始文件;confidence分 high/medium/low,标记这条知识的可信度。
3.4 Agent 客户端配置片段
如果你用 Claude Code 或类似客户端跑建库,配置文件里要写全三件套。以 settings 为例:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "你的Key", "ANTHROPIC_MODEL": "你的ModelID" } }Base URL、Key、Model ID 三个都要写全,缺一个就会报错。Cline 的 MCP 配置同理,在 MCP server 的 env 里把这三个填进去。Codex 的auth.json也是同样的三件套结构。
4. 验证请求:建库后确认知识条目能被召回
建库不是建完就完事,必须做一次检索验证,确认知识条目真的能被召回。这一步很多人跳过,结果用的时候才发现索引是空的。
4.1 先验证模型连通性
在跑建库任务前,先用一条 curl 确认 Key 和 Base URL 没问题:
curl https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer 你的Key" \ -H "Content-Type: application/json" \ -d '{ "model": "你的ModelID", "messages": [{"role": "user", "content": "回复 OK"}] }'返回里有choices字段且内容是 OK,说明连通正常。如果这里就报错,先别往下走,去第 5 节排障。
4.2 让 Agent 摄入一份文档
把一份 PDF 放进wiki/raw/papers/,然后给 Agent 下指令:
读取 raw/papers/ 下的新文档,按 llm-wiki Skill 的 Ingest Flow 摄入。 先告诉我你发现了哪些关键概念,等我确认后再写页面。Agent 会先汇报发现,你确认方向后它才开始写。这一步的「讨论要点」很关键,别让它直接闷头写,否则容易建出一堆你不需要的页面。
4.3 检索验证动作
摄入完成后,做一次召回测试。在 Obsidian 里打开 Wiki 目录,用搜索或 Dataview 查询:
TABLE type, confidence, updated FROM "wiki" WHERE contains(tags, "mcu-core") SORT updated DESC如果能看到刚摄入的页面,且[[wikilink]]能点击跳转,说明索引和交叉引用都生效了。再打开 Graph View,应该能看到新页面和已有页面之间的连线——孤岛页面说明交叉引用没写够,需要让 Agent 补。
4.4 检查 log.md 和 index.md
最后确认两个文件:log.md里应该有这次摄入的追加记录,index.md里应该新增了页面条目。这两个是 Wiki 的导航枢纽,缺了它们,知识库就是一堆散文件。
5. 本篇常见错排查:401、连接失败与索引为空
建库过程中最容易卡在几个固定报错上,这里逐个对照。
报错一:401 Unauthorized
最常见的原因是 Key 没写对或者带了多余空格。检查配置文件里的ANTHROPIC_API_KEY,确认是从控制台完整复制的。如果 Key 确认没问题还报 401,检查是不是把 Base URL 和 Key 写反了位置。
报错二:local proxy failed / 连接失败
这个通常出现在客户端配置里 Base URL 写错的情况。确认写的是https://taotoken.net/api,不要加/v1后缀,也不要加 UTM 参数。有些客户端会自动拼路径,你只需要给根地址。
报错三:reading choices 报错 / 返回结构异常
如果返回里读不到choices字段,多半是 Model ID 写错了。去控制台确认你用的模型 ID 拼写,大小写敏感。另外确认请求体里model字段和配置里的一致。
报错四:OAuth 相关报错
Claude Code 这类客户端如果走了 OAuth 流程而不是 API Key,会报 OAuth 错误。解决办法是在配置里显式指定 API Key 模式,把三件套(Base URL + Key + Model ID)写全,不要依赖默认的登录态。
报错五:索引为空 / 检索召回不到
建完库搜不到内容,先检查index.md有没有被更新。如果 Agent 写了页面但没更新 index,说明 Skill 里的 Ingest Flow 第 5 步没执行到位。让 Agent 重新跑一遍「更新导航」步骤。另外检查页面的tags是不是用了 SCHEMA 之外的野标签,Dataview 查询按标签过滤时,野标签会导致召回失败。
报错六:交叉引用全是孤岛
Graph View 里页面之间没有连线,说明[[wikilink]]没写够。Skill 里要求每页至少 2 个出站链接,让 Agent 做一次 Lint 检查,把孤立页面列出来补链接。
排障时如果拿不准,直接去接入文档对照配置: https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。文档里有各客户端的完整配置示例,比对着改最快。
6. 长期维护与下一步:让知识库持续进化
建好 Wiki 只是起点,维护才是让它「越用越聪明」的关键。LLM Wiki 的维护工具链主要靠定期 Lint 和知识更新两个动作。
定期 Lint 让 Agent 检查四类问题:孤立页面(没有任何页面链接到它)、断链([[wikilink]]指向不存在的页面)、过期内容(90 天未更新且源文件已变化)、野标签(用了 SCHEMA 之外的标签)。跑一次 Lint 的指令很简单:
对 wiki/ 做一次 Lint,列出孤立页面、断链、过期内容和野标签,先别改,等我确认。知识更新则是当新文档出现时的处理流程:新文档 → 读 → 对比已有页面 → 更新/新建/标记矛盾 → 更新 index 和 log。这里有个重要原则:如果新信息和旧信息冲突,不要直接覆盖,而是标记contradictions: [page-name],两方观点都保留,等人审核。知识库的价值在于可追溯,覆盖掉旧观点等于丢掉了判断依据。
如果你的建库是长期持续的(比如每周都有新文档要摄入),用 Coding Plan 比按次调用更划算,地址在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite 。建库不是一次性任务,选对计费方式能省不少。
最后说一个实用技巧:Obsidian 的 Graph View 是你判断知识库健康度的最好工具。健康的 Wiki 应该是一张密密麻麻的网,每个点是一个概念,每条线是一个关联。如果你看到大量孤立的点,说明交叉引用没做到位,回去让 Agent 补链接。这就是 LLM Wiki 和传统笔记的本质区别——不是树状分类,而是网状关联。