当年 GitHub Copilot 刚推出的时候,我花费 100 美刀订阅了一年,那个时候主流的模型还是 GPT 4o,我主要用来补全代码,也就是说,大部分情况下还是自己手写代码,或者问一些技术问题。
后来,Cursor 大火,我也只是简单体验了一下,让它从零生成了一个空白项目。感觉确实很强大,但是一来我的 GitHub Copilot 订阅还没有结束,二来对 AI 写代码的能力还是抱着怀疑的态度,所以没有继续使用。
再后来,Claude Code 大火,但 Claude 的模型实在太贵了,我也没有体验。
直到今年(2025 年)的 11 月,GitHub Copilot 订阅到期,面对新一年的续费 100 美刀,我突然想着要不要更新一下 “AI 栈”,于是开始折腾本地客户端 Cherry Studio,然后配好了 Claude Code + 便宜的 AI 中转站,从这时候,我才真正开始用 Claude Code 写代码。
就只试了一次,我就彻底被它征服。我还为此在个人网站发了第一个想法。
我在划词翻译这个项目上用 Claude Code 写了半个月代码,体验真的很好,效率非常高,人还没那么累。我本来只是抱着试试的心态,可仅仅过了半个月,我就决定未来全面使用 AI 进行编程。半个月的工作量大概花了 100 块钱,我就在想有没有更便宜的渠道,这也是我后来开发模型比价网站的初衷,见一个通宵用各种 AI 工具做出来了全网 AI 中转站比价网站 getcheapai.com。
本来是准备做完了就放着的,没想到放了几天之后,发现这网站居然产生了一些收入,感觉有点前(钱)景,于是问了 AI 下一步该怎么做,AI 说让我先整一个价格趋势,用来看看哪些中转站经常偷摸调价格。
于是就又开始了折腾。
首先第一步就是把原本的 Astro 纯静态架构改成了 Next.js,折腾过程在这里。
然后就是新增了一系列功能,包括:
- 添加了一个模型历史价格页面
- 用 nuqs 将筛选项同步到 URL 的 search params 里,方便用户分享 URL 后能看到同等筛选条件
现在回想一下,即使有了 AI 加持,做这三件事都花了两个星期。这两个星期全程用 AI 写,花费大概在 200 块,不过好在这个网站本身的收入刚好覆盖了这部分开销。
同时,我也确实是想用一个新项目从头体验一下 AI 编程,不得不说还是很有感悟的。
先说结论
AI 能完成 95% 的工作,但总有那么 5% 的工作,它绕来绕去很多遍都解决不了。
一、知识库落后导致生成的代码也落后,但不是啥大问题
Sonnet 4.5 的知识库比现在落后大概一年,这就会导致在遇到一些我使用的第三方库或工具时,它会基于旧的知识(文档、案例、最佳实践)来生成代码,比如:
- 写 Next.js 代码时会用一些在 Next.js v16 里已经不推荐或弃用的做法
- 用 ky 这个库会用上一个大版本的旧参数,但其实我安装的是今年的新大版本,已经没有这个参数了
- 一些涉代码之外的东西(比如 Cloudflare Workers、next-intl)的解决方案也是旧的,所以我一般会让它再通过网络搜索一下,但是网络搜索出来的解决方案也不一定对
也因此,有个叫 Context7 的项目专门用于给 AI 提供最新版的文档。每天可以调用 200 次这个 MCP,但是我还没用过,因为其实真写代码的时候会发现没有用它的必要,如果出错了,AI 会自动读取命令行的 --help 或者我告诉它文档地址,它就会自动改过来。
二、Claude Code 内置的 WebFetch 工具会出错
由于有上面那个问题的存在,所以出现问题时我会直接给 AI 发文档地址,然后让 AI 写代码。但是有一次我无意中发现,AI 杜撰了一句文档里并不存在的话,而那句话其实是错了,然后我问 AI 它是在哪里看到这句话的,它回答:
我引用的那句话来自我之前使用 WebFetch 工具获取的内容,但那是 AI 对网页的总结,不一定是官方文档的原文。WebFetch 工具会用 AI 模型处理网页内容并生成摘要,所以返回的内容可能是改写或总结过的 ,不一定是官方文档的准确原文。
我猜 Claude Code 这么做是为了节约费用,所以用了便宜一点的 AI(例如 Haiku 4.5)摘要文本而不是全部塞给 Sonnet 4.5,而「摘要」就可能会有细节缺失、理解错误等问题,所以当我们让 AI 阅读文档时,如果对准确性要求很高,那么应该多加一句「不要对文档进行摘要,而是完整读取文档全文」。
三、写大而全的代码很好用,但精细、复杂的逻辑搞不定
有几个问题是我用了很多轮次,AI(特指 Sonnet 4.5)都没法解决的问题:
- Next.js 的“闪烁”问题(网页打开后,先看到一个状态,然后又立刻变成另一个状态,导致页面“闪烁”了一下)
- Next.js 的水合问题(Next.js 提示服务器端渲染出来的内容和客户端渲染出来的内容不一致)
- 用 nuqs 将复杂的筛选项同步到 URL 的 search params 当中(每次修改代码必定会导致另一个问题出现)
- 我用 v0.app 生成了一套样式代码,让它扒到现有项目代码中(不过这个需求后来用 Opus 4.5 来做就很完美)
第一个问题最后是我自己修改了代码来解决,但后来发现其实“闪烁”问题其实要解决需要权衡,但是 Sonnet 4.5 没有指出这个权衡,而是不断的在尝试修复。也就是说,AI 把遵守指令放在了第一位,即使这个指令本身可能是错误的。所以后来遇到我没把握的事情,我都会先让它想一遍合不合理。
第二个问题最后也是我自己解决了。
第三个问题我没有自己解决,因为逻辑确实太复杂了,我就反复的让 AI 修复,然后我自己反复的测试,遇到问题了再让 AI 修复,就这么估计轮回了得有二十几次,光这一个功能估计就花了得有 30 块。但也是在这个过程中,我发现我可以安装一个 Playwright MCP,让 AI 自行打开浏览器查看控制台、点击页面按钮、查看网络请求等,这大大提高了自动化的程度。
第四个问题——对啊,其实遇到前面三个问题的时候可以试试 Opus 4.5 的,可是它的价格是 Sonnet 4.5 的 3 倍,太贵了导致我甚至都忘了可以用它试试。
计算一下 AI 到底提升了多少倍的效率
以 getcheapai.com 这个网站为例:
- 界面设计、New API 形式的爬虫、基于 Astro 开发第一版的模型比价功能,
- 我只花了一个晚上,大概 7 个小时,算 1 天
- 自己写的话,算 3 天吧
- 后来发现计算出来的价格跟中转站自己写的价格不一样
- 在 AI 的帮助下,1 天时间理清了这个逻辑并完成了价格计算
- 如果自己想的话,算 2 天
- 这个过程也发现可以让 AI 自己请求接口并分析接口里每个字段的作用以及基于它自己的理解来计算价格,不过它理解的 90% 都是对的,错的那 10% 导致我自己想了一天
- 新增了多语言(中、英、法、西班牙、日五种语言)和多货币(人民币、美元、欧元、日元)功能
- AI 花了 2 天
- 我自己估计得 3 天
- 在添加更多中转站的时候,发现有一些中转站不是 New API 的,所以改进了爬虫,针对不同中转站写不同的价格提取方式,
- 花了 1 天对爬虫进行改造,然后花了 2 天加入了约 8 家不是 New API 的中转站
- 自己写的话,估计得 6 天
- 在把 Next.js 部署到 Cloudflare Workers 上的时候遇到了各种问题,涉及到 opennextjs/cloudflare 的配置、爬虫数据结构拆分成 SQL 表、Cloudflare D1 数据库的使用、Wangler CLI 的使用、写各种数据库一键操作脚本
- 花了大概 3 天
- 这一套我自己来做,我得把所有文档阅读一遍,各种试错,设计表结构都不知道要试多少次错。按 7 天算吧
- 添加了历史价格页面,可以选择多个中转站的多个分组、将复杂的筛选条件同步到 URL 的 search string
- 历史价格页面本身 1 天,筛选条件同步到 URL 这个功能 1 天
- 我自己估计 4 天
所以最终对比是:【AI 花费 150 块钱 + 12 天时间 + 轻松的编程体验(等 AI 的时候我一般在摸鱼,动脑强度较低)】约等于【我自己高强度动脑写 25 天】。
效率提升一倍,且更轻松,代价是 150 块钱,这么一对比,确实值。