1. VS Code 里 Skills 到底解决什么问题
VS Code 里的 Skills,说白了就是把「你每次都要重复交代给 AI 的那段话」固化成一个文件,让编辑器里的 AI 助手按固定规范干活。它不是一个插件市场里的独立扩展,而是一套约定:你在项目里放一个skill.md,写清楚这个技能叫什么、什么时候用、输出成什么格式,AI 在合适的时机就会自动读取并遵循。适合谁?适合每天都要生成重复结构文件的开发者,比如每天要写一份权限 JSON、每天要按模板产出接口文档、每天要把日志整理成固定表格的人。
我自己的场景很典型:手上有个内部系统,每天要按环境(dev/staging/prod)和 bucket 名称生成一份 retention 与 permission 的 JSON。以前每次都要把格式要求、字段含义、命名规则重新贴一遍给 AI,贴完还得检查它有没有漏字段。一年 365 次,光复制提示词就够烦的。封装成 skill 之后,我只需要说「帮我生成 prod 环境 xxx bucket 的权限 JSON」,剩下的格式约束由 skill 文件兜底。
但这里有个绕不开的前置问题:VS Code 里的 AI 能力要调用模型,就得有 Key 和 API 通道。如果你同时用多个模型(写代码用一个、写文档用另一个),Key 管理会变得很碎。这篇就聚焦两件事:一是把 Skills 的目录结构和写法讲清楚,二是用 TaoToken 的统一 Key 把 VS Code 的模型调用通道收敛成一条,让 Skills 在编辑器内真正跑通闭环。官网入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end ,后面配置里会用到它的 API 地址。
2. 前置准备:TaoToken 统一 Key 与通道
在动手写 skill 之前,先把「AI 怎么被调用」这条链路铺好。VS Code 本身不直接管模型,它依赖你装的 AI 编程扩展(比如各类支持自定义 API 的助手插件)去发请求。这些扩展通常允许你填一个 Base URL 和一个 API Key。TaoToken 的价值就在这里:它提供一个统一的 API 通道,你用一把 Key 就能在编辑器里切换或调用不同模型,不用为每个模型单独维护一套凭证。
你需要准备的东西不多:一个 TaoToken 账号、一把 API Key、以及确认你的 VS Code AI 扩展支持自定义 Base URL。API 地址是 https://taotoken.net/api ,注意这个地址后面不加任何查询参数,保持干净。Key 的获取在控制台的 API Keys 页面,登录后新建一把即可,建议按用途命名,比如vscode-skills,方便以后区分和吊销。
注意:Key 属于敏感凭证,不要写进会提交到 Git 的
settings.json里。下面配置我会用环境变量引用的方式,避免明文泄露。
这里有个容易踩的坑:很多人把 Key 直接硬编码进配置文件,然后一不小心 push 到公开仓库。正确做法是把 Key 放到系统环境变量或者 VS Code 的用户级配置里,项目级配置只引用变量名。另外,TaoToken 的通道是标准 API 调用方式,你不需要在本地做任何网络层的额外处理,填对 Base URL 和 Key 就能通。
如果你还没拿到 Key,可以先到控制台创建:https://taotoken.net/console 。创建完复制那串以sk-开头的字符串,下一步会用到。整个前置阶段的目标只有一个:让 VS Code 的 AI 扩展能通过https://taotoken.net/api这条通道成功发出一次请求。这一步不通,后面 skill 写得再漂亮也没用。
3. 可复制配置:settings.json 接入统一 Key
现在进入配置环节。VS Code 的settings.json分用户级和项目级,我建议把「通道相关」的配置放用户级(因为 Key 是个人凭证),把「skill 相关」的配置放项目级(因为 skill 跟着项目走)。先打开命令面板,输入Preferences: Open User Settings (JSON),在打开的settings.json里加入下面这段骨架。
{ "aiAssistant.provider": "openai-compatible", "aiAssistant.baseUrl": "https://taotoken.net/api", "aiAssistant.apiKey": "${env:TAOTOKEN_API_KEY}", "aiAssistant.defaultModel": "claude-sonnet", "aiAssistant.requestTimeout": 60000, "aiAssistant.skills.enabled": true, "aiAssistant.skills.path": ".github/skills" }这段配置里几个关键点解释一下。baseUrl指向 TaoToken 的统一通道,所有模型请求都从这里走;apiKey用${env:TAOTOKEN_API_KEY}引用环境变量,而不是写死字符串,这样即使配置文件被同步也不会泄露 Key;defaultModel是你日常默认用的模型,写代码和写文档可以在这里切换;skills.path告诉扩展去哪个目录找 skill 文件,我设成了.github/skills,和很多团队的约定一致。
不同扩展的字段名可能略有差异,比如有的用endpoint而不是baseUrl,有的把 Key 字段叫token。你要做的是把「值」对上:Base URL 永远是https://taotoken.net/api,Key 永远来自你的环境变量。字段名按你实际装的扩展文档来改。下面给一个环境变量的设置方式,macOS/Linux 在~/.zshrc或~/.bashrc里加:
export TAOTOKEN_API_KEY="sk-你的实际Key"Windows 则在系统环境变量里新建一个名为TAOTOKEN_API_KEY的变量,值填你的 Key。设置完重启 VS Code,让扩展重新读取环境变量。这一步做完,通道就通了,但还没验证。别急着写 skill,先确认请求能发出去,否则后面出错你分不清是通道问题还是 skill 问题。
4. 编写 skill.md 并完成一次调用验证
通道配好后,开始写 skill。在项目根目录创建.github/skills/文件夹,里面每个子文件夹代表一个技能。我以那个每天要做的 ECM 权限 JSON 为例,建一个ecm-skill文件夹,里面放skill.md。文件开头用 YAML front matter 写元信息,下面是正文规范。
--- name: ecm-skill description: Create relation and permission JSON for ECM, generate JSON for ECM retention and permission based on the environment and bucket information provided. Use this skill when the user asks to create JSON for ECM retention or permission. --- # ECM 权限 JSON 生成规范 当用户要求生成 ECM retention 或 permission JSON 时,遵循以下规则: 1. 输入必须包含 environment(dev/staging/prod)和 bucket 名称。 2. 输出为合法 JSON,顶层包含 retention 和 permission 两个对象。 3. retention 字段:days 按环境取值,dev=7,staging=30,prod=90。 4. permission 字段:包含 read、write、delete 三个布尔值,默认 read=true,其余按用户指定。 5. 不要输出任何解释性文字,只输出 JSON 代码块。写完后保存。现在做一次调用验证:在 VS Code 的 AI 对话面板里输入「用 ecm-skill 生成 prod 环境 logs-bucket 的权限 JSON」。如果配置正确,AI 会读取这个 skill 文件,按规范输出。预期结果类似:
{ "retention": { "days": 90 }, "permission": { "read": true, "write": false, "delete": false } }看到这个结果,说明整条链路通了:VS Code 扩展通过 TaoToken 通道发出请求,模型读取了本地 skill 规范,按格式返回。这里有个验证技巧:故意把 environment 写成prod之外的值,比如test,看它是否按规范里的默认逻辑处理,以此确认它真的读了 skill 而不是瞎编。如果它开始自由发挥、输出一堆解释文字,说明 skill 没被加载,回去检查skills.path是否指向了正确目录。
提示:skill 的
description字段很关键,它决定了 AI 什么时候触发这个技能。描述里要把「什么时候用」写清楚,比如Use this skill when the user asks to...,触发准确率会明显提升。
5. 本篇常见错误排查
配置和调用过程中,最容易卡在几个地方。下面按现象列出来,你对号入座。
第一个高频问题:请求 401 或 403。这基本是 Key 的问题。先确认环境变量TAOTOKEN_API_KEY真的被 VS Code 读到了——有些系统改完环境变量需要完全退出 VS Code 再启动,而不是只关窗口。再确认 Key 没有多余空格,复制时容易带上换行。如果还不行,去控制台看这把 Key 是否被禁用或过期。
第二个问题:请求 404。这通常是 Base URL 写错了。正确值是https://taotoken.net/api,不要多加/v1之类的后缀,也不要带查询参数。有些扩展会自动拼接路径,你填的应该是根地址,让它自己拼。
第三个问题:skill 不生效,AI 完全无视规范。先检查目录层级,必须是.github/skills/<技能名>/skill.md,少一层都不行。再检查 front matter 的---是否成对,YAML 格式对缩进敏感,name和description顶格写。最后确认扩展版本支持 skills 功能,老版本可能没有这个能力。
第四个问题:模型返回超时。把requestTimeout调大,比如 120000。长文档生成或复杂 skill 推理时,60 秒可能不够。如果频繁超时,换个响应更快的模型试试。
第五个问题:输出格式不稳定,有时带解释文字。这是 skill 正文约束不够硬。在规范里明确写「只输出 JSON 代码块,不要任何解释」,并且给出一个完整的输出示例,模型会更容易对齐。
排查顺序建议从通道到 skill:先用一个最简单的「你好」确认通道通,再测 skill 触发。这样出问题时能快速定位是网络层还是规范层。
6. 把工作流固定下来的下一步
Skills 跑通之后,真正的收益是「不用再重复交代」。你可以把团队里那些每天重复的产出——接口 mock、日志摘要、配置模板——都拆成独立 skill,放在.github/skills/下按文件夹隔离。每个 skill 只干一件事,描述写清楚触发条件,维护起来也轻松。我实测下来,把三四个高频任务封装后,每天花在「给 AI 解释格式」上的时间基本归零。
如果你还想在编辑器里直接对比不同模型对同一个 skill 的输出效果,可以用模型对话页面快速试:https://taotoken.net/model-chat 。长期在 VS Code 里做编码和 Agent 类任务的话,Coding Plan 更适合把调用额度固定下来:https://taotoken.net/coding-plan 。Key 的管理和新建都在控制台:https://taotoken.net/console ,接入细节和字段说明可以查文档:https://taotoken.net/doc ,需要单独管理凭证时走 API Keys 页面:https://taotoken.net/api-keys 。把这些入口存进书签,下次换机器或加新项目时,照着第 3 节的配置骨架重来一遍就行。