最近把「记账小助手」做到了能提审的版本(现在是 2.1.0)。技术栈很普通:微信小程序、微信云开发、DeepSeek。代码大概四万多行,没什么黑科技。
想写这篇,主要不是炫功能,而是聊聊:跟 Cursor、Claude、Codex 这类工具一起做完整产品时,怎么配合才不容易翻车。
如果你也在用 AI 写小程序,希望能少踩一点我踩过的坑。
和 AI 一起开发的大致流程: 
先看成品长啥样
四个底部入口:首页、账单、省钱、我的。
和市面上记账工具比,我更在意这几件事:
- 首页是月历,点某一天再记,符合「今天花了啥」的直觉
- 结婚、带娃、旅行这种事可以开成「场景」,长期记,还能选要不要算进总账
- 准备花的钱 和已经花出去的钱必须分开,不然预算一填,账本就假了
- 省钱页可以出 AI 分析,但数字要靠程序算准,模型只负责把话说明白
- 后来又加了语音、拍照识图、导入微信/支付宝账单,少一点手动敲
首页 
账单列表 
AI 省钱报告 
图片识别 
有一条我一直没让步:
AI 认出来的东西,只能当草稿。用户点确认,才能真正入账。
不然识别错一次,账本就脏了,后面再准也没用。
开头别急着写代码
项目最早只有一页《策划.md》,写得很口语:Banner、列表切换、结婚礼金、AI 省钱、订阅消息......看着热闹,但很多地方一开发就打架。
比如「把前一天同步到后一天」------改了前一天,后一天要不要跟着变?点两次会不会记两笔?
再比如「场景预算同步到收支」------婚礼预算填 30 万,总不能首页支出直接蹦出 30 万吧?
所以我跟 AI 说的第一句话不是「开始写」,而是:
根据这个策划,先出一份原型文档我看看。
后来又改了一版,规则写清楚了,才让它在这个目录里初始化项目。
回头看,这一步省下的返工,比后面任何一次「帮我优化一下」都值钱。
设计上我认死理的三件事
1. 钱分三种:预算、计划、实际
- 预算:我希望这个月别超多少
- 计划:我预计某天/某月要付一笔(比如婚宴尾款)
- 实际:钱已经花出去 / 收进来了
只有「实际」进收支。计划到期了也不能自动变支出,得用户确认发生。
场景也一样:一笔账最多挂一个场景;有的场景可以不进总账(比如单独盯婚礼),首页会提示「没算上独立场景」。
2. 没准备好的功能,别放按钮
订阅消息模板没配、DeepSeek 密钥没配、语音插件不可用------入口就藏起来,或者直接写清楚「还没配置好」。
最烦的是点进去没反应。用户会以为 App 坏了,其实是你自己没部署完。
3. 写代码以文档为准,别以 AI 的常识为准
业务规则我基本都放在数据层(store 那一层),页面只负责展示和点按。跟 AI 说话时我会反复强调:
按《原型文档》来,别自己发明一套算法。
大概架构 
结构也不复杂:小程序前端,三个云函数(接口、定时任务、AI),数据库按用户隔离。DeepSeek 的密钥只放在云函数环境变量里,绝不进前端包。
我怎么跟这些 AI 工具配合
不是「哪个模型最强就一直用哪个」,更像换工种:
- 改文档、挑逻辑漏洞:Claude / Codex 都行,让它对着策划找矛盾
- 大块功能往下做:还是它们,按版本一点点啃,顺便让它补测试
- 真机出问题、改文案、改提示:我更爱用 Cursor,对着截图改最快
- 换工具接着干:用会话同步把「做到哪了、坑是什么」记一小段,新对话先读再动手
聊天一长,AI 就容易忘事;换个工具更容易断层。所以重要决定我会让它记成短笔记,比如:
- 识图别走「AI 报告」那条长任务流程,单独做一次解析就行
- 用户确认入账时,每条记录自己防重复,别搞成「整批只能提交一次」
- 识图授权和 AI 分析授权要分开------分析页说好了不上传图片,识图却必须上传,混用早晚出事故
跟 AI 说话,我一般怎么说
开新功能时,我会写清楚边界,大概是这种:
text
按《原型文档》某某章节做 xxx。
规则只改数据层和云函数校验,页面别绕开。
没配置好的能力不要放入口。
中英文文案一起改。
做完自己跑测试,别只说「应该没问题」。
真机坏了就更直接:
text
(附图)我点了 A,期望 B,实际变成了 C。
先猜可能是代码问题、云函数没更新、配置没配对,还是微信平台限制。
改得越少越好,别顺手重构。
收尾时:
text
对照原型和 README,列一下:做完了的、代码写了但还没真机验的、明确不做的。
别把「没部署」写成「没开发」。
合作上真正管用的几件事
先文档,后代码
顺序反了会很惨。一旦页面都写完了,再改「计划算不算支出」,那不是改几个文件,是整本账的口径都要重算。
按版本做,别一口吃完
- 1.0:能记、能算、场景和预算跑通
- 1.1:分享导出、定时记账、提醒
- 1.2:AI 省钱和报告
- 2.x:语音、识图、导入账单
每一版我都会写「这版不做啥」。比如 Excel 导出、真 PDF,收益不值成本,直接砍掉,省得 AI 自作主张塞一堆依赖。
少形容词,多截图
「语音不好用」「AI 没出来」------AI 基本帮不上忙。
有效的是:整屏截图、控制台原文、你点的是哪个按钮。
我们真实遇到过:功能本地有,发布后「我的」里看不见 AI 入口。后来发现是上传的还是旧包。于是版本号统一写在一个配置里,「我的」页底部必须能对得上这次上传的版本。
微信的限制,当产品规则写,别当 Bug 修
导入账单时,会先弹出「选择一个聊天」:

很多人第一反应是「咋跳到转发了?」其实是微信规定:小程序选文件,得从聊天附件里挑。正确用法是先把账单发到「文件传输助手」,再回来选。
我们后来把这层说明写进页面和「导入提示」里,比硬刚本地文件选择器管用。

类似还有:订阅消息一次只能攒一条额度;开发者工具开了灰度基础库,插件可能直接挂;有些云开发常量不能当普通字符串去拼。
改账本规则,一定要带测试
AI 「顺手优化」时,最容易把婚礼预算算进本月支出。所以规则一变,测试一起改。项目里一直挂着一串检查:账对不对、同步会不会丢、分享链会不会泄、页面入口齐不齐。
几个后来证明挺值的做法
本地先能用,云用来备份。
不登录也能记账;连上云之后,主要是换机恢复。冲突时不能简单「云端永远覆盖本地」,不然刚记的一笔可能凭空消失。
AI 报告:程序算数,模型写话。
花了多少、占比多少、比上月怎样,全部程序算。模型只在这些数字上写观察和建议;瞎编的数字直接丢掉。模型挂了,至少还能给一份干巴巴的统计,别留白页。
识图别跟长报告挤同一条管子。
出报告可以慢慢跑、可重试、有历史。拍照记账是当场交互,硬塞进去反而各种门禁打架。图片也是传到云里再由云函数下载处理,不拿临时公网链接把账单截图晾出去。
同一操作点两次,不能多出一笔账。
复制昨天、定时补跑、确认计划、确认识别结果......这些都得自己防重复。记账 App 这点要是不严,用户信任一下就没了。
上线前,卡人的往往不是代码
代码测通了,不代表用户能用。我后来列了个很土的清单:
- 云函数上传了没有(尤其是 AI 那个,超时时间别太短)
- 数据库集合建齐了没有,权限对不对
- DeepSeek 密钥配上了没有
- 订阅消息真机能不能弹、能不能收到
- 导出的图片能不能进相册,CSV 能不能用 WPS 打开
- 「我的」里的版本号,是不是这次刚传的包
有次识图一直提示「服务暂时不可用」。前端报错文案很笼统,查下去发现云函数还是旧的,新接口根本没传上去。云端控制台测一下 ping,立刻就能看出来新旧。
所以:功能没出来,先别骂前端,先看看云上是不是还睡在上个版本。
大概怎么走过来的
- 一页策划 → AI 出原型 → 我改规则
- 1.0:四个 Tab 能记能算
- 1.1:分享、定时、提醒
- 1.2:AI 报告
- 2.x:语音、识图、导入,版本到 2.1.0
中间还处理过底部图标全挂、深色模式、中英文文案对不齐、客服改走微信原生会话这类「不算功能但很烦人」的事。
如果你也想这么干,我建议
- 先逼出一页能照着写的原型:概念、页面、这版做什么、明确不做什么
- 技术边界先定死(比如就用云开发、只做人民币、个人账本),少给 AI 自由发挥空间
- 一次只推进一个大目标
- 真机问题务必附图,先分清是代码、部署,还是微信限制
- 重要决定写成短笔记,换工具接着干时先读
- 用测试护住算账规则
不太建议的:
- 一句话「帮我做个记账 App」就指望能上架
- 让 AI 同时加功能、改架构、换全套 UI
- 模拟器能点就当上线了
- 把密钥塞进前端
后面还想做消费画像、账户余额、多人账本之类,但先放着。记得到、算得清、能备份、能分析,比先上花活更重要。
最后
AI 很会把「已经写清楚的规则」铺成代码;人更适合在「规则还没想清楚」时拍板。
这个小程序能从文件夹里两份 Markdown,走到能提审,靠的不是哪一次神级提示词,而是:文档先于代码、版本别贪大、出问题就甩截图、规则有测试托着、上线前把部署核一遍。
你要是也在用 AI 做完整产品,评论区聊聊------你遇到过最离谱的一次「本地好好的,一发布就没了」是啥?