1. 2452 页中医经典蒸馏成 Agent Skill到底在解决什么问题倪海厦中医 AI 模型开源项目最近在开发者圈子里传得挺开核心动作是把 2452 页中医经典讲义蒸馏成一个约 3MB、三万五千多行的 SKILL.md 文件再挂到本地 AI 工具里当 Agent Skill 调用。说白了它想解决的是一个很具体的痛点中医资料太多、太散、太口语化普通人根本读不完而大模型直接问又容易胡编。这个项目把伤寒论、金匮要略、黄帝内经、针灸教程、神农本草经、医案集等模块按倪海厦的思维框架重新组织做成可激活的诊断路径让 AI 在回答时能落到具体条文和方剂逻辑上而不是泛泛而谈。它适合谁一类是想在本地 AI 工具里调用中医知识库的开发者另一类是做 RAG、知识蒸馏、Agent Skill 工程实践的人。因为这条链路本身就是个完整的 NLP 工程案例PDF 提取、OCR 校正、结构化重组、规则化蒸馏、Skill 加载、问答验证。你不需要读完 2452 页只要把 Skill 挂上去用一句「倪海厦会怎么看」就能触发对应知识。下面我按可复制的配置骨架来写settings.json、config.toml、TaoToken 统一 Key、Skill 加载和一次问答验证都会给到。2. TaoToken 前置统一 Key 与接入地址在挂 Skill 之前先把模型调用通道理顺。TaoToken 的作用是给你一个统一的 API Key兼容 Anthropic 风格的接口本地 AI 工具、Coding Plan、Agent 调用都能走同一个入口省得每个工具配一套 Key。官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 基址是 https://taotoken.net/api 注意 API 地址不带 UTM 参数。你需要先拿到 Key。进入控制台创建 API Key路径是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite Key 管理页在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。创建完复制那串 sk- 开头的字符串后面所有配置都用它。如果你只是想先验证模型通不通可以直接用模型对话页 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 发一条消息试试确认 Key 有效再往下走。注意Key 只存在本地配置文件或环境变量里不要写进会提交到 Git 的代码。建议用TAOTOKEN_API_KEY环境变量注入。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面写了 base_url、鉴权头和请求格式。Anthropic 风格的工具通常认ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY两个环境变量TaoToken 这边把 base_url 指向https://taotoken.net/api即可。如果你用的是 Claude Code 这类编码 Agent参考 https://taotoken.net/claude-code?utm_sourcetaotoken_aicg_blog_endutm_contentclaude-codeutm_campaignrewrite 的配置说明长期跑编码任务可以看 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。3. 可复制配置settings.json 与 config.toml 骨架这一节是重点直接给可复制的骨架。不同本地 AI 工具读的配置文件不一样Claude Code 系通常读settings.json一些 Python/CLI Agent 读config.toml。下面两份都按 TaoToken 统一 Key 来写你按自己工具选一份。先看settings.json放在项目根目录或工具指定的配置目录{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的TaoTokenKey, ANTHROPIC_MODEL: claude-sonnet-4-20250514 }, skills: { enabled: true, paths: [ ./skills/nihaixia/SKILL.md ], autoActivate: true, activationKeywords: [ 倪海厦, 海厦视角, 倪师, 经方思维, 倪海厦会怎么看 ] }, permissions: { allowFileRead: true, allowNetwork: false } }这里几个字段说明一下。env段把 base_url 指向 TaoToken 的 API 地址Key 用你刚创建的。skills.paths指向你放 SKILL.md 的路径项目蒸馏出来的文件大概 3MB、三万五千多行建议单独放一个目录别和代码混在一起。activationKeywords就是触发词命中「倪海厦」「经方思维」这类词时 Skill 才会被激活避免每次对话都硬塞三兆上下文。再看config.toml适合 Python 系或 Rust 系 CLI Agent[provider] name taotoken base_url https://taotoken.net/api api_key sk-你的TaoTokenKey model claude-sonnet-4-20250514 max_tokens 8192 [skill.nihaixia] enabled true path ./skills/nihaixia/SKILL.md auto_activate true keywords [倪海厦, 海厦视角, 倪师, 经方思维, 倪海厦会怎么看] max_context_chars 120000 [agent] system_prompt_file ./prompts/nihaixia_system.md temperature 0.3max_context_chars这个参数值得单独说。3MB 的 SKILL.md 不可能一次性全塞进上下文所以要么靠工具做分段检索要么在 system prompt 里做路由。我实测下来把max_context_chars控制在 12 万字符左右配合关键词激活命中率比较稳。temperature调到 0.3 是因为中医条文和方剂逻辑需要稳定输出太高容易自由发挥。如果你要把 Skill 挂到更通用的 Agent 框架里配置思路一样provider 指向 TaoTokenskill 路径指向 SKILL.md关键词做激活。区别只是字段名。接入文档里有更细的字段对照表配之前扫一眼能少踩坑。4. 验证请求加载 Skill 并跑一次问答配置写完先别急着问复杂问题跑一次最小验证。第一步确认 Key 和 base_url 通不通用 curl 发一条最简请求curl https://taotoken.net/api/v1/messages \ -H x-api-key: sk-你的TaoTokenKey \ -H anthropic-version: 2023-06-01 \ -H content-type: application/json \ -d { model: claude-sonnet-4-20250514, max_tokens: 256, messages: [ {role: user, content: 回复 OK 两个字} ] }返回里能看到content字段带OK说明通道没问题。如果报 401检查 Key 有没有复制全报 404检查 base_url 是不是写成了带路径的地址。第二步验证 Skill 加载。启动你的本地 AI 工具让它读一次 SKILL.md确认文件被识别。以 Claude Code 系为例启动后输入/skills list正常会列出nihaixia这个 skill状态是 enabled。如果没列出来多半是路径写错或者文件权限问题回到settings.json检查skills.paths。第三步跑一次真实问答用触发词激活倪海厦会怎么看脚冷至膝、手冷至肘这种情况预期结果是 AI 会落到「阴寒在里」的判断并提到生附子这类经方逻辑而不是泛泛说「建议就医」。如果它回答得很空说明 Skill 没被激活检查关键词有没有命中或者auto_activate是不是 false。我试过把关键词写得太偏结果问「手脚冰凉」死活不触发换成「倪海厦会怎么看」立刻就命中了所以触发词尽量用项目 README 里列的那几个。再补一个验证动作问条文级问题伤寒论第 129 条讲的是什么倪海厦怎么解释这个能验证蒸馏是否覆盖到条文粒度。项目里伤寒论 129 条是全覆盖的如果 AI 能说出条文大意并带上倪海厦的讲义补遗说明 Skill 内容加载完整。如果只答出条文原文没有解释可能是上下文截断把max_context_chars调大一点再试。5. 本篇常见错排查配这套东西最容易卡在几个地方我按出现频率排一下。第一个是 Key 无效或额度问题。报错通常是 401 或 403先确认 Key 有没有多余空格再确认账户状态。控制台里能看到调用记录如果记录里根本没有你的请求说明请求没发出去检查 base_url。第二个是 Skill 不激活。表现是 AI 回答完全不提倪海厦像普通模型在答。原因一般是三个路径写错、关键词没命中、auto_activate关了。排查顺序是先看/skills list有没有列出来再看你问的话里有没有触发词最后看配置里enabled是不是 true。第三个是上下文超限。3MB 的 SKILL.md 是单文件 Prompt 里偏大的不是所有模型都能完整加载。报错可能是 context length exceeded或者回答到一半被截断。解决办法是别全量塞用关键词激活加分段检索把max_context_chars控制在合理范围。如果工具支持 RAG把 SKILL.md 切块建索引比整文件塞更稳。第四个是 OCR 残留问题。项目对神农本草经 339 页做过 OCR 校正手工修了十几处生僻字但部分内容可能还有遗漏。如果你问到某个药名或症状AI 答得含糊可能是原文提取时就有缺字。这种情况别硬信回到原始讲义核对。第五个是模型选择。不同模型对长上下文和中文古文的处理能力差别不小。如果发现回答质量不稳定换个模型试试或者在config.toml里把temperature再调低。编码类任务和中医问答对模型的要求不一样长期跑编码可以走 Coding Plan中医问答用对话模型就够。注意项目本身声明所有内容仅供学习不能替代医生。配置和调用是工程问题诊断和用药是医学问题这两件事别混。6. 把 Skill 挂进你的本地工具链配通之后这套骨架可以复用到别的知识库项目。核心就三件事TaoToken 统一 Key 解决模型调用settings.json 或 config.toml 解决 Skill 加载关键词激活解决上下文控制。你把 SKILL.md 换成别的领域蒸馏文件改一下paths和keywords就是另一个 Agent Skill。想先试模型对话的去 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 发一条消息确认通道。要建 Key 和看接入细节的走 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 和 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。长期跑编码或 Agent 任务的Coding Plan 在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。Claude Code 用户直接看 https://taotoken.net/claude-code?utm_sourcetaotoken_aicg_blog_endutm_contentclaude-codeutm_campaignrewrite 。最后留个实用技巧SKILL.md 更新后记得重启本地 AI 工具让配置重新加载热更新不一定生效。还有把activationKeywords里加上你常用的问法比如「这个方子倪师怎么讲」命中率会明显高一些。