## 我用AI写了个App,省下10万外包费,连程序员朋友都惊呆了
上个月,我做了一件让身边程序员朋友集体破防的事。
我,一个产品经理出身的AI产品创业者,用Claude和Cursor,自己从零写了一个Flutter App。没有外包,没有技术合伙人,前后花了大概两周的碎片时间。
最离谱的是,这个App跑起来了,而且上线了。
先说说背景。我工作了9年,之前在央媒新华网和字节跳动都待过,做产品、做运营、做增长,但从来没写过一行正经的代码。大学学过C语言,但那点东西早还给老师了。
为什么突然要自己做App?因为穷。
去年我启动了一个AI产品方向的小项目,需要一个移动端Demo去验证市场。按行情,找一个独立开发者或者小外包团队,做一个基础版的Flutter App,报价基本在8-15万之间。功能不算复杂,但涉及用户系统、AI对话、数据同步,算下来没有10万下不来。
我当时的心理活动是:10万块,够我买多少GPU算力了?
于是我开始琢磨另一个方案——自己干。
**外包水到底有多深?**
先说说外包的行情,给不了解的朋友科普一下。
一个中等复杂度的Flutter App,如果你找个人开发者,报价通常在5-8万;找小工作室,10-15万;找正规外包公司,20万起步。而且这只是“开发费”,不包含产品设计、UI设计、后端联调、上架审核这些环节。
更坑的是,很多外包项目最后交付的东西,和你的预期差了十万八千里。我在字节的时候见过太多这样的案例——甲方和乙方互相甩锅,项目拖了半年,钱花了大几十万,最后上不了线。
所以当我决定自己做的时候,身边的朋友都觉得我疯了。“你又不会写代码,这不是给自己挖坑吗?”
但我知道,现在的AI工具已经不一样了。
**AI辅助开发的全过程**
我选的技术栈是Flutter,原因很简单:跨平台,一套代码跑iOS和Android,省事。后端用的是Supabase,一个开源的BaaS平台,支持数据库、认证、存储,省去了自己写后端的麻烦。
工具方面,主力是Claude(Anthropic的AI助手)和Cursor(AI驱动的代码编辑器)。Claude负责架构设计、代码生成、逻辑梳理,Cursor负责实际编码和调试。
具体怎么做的?举个真实的例子。
我要做一个“AI对话历史记录”的功能。传统做法:设计数据库表结构 -> 写API -> 前端调接口 -> 渲染列表。对我来说,每一步都是知识盲区。
我的操作流程是这样的:
第一步,打开Claude,描述需求:“我想做一个对话历史记录功能,用户可以看到自己过去所有的AI对话,按时间排序,支持搜索和删除。后端用Supabase,前端用Flutter。请帮我设计数据库表结构,并给出完整的Flutter代码。”
Claude秒回,给出了users表、conversations表、messages表的完整结构,以及Flutter端的Provider状态管理代码、UI组件代码。
第二步,把Claude给的代码复制到Cursor里。Cursor会自动分析代码,提示缺少的依赖包,甚至能一键安装。
第三步,跑起来测试。遇到报错,直接把报错信息复制给Claude,它会分析原因并给出修复方案。比如有一次报“type 'Null' is not a subtype of type 'String'”,Claude一眼看出是JSON解析时某个字段可能为空,让我用??运算符给个默认值。
整个过程,我就像是一个“翻译官”——把我的产品需求翻译成自然语言,让AI帮我写成代码。遇到不懂的概念,直接问Claude:“什么是Provider?”“Supabase的RLS策略怎么设置?”“Flutter的Navigator 2.0怎么用?”
两周下来,我不仅写出了App,还顺带学会了Flutter的基础知识。
**踩过的坑,一个比一个深**
当然,过程远没有看起来那么顺利。有几个坑,我必须说出来,让后来的人少走弯路。
第一个坑:AI生成的代码,逻辑对但风格丑。
Claude写的代码功能上没问题,但UI风格像是上个世纪的。按钮是默认的Material Design,颜色搭配辣眼睛,间距完全不讲究。后来我不得不自己学了一点Flutter的UI布局,把样式调了调。
第二个坑:AI不擅长处理复杂状态。
我的App需要同时管理用户登录状态、对话列表状态、AI响应状态、网络连接状态。多个状态交织在一起,Claude生成的代码开始出现逻辑漏洞——比如用户登出后,对话列表没有清空;网络断开后重新连接,消息发送按钮没有恢复。这些bug花了我整整两天才修完。
第三个坑:AI不知道“常识”。
有一次Claude给我生成了一段代码,调用了某个第三方库的API,但这个库已经两年没更新了,和最新版Flutter不兼容。AI不知道这个“行业常识”,因为它没有实时联网搜索的能力。后来我学会了一招:让Claude给我推荐“最新、最活跃”的库,而不是随便写一个。
**最终成果:一个能用的App**
两周后,我的App终于跑通了完整流程:用户注册 -> 创建对话 -> 发送消息 -> AI回复 -> 保存历史 -> 查看历史记录。功能不算多,但核心链路完整,UI也勉强能看。
我把这个Demo拿给几个程序员朋友看,他们的第一反应是:“你确定这是你自己写的?”当我说出是用AI辅助开发的,他们的表情很复杂,既有惊讶,也有一种“时代变了”的感慨。
更让我意外的是,这个Demo后来被一个投资人看到了,他居然觉得“还挺有意思”,愿意继续聊聊。虽然项目还没拿到投资,但至少省下的10万外包费,已经让我可以多活几个月了。
**给想自己做产品的人几点建议**
如果你也想用AI自己写App,我有几个实操建议:
1. **别从零开始,先找模板。** 去GitHub或者Flutter官方找一些开源项目,跑通之后再让AI帮你改。AI擅长“修改”,不擅长“创造”。
2. **把需求切碎。** 不要一次性让AI写一个完整的App,那是灾难。拆成功能点:登录、列表、详情、设置……一个一个来。
3. **学会提问。** 问AI问题的时候,要提供上下文。比如“我在做一个AI对话App,后端用Supabase,现在需要实现消息实时推送,请帮我用WebSocket实现。”越具体,AI输出越好。
4. **准备一个“救火”方案。** 遇到AI搞不定的bug,去Stack Overflow、Flutter中文社区、或者直接问懂技术的朋友。AI不是万能的,但加上人类的判断力,就接近万能了。
5. **接受不完美。** 自己用AI写的App,可能不如专业开发者写的稳定、优雅、高性能。但没关系,MVP阶段,跑起来比完美重要一百倍。
最后说一句心里话:AI不会让所有产品经理都变成程序员,但它让“不会写代码”这件事,不再是你做产品的障碍。
我现在依然不会写复杂的算法,不会优化内存泄漏,不会设计高并发架构。但我可以用AI,把一个想法变成真实的产品。
这个能力,比省下10万外包费,更让我兴奋。
夜雨聆风