← 回到学习笔记
· 2852 字

图解Skill读书笔记(六):Skill开发工程化发布流程

从需求分析、设计、实现、测试、上线与发布五个阶段出发,理解如何把一个自己能用的Skill逐步做成更稳定、可复用、可分享的小工具。

本文为原创学习笔记,记录本人阅读《图解 Skill》后的理解和实际思考。不同平台对 Skill、浏览器接管和自动化发布的支持方式可能不同,文中的做法需要结合具体工具验证。 转载请注明作者及原文链接;未经许可,请勿用于商业转载。

学习目标

当你做好一个 Skill 后,一定会想着分享给同事或者朋友用,这里就会涉及到软件工程化的问题。通俗一点说,就是要让它在大多数环境中能稳定运行,也方便别人理解和维护。

我的理解是,Skill 不能只停留在“我自己能用”这个层面。如果我希望它以后能反复用,甚至分享给别人用,那就不能随手写几条提示词糊在一起,而是要像做一个小产品一样,认真想清楚需求、流程、边界、测试和发布。

书里给出的流程是五个阶段:需求分析、设计、实现、测试、上线与发布。我觉得这个顺序很重要。以前我做类似东西的时候,很容易跳过前面的需求分析,直接让 AI 写一个 Skill。等写出来以后才发现,有些功能没想清楚,有些边界没定好,有些地方看起来能跑,但一换场景就开始出问题。现在再看,很多问题不是写 Skill 的时候才出现的,而是一开始需求没定义清楚。

一、先把需求问题问清楚

需求分析这一步,最实用的是那几个问题:这个 Skill 解决什么问题?在什么地方用?什么时候用?需要什么输入?会得到什么结果?要满足哪些条件?绝对不允许做什么?

这些问题看起来普通,但真要一条一条写下来,就会发现很多模糊的地方会被逼出来。

比如我想做一个发布文章的 Skill,一开始很自然会想到“让它帮我自动发布文章”。但仔细想就会发现,“自动发布”其实很危险。发布文章涉及账号登录、平台规则、内容审核,还有最后那个发布按钮。一旦完全交给自动化,出了问题就很麻烦。

所以更合理的设计应该是半自动:Skill 负责打开网站、填写标题、摘要和正文;需要登录的时候提醒我;最后发布之前必须让我自己检查,由我手动完成发布。

这个地方也让我意识到,需求里的“结果”要写准确。不是说这个 Skill 的结果是“自动把文章发出去”,而是“帮我把发布前的内容准备好”。这两个说法差别很大。前者把风险交给了自动化,后者把效率交给自动化,但把最终决策留给人。对于发布文章这种场景,我觉得后者才是更稳的。

二、设计时要给平台差异留位置

设计 Skill 的时候,还要给不同平台留出特例处理的位置。因为每个平台的编辑器都不一样,CSDN、公众号、小红书、博客后台,它们的标题框、正文框、摘要框、标签区可能完全不同。如果把所有平台都当成一个页面来处理,肯定会碰到很多问题。

所以我觉得在 SKILL.md 里留一个“平台特别策略”区域是很有用的。比如 CSDN 可以写清楚:优先识别哪个标题输入框,是否先切换 Markdown 编辑器,如果是富文本编辑器要不要找 iframe,摘要框在哪里,标签要不要先跳过。这样后面遇到问题,不是推翻整个 Skill,而是往对应平台的策略里补规则。

不过这里也有一个更大的问题:如果每个平台都单独写一套完整规则,后期会很累。更好的方式应该是先抽取共性流程,比如读取 Markdown 文件、提取标题、生成摘要、打开目标平台、填写内容、等待人工确认;然后再给不同平台写差异规则。这样以后增加新平台时,只需要补平台差异,而不是重新写一整个 Skill。

三、容错规则要提前写进去

容错能力也很重要。比如我设想这个发布文章 Skill 的输入是 Markdown 文件,但用户真的使用时,不一定会严格按我的设定来。他可能传 Word,也可能传 TXT,甚至可能只粘贴一段正文。如果 Skill 没有容错规则,它可能直接停住,不知道下一步该怎么处理。

更好的做法是提前写清楚:

  1. 如果不是 Markdown 文件,就先询问是否转换;
  2. 如果缺少标题,就从正文里提取或询问用户;
  3. 如果平台无法识别编辑器,就停下来说明问题,而不是乱点页面。

这类规则看起来不像核心功能,但实际使用时很重要。因为真实环境很少完全按照我预想的方式运行。一个 Skill 能不能让人放心,不只看它顺利时能不能跑通,也要看它遇到异常时会不会乱来。

四、不是所有 Skill 都需要跨对话记忆

书里还提到了跨对话记忆。这个点我觉得挺有意思,但不是所有 Skill 都需要。

像微信群聊整理这种任务,今天整理到哪里,明天要从哪里继续,这就需要记忆。否则每次都从头开始,会浪费时间,也容易重复。

但我这个发布文章的 Skill 暂时不太需要,因为它更像一次性任务:拿一篇文章,发布到一个平台,完成就结束。它更需要的是明确输入、明确流程和明确安全边界,而不是记住很长的历史状态。

所以我现在的理解是,记忆不是越多越好,而是要看任务是否真的需要连续上下文。如果没有必要,反而应该让 Skill 保持简单。

五、实现时先跑通,再补齐,再优化

实现 Skill 的过程,我现在理解成“先跑通,再补齐,再优化”。

不要一开始就追求完美,因为很多问题只有跑起来才知道。比如平台编辑器怎么响应,Markdown 能不能直接粘贴,摘要框有没有字数限制,标签弹层会不会挡住操作,这些靠想象很难完全想出来。

先做一个基础版本,拿真实页面跑几次,哪里不好就把规则补回 Skill 里,这样会更实际。

这也和我前面几篇笔记里的理解能接上:不要一上来就想着搭一个完整版 Skill。刚开始能把基础功能跑通就已经很好了,后面再根据真实使用中遇到的问题,慢慢加上自己想要的其他功能。每个 Skill 都是通过慢慢调试才完成的。

六、测试要有明确检查项

测试这一步也很关键。书里说到“测评”,我理解就是给 Skill 准备一些测试用例和检查项。

比如发布文章 Skill 可以测试:

  1. 能不能正确读取 Markdown 文件;
  2. 能不能识别标题;
  3. 能不能生成摘要;
  4. 能不能打开目标平台;
  5. 能不能停在发布前等待人工确认。

如果某一项做不好,就不要含糊地说“效果一般”,而是明确是哪一项丢分,然后针对这项去改。

这对我很有提醒。以前我测试一个东西时,常常只是看“能不能大概用”。但真正工程化以后,就不能只靠感觉,而要把检查项写清楚。这样每次修改以后,才知道有没有把原来能用的地方改坏。

七、安全边界必须写死

最后还是安全问题。只要 Skill 涉及网站、账号、浏览器、发布按钮,就不能只想着方便。尤其是“自动发布”这种动作,必须明确禁止。

Skill 可以帮我填写内容,但不能替我点最终发布。它可以提醒我登录,但不能保存或猜测我的账号密码。它可以操作浏览器,但遇到不确定页面时要停下来问我。这样虽然少了一点全自动的便利感,但换来的是可控。

对我来说,这类边界不是多余的限制,而是让 Skill 能长期使用的前提。因为自动化越接近真实账号和真实网站,越要谨慎。宁愿多一步人工确认,也不要让一个不确定的自动化动作替我做最终决定。

本篇小结

总的来说,这章的学习让我对 Skill 的理解更深刻了。

Skill 不是写一段提示词就结束,而是要先定义需求,再设计流程,再实现基础功能,再通过测试不断修正,最后发布前检查安全边界。

真正好用的 Skill,不一定一开始就很复杂,但它一定要边界清楚、能被测试、能持续补全规则,也能让更多人从中受益。