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

📅 2026/6/27 3:48:18
AI Skill 开发与评测全解析:四个指标 + 六大组成,从微信到 Claude Code
文章目录前言一、四个评测指标二、Skill 开发的六大组成部分2.1 SKILL.md —— 触发说明书2.2 mcp.json —— 接口契约2.3 index.js —— 入口 中间件2.4 apis/ —— 业务脚本2.5 components/ —— UI 组件2.6 data/ utils/ —— 关键信息存储三、开发与评测闭环四、一句话总结前言这篇文章讲什么AI Skill 到底怎么开发、怎么评测——以微信小程序 wxa-skill-eval 和 Claude Code 为例把四个评测指标和六大开发组成一次讲清楚。读完你能拿到一份可以直接照着搭的 Skill 工程清单。最近一个在腾讯做 Skill 测试的朋友跟我聊起他们的评测体系我顺势把两边微信生态 Claude Code 生态的 Skill 开发模式都翻了一遍发现底层逻辑惊人地一致——Skill 本质上是一个带契约的小型服务包评测维度也高度收敛。一、四个评测指标微信官方开源的wxa-skill-eval定义了四个评测维度每个 Skill 上线前至少跑 30 个用例维度测什么得分低说明意图理解AI 能不能正确理解用户想干嘛SKILL.md 的 description 写得太模糊轨迹生成操作步骤的合理性和完整性接口调用顺序或条件判断有问题最终答案质量输出结果的正确性和格式提示词或数据处理逻辑需要优化接口覆盖率原子接口和组件的测试覆盖用例不够多边界情况没覆盖注意任务完成情况没有单独列成一个维度而是被拆进了上面三个指标里——意图是起点、轨迹是过程、答案是结果三者合在一起就是任务完成得好不好的完整评估。Claude Code 这边也有类似的四维评测来自wshobson/agents的 eval-judge维度权重Triggering Accuracy触发准确度25%Orchestration Fitness编排适配度20%Output Quality输出质量15%Scope Calibration范围校准12%两套体系一对比就很有意思微信侧重端到端行为验证用户说了什么 → AI 做了什么 → 结果对不对Claude Code 更侧重Skill 本身的结构质量触发精准不精准、编排合不合理、范围大不大。结合起来看评测 Skill 其实是两个层面运行时表现静态结构质量。二、Skill 开发的六大组成部分Skill 不是一个文件是一整个小型服务包。拿微信小程序 Skill 举例weather-skill/ ├── SKILL.md ← 说明书什么时候触发、干什么 ├── mcp.json ← 接口契约声明入参/出参/组件 ├── index.js ← 接线员注册接口 中间件 ├── apis/ ← 干活的业务脚本逻辑 │ └── getWeather.js ├── components/ ← 门面UI 卡片渲染 │ └── weather-card/ └── data/ ← 备查档案Mock 数据 / 常量 └── seed.js2.1 SKILL.md —— 触发说明书这是 AI最先看的文件决定这个 Skill 会不会被调用--- name: weather-skill description: 天气查询业务。当用户想查天气时触发。 --- ## 触发场景 - 今天北京天气怎么样 - 明天会下雨吗 ## 不适用范围 - 询问日期、时间等非天气信息description 是给 AI 看的不是给人看的。写模糊了 → 该触发时不触发 → 意图理解得分低。2.2 mcp.json —— 接口契约向 AI 声明所有原子接口的入参/出参/组件映射{apis:[{name:getWeather,description:查询指定地点的天气,inputSchema:{type:object,properties:{location:{type:string,description:城市名},days:{type:number,description:预报天数 1-7}},required:[location]}}]}AI 会根据 inputSchema 自动从用户对话里抽取参数填进去——你不需要写任何调用代码。2.3 index.js —— 入口 中间件注册所有接口绑定鉴权、日志、错误处理等横切逻辑constskillwx.modelContext.createSkill(/path/to/weather-skill)skill.use(async(ctx,next){// 统一鉴权、打日志、捕获异常awaitnext()})skill.registerAPI(getWeather,require(./apis/getWeather))2.4 apis/ —— 业务脚本真正干活的代码返回content给 AI 看structuredContent给组件渲染asyncfunctiongetWeather({location,days1}){constresawaitwx.request({url:https://api.example.com/weather,data:{city:location,days}})return{isError:false,content:[{type:text,text:${location}未来${days}天天气已查到}],structuredContent:{location,forecasts:res.data.forecasts}}}2.5 components/ —— UI 组件把结构化数据渲染成对话流里的卡片宽高 4:1 ~ 1:1不是普通页面Component({lifetimes:{created(){constmodelCtxwx.modelContext.getContext(this)modelCtx.on(wx.modelContext.NotificationType.Result,(data){constscdata?.result?.structuredContent||{}this.setData({location:sc.location,forecasts:sc.forecasts})})}}})2.6 data/ utils/ —— 关键信息存储data/Mock 数据、静态配置、种子数据utils/公共工具函数日期格式化、请求签名、加密接口返回的structuredContent是运行时关键信息同时给 AI 理解和组件消费Claude Code 这边还有scripts/放辅助脚本、.mcp.json声明 MCP 服务——本质上和微信的apis/mcp.json是同一套思想。三、开发与评测闭环把开发和评测串起来形成闭环写 SKILL.md → 意图理解评测 写 mcp.json → 接口覆盖率评测 写 apis/ 脚本 → 轨迹生成评测 最终答案质量评测 跑 wxa-skill-eval → 生成 eval_report.html → 根据低分项回头改每个环节都对应明确的评测指标开发时就知道会被怎么打分。四、一句话总结组件一句话SKILL.md告诉 AI什么时候出发mcp.json告诉 AI能调什么、传什么参index.js把接口注册起来apis/真正干活的业务脚本components/把结果画出来data/备查的关键信息评测四个字理解 → 轨迹 → 结果 → 覆盖。四个维度合在一起就是一个 Skill 的完整质量画像。