ARTICLE DETAIL

资讯详情

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

每日一个开源项目(第148篇):obsidian-skills - 用 TaoToken 统一 Key 跑通 Obsidian Vault 的 AI Agent 格式规范

每日一个开源项目(第148篇):obsidian-skills - 用 TaoToken 统一 Key 跑通 Obsidian Vault 的 AI Agent 格式规范 1. 为什么 AI Agent 一进 Obsidian Vault 就“手滑”我先把问题摆出来你让 Claude Code 在 vault 里新建一篇笔记它写出来的东西在 Obsidian 里打开是这样的——[相关笔记](related-note.md)而不是[[相关笔记]]图片写成![图](attachment.png)而不是![[attachment.png]]callout 变成普通引用块Properties 的 YAML frontmatter 被塞到正文中间。文件能打开但双向链接图谱断了重命名笔记时链接不会自动更新Dataview 和 Bases 查询全部失效。这不是模型笨是训练数据里 Obsidian Flavored Markdown 的占比太低。标准 CommonMark 里根本没有 wikilink、embed、callout 这些扩展语法Agent 默认退回它最熟的那套写法。obsidian-skills 就是官方给出的解法一套遵循 agentskills.io 开放标准的 Skill 集合由 Obsidian CEO Steph Angokepano亲手编写MIT 协议GitHub 上 39.3k Stars。它把 Obsidian 的格式规范写成 Agent 能读的 SKILL.md让 Claude Code、Codex、OpenCode 这类支持 Skill 的工具在检测到 vault 操作时自动加载正确规则。这套 Skill 一共五个obsidian-markdown 管 wikilink/embed/callout/Properties 的完整规范obsidian-bases 管.base数据库视图json-canvas 管.canvas白板文件的 JSON 结构obsidian-cli 管命令行批量操作和插件开发defuddle 负责从网页提取干净 Markdown、去掉广告和导航栏省 token。对绝大多数人来说前两个和 defuddle 是日常高频。适合谁已经在用 Obsidian 管理知识库、同时想让 AI 帮忙写笔记或整理资料的人。如果你只是偶尔记两笔用不上但如果你 vault 里有几百篇互相链接的笔记Agent 写错一次格式清理成本就够你喝一壶。下面我按“先装 Skill、再把模型请求统一走 TaoToken、最后验证一次改写不破坏结构”的顺序走一遍每一步都能复制。2. 前置准备把模型请求统一到 TaoToken 的 Base URLSkill 解决的是“Agent 知不知道 Obsidian 语法”但 Agent 每次调用模型还是要发请求。如果你同时用 Claude Code、Codex、Cline 好几个工具每个都配一遍 Key、记一遍额度管理起来很烦。我的做法是把这些工具的 Base URL 统一指向 TaoToken用同一个 Key 调用模型切换工具时只改配置文件里的模型 ID不用重新申请凭证。TaoToken 的 API 地址是https://taotoken.net/api官网在https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content。你需要先去控制台拿一个 Key地址是https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewriteKey 的创建入口在https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite。拿到之后先别急着填进工具用 curl 验一下通不通curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的Key \ -H Content-Type: application/json \ -d { model: claude-sonnet-4-20250514, messages: [{role: user, content: 只回复 ok}] }返回里choices[0].message.content是ok就说明 Key 和网络都正常。这一步很重要因为后面 Claude Code 报错时你要能区分是 Key 问题还是 Skill 问题。模型 ID 按你实际要用的填TaoToken 支持 Claude、GPT、Gemini 等系列具体列表在接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite里能查到。这里有个概念要分清TaoToken 是模型调用的统一入口不是编辑器也不是 Obsidian 插件。它只负责把你的请求转发到对应模型并返回结果。Skill 是装在 Agent 工具侧的格式规范文件。两者配合起来Agent 才既“知道怎么写”又“有模型可用”。注意Key 不要写进 vault 里的任何笔记文件也不要提交到 Git。放在工具自己的配置目录或环境变量里。3. 可复制配置Claude Code 的 settings 与 Skill 安装先装 Skill。推荐方式是把仓库克隆到 vault 根目录的.claude/skills/下注意克隆的是整个仓库而不是里面的skills/子目录否则路径解析会出错cd /path/to/your/vault git clone https://github.com/kepano/obsidian-skills .claude/skills/obsidian-skills如果你用 npx 也行npx skills add https://github.com/kepano/obsidian-skills。OpenCode 用户克隆到~/.opencode/skills/obsidian-skills。装完不用手动指定用哪个 SkillAgent 检测到 Obsidian 相关操作会自动加载对应的 SKILL.md。接下来配 Claude Code 的模型入口。Claude Code 读取~/.claude/settings.json把 Base URL 和 Key 写进去{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的Key, ANTHROPIC_MODEL: claude-sonnet-4-20250514 } }三件套对齐Base URL 是https://taotoken.net/apiKey 是你在控制台创建的那串Model ID 按文档填。如果你用 Codex配置在~/.codex/auth.json结构不同但同样是这三项{ OPENAI_BASE_URL: https://taotoken.net/api/v1, OPENAI_API_KEY: sk-你的Key, model: gpt-4o }Cline 或 Roo Code 这类 VS Code 插件则在设置面板里选 “OpenAI Compatible”Base URL 填https://taotoken.net/api/v1API Key 填同一串Model ID 手填。Cline 如果走 MCPMCP server 的配置里也要把请求地址指向 TaoToken否则 MCP 工具调用会绕过你的统一入口。配完重启工具让 settings 生效。这一步做完你的 Claude Code 发出的每一次模型请求都经过 TaoToken换工具时只改 Model ID 就行。4. 验证请求让 Agent 改写一篇笔记并检查 Vault 结构配置对不对跑一次真实改写就知道。我在 vault 里建一个测试文件夹test-vault-check/放一篇故意写错的笔记draft.md# 测试笔记 相关笔记在 [项目计划](project-plan.md) 里。 ![截图](screenshot.png) **注意**这是一个重要提示 tags: [测试, 草稿]这篇笔记有四个典型错误标准 Markdown 链接、标准图片语法、伪 callout、frontmatter 位置不对。现在对 Claude Code 说把 test-vault-check/draft.md 改写成符合 Obsidian 格式规范的笔记wikilink 用双方括号图片用 embed 语法callout 用正确格式Properties 放到文件开头。Agent 加载 obsidian-markdown Skill 后输出应该变成--- tags: [测试, 草稿] --- # 测试笔记 相关笔记在 [[项目计划]] 里。 ![[screenshot.png]] [!note] 注意 这是一个重要提示验证动作分三步。第一在 Obsidian 里打开这篇笔记看 Properties 面板是否识别出 tags如果 frontmatter 位置对了面板会显示标签而不是把 YAML 当正文。第二点[[项目计划]]这个链接看是否能跳转或提示创建能跳转说明 wikilink 被 Obsidian 正确解析。第三打开图谱视图看这篇笔记和项目计划之间是否出现连线出现连线说明双向链接生效。如果这三步都过说明 Skill 和模型入口都通了。你可以再让它做一次批量操作比如“把 vault 里所有用标准 Markdown 链接写的笔记转成 wikilink”观察它是否只改内部链接、不动外部 URL。这一步能验证 Agent 是否真的理解了 wikilink 和普通链接的边界。5. 本篇常见错排查401、local proxy failed 与 OAuth 报错配的时候容易踩几个坑我按真实报错对照说。401 Unauthorized最常见。先确认 Key 有没有多余空格Bearer后面是一个空格再跟 Key。如果 Key 没错检查 Base URL 是不是写成了https://taotoken.net/api/v1而工具本身会自动补/v1导致变成/v1/v1。Claude Code 的ANTHROPIC_BASE_URL填https://taotoken.net/api即可不要带/v1。local proxy failed / connection refused说明工具在往本地某个端口发请求通常是之前配过本地代理没清干净。检查settings.json里有没有残留的HTTP_PROXY、HTTPS_PROXY环境变量或者 Cline 里选了错误的 provider。把 Base URL 直接指向 TaoToken 的地址不要经过任何中间层。reading choices 报错 / 返回结构解析失败模型返回了内容但工具解析不了多半是 Model ID 填错请求被路由到了一个不兼容的接口。对照接入文档确认 Model ID 拼写Claude 系列和 GPT 系列的 ID 格式不同别混用。OAuth 相关报错Claude Code 某些版本会尝试走 OAuth 登录流程如果你已经用ANTHROPIC_AUTH_TOKEN配了 Key它可能还在弹登录。检查 settings 里有没有同时存在 OAuth 配置和 token 配置把冲突的删掉只保留 token 方式。Skill 没生效Agent 还是写出标准 Markdown 链接。先确认.claude/skills/obsidian-skills/目录下能看到SKILL.md文件如果克隆的是子目录导致路径多了一层删掉重新克隆整个仓库。再确认你的工具版本支持 Skill 自动加载老版本可能需要手动在对话里引用 Skill 名称。Properties 被当正文Agent 把 YAML 写在了标题后面。这是 Skill 没加载或加载了但没遵守检查 SKILL.md 里 obsidian-markdown 那部分是否完整必要时在对话里明确说“frontmatter 必须是文件第一个内容块”。6. 把统一 Key 和 Skill 固化成你的日常流程跑通之后我建议把两件事固化下来。第一所有支持自定义 Base URL 的 Agent 工具都指向 TaoTokenKey 只存一份换工具时改 Model ID 就行不用重复申请凭证。第二vault 根目录的.claude/skills/跟着 vault 一起做版本管理换电脑时克隆下来就能用Skill 规范不会丢。如果你主要做长期编码或 Agent 任务可以看看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite按用量规划比单次调用更省心。想先验证模型效果直接去模型对话https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite试几句确认返回正常再配进工具。Claude Code 用户如果遇到 Anthropic 接口相关的细节问题接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite里有针对性的说明。最后留一个我自己的习惯每次让 Agent 批量改 vault 之前先git commit一次。Skill 再规范也挡不住模型偶尔抽风有版本记录你随时能回滚。改完用 Obsidian 的图谱视图扫一眼连线没断、Properties 面板正常就说明这次 Agent 没破坏你的 vault 结构。
返回列表