ARTICLE · 993640
AI | 如何少花钱干大事
如各位所见,近期我突然切换了公众号的排版风格。
其实没什么复杂的背景,我把秀米换成了一个自己AI搓出来的排版工具。
过去的操作是:在秀米的模板库中自己搞了一套组合,实际写稿的时候直接在秀米写,然后使用秀米编辑器编辑的同步功能同步到微信公众号和后台。现在的操作是:在本地搓了一个微信公众号Markdown排版工具:本地编辑markdown格式的文本>一键生成排版效果>复制粘贴到微信公众号里面去。
很显然,代码不是我自己写的,都是AI coding的。至于为啥突然切换成了极简风,主要是因为这个风格我好写提示词嘛。
除了排版,最近还写了几个其他的小项目,也算是总结了一些Vide Coding的经验出来。
个人项目省钱至上
对于个人,而且还是一个根本不赚钱的项目嘛,做的时候必须是钱越少越好。既然没有赚钱的可能,那就真的就要疯狂计较Token的花费问题了。
此外,虽然我必须要说的一点是不是一开始就学会Token怎么省了又省的,主要是还是因为公司项目让我试出来了怎么做是很烧Token的,这里还是得感谢一下公司给了我这么好的学习机会。
烧Token第一名:项目目标不明确
我们数分狗人最怕的是什么,是一个不够明确的需求。
我刚开始工作的时候做乙方咨询项目,我当时的老板有过这么一个暴论,刚开始的时候我觉得这是适用乙方的场景的,但是随着工作年限的增加,我越来越觉得这句话具有普世的意义:先有结论后有数据,而不是现有数据后有结论。
我之前在给学生上班课(已经很久没接到学生了,悲伤)的时候会讲这么一个例子:老板要求你分析一下考勤的数据。你要做得事情其实不是去想考勤的数据应该怎么分析,而是应该去想老板为什么让你分析考勤的数据,因为在不同的场景下你要做得事情可能截然相反。
比如第一种场景是老板想裁员,你要拿出的报告是:最近有哪些人经常迟到早退,给老板一个裁员的借口,而不是给老板一个加班卷王的名单。第二种场景是老板想去和投资人吹牛逼,那么这种场景下你给出几个卷王的名单就是有必要的,这说明我们的员工是发自内心的热爱这份工作。然而真实的业务场景下老板大概率不会直说他要干什么,但如果你不能给想老板一个裁员的借口,或者不能给老板一个吹牛逼的资本,老板大概率会告诉你,你分析得不够深入,你再想想呢。
我们人是如何解读出这些冰山下的真实需求的呢,我们可以靠老板在给你布置这项工作时的表情神态或者公司同事近期的一些动向get到这些信息,实在不行还能通过一些同事间的八卦猜到一些模糊的方向。但是这样的信息对于AI来说反而是get不到的。
数据人和数据打交道久了之后很容易忘记数据是对真实世界的映射,但数据不是完整的真实世界,有太多的东西其实在数据之外,而这些在数据之外的东西可能才是决定性的。
再老司机的数分狗都不能保证每次都猜对冰山下的真实意图,AI本质上还是在学习人类,所以今天的LLM再聪明也很难猜测到老板冰山后的真实意图,但是比起人,它可以用更低的代价去穷举所有的可能性,你猜测几轮都没猜中的时候可能会暴躁,但是AI不会,它可以不停地去猜你的真实的意图,直到猜对为止。
省Token的要诀:直接告诉AI你的真实目的是什么。当然如果你有要烧Token的场景的话,也可以反向操作。
烧Token第二名:项目设计有问题
没有明确的目标杀伤力如果排第一的话,那么项目设计本身就有问题绝对能排第二名。
在设计这个微信公众号排版工具的时候我的设计就出现了偏差——没有太去仔细研究我想要的效果是什么,直接告诉AI,我希望和秀米一样的效果。于是AI给我的项目结果在复制粘贴进微信公众号的环节出了点问题——这些UI的小设计微信公众号不识别。
第一次我尝试修复这个问题的时候是直接告诉了AI,现在有什么问题,请AI进行修正,结果是AI修了半天但是最终的效果依然不符合我的需求——HTML代码复制粘贴后给我明码出现了喂!于是浪费了2块钱巨款和一些时间得到了一堆废物。第二次尝试修复这个问题的时候我换了更高级的模型,放弃Cline启动了Harness,结果修复的结果还是不理想——本地渲染怎么看都对,但是复制粘贴后的效果还是会出现一些不该出现的HTML代码。于是又白瞎了两块多的Token。
第三次尝试修复这个问题的时候,我选择先在网页端仔细AI,秀米到底是怎么实现这个效果的,然后拿出来我的需求文档进行比对,很快就发现了问题的关键:我在需求文档里写得是:做一个复制带格式的HTML的功能,点击后可以复制,粘贴在公众号编辑器里。而实际上问题就出现在了复制HTML,因为少了一条在浏览器里面渲染后复制,导致我贴出来的东西都是源码。
毕竟是自己花钱,经历了两次修正失败之后,我发现最一开始对于项目的技术实现方案其实还挺重要的,指望Coding工具自己想明白这些细节和机制还是太牵强了。
经过了这个项目之后,我在自己原有的AI Coding项目中又增加了一些其他的解决方案,实测有效,这让我在搓炒基金小软件的时候没有再次遭遇类似的问题,这个项目复杂程度要高出很多,甚至可以一把过,可以说是非常有用了。
个人项目省Token的第一步就是分清楚什么要钱什么不要钱,所以在正式进入Coding之前的工作都交给网页端对话来做,毕竟网页端不收钱,API就要出钱了。
第一步是以一个需求方的身份向AI描述项目目标,并要求AI把这个需求写成一个需求文档。这个过程比较像需求方给产品经理提初版的需求,产品经理整理会议纪要产出第一轮原型的过程。
接下来就是第二步,我会把修改后的需求文档再次丢给AI,让AI想我提问,我逐个问题回答,再让AI根据我的回答内容更新技术需求文档。这个过程中我会反复切换AI,平时用得比较多的基本就是Kimi和DeepSeek,我就Kimi问一轮改一轮再让DeekSeek问一轮改一轮,一共改了四轮之后我觉得这次需求真的算清晰的。总之就是比较类似我在日常工作中我们拿着原型图的需求方确认细节的过程,一般在这个环节中原始的需求就会发生一些变化。
不得不说,很多问题如果不是AI反问我我自己都没有意识到这些需求细节其实是有点左右脑互博的,但是经过几轮的提问后这个问题我深度反思了自己这个既要又要还要的需求,然后对需求本身做了比较大幅度的调整。
接下来是第三步,我告诉AI,你是架构师,我是产品经理,根据这份需求文档告诉我在实现层面有什么,能不能做到,方案有什么风险,我来给你解决方案。
这里要补充一个细节,拿到AI写好的技术需求文档之后我会按照我的实际情况做下修改,比如我会要求技术栈全部使用Python,倒不是别的不行,主要是这个我真的会,要是 java的话,AI瞎写我并不太能看出来。所以还是那句话,真的0 coding经验的话还是去做vibe coding还是有点难的,AI真正拯救的是我这种有一点底子但不多的人,纯小白和大佬用处都不算大。
在这个环节,AI确实给我提了一些技术问题,不过问题不大,虽然我不能直接给技术方案,但是我知道一些现成的软件嘛。我直接新开一个对话框来确认一下市面上已有的软件是怎么做到的,这个自己搓的炒基金的软件需要一些做账的逻辑,于是我问了AI 用友是怎么实现的,然后回到我的需求文档,把这个解决方案告诉AI。这就像极了产品经理直接告诉你我要和对家一样的效果,然后给你展示了一下对家的界面。
经过这三个步骤之后,一份堪称完美的需求文档就好了,这个过程全部放在web端的对话框进行,因此这个过程中的花费为零。
接下来就是付费的环节了——打开Cline或者Deepseek Harness开始Coding。
AI有时候在一些小问题上反而犯浑
个人项目和公司项目不一样的是,我我真的会大概看一眼AI写了什么再去Approve。
上周的文章中我就提到过我对AI Agent其实没啥信任度。从打工人的角度来说,公司项目其实还稍微可以信任一些:公司都说了能用那我就不额外担心,反正还有公司的权限管控机制给我兜底呢。但是个人项目就不一样了,浏览器中保存了我太多个人账号的信息,怎么能让AI直接读我的Cookie,万一AI拿到了我的密码怎么办?万一读取了我的银行账单怎么办?
公司电脑,我可以大胆的说没有PI的信息,因为按照公司权限管控我就没有权限获取PI的信息,但是个人电脑就不一样了,存储了太多很隐私的文件,我自己都不一定记得自己电脑上到底存了什么东西。
在反复查看AI遇到的问题的时候,我发现几个比较有趣的地方,AI往往在对我来说有点困难报错上没有什么问题,但是反而容易在很小的地方栽跟头。
环境的问题
AI Coding和人类Coding的时候很大的不同点在于,AI会先把所有的代码都写好再去验证能不能跑得动,于是很多人类编程可能一开始就发现的问题AI会到了最后才发现。
前置依赖的包就是一个很典型的例子。
我发现了不止一次AI在执行调试的时候才发现没有安装某一个包,或者哪里的依赖有问题,然后AI开始分析问题原因,尝试去调整,往往很难一次性就修改到位,要尝试几遍才能改对。
于是这里就有一个小技巧,在项目中定义你和AI的关系:AI来Coding,但是一些命令和确认我可以人工确认好直接告诉你。
比如安装第三方的库,请在一开始就告诉我要什么环境什么包,我装好告诉你。这种和本地环境关系比较大的东西,AI会习惯于写一个程序脚本来确定你的本地到底是什么样的,这个过程还是挺烧Token。比如我本地的Python其实是Anaconda,实际上我没咋用Conda环境,装包有时候是Only conda,有时候是直接pip装得,这种小问题就会让AI纠结半天。
当然,直接在需求文档中明确告诉AI我本地的环境配置参数之类的也行,但对我而言这样效率反而低,毕竟这种Coding的需求其实不多。
AI会在神奇的地方幻觉
我的几个项目都需要数据库建表,在这个过程中我发现了很多比较好玩的问题。
A报错说连不上数据库,但是呢,我用得是SQL Server,且是windows认证,这种方法是不需要端口号的,AI纠结了半天为啥连不上数据库。这种小问题看起来就很有意思——大的Coding方面可以一把过,但是居然会在这种简单的地方出错,看起来就很不聪明。倒是也好理解,毕竟是大语言模型,学习的样本中肯定是有端口号的居多,github上应该不太会有我这种直接window认证的的项目才对。
到了新的项目的时候,我就直接告诉AI,你给我建表语句,我在Navicat执行好了告诉你,这样AI就省去了一些代码连数据库连不上的认证的过程。
虽然不写代码,但我好像确实学会了一些
其实在此之前我的软件开发经验为零。
但是呢,光看着AI写代码,我仿佛也学会了一些比较基础的编程概念。比如配置文件写什么,函数怎么拆包之类的,如何做冒烟测试之类的。
让AI来实现我的需求的过程就是一个我一人分饰多角的过程:需求方、产品经理、负责代码审核的架构师。软件项目的需求方我真的做过,但是产品经理类似的职责就只在数据分析的岗位承担过,代码审核相关的职责也是只在数分的项目中承担过。虽然都不是软件开发相关的项目,但是数据分析相关的项目经验可以无缝对接到软件开发类的项目中。
我的感觉是,经验能力的迁移其实比想象中要容易很多,不管合作的对象是AI还是人,换位思考+把事情说清楚都是一样的。
大家都有什么AI coding的省Token的经验分享呢?欢迎评论区讲出你的故事。
下一期,我来讲讲如何烧Token。