ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

用Karpathy的LLM Wiki方法,我把Obsidian改造成会成长的知识系统:TaoToken统一Key接入Codex与Claude Code

用Karpathy的LLM Wiki方法,我把Obsidian改造成会成长的知识系统:TaoToken统一Key接入Codex与Claude Code 1. 为什么我把 Obsidian 改造成 LLM Wiki 而不是继续堆笔记先说结论Obsidian 本身是个很好的本地知识库工具但它的默认用法是「人写、人链、人回顾」。当你的收藏夹里躺着几百篇没消化的文章时靠手动整理基本等于放弃。Karpathy 提出的 LLM Wiki 方法核心是把知识管理从「临时检索」变成「持续编译」——在原文和问答之间加一层由大模型维护的结构化 wiki每次新增资料都自动更新主题页、实体页、总结页还会标注新旧观点的冲突。这套思路落地到 Obsidian我把它拆成四层骨架00_schema放规则和迁移报告01_raw只放原文真源02_wiki放结构化知识页面03_ops放脚本、模板和自动化。历史文章一个字没改全部迁到01_raw。真正让它「活」起来的关键是在03_ops层补一个增量同步脚本每 30 分钟扫描raw里的新稿补齐到wiki层把实体、概念、主题、综述、巡检串起来跑完。但这里有个现实问题Codex 和 Claude Code 各自要配一套 API Key、Base URL、Model ID切换工具时改配置改到烦。我试过用 TaoToken 统一 Key 和 API 通道一个 Key 同时喂给 Codex 和 Claude Code配置只写一次后面所有笔记处理脚本都复用同一套环境变量。这篇就把这套配置、Obsidian 插件设置、以及两个工具分别处理笔记的验证动作完整写出来你可以直接跟着做。适合谁已经在用 Obsidian、收藏了一堆文章但没消化、想用 Codex 或 Claude Code 做自动化知识编译的人。不需要你会写复杂脚本但需要你愿意花半小时把目录骨架和 Key 配好。2. TaoToken 统一 Key 接入 Codex 与 Claude Code 的前置准备在动 Obsidian 之前先把 API 通道打通。这一步做不好后面所有自动化脚本都会卡在 401 或连接失败上。TaoToken 的作用是提供一个统一的 API 入口让你不用为每个工具单独申请和管理 Key。官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 端点是 https://taotoken.net/api 这个不加 UTM 参数直接用于配置。你需要准备的东西第一一个 TaoToken 账号登录后在控制台创建 API Key。控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 进去之后找 API Keys 页面新建一个 Key复制出来存好。这个 Key 就是后面 Codex 和 Claude Code 共用的凭证。第二确认你要用的模型 ID。TaoToken 支持多种模型Codex 和 Claude Code 各自偏好的模型不同。你可以在模型对话页面先试一下哪个模型对你的笔记摘要任务效果更好地址是 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。试的时候直接输入一段笔记内容让它做摘要和实体抽取看输出质量。第三本地环境。Obsidian 装好Codex CLI 和 Claude Code CLI 都装好。如果你还没装 Claude Code可以参考接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 里的说明。Codex 的安装方式类似装完后需要配置auth.json。这里有个关键点Codex 和 Claude Code 的配置格式不一样。Codex 用auth.json存凭证Claude Code 用环境变量或 settings 文件。TaoToken 的统一 Key 意味着你只需要记一个 Key但两个工具各自的配置文件还是要分别写。下面一节我把两套配置都给你直接复制改 Key 就行。另外提醒一句不要把 Key 硬编码在脚本里提交到 Git。用环境变量或者本地.env文件.env加进.gitignore。我踩过的坑就是早期把 Key 写进同步脚本结果推代码时差点泄露后来全部改成读环境变量。3. 可复制的 TaoToken 配置片段与 Obsidian 目录骨架这一节是核心配置写对了后面就顺了。3.1 Codex 的 auth.json 配置Codex 读取的配置文件在~/.codex/auth.jsonWindows 是%USERPROFILE%\.codex\auth.json。内容格式如下{ OPENAI_API_KEY: 你的TaoToken Key, OPENAI_BASE_URL: https://taotoken.net/api, model: 你选定的模型ID }三件套齐了Base URL 是https://taotoken.net/apiKey 是你从控制台复制的Model ID 是你在模型对话里试好的那个。保存后 Codex 启动时会自动读取。3.2 Claude Code 的 settings 配置Claude Code 用环境变量或者~/.claude/settings.json。推荐用 settings 文件格式如下{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: 你的TaoToken Key, ANTHROPIC_MODEL: 你选定的模型ID } }同样三件套Base URL、Key、Model ID。注意 Claude Code 的环境变量名是ANTHROPIC_前缀不是OPENAI_别搞混。如果你用 CC Switch 管理多个配置可以在 CC Switch 里新建一个 profile把上面这三项填进去切换时一键生效。Cline MCP 也是类似逻辑在 MCP 配置里填 Base URL 和 Key。3.3 Obsidian 目录骨架在 Obsidian 库根目录下建四个文件夹00_schema/ 01_raw/ 02_wiki/ 03_ops/00_schema里放一个rules.md写清楚命名规范、目录规则、质量标准。比如「实体页命名用entity-实体名.md主题页用topic-主题名.md综述页用synthesis-综述名.md」。这个文件是给 LLM 看的规则层每次处理笔记时把它作为 system prompt 的一部分传进去。01_raw放原文从 Obsidian Web Clipper 剪藏的文章直接丢这里。文件名保持原始标题不要改。02_wiki放 LLM 生成的结构化页面。你不需要手动维护这个目录脚本会写。03_ops放脚本和模板。核心脚本是sync.py逻辑是扫描01_raw里新增的.md文件对每个文件调用 Codex 或 Claude Code 做摘要和实体抽取把结果写入02_wiki对应的主题页和实体页最后更新索引。3.4 增量同步脚本的关键片段sync.py的核心逻辑不复杂用 Python 写import os import subprocess import json from pathlib import Path RAW_DIR Path(01_raw) WIKI_DIR Path(02_wiki) SCHEMA_FILE Path(00_schema/rules.md) def process_note(note_path): content note_path.read_text(encodingutf-8) rules SCHEMA_FILE.read_text(encodingutf-8) prompt f{rules}\n\n请对以下笔记做摘要、抽取实体和概念、生成双向链接建议\n\n{content} result subprocess.run( [claude, -p, prompt], capture_outputTrue, textTrue ) return result.stdout for note in RAW_DIR.glob(*.md): wiki_content process_note(note) out_path WIKI_DIR / ftopic-{note.stem}.md out_path.write_text(wiki_content, encodingutf-8) print(fprocessed: {note.name})这个脚本用claudeCLI 处理笔记你也可以换成codex命令。关键是它读00_schema/rules.md作为规则保证每次生成的 wiki 页面格式一致。配好之后用 cron 或 Windows 任务计划每 30 分钟跑一次。Obsidian 里装一个Obsidian Git插件做版本管理防止脚本写坏文件。4. 验证请求用 Codex 和 Claude Code 分别处理笔记并检查结果配置写完不算完得验证真的能跑通。这一节给你两个具体的验证动作。4.1 用 Claude Code 处理一篇笔记先手动跑一次确认 API 通道没问题。在终端里进入 Obsidian 库根目录执行claude -p 读取 01_raw/ 下最新的一篇 md 文件按照 00_schema/rules.md 的规则生成摘要、实体列表、双向链接建议输出为 markdown如果配置正确你会看到 Claude Code 返回一段结构化的 markdown包含摘要、实体、链接建议。如果报 401说明 Key 或 Base URL 有问题回去检查~/.claude/settings.json。如果报local proxy failed检查你的网络环境是否能访问https://taotoken.net/api。4.2 用 Codex 处理同一篇笔记codex 读取 01_raw/ 下最新的一篇 md 文件按照 00_schema/rules.md 的规则生成摘要、实体列表、双向链接建议输出为 markdownCodex 的输出格式可能和 Claude Code 略有不同但核心内容应该一致。如果 Codex 报reading choices错误通常是auth.json里的 model 字段没填对回去确认模型 ID。4.3 检查 wiki 层生成结果跑完之后打开02_wiki目录应该看到新生成的topic-xxx.md文件。打开检查三件事第一摘要是否准确。如果摘要跑偏了说明rules.md里的规则不够明确补充「摘要不超过 200 字必须包含原文核心论点」这类约束。第二实体抽取是否合理。实体应该是人名、工具名、概念名不是普通词汇。如果抽出来一堆无意义的词在规则里加「只抽取专有名词和技术术语」。第三双向链接建议是否指向已有页面。如果建议的链接在02_wiki里不存在脚本应该自动创建占位页或者标记为待创建。4.4 验证知识图谱生长Obsidian 的图谱视图是检验这套系统是否「活」起来的最直观方式。打开图谱你应该看到02_wiki里的页面之间出现连线而且随着每次同步连线越来越多。如果图谱里全是孤立的点说明双向链接没生成成功回去检查脚本里的链接生成逻辑。我实测下来跑通之后最明显的变化是以前搜一个概念只能搜到原文现在搜同一个概念能搜到 wiki 层里多个相关主题页和实体页而且每个页面都标注了来源原文。这就是 LLM Wiki 说的「持续编译」——知识不是躺在那里而是被不断重组和关联。5. 本篇常见错误排查401、local proxy failed、reading choices、OAuth这一节把你会遇到的报错集中列出来对照解决。401 Unauthorized最常见。原因通常是 Key 填错、Key 过期、或者 Base URL 写成了https://taotoken.net而不是https://taotoken.net/api。检查auth.json和settings.json里的 Key 和 URL。注意 Key 不要有多余空格。local proxy failed这个报错通常出现在 Claude Code 里意思是它尝试走本地代理但失败了。检查你的环境变量里有没有残留的HTTP_PROXY或HTTPS_PROXY设置。如果有清掉再试。另外确认ANTHROPIC_BASE_URL是https://taotoken.net/api不是别的地址。reading choices 错误Codex 特有。通常是auth.json里的 model 字段填了一个不存在的模型 ID。回去模型对话页面确认你选的模型 ID 拼写正确。另外检查 JSON 格式有没有多逗号或少引号。OAuth 相关报错Claude Code 有时会尝试走 OAuth 流程而不是 API Key。如果你看到 OAuth 报错说明它没读到ANTHROPIC_API_KEY。检查settings.json里的env字段是否正确嵌套或者直接在终端export ANTHROPIC_API_KEY你的Key再试。脚本跑完 wiki 层是空的检查sync.py里的路径。Obsidian 库根目录和脚本执行目录可能不一致。用绝对路径或者os.chdir切到库根目录。另外确认01_raw里确实有.md文件且文件编码是 UTF-8。双向链接不生成检查rules.md里有没有明确要求生成双向链接。LLM 不会自动做这件事你必须在 prompt 里写清楚「为每个实体和概念生成[[链接]]格式的双向链接建议」。图谱里全是孤立点说明 wiki 页面之间的链接没有互相指向。在脚本里加一步生成新页面后扫描已有页面如果新页面里的实体在已有页面中出现过就在已有页面里补一条反向链接。排障的核心思路是先确认 API 通道通用模型对话页面测再确认 CLI 配置对手动跑一次最后确认脚本逻辑对检查输出文件。三步都过了系统就能稳定跑。6. 让知识系统持续生长从手动整理到自动编译的日常动作配置和排障都搞定之后日常使用其实很简单。每天的动作用 Obsidian Web Clipper 剪藏一篇文章直接丢进01_raw。后面脚本每 30 分钟跑一次自动把新素材编译进02_wiki的索引和关联。你只需要去02_wiki看 topic 和 synthesis 页面直接开始写作和思考。我现在每天打开 Obsidian先看图谱视图有没有新连线再看02_wiki里有没有新生成的综述页。如果有点进去读一遍把 LLM 的归纳和我自己的判断对照觉得对的就保留觉得偏的就手动改。这个过程本身就是一次知识消化。如果你今天就想开始最快的改造方式用你本地的 Claude Code 或 Codex把 Karpathy 那篇文章和这篇一起丢给 AI让它参考着对本地 Obsidian 目录做改造。操作时尽量保留原来知识库的结构分批次先把最近最常看的目录迁到01_raw把流程跑通后再迁剩下的。长期编码和 Agent 场景的话可以考虑 Coding Plan地址是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 适合需要持续跑自动化脚本的情况。如果只是验证模型效果用模型对话页面就够了。这套东西不是银弹。如果丢进去的原文本身很散或者长期不做巡检系统会越来越大但不一定越来越准。它是一个持续维护的工作台不是一次性搭完就完事的工程。但只要你保持每周花十分钟看一眼 wiki 层的生成质量及时调整rules.md里的规则它会越用越顺手。最后说一个实用技巧在00_schema/rules.md里加一条「每次生成 wiki 页面时如果发现新资料和已有页面观点冲突在页面顶部用 冲突提示标注出来」。这样你回顾时能一眼看到知识演进的过程而不是被一堆看似一致的结论淹没。这个细节是我用了两个月之后才加上的加了之后知识库的「成长感」明显强了很多。
返回列表