1. 一个没有代码经验的人,两周做出内部系统
1.1 从质疑到真香:真实场景复盘
上个月,我们组有位做运营的同事提了个需求:想把散落在各个表格里的客户反馈自动汇总、去重、生成周报,还要能按产品线筛选。放在以前,这种需求要么排到开发组的任务列表里等两三个迭代,要么就用笨办法每周手动复制粘贴,一次性干四五个小时。
当时我正在试一套新的开发方式——CLI加SKILL的组合。我就跟这位同事说,要不你自己来?她第一反应是:"我又不写代码,怎么自己来?"我说你不用写代码,你负责描述需求、验收结果,剩下的交给命令行和技能包。结果真的只用了两周,她在非全职投入的情况下,把一个小工具从零搭到了可用的程度:数据能自动抓取、清洗,周报能按模板生成,界面虽然朴素但完全够用。
这个事儿给我的冲击挺大的。做技术这些年,我见过太多"人人都能成为开发者"的口号,但这次是真看到一个不写代码的人,在以全栈开发的完整链路跑通一个项目。整套流程里她没写过一行业务代码,靠的就是一套CLI命令行入口加上预先封装好的SKILL技能包。
1.2 CLI+SKILL到底是什么,和"让AI写代码"有什么区别
先说CLI。CLI就是命令行界面,以前是程序员专用的黑窗口,要记各种命令参数。但在这套新玩法里,CLI变成了一个"总控制台",你可以用接近自然语言的指令去创建项目、调用功能、查看状态、触发构建。本质上它仍是命令行,但理解能力大幅增强,不再要求你背参数,说人话就能驱动。
SKILL稍微绕一点,但可以理解成"预先封装好的能力包"。一个SKILL不是一个函数,也不是一个插件,而是一整套带目标、带步骤、带输出规范的工作流描述。比如"做一个带增删改查的后台管理界面"就可以是一个SKILL,它内部定义了要生成哪些页面、数据表怎么设计、接口怎么组织、权限怎么接,以及最终的验收标准。你不需要理解这些步骤的细节,只需要知道这个SKILL能产出什么结果。
所以CLI+SKILL和普通的"让AI写代码"有一个本质区别:普通的AI编程是你描述需求,AI现场给你编一段代码,结果好坏完全拼运气;而CLI+SKILL是先有人把成熟的项目范式拆解成技能包,再通过CLI调度,把"从需求到可运行系统"的整个流水线拉通。前者是让AI帮你写作业,后者是给你一套已经验证过的生产流程。
2. 交互方式的重构:为什么偏偏是CLI和SKILL
2.1 CLI的价值:人可以随时接管
过去几年,图形界面把很多工具变得"友好"了,但图形界面有个天然的短板——它是给人操作设计的,不是给自动化设计的。按钮的位置、表单的交互、页面的跳转,每一步都依赖人眼去找、去点。当你要做的是一个完整项目,动辄几十个步骤,纯靠图形界面操作会非常痛苦。这也是很多低代码平台做到后面越来越重的原因:为了照顾"不写代码的人",堆了一大堆可视化配置,最后配置本身比写代码还难学。
CLI走的是另一条路。它把所有操作收敛成一个连续的、可记录、可回放、可修改的指令流。想初始化项目,敲一条命令;想注入某个SKILL,再敲一条命令;想查看当前生成结果的状态,还是命令。每一条命令做了什么、输出是什么,都有明确的记录。这对于新手有个隐藏好处:你永远知道自己刚才做了什么,出问题的时候可以回溯,而不是在十几个页面里找刚才手滑点了哪里。
CLI还有一个更重要的价值:人可以在任何一环接管。比如AI生成的页面结构你不满意,你不必退回重来,直接在命令行里指出来哪里要改,CLI会定位到对应的环节重新执行。这种"人机协作、随时干预"的体验,是传统的"提交需求等结果"模式给不了的。
2.2 SKILL的价值:把领域经验塞进一个包里
SKILL的本质是显性化的工程经验。一个优秀的全栈开发者在做一个后台管理系统时,脑子里会有一套固定的流程:先设计数据模型,再搭接口层,然后是页面框架、表单组件、列表组件、权限校验、部署配置。一个新手在做一个类似系统时,可能先想着"我要一个好看的登录页",然后从界面开始倒推,结果做到一半发现数据接口没规划,推倒重来。
SKILL解决的就是这个落差。它把老手的完整思路固化成一份结构化的指导文档,告诉执行者:你可以按这五个阶段推进,每个阶段需要输入什么、输出什么、用什么方式去实现、有哪些雷区。AI执行SKILL的时候,不再是凭空生成代码,而是照着这份成熟路径一步步落地。所以SKILL的质量,直接决定产出质量。社区里那些口碑好的SKILL,往往是从大量真实项目中提炼出来的,该考虑到的边界条件都考虑到了。
你可能会问,这跟"AI通过海量代码学习出来的模式"有什么区别?区别在于,AI学到的模式是统计意义上的平均,而SKILL是经过人工筛选、整理、验证过的确定方案。前者像让一个没读过菜谱的人凭经验炒菜,味道时好时坏;后者像拿到了一份名师写的标准菜谱,每一步都有章可循。
2.3 两者连起来后的运行链路
CLI和SKILL一旦连起来,整条链路就非常清晰了。你在CLI里描述需求,CLI会先做意图分析,判断这个需求涉及哪些领域、适合调用哪个SKILL组合。然后它会解析你的自然语言,填充SKILL需要的输入参数。接下来SKILL会加载自身包含的执行方案,把任务拆分成阶段任务,逐步调用底层的生成引擎去产出代码、配置、文档。CLI全程负责状态管理和可视化反馈——生成到哪一步了、有没有报错、哪里和预期不符。
用一句话概括:CLI是调度中枢,SKILL是知识库,底层生成引擎是执行力。三者组合,让"零代码开发"从"给AI布置写代码的任务"升级成了"指挥一条现成的流水线为你生产软件"。
我最早接触这个概念时也怀疑过,这是不是把"全栈开发"这几个字贬值了。但用下来之后我改变了想法:全栈开发原本就不等于"记住所有API和框架特性",它更接近"知道一个完整应用由哪些部分组成、各部分如何协同、如何从想法走到交付"。这正是SKILL正在做的事——它不替你做决定,但把你需要理解的那套体系,浓缩成了可操作的工作流。
3. 实操复现:CLI+SKILL零代码搭一个完整应用
现在我把这套流程的实操过程拆开来讲。为了说得具体,我以一个虚构的场景为例,假设我们要做一个"小型二手图书登记系统",需求包括三块:图书信息的增删改查、按类别和状态筛选、导出成Excel。整个过程里,我们不直接写任何业务代码,只和CLI交互,选择SKILL,验证产出。
3.1 明确需求并拆成SKILL可覆盖的环节
这一步是唯一需要"人来动脑"的地方。SKILL再怎么强大,它不能帮你决定你要什么。我在实际引导那位运营同事时,第一步就是让她用大白话把需求写下来,然后一条条确认:"数据从哪来""谁能用""数据要存多久""导出文件要什么格式"。这些问题的答案,会变成SKILL配置里的核心参数。
拆解的时候有一个技巧:把需求映射到通用的工程模块上。二手图书系统看似很具体,但剥开来看,无非是"数据模型+增删改查接口+页面列表+表单+筛选逻辑+文件导出",这在软件工程里是最经典的标准范式。一旦你意识到自己的需求可以映射到通用范式,你就知道应该去找哪个SKILL,或者需要哪几个SKILL叠加。
所以我会建议新人:不要一上来就描述"我要一个好看的二手书网站",而是说"我需要一个支持图书信息的增删改查、带分类筛选和导出的管理后台"。前一种描述,SKILL很难判断你到底要什么;后一种描述,所有执行者都能快速对齐目标。
3.2 挑选与组合SKILL包
在这个虚构流程中,我们通过CLI查看当前可用的SKILL列表。命令大概是这个样子:
skill list --category backend skill show crud-service skill show web-admin核心思路是选择合适的SKILL组合:一个负责后端服务,一个负责管理端界面,必要时再加一个负责数据导入导出。CLI会显示每个SKILL的适用场景、输入要求、输出产物清单、依赖项和维护状态。这一步很像装修时选施工队:你不需要会砌墙,但你要看得懂报价单和工作范围。
组合SKILL时要注意依赖顺序。比如"web-admin"可能依赖"crud-service"提供的接口规范,所以要先初始化后端SKILL,再初始化前端SKILL,顺序反了会导致接口对不上。这个依赖信息,CLI会在你执行组合命令前做校验并提示。所以哪怕你不理解技术细节,只要按提示走,基本不会出大问题。
3.3 用CLI发起生成与迭代
选定SKILL之后,生成动作就很简单了。一条命令就能发起整个链路的执行,例如:
app init book-registry \ --model Book \ --fields "title:string,category:string,status:string,published_year:int" \ --skill crud-service \ --skill web-admin \ --skill excel-export这里做的其实是两件事:第一,告诉CLI你要建一个叫book-registry的项目;第二,把数据模型的关键字段传给SKILL作为输入。至于数据表怎么建、接口怎么写、页面长什么样,都不是你该操心的。CLI会调用执行引擎,把两个SKILL的工作流跑完。
跑完第一轮之后,你会得到一个基础可运行的系统。但几乎不可能一次就完全满足需求。迭代才是真正体现这套模式优势的地方。你不需要翻阅代码去找改哪里,直接在CLI里说出你的修改意见:
app adjust book-registry "筛选区域增加一个按年份范围筛选的功能,导出Excel时增加一列备注信息"CLI会根据你的描述定位涉及修改的模块,重新调用对应SKILL的局部流程,在保留其他部分不动的前提下完成修改。这个过程和你跟开发提需求很像,但反馈周期从按天变成了按分钟。
我在实测中观察到,使用这套模式做出来的应用,前三次迭代往往效率提升最明显。因为第一轮生成的是通用骨架,你的需求差异基本都要靠第二、第三轮调整来补齐。到了第四轮之后,边际收益就小了,因为剩下的多是细节偏好,SKILL的标准范式覆盖不到。
3.4 验收、部署与交付
生成和迭代之后,还有一个容易被忽略的环节——验收。不写代码不代表不用看结果。CLI提供了一套简单的检查命令:
app inspect book-registry app test book-registry app run --port 8080inspect会输出这个项目包含哪些模块、每个模块的状态、是否有未完成的工作流;test会执行SKILL自带的验证用例,确认核心功能没有断裂;run是起一个本地环境,让你在浏览器里实际点一点。到这个阶段,不写代码的人也能像产品经理一样,对着真实页面一条一条过需求。
验收通过后,部署命令通常是封装好的:
app deploy book-registry --target productionSKILL里已经包含了部署相关的配置逻辑,你不需要理解服务器、域名、进程管理这些概念,CLI会做环境检查,遇到网络端口被占用等常见问题,它会直接提示并给出修复建议。整个过程下来,你会发现你的角色变成"提需求、做验收、做决策",而不再是"打字写代码"。
4. 实测之后,这几个坑需要提前知道
4.1 需求描述容易踩的两种极端
第一个坑是把需求说得太"形容词化"。"做一个高端大气的图书系统""界面要现代一点"——这类描述,SKILL没法落成参数。所谓"高端大气"在不同人眼里是截然不同的东西。后来我们发现,最好的需求描述方式是:给一个参考物的方向,加一堆具体功能点。告诉CLI"整体风格类似常见的后台管理界面,左侧菜单、右侧内容区"比单说一句"大气"有效得多。
第二个坑则相反,太纠结于实现细节。"数据表要用外键关联""接口要返回嵌套JSON""前端用某个特定框架"——如果使用者本意是零代码,说这些话反而会干扰SKILL的标准流程,可能导致生成结果在某些不重要的地方偏离常规。你只需关心"要什么功能、数据怎么流转、谁在什么条件下使用",把实现方式交给SKILL去判断。
4.2 SKILL包的质量分层明显
现在能看到的SKILL生态已经有开源社区和商业维护两种来源了。质量好的SKILL,说明文档详细、依赖关系清楚、失败时还自带兜底策略;质量差的,可能只是一个空壳,生成到一半就会因为各种隐性依赖中断。我踩过一次坑:装了某个看起来很全能的SKILL,结果它和底层的生成引擎版本不兼容,前前后后排查了半个小时,最后还是换成了社区更常用的替代包。
选SKILL的经验,和我以前选开源库差不多:先看维护活跃度和示例项目,再看最近版本的更新时间,然后在小项目上试跑一遍,确认输出质量合格再往正式需求上引。CLI自身其实也有个"SKILL兼容性检测"机制,在init之前会检查依赖冲突和版本要求,但它的检查范围毕竟是有限的,最稳妥的还是先在测试目录里跑一次。
4.3 不写代码,但"看错在哪"的能力还是要有
这里说的不是看懂代码,而是看懂日志和报错信息。CLI在生成过程中如果遇到问题,会输出一段错误描述,用词不一定高深,比如"生成到第3步时依赖服务未启动"或者"字段类型与SKILL要求不符"。你要是连这种信息都不愿意看,碰到问题就只能干瞪眼。
我把这套能力和"开车不看仪表盘"做了类比:你不需要会修发动机,但至少得能看懂转速表和故障灯,知道什么时候该靠边停车、什么时候该联系救援。同理,用CLI+SKILL做开发,你不需要会改代码,但要看懂错误提示,能把问题截图、把完整日志贴回去,跟社区或同事求助的时候才能把上下文说清楚。
我在陪同事跑那个内部工具的初期,专门花了一天教她看CLI输出的状态标志:哪些是普通信息、哪些是警告、哪些是阻塞错误。这一个小时的成本,在后续两周里帮她省了至少三倍的时间。熟练之后,她甚至能根据错误提示自己在CLI里发起修复指令,已经不太需要我这个"翻译"了。
5. 当人人都能成为全栈开发者,我的几个真实体会
5.1 岗位分工在变化,但核心能力在迁移
这套模式流行起来后,我看到很多人焦虑"程序员是不是要失业了"。我觉得这个焦虑方向搞反了。正在被淘汰的不是程序员,而是"只会按指令写代码、不思考业务价值"的岗位。反过来,那些真正懂业务、能把模糊需求梳理成清晰规格、会做抽象和拆解的人,无论他是技术背景还是业务背景,身价都在涨。
我在组里观察到的变化很直观:过去是运营整理需求、开发评估排期、产品画原型、测试再介入;有了CLI+SKILL之后,一个懂业务的运营可以直接出一版可用的系统原型,开发和产品再在原型基础上做加固和扩展。链路变短了,沟通损耗也明显下降。
5.2 现在就可以开始的小动作
如果你对这个方向感兴趣,我的建议是从一个最小的模拟项目开始,切身体会一下完整链路。不需要选多复杂的业务,我常说"图书登记""访客记录""待办清单"这类经典小系统就足够了,它们的共性是有清晰的数据结构、标准化的增删改查、以及可扩展的展示方式。跑通一个,你就建立了对这套模式的整体手感。
更关键的是,在跑通之后回过头来复盘一遍:当初那个需求描述,有哪些信息一开始没给够?SKILL的哪些默认约定出乎意料?如果不是零代码,而是会一点编程的开发者来用,能在哪些环节把CLI生成的结果改得更贴近业务?带着这些问题再用几次,你就不再是被工具牵着走,而是真正在驾驭工具。
5.3 一个诚实的边界提醒
最后说句泼冷水的话。CLI+SKILL解决的是"标准需求标准化实现"的效率问题,但它没有也不能解决所有问题。高度定制化的业务逻辑、复杂的权限体系、极端性能要求、跟老系统深度集成,这些场景依然需要专业的开发能力介入。如果哪个方案号称"什么都能零代码搞定",从我的经验看,通常意味着它的动用场景边界藏得很深,等你在交付前夜才发现就晚了。
理解这个边界,反而能帮你用得更踏实。把CLI+SKILL当作一条"快速到达50分"的捷径,然后在这个基础上,让更专业的人和你的业务一起把它打磨到90分,这才是它最合理的位置。我自己现在的习惯是:所有内部工具、原型验证、给团队自用的低并发系统,全部交给CLI+SKILL;但凡要直接面对外部用户、承载核心业务流程的系统,我还是会找有开发经验的同事做一次完整评审。
这套模式最好的地方,是把"成为开发者的门槛"从"会不会写语法"换成了"会不会拆解问题"。后者恰恰是每个岗位都在用的通用能力。我身边越来越多非技术背景的同事因此敢碰开发这件事了。用不用它是一回事,知道自己本来就有能力用它,这两周的体验本身就是难得的底气和参照。