AI 结对编程一年的故事
大约一年多前,我开始把 AI 工具带进日常开发流程——最开始是 GitHub Copilot,后来换成 Cursor,再后来是 Claude Code。
这篇文章是一个记录,不是教程。我想写下这段时间里真实发生的事:什么时候 AI 帮了大忙,什么时候让我差点出事,以及最终我的工作方式变成了什么样子。
一、第一个月:什么都想让 AI 写
刚开始用 Cursor 的那段时间,有点像刚买了一把锤子——什么都想砸。
第一周,我让 AI 帮我写了一个 FastAPI 的用户认证模块。30 分钟内,代码出来了,测试通过了,我提交了 PR。当时的心情是:这玩意真的太强了,以后我的效率要飞天了。
然后 code review 的时候,我的同事问:“这个 JWT 签名用的 secret 是从哪里来的?”
我打开代码一看——SECRET_KEY = "your-secret-key-here"。AI 生成的默认占位符,我根本没注意到,直接提交了。
当然那只是测试环境,没有真的泄漏什么。但这件事让我第一次意识到:AI 输出的代码,每一行都需要你真正看明白,不是说跑通了就完事。
关于这类 AI 生成代码中的常见陷阱,AI 编程常见错误与避坑指南里有更系统的整理。
二、第三个月:开始怀疑自己在退化
兴奋劲儿过去之后,我开始有点担心。
有一天,我需要写一个简单的字符串处理函数,脑子里刚想到逻辑,手已经在打开对话框了。等等,我以前可以直接写出来的,为什么现在第一反应是”问 AI”?
这种感觉让我停下来想了一段时间。我做了一个小实验:把 AI 工具关掉一周,只用文档和自己的脑子。
结果很有意思:写代码变慢了大概 20%–30%,但我明显更清楚自己在写什么了。遇到不确定的地方,我会认真读文档,而不是让 AI 给我一个”可能对”的答案。
一周后重新打开工具,我对它的使用方式有了明显变化:AI 是我的第二意见,不是我的第一反应。
三、第五个月:发现了 AI 真正的”甜蜜区”
用了几个月之后,我开始摸出规律——AI 工具不是对所有任务同样有用,有几类任务让我觉得”缺了 AI 简直是折磨”:
正则表达式和格式转换
写一个精确匹配特定日志格式的正则,手写的话我可能要花 20 分钟反复测试。现在我直接描述格式,AI 给出初版,我验证一下就可以了。节省的不只是时间,还有大量的心智负担。
不熟悉的框架的第一步
每次上手新框架,我最怵的是”第一个 Hello World 怎么跑起来”——环境配置、依赖版本兼容性、文件结构……这些 AI 处理得很好,能快速帮我越过”入门门槛”。
进了门之后,深度功能还是得自己啃文档。
重复性代码的生成
数据库的 CRUD、API 接口的 Pydantic schema、单元测试的 fixture——这类代码逻辑不复杂,但写起来枯燥且容易出笔误。AI 在这里的命中率极高,我能把精力留给真正需要思考的部分。
解释代码而不是写代码
有时候接手别人写的代码,逻辑很绕,注释又少。让 AI 解释一遍比自己慢慢读快多了。这个用法其实比”让 AI 写代码”更稳——因为 AI 解释的是已有代码,不是凭空生成。
四、第七个月:一次让我印象深刻的”协作失败”
大概七个月的时候,我在做一个数据处理任务:从外部 API 拉取数据,做清洗和转换,写入数据库。
我把整个任务描述给 AI,让它帮我设计方案。方案出来了,看起来很合理。我开始按照这个方案实现。
实现完一半的时候,我发现方案里有一个根本性的问题:它假设外部 API 的数据量是固定的,而实际上数据量可能超过内存限制。如果按这个方案跑,迟早会 OOM。
回过头来想,问题出在哪里?出在我把任务描述给了 AI,但没有给它关键的约束条件——数据量可能是 GB 级别的。AI 没有任何理由知道这一点,它给出的方案在它的信息范围内是合理的。
这次之后,我养成了一个习惯:在让 AI 做方案设计前,先列出所有约束:
- 数据规模:单次任务 10万–500万行
- 内存限制:容器 2GB
- 延迟要求:允许跑 2–6 小时
- 依赖限制:不能用 Spark(运维成本)
把约束写清楚之后,AI 的方案质量明显提升了。
五、第九个月:切换到 Claude Code,工作流的一次重塑
大概第九个月,我把主要工具切换到了 Claude Code(用 API 中转接入,因为直连网络有时候不稳定)。
和 Cursor 最大的体感差别:Claude Code 更像一个可以执行任务的同事,而不是一个代码补全工具。你可以说”帮我把这个模块的所有函数都加上类型注解”,它会真的去做,不是提示你怎么做。
这个能力让我把一类任务彻底从自己的工作清单里移出去了:机械性的批量修改。
重命名一批变量、统一代码风格、给遗留代码补注释、把 Python 2 语法升级到 Python 3——这些任务我以前会做、但每次都很烦。现在直接交给 Claude Code,我去做别的事。
Claude Code 的 Agentic 工作流和任务执行能力,Claude Code 真实场景任务实践里有具体案例。
六、第十一个月:终于找到我的节奏
到大概第十一个月,我觉得自己摸到了一个稳定的节奏。
AI 工具做什么:
- 所有新功能的初稿(我会重写,但有初稿比从空文件开始快很多)
- 正则、格式转换、算法题的第一版(高命中率场景)
- 批量机械修改(节省大量枯燥时间)
- 代码解释和文档生成
- 单元测试脚手架
我自己做什么:
- 所有涉及安全的代码(认证、权限、加密)必须自己写,或至少逐行审查
- 系统设计和架构决策
- 数据库 schema 设计
- 性能敏感路径的优化
两者协作的节点:
- 我提需求和约束,AI 给初稿
- 我做 review 和修改,AI 根据我的意见迭代
- 最终决策(接受/拒绝/重写)永远是我的
这套分工不是”最优的”,它是”适合我的”。不同人、不同项目类型,最优节奏会不同。
七、对比一年前后的变化
一年过去,我尝试客观地总结一下:
| 维度 | 一年前 | 现在 |
|---|---|---|
| 写代码的速度 | 基准 | +20%–40%(任务类型高度相关) |
| 对 AI 输出的信任度 | 盲目信任 | 有分辨地信任 |
| 代码 review 的习惯 | 跑通就提交 | 看完每行再提交 |
| 工具切换频率 | 频繁 | 稳定在 Claude Code |
| 遇到问题时 | 先问 AI | 先想一下,再决定是否问 |
最大的变化可能是思维方式:我不再把 AI 工具当成”能帮我省事的黑盒”,而是把它当成一个需要你给清晰指令、需要你检查输出的工具型同事。
这个定位转变之后,失望少了很多,也不再觉得”AI 没有帮上忙是因为工具不行”——通常是因为我没有给出足够好的指令或足够完整的约束。
八、相关阅读
如果你也在寻找稳定的 Claude API 接入方式,YoTradeApi 提供国内可用的 Claude 全系列中转,让你专注于写代码而不是折腾网络。