从最早觉得「AI 写代码就是玩具」,到现在日常开发离不开,差不多两年了。这篇记录下我实际的使用场景、提问技巧、踩过的坑和一些个人心得,不吹不黑。
背景
我算接触比较晚的那批人。写了这么多年 Android,习惯的是遇到问题先搜索,StackOverflow 翻一圈,实在不行啃源码。那个年代的排错流程是「报错 → 搜索 → 翻十个链接 → 大半不相干 → 拼凑答案」,一天下来眼睛都是花的。
最早试用 AI 的时候,它给我的感觉就是一本正经地胡说八道,API 是编的、参数是错的,我还得一个个去核对,不如自己查来得踏实。
真正改变想法的是几件小事:
- 一个正则表达式,自己写要调试半天,丢给它 10 秒给出能用的
- 一段五百行的老代码要重构,让它先解释一遍逻辑,比自己啃快多了
- Crash log 直接贴过去,它能把调用链和可能的原因列出来
这两年工具形态也是一路在变:
- 对话式的 ChatGPT:来回复制粘贴,当个高级搜索引擎用
- 补全式的 Copilot:写代码时它在旁边猜你要写什么,Tab 按到手软
- Agent 时代的 ZCode 这类:能自己跑命令、改文件、验证结果,你说需求它干活
形态越往后,对「怎么用」的要求越高,这也是这篇想聊的重点。
我的使用场景
1. 苦力活优先
样板代码、单元测试、gradle 脚本、正则、shell,这类「会写但写着烦」的活最适合丢给 AI。比如 ViewModel + Repository + 测试的整套结构,自己敲要半小时,AI 一分钟出初稿,改改细节就能用。单元测试尤其推荐:Mock 数据、边界 case 这种自己懒得写全的东西,让它枚举一遍,经常能补上自己没想到的坑。
2. 排查问题
以前排查一个 Crash 要翻十个链接,现在把 log 和相关代码一起丢给 AI,它会结合上下文分析,一两轮对话基本能定位方向。上次一个只在特定机型复现的 TransactionTooLargeException,它直接指出是某个页面往 Bundle 里塞了大 JSON,方向一次就对了。方案还是要自己验证,但「翻链接」这个过程是实打实省掉了。
3. 批量杂活
这次整理博客就是典型:64 篇文章里,代码块语言标注有大小写不规范的、有标错的,还有旧主题遗留的语法残留。手工改要一两天,AI 半小时全搞定,改完还顺手验证了构建。这种规则明确、量大、枯燥的活是 AI 的绝对主场。同理还有批量改包名、统一代码风格、老项目升级依赖这类活。
4. 看不懂的代码
接手老项目、看开源库源码的时候,让 AI 先讲一遍整体结构,自己再下进去看细节,比硬啃效率高很多。Dagger 那种生成代码满天飞的框架尤其明显——让 AI 对着生成的代码讲依赖图是怎么连起来的,比自己从 DaggerXXXComponent 里一个一个翻舒服太多了。
5. 学新东西
之前学 Harmony 的时候深有体会:官方文档 + AI 组合拳。文档看不懂的段落直接问,让它换个说法、举个 Android 里对应的例子,一遍就通了。相当于随身带了个不嫌你问题蠢的老师。比自己搜博客强在两点:一是能结合你的上下文解释,二是不会搜到五年前的过时文章。
6. 写文档和周报
技术人最烦的活之一。代码写完了让它根据改动生成注释、README、甚至是周报的初稿,自己再改成「人话」。它写的初稿结构清楚但一股机器味,正好,结构留下,味道自己调。
怎么提问才有效
用久了会发现,AI 输出质量的上限基本由提问质量决定。对比一下:
差的提问:
我的 APP 闪退了怎么办 |
好的提问:
Android 12 上闪退,log 如下(附完整堆栈), |
区别就是上下文。我自己总结的几个要点:
- 环境给全:系统版本、机型、复现步骤、完整的报错,别让它猜
- 约束提前说:「只改这个方法,别动其他代码」「用 Java 不要 Kotlin」「要兼容到 API 21」
- 要过程不要只要答案:让它先分析原因再给方案,方便自己判断靠不靠谱
- 一次只问一件事:一次塞五个问题,大概率每个都答得潦草
踩过的坑
- 幻觉是真实存在的。早期它给我编过一个根本不存在的 Glide API,参数都对得上号的样子,我还真信了,白调试半天。现在凡是它给的 API,拿不准的一律自己查文档
- 过度工程。问个简单问题,它有时候能给一套设计模式齐全的「完美方案」,抽象一大堆,实际业务就三行代码的事。得学会在提问时就约束住:「用最简单的方式实现」
- 会把能跑的代码改坏。让它重构过一个工具类,主体逻辑改对了,顺手把一个「看起来多余」实际在防并发重入的判断删了,测试没覆盖到,上线才炸。它眼里没有「不敢动」的代码,关键逻辑要盯紧
- 上下文会丢。聊了十几轮之后它开始忘记前面的约定,重复问已经说过的东西。复杂任务要拆小,关键约束宁可多强调一遍
- 手感变钝。这个是最近才意识到的:API 细节懒得记了,反正问 AI 快。短期没事,长期看基础的扎实度在下降。现在的对策是核心技能(架构、算法、底层原理)坚持自己写,AI 只接管体力部分
- 代码安全。公司项目的代码往公开的 AI 服务里贴之前想清楚,敏感的密钥、内部协议、商业逻辑能不贴就不贴,或者先做脱敏。这年头数据出了门就不是你的了
- 工具之间会打架。折腾博客时碰到的:本地安全插件把第三方主题里的 MD5 哈希(Gravatar 协议要求的)当漏洞拦下来了,AI 分析说这是误报。机器说是风险不一定真是风险,反过来也一样,最后还是得人来拍板
心得小结
- 把 AI 当一个不知疲倦但需要盯着的实习生,不是当神,产出必须过自己的眼
- 提问质量决定回答质量,上下文给足比什么都强
- 明确、量大、可验证的活放心交给它;模糊的、要拍板的活自己来
- 别跟它较劲。一个问法搞不定就换问法、拆任务,反复追问没有意义
- 每次让它干完活,花两分钟看看它改了什么,看 diff 的习惯比会用 AI 本身更重要
- 最先被省掉的是「查资料 + 拼凑」这部分工作,判断和决策还是自己的。现在写代码和以前最大的区别:以前是手累,现在是脑子累
工具一直都在变,但用法内核没变过:你得知道自己要什么,它才帮得上你。至于它以后会变成什么样,我是挺期待的,至少博客的格式整理这种活,我这辈子是不想再手动干了。