SKills 可复用工作流
1.1 复用
中台一词,常常出现在各种软件架构的设计中,其核心理念用两个字就可以概括:复用,即把相同功能抽离出来,减少重复建设,如下图:

软件开发的整个过程等于所有Prompt的总和

回答一个问题:什么是Skills?答:公共的Prompt就是Skills!

56%

44%
1.2 Skills设计思路
💡
具体搞个分级缓存,当输入Prompt的时候,不要带上全量的Skills信息,而是最基本的元信息,AI会按照语意进行匹配,匹配到了才会加载实际的内容,这就是渐进式加载,官方叫:渐进式披露,如下图所示:

1.3 经验沉淀
经验可以沉淀,这不仅对个人,对团队来说,作用也巨大,它实现了“经验”的低成本共享,个人经验将会以Skills的形式快速的在团队内传播,团队的整体战斗力也随之迈上了一个新的台阶。

最激动的是:当Skills的数量达到一定规模时,其实我们就相当搭建了一个专门给AI用的技能商店,可以自动匹配Skills库,让复杂问题通过基础Skills组合得到解决。

另一方面,Skills的成功,给我们了一个很好的启发:AI时代,系统设计将从面向于人设计转向面向AI设计。一份数据,我们需要有给人好理解的版本,也需要有给AI好理解的版本!

如何开发Skills:从归纳法到演绎法
重复两个过程,需要先将工作中的案例总结提炼(归纳),固化为Skills,用以应对同类问题(演绎),或是再次反馈完善这个Skills,这便是Skills开发的核心思路!

2.1 真正的难点,需要:向外洞察+向内觉察
Skill的本质是一种解决方案,它与问题本就是一体两面,若问题不存在,那Skills再强大也毫无意义。
举个例子,比如当你遇到Bug时,你是如何排查的?好好回想这个完整过程,把每一步操作、每一个判断逻辑梳理清楚,让AI照着这个逻辑去执行,这一点,我会在后续的实践分享中详细展开。除了自己的去总结,其实也可以利用AI工具,当你用AI解决完一个新问题的时候,别急着关闭对话框,让Agent自己观察你的Prompt过程,让他自己总结沉淀,这个过程只需要你在解决完问题后,加一句prompt即可。
03 一些Skills的案例
以上就是一些Skills原理的分析,下面我们来来分享一些Skills的实践。
3.1 逆向建模
逆向建模,是我在开发过程中,使用的最高频的场景。它对应着我们最常见应用场景:需求迭代。针对一个需求迭代的过程,我们总是可以抽象成三个步骤,在AI时代,我们需要思考:如何利用SKills增强这三个流程!而逆向建模就是一个很好的方法!
那模型里有什么呢?我们可以总结为三个部分:实体、规则和行为。剩下的工作,不管是要去理解需求或是开发需求,我们本质上都是围绕着以下三个问题展开:
实体关系是什么?有什么变更?
流程是什么?有什么变更?
行为是什么?有什么变更?
当我们回答好了这三个问题,我们的代码也就写的差不多了,这种方法让VibeCoding更加精细化,让Vibecoing建立在图纸之上,而非抽象的语言之上。那我们具体要如何表达呢?我们详细讨论下。
1、 实体的显化表达,这里尝尝用的就是传统的UML建模,我们通过类对象及其关系去还原结构,通过不同的颜色来表示需求的改动!
2、流程的显化表达,流程则通过序列图()的形式表达。我们可以通过不同抽象层次的图,去放大或者缩小实现的细节,这样我们的视角可以在不同的维度进行设计分析,既可以从总体把握,又可以下钻到细节。这里设计的多详细,AI完成的就有多准确!
3、规则的显化表达,规则是有点不同的点,实体和行为我们都可以用图去表达,但是规则比较难,更好的方式就是用伪代码的形式,不仅对人友好,对AI也很友好,不得不说:最好的Prompt其实就是代码本身。
3.2 问题定位:当群里@你 定位问题?
另外从前比较耗时的事是:问题定位。相比诸位开发通知都深有同感,那我们能不能使用Skills帮我们快速搞定呢?那肯定是可以的。
首先我们使用内观的方法,回想一下:你是如何定位一个问题的?是不是往往从一个染色ID开始,一步一步,看日志,看代码。让AI仿照这个过程,Skills就完成了,如下图所示:
在这个Skills中,最需要考虑的是,如果打通AI-IDE与日志系统,比较简单的是通过MCP实现,然后AI会结合本地代码和日志进行分。这个Skills非常简单,但它真的为我节省了很多时间。下面是一个真实的案例,当上游同学在群里给我丢了一个染色ID让我看的时候,利用这个Skills就在30s内,定位到了异常点!
3.3 AI辅助CR的工程落地
使用AI辅助代码CR已经成为了我们团队的高频实践(由sumueli老师主导),并探索出了一条工程化的思路,可以让AI-CR和Git闭环运行,整体流程如下:
除了自动化的CR,人工CR也是最常见的场景。如下图:
另外在CR的实践中,我们也结合了上面的建模思路,把设计图和代码DIff一起去MR,这大大较少了CR的理解成本,提供了团队的效能!
04 回答开头的问题
最后,回答一下开头提到的问题:我们如何面对成千上万个SKills,应该如何利用?我认为需要根据自己遇到的问题去索引比较好的Skills,然后再加以改造,为什么?因为从来都不存在两个一模一样的问题,只有相似的问题,可以借鉴,但是不能照搬!