昨天微信官方发布《关于开发者接入微信AI生态的指引》,开始提供接入微信AI生态的能力,把小程序拆成一个个「原子接口」,封装成 Skill,用户一开口,小程序 AI 就通过 MCP 协议自己理解、自己调用、自己完成。
我扒了微信官方的《Skill 接入最佳实践》,把“怎么写好一个小程序AI Skill”讲得很透,分享这六条心法。
1、产品设计:SKILL 触发词不能只写关键词
承接用户的模糊意图这块,比如“想喝点清爽的”的时候,AI完成理解推荐引导到下一个组件完成确认,点咖啡;但还有一些隐含场景,比如“再来一杯上次喝的”等需要跟历史数据和个人资产绑定的服务能力,都需要skill表达映射出来。
2、就近原则:把关键约束放在离决策最近的地方
别把所有上下文都塞到SKILL.md,要做信息源与分工,模型有注意力权重机制。
接口 description 决定模型选哪个接口,参数 description 影响模型“怎么填参数”,拿到结果后更看 content。SKILL.md 适合写流程、意图分流和跨接口规则。
3、通用规则
同一约束只写一处。硬约束放到更高权重位置。只写「不要做什么」不够,还要写「应该做什么」。能用代码做校验的地方就别用LLM。这其实就是软件工程的 DRY 原则搬进了上下文工程...
4、用确定性对冲不确定
比如接口名要语义化(searchDrinks 比 search 更稳),首句先说业务对象,不堆入参(“搜索饮品。按关键词、温度、杯型检索…”)。字段命名也要统一。硬约束做代码强校验,软引导才交给 AI,尽可能节省模型注意力。
在设计流程动作的时候,最好按「事实 + 动作」写:先说发生了什么,再说下一步只能做什么。
5、凡禁必有出口
只写“不要做 X”而不写“应做什么”,模型会缺少出口。
这个也是我们在设计skill的时候经常会碰到的,失败分支要写三件事:陈述事实、给下一步出口、指出不该做的动作,而且第三条必须和第二条配对出现。
比如,用户点了咖啡,未找到「圣诞限定款」,已附带本店热销兜底数据。请告知用户未找到,并引导从热销中挑选,不要再用相同关键词重试。
6、人在环路
文中还提到了业务流程里要标注“用户选择某款”“用户确认”这类用户操作节点,动作类接口“未确认成功前不应宣称已完成”。
好的 skill 应该设计好 AI 和人交替接力的节奏,把该停下来等人的地方明确标出来。
把信息,放到 AI 会看的位置;把不确定的东西,尽量变确定;把该等人的环节,明确留给人。
这样的skill才能被稳定运行。