ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

【AI开发】—— Agent Skills 详解及 Copilot 进阶玩法:用 TaoToken 统一 Key 打通 VS Code 配置

【AI开发】—— Agent Skills 详解及 Copilot 进阶玩法:用 TaoToken 统一 Key 打通 VS Code 配置 1. 为什么你的 Copilot 总是“不懂你”从一次 Playwright 测试翻车说起如果你在 VS Code 里用 GitHub Copilot 写过 Playwright 测试大概率遇到过这种场景你输入“帮我给登录页写个端到端测试”Copilot 刷刷刷生成一段代码跑起来却报错——选择器用了div form input:nth-child(2)这种一改样式就碎的写法等待逻辑全靠page.waitForTimeout(3000)断言散落在各处。你不得不把项目里的测试规范、选择器约定、目录结构再打一遍给它下次换个会话它又忘了。这不是 Copilot 笨而是它默认只拿到你当前打开的文件和少量上下文缺少一套“项目专属的操作手册”。Agent Skills 就是来解决这个问题的它把指令、脚本、模板打包成一个标准化文件夹Copilot 在任务匹配时自动加载让 AI 按你团队的规矩干活。而这篇要讲的不只是 Skills 怎么写还要解决另一个高频痛点——统一 Key 与 API 通道。当你在 VS Code、Copilot CLI、甚至自建 Agent 之间来回切换时模型通道如果各配各的调试成本会指数级上升。我的做法是用 TaoToken 做统一入口一处配置多端复用。这篇适合三类人刚接触 Agent Skills、想让 Copilot 适配项目规范的 VS Code 用户已经在写 SKILL.md、但调用链路总出问题的进阶玩家以及想把 Playwright 测试流程固化下来的测试/前端工程师。下面从环境准备到配置骨架、再到验证与排障一步步走完。2. 前置准备TaoToken 统一 Key 与 VS Code 侧的基础配置在写 SKILL.md 之前先把“通道”打通。Agent Skills 负责告诉 Copilot“怎么做”而模型请求走哪条 API、用哪个 Key属于基础设施层。如果你同时用多个 AI 工具每个工具单独申请 Key、单独配 Base URL后期排查问题时根本分不清是技能没加载还是 Key 失效。TaoToken 在这里的角色是统一入口一个 Key 覆盖多种模型调用Base URL 固定VS Code 里的 Copilot 类插件、命令行工具、自建脚本都能指向同一个地址。这样当技能加载异常时你可以先排除“通道问题”再查 SKILL.md 本身。2.1 获取 Key 与确认 API 地址登录 TaoToken 控制台后在 API Keys 页面创建一个新 Key。建议按用途命名比如vscode-agent-skills方便后续在多个工具间区分。创建后立即复制保存页面刷新后不再完整显示。API 基础地址统一为https://taotoken.net/api注意这个地址不带任何查询参数直接作为 Base URL 填入客户端即可。模型对话、Coding Plan、控制台、API Keys、接入文档等入口都可以从官网进入https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content2.2 VS Code 中需要装什么Agent Skills 的加载依赖 Copilot Chat 扩展。确保 VS Code 版本在 1.99 以上然后在扩展市场安装 GitHub Copilot 和 GitHub Copilot Chat。如果你用的是 Copilot CLI同样支持 Skills但本篇聚焦 VS Code 路径。安装完成后打开设置搜索chat.agentSkillsLocations这个配置项决定 Copilot 去哪些目录找技能。默认会扫描项目内的.github/skills/、.claude/skills/、.agents/skills/以及用户目录下的~/.copilot/skills/等。你可以额外添加自定义路径比如团队共享的技能仓库挂载点。2.3 把 TaoToken 通道写进 VS Code 配置VS Code 本身不直接管理模型 API Key但 Copilot Chat 支持通过settings.json配置自定义模型端点视版本和账号类型而定。更通用的做法是在项目根目录的.vscode/settings.json里写入通道相关配置同时把 Key 放在环境变量或 VS Code 的 secrets 中避免硬编码进仓库。下面是一个settings.json骨架包含技能搜索路径和通道指向{ chat.agentSkillsLocations: { .github/skills: true, .agents/skills: true, ~/.copilot/skills: true }, github.copilot.chat.codeGeneration.instructions: [ { text: 项目使用 Playwright 进行端到端测试优先使用角色选择器。 } ], terminal.integrated.env.linux: { TAOTOKEN_API_BASE: https://taotoken.net/api }, terminal.integrated.env.osx: { TAOTOKEN_API_BASE: https://taotoken.net/api }, terminal.integrated.env.windows: { TAOTOKEN_API_BASE: https://taotoken.net/api } }这里把 Base URL 写进终端环境变量是为了让后续在 VS Code 集成终端里运行的脚本、CLI 工具能直接读取不用每次手动 export。Key 本身不要写进settings.json建议放在系统环境变量TAOTOKEN_API_KEY中或者用 VS Code 的inputs机制在运行时输入。注意不同 Copilot 版本对自定义端点的支持程度不同。如果设置后模型请求仍走默认通道检查你的账号类型和扩展版本必要时参考接入文档确认当前支持的配置方式。3. 可复制配置SKILL.md 骨架与 Playwright 技能落地通道就绪后进入核心部分。Agent Skills 的最小单元是一个文件夹里面必须有一个SKILL.md。文件夹名要和 SKILL.md 里 YAML 头的name字段完全一致小写、用横杠分隔。3.1 目录结构以 Playwright 测试技能为例在项目根目录创建.github/ └── skills/ └── playwright-e2e/ ├── SKILL.md ├── test-template.spec.ts └── examples/ └── login-flow.mdplaywright-e2e就是技能名后续在 Copilot 聊天里用/playwright-e2e调用。3.2 SKILL.md 完整骨架YAML 头负责元数据Markdown 主体负责指令。name和description必填description要写清触发场景否则 Copilot 无法自动匹配。--- name: playwright-e2e description: 基于 Playwright 的端到端测试指南。创建、运行、调试浏览器测试时自动加载遵循项目选择器与等待规范。 argument-hint: [测试文件路径] [调试选项] user-invokable: true disable-model-invocation: false --- # Playwright 端到端测试规范 ## 适用场景 - 为页面或组件创建新的 Playwright 测试用例 - 调试失败的端到端测试 - 重构现有测试替换不稳定的选择器 ## 操作步骤 1. 参考模板 ./test-template.spec.ts 创建测试文件放在 tests/e2e/ 目录下。 2. 定位元素时优先使用 getByRole、getByLabel、getByTestId禁止使用 XPath 和 nth-child。 3. 等待逻辑使用 expect(locator).toBeVisible() 等自动等待断言禁止 waitForTimeout。 4. 本地运行npx playwright test 文件路径 --headed 5. 调试模式npx playwright test 文件路径 --debug ## 最佳实践 - 每个测试用例独立不依赖其他用例的执行结果。 - 动态内容必须添加 data-testid 属性。 - 失败时自动截图和录制 trace配置在 playwright.config.ts 中。 - 测试数据通过 fixture 注入不硬编码在用例里。 ## 资源引用 - 测试模板./test-template.spec.ts - 登录流程示例./examples/login-flow.md3.3 配套模板文件test-template.spec.ts放一个标准结构Copilot 生成新测试时会参考它import { test, expect } from playwright/test; test.describe(功能模块名称, () { test.beforeEach(async ({ page }) { await page.goto(/); }); test(应该完成某个具体行为, async ({ page }) { await page.getByRole(button, { name: 登录 }).click(); await expect(page.getByTestId(welcome-message)).toBeVisible(); }); });3.4 把通道配置接入技能调用链路技能本身不直接发模型请求但如果你在技能里引用了脚本脚本可能需要调用模型 API。比如一个“自动生成测试用例”的脚本会读取页面结构后请求模型补全断言。这时统一 Key 就派上用场#!/usr/bin/env bash # scripts/generate-test.sh set -euo pipefail API_BASE${TAOTOKEN_API_BASE:-https://taotoken.net/api} API_KEY${TAOTOKEN_API_KEY:?请先设置 TAOTOKEN_API_KEY} curl -sS ${API_BASE}/v1/chat/completions \ -H Authorization: Bearer ${API_KEY} \ -H Content-Type: application/json \ -d { model: claude-sonnet-4-20250514, messages: [ {role: user, content: 根据以下页面结构生成 Playwright 断言...} ] }把这个脚本放在技能目录下SKILL.md 里用相对路径引用。Copilot 执行到相关步骤时会按需加载不会提前占用上下文。4. 验证请求确认技能加载与调用链路正常配置写完不代表生效。下面这套验证动作能帮你确认“技能被发现了”“指令被加载了”“通道能通”。4.1 验证技能是否被 Copilot 发现打开 Copilot Chat在输入框敲/如果技能列表里出现playwright-e2e说明chat.agentSkillsLocations配置正确SKILL.md 的 YAML 头也被解析了。如果没出现先检查文件夹名和name是否一致再确认路径是否在搜索范围内。4.2 验证自动加载是否触发在聊天里输入一句匹配description的话比如帮我给登录页写一个 Playwright 测试验证错误密码提示。观察 Copilot 的回复是否遵循了 SKILL.md 里的规范是否用了getByRole、是否避免了waitForTimeout、是否引用了模板结构。如果它仍然生成nth-child选择器说明技能没被自动加载检查disable-model-invocation是否被误设为true。4.3 验证通道连通性在 VS Code 集成终端里运行curl -sS ${TAOTOKEN_API_BASE}/v1/models \ -H Authorization: Bearer ${TAOTOKEN_API_KEY} | head -c 500如果返回模型列表 JSON说明 Base URL 和 Key 都有效。如果返回 401检查 Key 是否复制完整如果返回 404检查 Base URL 是否多了斜杠或路径。4.4 验证脚本调用链路如果技能里引用了generate-test.sh手动执行一次chmod x .github/skills/playwright-e2e/scripts/generate-test.sh TAOTOKEN_API_KEY你的Key .github/skills/playwright-e2e/scripts/generate-test.sh看到模型返回内容说明从技能资源到 API 通道的整条链路是通的。这一步能提前暴露环境变量未传递、脚本权限不足等问题。5. 本篇常见错排查技能不加载、Key 失效、路径踩坑即使按步骤走也可能遇到问题。下面是我在实际配置中踩过的坑按现象分类。5.1 技能列表里看不到自定义技能最常见的原因是文件夹名和name不一致。比如文件夹叫playwright_e2e下划线SKILL.md 里写name: playwright-e2e横杠Copilot 就匹配不上。另一个原因是路径没被扫描项目级技能必须放在.github/skills/下且chat.agentSkillsLocations里对应路径为true。如果你放在自定义目录记得在设置里显式添加。5.2 技能被发现了但自动加载不触发检查description是否写得太泛。比如只写“测试相关”Copilot 无法判断何时加载。要写成“创建 Playwright 端到端测试时自动加载”这种带触发场景的描述。另外disable-model-invocation: true会禁止自动加载只能手动/调用确认这个字段没写错。5.3 通道返回 401 或 403先确认 Key 没有多余空格再确认请求头格式是Authorization: Bearer Key。如果 Key 是在 TaoToken 控制台刚创建的确认没有误删或过期。还有一种情况环境变量在 VS Code 终端里没生效因为settings.json里的terminal.integrated.env.*只对新开的终端生效旧终端需要重启。5.4 脚本执行报“command not found”技能目录下的脚本默认没有执行权限。用chmod x加上或者在 SKILL.md 里写明用bash script.sh方式调用。另外脚本里的相对路径是相对于脚本所在目录还是项目根目录要统一约定否则./test-template.spec.ts可能找不到文件。5.5 模型返回内容但格式不对如果通道通了、技能也加载了但 Copilot 生成的测试仍然不符合规范检查 SKILL.md 主体指令是否足够具体。模糊的“写好测试”没用要写成“使用 getByRole 定位禁止 nth-child”这种可执行的约束。指令越像代码规范Copilot 执行越稳定。6. 把技能用起来从单点测试到长期编码工作流配好一个 Playwright 技能只是起点。Agent Skills 的真正价值在于组合你可以再建一个github-actions-debug技能处理 CI 失败建一个vue3-component技能约束组件写法多个技能按任务自动加载互不干扰。如果你打算长期在 VS Code 里做 Agent 开发建议把模型通道也固定下来。TaoToken 的 Coding Plan 适合需要持续调用、多工具切换的场景一个 Key 覆盖对话、编码、脚本调用省去每个工具单独配通道的麻烦。模型对话入口可以用来快速验证技能指令是否符合预期接入文档则能查到最新的 Base URL 和参数格式。最后留一个实用习惯每次新增或修改 SKILL.md 后先在 Copilot Chat 里用/技能名手动调用一次确认指令被正确读取再依赖自动加载。这样能把“技能问题”和“通道问题”分开定位排查效率会高很多。
返回列表