我做出了软件工程最好的Skill
1. 我做出了软件工程最好的Skill
[!abstract] 速览
- 这个skill的目的,是在修改前,可视化的展示他想要修改的界面,逻辑和内容,并且提供给用户修改的窗口,你可以类似低代码的方式拖动界面,询问,注释,或者给他意见。
- 在点开一个修改后,你可以看到这次修改的页面修改内容和逻辑修改内容,也可以看到具体的请求URL等,如果你对这个修改不满意,你可以直接点击删除,把这个修改删掉。
- 同时,你也会注意到有一个「界面上定位的按钮」,他可以直接转跳到对应的界面上,你可以直接得知,这个修改的逻辑,和界面上的对应关系。
- 此外,你还可以看到他新增了什么API,删除了什么API,如果他为了一个功能新增了数十个API,或者给了高权限API,你完全可以在这里就得知。
- 最后,你可以复制所有的修改内容到你的Agent对话中,当然,如果不涉及界面修改,你完全不需要带Json这么大的内容,可以取消勾选,只提供修改意见。
你是否曾经有以下场景
[!danger] 典型翻车现场
User:帮我做一个功能,我需要xxxx,你可以使用xxx,xxx
AI:(一顿忙活),已做好,生成xxx测试
User:你这里怎么做的界面,用户怎么点击呢?你这个功能入口在哪?这个按钮位置不对啊,数据库怎么这样修改?为啥你加入了这些逻辑xxxxx
AI:(又是一顿忙活),已改好,请查收,(输出一大堆看不懂的话)
User:什么意思,说简单点,你这里不对啊,xxxx,(重复数次,崩溃
在过去,我经常使用各种软件工程的Skill,比如matt,pstack等,这些都是非常不错的Skill,对开发也有很大的帮助,但是,过于庞大的代码量修改,让我基本放弃了对AI的代码修改和审计。
这没问题,因为AI写的东西,AI能看懂就行了,问题在于,我很难理解他做了一堆修改会带来什么影响,什么结果。
[!warning] 许愿柳
AI写出的东西,往往像是一个许愿柳,条件越是简单的描述,会带来完全失控的结果,如果你向许愿柳许愿世界和平,他也许会摧毁所有生物来达到和平的条件。
当然,我做的这个Skill并不能解决世界和平,也无法解决许愿柳问题,唯一能做的,是能提前知道他会做什么来完成我的愿望,这有点像是杀戮尖塔的SL。
这个Skill是基于我开发中不断修改反馈而总结而成的,当然,我可以想象到也许早就有人做过部分功能类似的东西,毕竟软件工程也只是一套经验总结,不过我觉得,开源他并没有什么坏处。
这个Skill叫做:show me you want,简称 /smyw
https://github.com/nishuzumi/show-me-you-want-skill
这个skill的目的,是在修改前,可视化的展示他想要修改的界面,逻辑和内容,并且提供给用户修改的窗口,你可以类似低代码的方式拖动界面,询问,注释,或者给他意见。也可以在AI想要修改的任何逻辑上发出疑问并且给出修改界面。
下面会逐步展示这个Skill提供的能力
1.1. 1.整屏线框 + 编号改动
在需求描述完后,改动的内容那个,会按照原型图的方式生成一个画布,并且通过编号标记每一处修改,如果是包含交互的内容,则会有连线将多个画板进行关联。
在点开一个修改后,你可以看到这次修改的页面修改内容和逻辑修改内容,也可以看到具体的请求URL等,如果你对这个修改不满意,你可以直接点击删除,把这个修改删掉。
1.2. 2.批注和移动
当然,单纯的删除并没有什么意义,也许你希望这个逻辑应该是在另外一个板块里面的,你可以点击右上角编辑方案,并且使用拖动的方式,把对应模块移动到其他地方,你几乎可以移动到任何card下面,比如你觉得这个新增的模块应该是另外一个div的子模块或者二级菜单,你可以将它移动过去,或者画布之外,并且通过批注功能,告诉AI应该怎么做。
1.3. 3.更详细的内容
右上角的组件按钮,允许展示所有组件的名称。同时,你也可以看到每一个按钮的详细请求逻辑,他到底调用了什么功能,是否需要用ws优化,这些你都可以详细的给他定义。
1.4. 4.逻辑可视化
如果只是界面,这并不能作为一个好Skill,因此,他还附带了一个流程变化可视化的功能。你可以看到不同部分需要添加或者删除的逻辑。同样的,你也可以点击这些逻辑,给出你的建议,或者疑问。
同时,你也会注意到有一个「界面上定位的按钮」,他可以直接转跳到对应的界面上,你可以直接得知,这个修改的逻辑,和界面上的对应关系。
1.5. 5.后端可视化
此外,你还可以看到他新增了什么API,删除了什么API,如果他为了一个功能新增了数十个API,或者给了高权限API,你完全可以在这里就得知。
同样的,数据库修改也会展示出来。
1.6. 6.组件修改
还记得我一开始说你可以拖动组件的位置吗?不止如此,你还可以修改组件的类型,也许你觉得这个地方应该用多选框,用下拉组件等,你都可以点击修改。
你也可以点击一个修改的窗口,将它变成二级菜单,原来的位置会出现一个按钮,如果你觉得按钮形式不行,你也可以删除这个按钮,连接到其他的那你觉得对的交互处。
1.7. 7.整体修改意见
有时候,你可能有一些总观上的意见,比如信息密度太高,太复杂,等,你可以在最后的反馈Tab提出意见,并且回答AI给你说的一些问题。
[!tip] 只带修改意见即可
最后,你可以复制所有的修改内容到你的Agent对话中,当然,如果不涉及界面修改,你完全不需要带Json这么大的内容,可以取消勾选,只提供修改意见。
1.8. 8.多页面支持
有时候,一次修改也许并不单单是一个页面,他可能是涉及到多个页面的复杂功能逻辑,因此,这个Skill提供了一个无限画布,你可以在这个画布上看到所有的页面修改内容
这个Skill当然还并不非常完善,介绍的能力也只是冰山一角。不过对于我来说,他已经到了一种让我激动的地步,发出来这个东西,也主要是想看看,不同的开发者,是否还有不同的反馈和需求。
不过这是我目前来看,最能满足我所有需求的Skill了(单纯软件开发来说)
[!info] 预测未来
解决许愿柳难题是非常困难的,但是如果知道会发生什么,也算是一种预测未来了,在时间线还没有发生的时候,做一些改变,也许会比反复修改方便的更多。
其实,很多东西都可以使用大量的Plan,或者细致的提示词来修改,可惜我有一点点成人ADHD,再加上快节奏时代下,我无法细致的做到很多事情,与其跳出舒适区,还不如把舒适区变得更大,这就是这个Skill想要做到的东西