上周我又犯病了。下班回家打开电脑,想随手做个小工具,就是输入一个网址、让模型帮我生成一段推广文案那种。
听起来半小时能搞定对吧。结果我折腾到半夜,充的二十来块钱token莫名其妙烧得差不多了,工具界面还土得像2005年的个人主页。
我当时第一反应是模型变笨了。后来冷静下来翻日志才发现,根本不是模型的问题,是我把该放后端的活全硬塞进了前端,一通乱来。
这篇就把这次拆分决策完整复盘一遍,不讲那些虚的架构名词,就说人话:做vibe coding小工具的时候,哪条逻辑放前端会翻车,哪条非得有后端兜着。
先说那个反常识的结论:界面土和token烧光,常常是同一个病
我一开始也是这么想的,小工具嘛,纯HTML、JS、CSS一把梭,不需要什么后台。V2EX上有位老哥做网站流量评级工具就是这个路子,源码全是前端,在线的也不需要后台,确实轻快。
但他那个工具是纯计算、纯展示,不碰模型、不存数据,所以没事。我的不一样,我要调模型。
区别就在这。
我当时图省事,直接把模型的调用逻辑写进了前端的JS里,key也顺手贴上去了。这就埋了两颗雷。
第一颗是安全雷:前端的代码谁都能扒,key等于明着挂在网上,被人刷爆只是时间问题,这才是token莫名其妙烧光的真实原因,不是模型变贵了。第二颗是精力雷:因为所有逻辑都堆在前端,我一整晚都在跟JS里的异步、报错、跨域死磕,根本没余力去管样式,界面能不土吗。
说白了,界面土和token烧光,很多时候是同一个病的两种症状——你把前端当成了什么都往里塞的筐。
哪些活放前端,我现在很笃定
踩完坑我重新画了条线。能放前端的,我总结就三类,特点是「见光死也不怕,算错了也没大损失」。
一是纯展示和交互。按钮、表单、页面布局、结果渲染,这些本来就是前端的本职,放这儿最合适。
做好之后用Web应用托管直接发出去,省得自己折腾服务器和部署,这部分我后来做得特别爽。
二是简单的即时计算。比如输入框里实时算个字数、做个单位换算、前端表单先校验一下格式对不对,这些不涉及任何敏感信息,也不需要存下来,放前端又快又不花钱。
三是无所谓被看到的逻辑。前端代码是公开的,所以凡是你不介意别人抄走的部分,放前端没问题。
那位老哥的流量评级工具就是典型,逻辑本身就是公开算法,别人看到也抄不走他的运营。
判断标准就一句话:这段逻辑如果被用户看光了、或者被人恶意多点几下,你会不会心疼。不心疼就放前端。
哪些活必须Python后端兜底,别省这一步
反过来,有几类活我现在是铁了心放后端,省了迟早要还。
最硬的一条是模型调用。模型的key绝对不能出现在前端,必须在后端藏好,由后端去调模型、再把结果吐给前端。
VicroCode的模型中心API就是干这个的,应用通过它调平台已接入的模型,key不落到用户那一侧。你可以把这段调用逻辑用Python在线运行先跑通,确认请求和返回都对了,再接上前端。
我那晚要是一开始就这么拆,二十块钱根本烧不掉。
第二条是需要存下来的数据。用户的历史记录、生成结果、偏好设置,凡是刷新页面还得在、换个设备还得在的,前端存不住,必须落到数据库。
小工具用SQLite就够了,轻、快、不用额外伺候。调试的时候直接用SQLite编辑器把表拉出来看一眼,字段对不对、数据进没进,一目了然,比在代码里瞎print强多了。
第三条是任何你不想公开的核心逻辑。你的提示词怎么拼、业务规则怎么算,这些要是放前端就等于白送。
有个帖子说得挺实在,现在连整套agent加workflow加prompt都能打包交付了,点子越来越容易被抄。那你更得把真正值钱的那部分藏在后端,别人扒不到。
还有一条我额外补一句:别让模型在那儿空转烧钱。我看到有人项目动不动跑一小时,查下来是AI加的测试全是串行的,一层分类一直往里堆,越跑越久。
token和时间就是这么悄悄没的。后端逻辑该精简就精简,别让它替你偷偷花钱。
一个你能直接拿走的判断框架
我把这次复盘压成了三个问题,下次做小工具之前,每条逻辑都过一遍:
第一问,这段逻辑被用户看到源码,会不会出事?会,就放后端(key、提示词、核心算法都在这)。
第二问,这个数据刷新页面还要不要?要,就得有数据库,放后端存。
第三问,这段逻辑被人恶意多点几下,会不会花我的钱?会(比如每点一次就调一次模型),就必须经过后端,顺便做个频次控制。
三个问题但凡有一个答「是」,这段逻辑就别留在前端。剩下那些纯展示、纯交互、算错了也无所谓的,放前端轻装上阵。
这么一拆,我后面再做工具的节奏完全变了。前端只管好不好看、顺不顺手;后端通过模型中心API管好模型调用,数据落SQLite,端点托管起来对外提供能力。
界面有精力打磨了,token也不再往外漏。
最后给个能马上做的小动作
别等做完整个工具才想起拆分。打开你手头正在搞或者打算搞的那个小工具,就花五分钟,把里面每一段逻辑拎出来,用上面那三个问题各问一遍,在纸上分成「前端」和「后端」两列。
我敢打赌,你会发现有一两条你本来想当然放前端的东西,其实早该挪到后端去了——尤其是那条调模型的。先把这条挪了,你这个月的token账单可能就不一样了。