把现成技能挨个试了一遍,还是没有正好对上你那套工作流的——这大概是你点进这篇的原因。好消息是 QClaw 允许你写自己的 Skill,而且起步门槛比想象中低;坏消息是,写得好不好,从你动手敲代码之前就已经决定了一大半。
这篇不堆 API 细节(那些以官方开发文档为准,版本会变),而是讲一套从想法到能用的完整路径,重点在那些文档不会替你想清楚的地方。
第一步:把需求拆到不能再拆
绝大多数失败的自定义 Skill,死在这一步。
新手常犯的错是想做一个「全能助手」——又管邮件又管文件又能查网页。结果是哪样都半残。好的 Skill 是单一职责的:一个技能只解决一类问题。
拆需求时逼自己回答三个问题:
- 这个技能的输入是什么?(一条什么样的指令会触发它)
- 它要执行哪些具体动作?(一步步列出来,别用「整理一下」这种模糊词)
- 输出是什么?(执行完返回什么信息回微信)
举个例子。「帮我管理项目」太大,没法写。拆成「每天下午六点,把今天改动过的项目文件列一份清单发回微信」——输入、动作、输出全清楚了,这才是一个能落地的 Skill。
第二步:设计能力边界与权限
需求清楚后,先别急着写,先划两条线。
能力边界。 明确这个技能能碰什么、不碰什么。一个文件清单技能,就只读取和列出,绝不让它具备删除能力。把不需要的能力从设计阶段就排除,比事后补救安全得多。
权限范围。 按最小够用原则定。只读日历的技能不要写入权限,只处理某个目录的技能不要给全盘访问。涉及外部服务的,授权范围以该服务和 QClaw 的接入说明为准,接公司账户前先确认你有这个权限。
这两条线在设计阶段定死,后面写代码和调试都会省心。反过来,如果一开始权限给得稀里糊涂,后期返工会很痛。
第三步:借 QClaw 自己把初版写出来
这是 QClaw 比较特别的一点——它能帮你编写新 Skill。你不需要从空白文件开始,可以把第一步拆好的需求描述给它,让它产出初版。
描述得越具体,初版越接近能用。把输入、动作、输出、权限边界一并讲清楚,比只说「写个管文件的技能」效果好太多。这本质上还是写指令的功夫,QClaw 任务自动化深度指南里讲的那套「指令四要素」,在描述开发需求时同样管用。
拿到初版别当成成品,它是个起点。接下来的活在调试。
第四步:小步测试与调优
测试自定义 Skill 的核心原则是:小范围、可回退、逐步放开。
- 先在几个测试文件、一个测试目录上跑,确认行为符合预期,再用到真实数据。
- 涉及修改、删除的动作,先用只读或拷贝版本验证逻辑,对了再换成真正的写操作。
- 一次只改一处。改完测,测完再改下一处,出问题才知道是哪一步引入的。
调优阶段你会发现一堆设计时没想到的边角情况:路径不存在怎么办、遇到同名文件怎么处理、外部服务超时如何反馈。把这些异常情况一个个补上错误处理,让技能在出错时给出清楚的提示,而不是静默失败——这是自用 demo 和真正可靠技能的分水岭。
第五步:自用,还是分享上架
到这一步技能已经能用了,接着看你的目标。
纯自用: 留在本地启用就好,没必要公开。很多最顺手的技能恰恰是高度定制、只适合自己的,本来也不适合上架。
想分享或团队复用: 那就走分发或上架流程。上架前再过一遍权限和边界,因为别人装上后,这些设定直接关系到他们的数据安全。具体的上架要求、审核标准以官方说明为准,本文不替它定规则。
不管哪条路,发布前都建议找一台干净环境重装一遍自己的技能,模拟别人第一次用的样子。你自己机器上跑得通,不代表换个环境也行。
写在最后
自定义 Skill 的难点从来不在代码,在于你有没有把「到底要解决什么」想透。需求拆得越细,权限划得越清,后面越顺。
先从一个小到不能再小的自用技能练手——比如前面那个「每天列改动文件」的例子。跑通一个完整闭环,比一上来啃复杂技能学得快得多。
要动手的话,先确认本地的 Skills 安装与权限管理流程你已经摸熟;还没装客户端,这里下载,开发自定义 Skill 的第一行得在桌面端开始。
常见问题
不是程序员能写 QClaw Skill 吗?
能写简单的。QClaw 支持让它帮你编写新 Skill,你把需求描述清楚,它能产出初版,你来测试和调整。但越复杂、越要接外部服务的技能,越需要一定的技术基础,具体能力边界以官方开发文档为准。
自己写的 Skill 一定要上架到市场吗?
不一定。很多自定义技能就是自用,留在本地启用即可,没必要公开。只有当你想分享给别人、或团队内部复用时,才需要走上架或分发流程,上架要求以官方说明为准。
开发自定义 Skill 最容易出问题的环节是哪?
是需求拆解和权限范围。需求没拆清楚,技能会变成一个什么都想做、什么都做不好的大杂烩;权限给太宽,则埋下安全隐患。先把这两件事定死,后面的编写和调试会顺很多。