ARTICLE DETAIL

资讯详情

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

AI Skill 开发与评测全解析:四个指标 + 六大组成,从微信到 Claude Code 的 TaoToken 配置实践

AI Skill 开发与评测全解析:四个指标 + 六大组成,从微信到 Claude Code 的 TaoToken 配置实践 1. 从微信小程序到 Claude CodeAI Skill 到底难在哪AI Skill 这个词最近被提得很多但真正动手做过的人会发现它既不是简单的提示词工程也不是传统意义上的插件开发。它更像是一个带契约的小型服务包对外要声明自己能干什么、需要什么参数对内要处理业务逻辑、返回结构化数据还要能被不同平台的 AI 宿主正确触发和调用。微信小程序生态里叫 SkillClaude Code 生态里叫 MCP Server 或 Agent Skill名字不同底层逻辑高度一致。我最近把两边都跑了一遍最大的感受是开发本身不难难的是评测和跨平台适配。你在微信里调通的 Skill搬到 Claude Code 里可能因为触发描述不匹配而完全不生效你在 Claude Code 里跑得顺的 MCP 配置换到小程序环境又得重写接口契约。更麻烦的是很多开发者写完 Skill 就扔上去根本不知道它到底好不好用——意图理解对不对、调用轨迹合不合理、最终答案质量如何、接口覆盖够不够这四个维度没有量化优化就无从下手。这篇文章面向的是已经了解基础概念、准备动手搭 Skill 的开发者。我会把四个评测指标和六大组成模块拆开讲清楚然后给出可复制的 mcp.json 和 settings.json 配置片段重点演示在 Claude Code 中接入 TaoToken 统一 Key/API 通道后怎么快速验证 Skill 的连通性。整套流程跑下来你能拿到一份可以直接照着搭的工程清单以及一套可复用的评测闭环。2. 四个评测指标意图、轨迹、答案、覆盖微信官方开源的 wxa-skill-eval 定义了四个评测维度每个 Skill 上线前至少跑 30 个用例。这套指标的价值在于它把任务完成得好不好这个模糊问题拆成了可测量的四个层面。维度测什么得分低说明意图理解AI 能不能正确理解用户想干嘛SKILL.md 的 description 写得太模糊轨迹生成操作步骤的合理性和完整性接口调用顺序或条件判断有问题最终答案质量输出结果的正确性和格式提示词或数据处理逻辑需要优化接口覆盖率原子接口和组件的测试覆盖用例不够多边界情况没覆盖注意一个细节任务完成情况没有单独列成一个维度而是被拆进了上面三个指标里。意图是起点、轨迹是过程、答案是结果三者合在一起才是完整的任务评估。接口覆盖率则是从工程角度保证前三个维度的稳定性。Claude Code 这边也有类似的四维评测来自 wshobson/agents 的 eval-judgeTriggering Accuracy 占 25%Orchestration Fitness 占 20%Output Quality 占 15%Scope Calibration 占 12%。两套体系一对比就很有意思微信侧重端到端行为验证Claude Code 更侧重 Skill 本身的结构质量。结合起来看评测 Skill 其实是两个层面——运行时表现加静态结构质量。实际跑评测时我建议你先用 wxa-skill-eval 跑一轮端到端用例拿到意图理解和轨迹生成的分数再用 eval-judge 检查 SKILL.md 的触发描述和 mcp.json 的编排合理性。两边分数都达标这个 Skill 才算真正可用。3. TaoToken 前置统一 Key 与 API 通道在讲配置之前先解决一个实际问题Claude Code 和微信小程序两边的模型调用通道不一样Key 管理、计费、限流策略都分散。如果你同时维护多个 Skill每个都单独配 Key后期排查问题会非常痛苦。TaoToken 在这里的作用是提供一个统一的 API 通道。你可以在官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册后拿到一个 Key然后在 Claude Code 的 settings.json 里配置这个 Key 作为模型调用的统一入口。这样无论是 Skill 开发阶段的调试还是评测阶段的批量用例跑分都走同一条通道日志和用量也集中在一处。具体操作路径先到 API Keys 页面 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 创建一个 Key然后参考接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 把 Key 写进 Claude Code 的配置文件。如果你只是想在浏览器里先验证模型能不能通可以直接用模型对话页面 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 发一条消息测试。这里要强调一点TaoToken 的 API 地址是 https://taotoken.net/api配置时不要加 UTM 参数否则可能导致请求签名校验失败。Key 的权限建议按最小必要原则分配开发阶段用一个 Key评测阶段用另一个方便区分用量。4. 可复制配置mcp.json 与 settings.json 骨架Skill 的六大组成模块里mcp.json 和 SKILL.md 是最关键的两个文件。前者是接口契约后者是触发说明书。下面给出可直接复制的配置骨架。4.1 SKILL.md 触发说明书SKILL.md 是 AI 最先看的文件决定这个 Skill 会不会被调用。description 是给 AI 看的不是给人看的写模糊了就会导致该触发时不触发。--- name: weather-skill description: 天气查询业务。当用户想查天气、问温度、问是否下雨时触发。 --- ## 触发场景 - 今天北京天气怎么样 - 明天会下雨吗 - 上海这周温度多少 ## 不适用范围 - 询问日期、时间等非天气信息 - 查询历史天气数据4.2 mcp.json 接口契约mcp.json 向 AI 声明所有原子接口的入参、出参和组件映射。AI 会根据 inputSchema 自动从用户对话里抽取参数填进去你不需要写任何调用代码。{ mcpServers: { weather-skill: { command: node, args: [/path/to/weather-skill/index.js], env: { TAOTOKEN_API_KEY: your_key_here, TAOTOKEN_BASE_URL: https://taotoken.net/api } } } }4.3 settings.json 接入 TaoToken在 Claude Code 的 settings.json 里配置 TaoToken 作为统一模型通道{ model: claude-sonnet-4-20250514, apiKey: your_taotoken_key, baseUrl: https://taotoken.net/api, mcpServers: { weather-skill: { command: node, args: [/path/to/weather-skill/index.js] } } }配置完成后Claude Code 启动时会自动加载 mcp.json 里声明的 MCP 服务。如果 Skill 需要调用模型能力走的就是 TaoToken 的统一通道。4.4 index.js 入口与中间件index.js 负责注册所有接口绑定鉴权、日志、错误处理等横切逻辑const skill wx.modelContext.createSkill(/path/to/weather-skill) skill.use(async (ctx, next) { const start Date.now() try { await next() } catch (err) { console.error(Skill error:, err) ctx.body { isError: true, content: [{ type: text, text: 服务异常 }] } } finally { console.log(Request took ${Date.now() - start}ms) } }) skill.registerAPI(getWeather, require(./apis/getWeather))4.5 apis/getWeather.js 业务脚本真正干活的代码返回 content 给 AI 看structuredContent 给组件渲染async function getWeather({ location, days 1 }) { const res await fetch(https://api.example.com/weather, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ city: location, days }) }) const data await res.json() return { isError: false, content: [{ type: text, text: ${location} 未来 ${days} 天天气已查到 }], structuredContent: { location, forecasts: data.forecasts } } } module.exports getWeather5. 验证请求连通性与评测跑通配置写完后不要急着跑完整评测先用最小请求验证连通性。第一步在 Claude Code 里发一条触发消息今天北京天气怎么样如果 SKILL.md 的 description 写得准确Claude Code 应该会触发 weather-skill并调用 getWeather 接口。你可以在终端看到 MCP 服务的日志输出确认请求是否到达 index.js。第二步检查返回的 structuredContent 是否包含预期字段。如果组件渲染失败通常是 structuredContent 的结构和 components 里的取值路径不匹配。第三步跑一轮 wxa-skill-eval 的评测用例。建议先用 5 个用例做冒烟测试确认意图理解和轨迹生成两个维度没有明显异常再扩展到 30 个用例。第四步用 eval-judge 检查 SKILL.md 的触发准确度。如果 Triggering Accuracy 低于 25%说明 description 需要重写重点补充触发场景和不适用范围。实测下来最容易出问题的环节是 mcp.json 里的 env 配置。如果 TAOTOKEN_API_KEY 没有正确传入Skill 调用模型时会直接报 401。建议在 index.js 启动时加一行日志打印 Key 的前四位和后四位确认配置生效。6. 常见错排查从 401 到触发失败6.1 401 Unauthorized最常见的原因是 Key 没有正确传入。检查 mcp.json 的 env 字段和 settings.json 的 apiKey 是否一致。如果用的是 TaoToken 的 Key确认 baseUrl 写的是 https://taotoken.net/api不要加多余的路径或参数。6.2 Skill 不触发如果 Claude Code 完全没有调用 Skill先检查 SKILL.md 的 description 是否包含用户可能说的关键词。description 太抽象是触发失败的首要原因。你可以把 description 改得更具体比如把天气查询业务改成当用户问今天、明天、这周天气、温度、是否下雨时触发。6.3 接口调用顺序错误轨迹生成得分低通常是 apis/ 里的业务脚本没有处理好条件判断。比如用户只问了今天天气脚本却调用了 7 天预报接口。建议在 mcp.json 的 inputSchema 里给 days 参数设置默认值并在脚本里做参数校验。6.4 structuredContent 渲染失败组件拿不到数据先确认 apis/ 返回的 structuredContent 字段名和 components/ 里取值路径一致。微信小程序的组件生命周期里created 阶段就要注册 Result 监听晚了会丢数据。6.5 评测用例跑不完如果 wxa-skill-eval 跑到一半卡住检查是否有接口超时。建议在 index.js 的中间件里加超时控制单个请求超过 10 秒直接返回错误避免拖垮整个评测流程。7. 语义一致 CTA按场景选入口排障和接入相关的问题优先看 API Keys 和接入文档。API Keys 页面可以管理你的 Key 权限和用量接入文档里有完整的配置示例和错误码说明。如果你在配置 mcp.json 或 settings.json 时遇到问题文档里的排查章节能覆盖大部分场景。验证模型连通性直接用模型对话页面发一条消息测试。这个页面不依赖本地配置能快速判断是 Key 的问题还是配置文件的问题。长期做编码和 Agent 开发的建议了解 Coding Plan。它适合需要持续调用模型、跑批量评测用例的场景用量和计费方式比按次调用更可控。控制台页面可以查看所有请求的日志和用量统计排查问题时先看这里能快速定位是哪个环节出了错。整套流程跑下来你会发现 AI Skill 的开发与评测其实是一个闭环写 SKILL.md 对应意图理解评测写 mcp.json 对应接口覆盖率评测写 apis/ 脚本对应轨迹生成和最终答案质量评测。每个环节都对应明确的评测指标开发时就知道会被怎么打分。把 TaoToken 作为统一通道接进去之后Key 管理和日志排查的负担会小很多你可以把精力集中在 Skill 本身的逻辑和评测优化上。
返回列表