<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>迭代开发 on 张欣耕的个人博客</title><description>Recent content in 迭代开发 on 张欣耕的个人博客</description><link>https://shanechang.com/zh-cn/tags/%E8%BF%AD%E4%BB%A3%E5%BC%80%E5%8F%91/</link><language>zh-cn</language><lastBuildDate>Mon, 20 Oct 2025 00:00:00 GMT</lastBuildDate><atom:link href="https://shanechang.com/zh-cn/tags/%E8%BF%AD%E4%BB%A3%E5%BC%80%E5%8F%91/index.xml" rel="self" type="application/rss+xml"/><item><title>别再让AI重写你的整个代码库了, 快把主动权拿回来!</title><link>https://shanechang.com/zh-cn/p/ai-coding-assistant-control-workflow/</link><guid isPermaLink="true">https://shanechang.com/zh-cn/p/ai-coding-assistant-control-workflow/</guid><description>&lt;img src=&quot;https://shanechang.com/_astro/cover.BM4Cr2x1_Z1Oh5sq.webp&quot; alt=&quot;Featured image of post 别再让AI重写你的整个代码库了, 快把主动权拿回来!&quot; /&gt;&lt;h2 id=&quot;400美元的灵魂拷问&quot;&gt;400美元的”灵魂拷问”&lt;/h2&gt;
&lt;p&gt;曾经, 为了追赶AI开发的潮流, 我豪掷200美元开通了Cursor的最高档订阅, 外加每月400刀的API额度。听上去很阔绰对吧?&lt;/p&gt;
&lt;p&gt;结果呢?两周, 额度就光速见底。&lt;/p&gt;
&lt;p&gt;后来我的写码时间, 得看API额度吃饭。你能想象吗?我本来是那种想写就写, 写到天荒地老的人, 结果每天像守着余额不足的银行卡一样, 反复刷新用量面板, 生怕哪天突然弹窗说”额度已用完, 请充值”。&lt;/p&gt;
&lt;p&gt;可钱花了还不是最扎心的。最难受的是——原本设计得井井有条的代码, 被AI搅成了一锅大杂烩, 自己都快认不出来了。&lt;/p&gt;
&lt;h2 id=&quot;你的好方案-ai一上手全乱了&quot;&gt;你的好方案, AI一上手全乱了&lt;/h2&gt;
&lt;p&gt;想象下, 你精心设计了一套系统, 架构, 模式, 类型体系都规划清楚了。这不是随便玩玩, 而是要上线, 要扩展, 要真用户用的。&lt;/p&gt;
&lt;p&gt;于是你把计划一五一十讲给LLM助手听, 信心满满地期待它来”锦上添花”。&lt;/p&gt;
&lt;p&gt;结果, AI啪地甩你500行代码。&lt;/p&gt;
&lt;p&gt;乍一看, 好像能跑?但细读下来:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python类型注解都乱七八糟, 到处是裸&lt;code&gt;dict&lt;/code&gt;, &lt;code&gt;list&lt;/code&gt;, 你需要的是强类型啊兄弟!&lt;/li&gt;
&lt;li&gt;数据传来传去全是原生JSON, 查个问题跟走迷宫似的&lt;/li&gt;
&lt;li&gt;“关注点分离”是啥?AI直接一锅端, 所有逻辑全堆一个函数里&lt;/li&gt;
&lt;li&gt;整个架构像被扔进搅拌机, 打成了”AI特调思慕雪”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你还不死心, 想着”没事, 我让它帮我修一下这些问题”。&lt;/p&gt;
&lt;p&gt;然后——AI干脆全盘重写。&lt;/p&gt;
&lt;p&gt;这回类型注解过于吹毛求疵, 17个helper函数你只用得上仨, 原本能跑的逻辑全没了, 换上了隐藏更深的bug。最可怕的是, 这20分钟内你已经经历了4次”推倒重来”, 连最初的代码长啥样都忘了。&lt;/p&gt;
&lt;p&gt;你坐在电脑前, 内心OS: 我的方案呢?为什么我的方案没了?&lt;/p&gt;
&lt;p&gt;相信我, 这种”心有余而力被AI毁”的感受, 绝对不是你一个人。很多开发者都因此差点把AI助手拉黑 (包括我) 。&lt;/p&gt;
&lt;h2 id=&quot;真正的问题-其实不是ai&quot;&gt;真正的问题 (其实不是AI)&lt;/h2&gt;
&lt;p&gt;最后我想通了: LLM其实没啥写代码的毛病, 甚至很能干——前提是你给它画好范围, 说清楚规则。&lt;/p&gt;
&lt;p&gt;问题在于, 我总让它”一上来就开工”。&lt;/p&gt;
&lt;p&gt;你可以把AI想象成一个刚入职的新同事。你刚提个需求, 他转身就重写你整个认证系统, 连方案都不和你讨论一句。你会怎么做?当然是让他停下, 先聊聊思路, 评估下优劣, 看看和现有架构能不能兼容。&lt;/p&gt;
&lt;p&gt;但用AI助手时, 我们常常跳过了这一步。问题一描述, AI立马coding, 连个设计讨论都省了。你们团队的约定?历史包袱?未来维护成本?AI统统不知道。&lt;/p&gt;
&lt;p&gt;于是灾难开始:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A文件有个小小的架构瑕疵&lt;/li&gt;
&lt;li&gt;B文件依赖A, 问题被放大&lt;/li&gt;
&lt;li&gt;C文件又基于B, 表面能跑, 实际一碰就碎&lt;/li&gt;
&lt;li&gt;你看着几千token生成的代码, 最后全得删了重写&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;拯救自己-三步聊透-最后才动手&quot;&gt;拯救自己: 三步聊透, 最后才动手&lt;/h2&gt;
&lt;p&gt;折腾了几个月, API额度被榨干, 我终于琢磨出一条金科玉律, 简单得让人拍大腿:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;先讨论, 后决策, 最后才动手。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;简单说: 让LLM先跟你聊明白了解决方案, 没你点头, 谁也别乱改代码。&lt;/p&gt;
&lt;p&gt;这其实就是三轮对话——三步走, 既能让你掌控全局, 又能让AI发挥长处。&lt;/p&gt;
&lt;h3 id=&quot;第一步-先认识一下我们家规矩&quot;&gt;第一步: “先认识一下我们家规矩”&lt;/h3&gt;
&lt;p&gt;第一轮对话, 重点不是解bug, 而是给LLM”入职培训”——让它搞清楚你项目的架构, 设计模式, 底层哲学。&lt;/p&gt;
&lt;p&gt;我的惯用开场白:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light-default github-dark-default&quot; style=&quot;background-color:#ffffff;--shiki-dark-bg:#0d1117;color:#1f2328;--shiki-dark:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;需要你帮我优化代码, 关注类型注解和更优雅的实现方式。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;我们采用迭代模式: 每个问题都先讨论, 敲定方案, 我说&quot;可以上手了&quot;你才能修改代码。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;讨论期间禁止动代码, 必须明确允许才能操作。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;下面是整个项目架构: @project_big_picture.md&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;当前任务: 先整体了解项目, 全局观有了再聊具体问题。&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里的”project_big_picture.md”就是你的”新同事入门手册”, 既有架构图, 也有设计理念, 还带文件结构和重点原则。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;文档里该写啥?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;就当你新招个同事第一天上班, 你会让他:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;明白架构全貌&lt;/strong&gt;: 模块怎么分层 (我常画点ASCII图)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;了解常用设计模式&lt;/strong&gt;: 比如”数据库操作都用repository”, “强调不可变数据”等&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;熟悉文件/目录作用&lt;/strong&gt;: 每个文件负责啥, 模块间怎么协作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;知晓设计哲学&lt;/strong&gt;: 为什么要这么做&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;划清红线&lt;/strong&gt;: 比如”必须类型严格”, “错误处理要显式”等等&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;举个栗子 (假设你也是个猫片控😺) :&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light-default github-dark-default&quot; style=&quot;background-color:#ffffff;--shiki-dark-bg:#0d1117;color:#1f2328;--shiki-dark:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;markdown&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#0550AE;--shiki-light-font-weight:bold;--shiki-dark:#79C0FF;--shiki-dark-font-weight:bold&quot;&gt;## 核心架构&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#1F2328;--shiki-dark:#E6EDF3&quot;&gt;CatRater采用分层架构:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#953800;--shiki-dark:#FFA657&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#1F2328;--shiki-dark:#E6EDF3&quot;&gt; API层 (FastAPI) → 负责HTTP, 校验, 序列化&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#953800;--shiki-dark:#FFA657&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#1F2328;--shiki-dark:#E6EDF3&quot;&gt; 服务层 → 业务逻辑, 评分算法&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#953800;--shiki-dark:#FFA657&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#1F2328;--shiki-dark:#E6EDF3&quot;&gt; 仓储层 → 所有数据库操作&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#953800;--shiki-dark:#FFA657&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#1F2328;--shiki-dark:#E6EDF3&quot;&gt; 模型层 → Pydantic模型, 强类型, 杜绝裸dict!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#0550AE;--shiki-light-font-weight:bold;--shiki-dark:#79C0FF;--shiki-dark-font-weight:bold&quot;&gt;## 设计原则&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#953800;--shiki-dark:#FFA657&quot;&gt;1.&lt;/span&gt;&lt;span style=&quot;color:#1F2328;--shiki-dark:#E6EDF3&quot;&gt; 显式优于隐式: 所有数据结构都用Pydantic建模, 拒绝裸JSON&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#953800;--shiki-dark:#FFA657&quot;&gt;2.&lt;/span&gt;&lt;span style=&quot;color:#1F2328;--shiki-dark:#E6EDF3&quot;&gt; 关注点分离: 评分逻辑只在服务层, 数据库操作只在仓储层&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#953800;--shiki-dark:#FFA657&quot;&gt;3.&lt;/span&gt;&lt;span style=&quot;color:#1F2328;--shiki-dark:#E6EDF3&quot;&gt; 类型安全: Python 3.11+全量类型注解, mypy必须strict通过&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#0550AE;--shiki-light-font-weight:bold;--shiki-dark:#79C0FF;--shiki-dark-font-weight:bold&quot;&gt;## 文件结构&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#953800;--shiki-dark:#FFA657&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#0550AE;--shiki-dark:#79C0FF&quot;&gt; `api/routes/cats.py`&lt;/span&gt;&lt;span style=&quot;color:#1F2328;--shiki-dark:#E6EDF3&quot;&gt; - 猫片上传与获取接口&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#953800;--shiki-dark:#FFA657&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#0550AE;--shiki-dark:#79C0FF&quot;&gt; `services/rating_service.py`&lt;/span&gt;&lt;span style=&quot;color:#1F2328;--shiki-dark:#E6EDF3&quot;&gt; - 核心评分算法 (萌值, 胡须对称等)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#953800;--shiki-dark:#FFA657&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#0550AE;--shiki-dark:#79C0FF&quot;&gt; `repositories/cat_repository.py`&lt;/span&gt;&lt;span style=&quot;color:#1F2328;--shiki-dark:#E6EDF3&quot;&gt; - 猫片数据库操作&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#953800;--shiki-dark:#FFA657&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#0550AE;--shiki-dark:#79C0FF&quot;&gt; `models/cat_models.py`&lt;/span&gt;&lt;span style=&quot;color:#1F2328;--shiki-dark:#E6EDF3&quot;&gt; - CatPhoto, RatingScore等模型&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;是的, 维护这份文档确实要花点心思, 但它能省下你每次都手把手”再讲一遍”的功夫。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;为啥这招灵?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;前置了项目全貌, LLM能有的放矢地读代码, 理解模块关系, 把握你最在乎的原则。最妙的是, 这个prompt只用写一次, 只要架构没大改, 能一直复用。&lt;/p&gt;
&lt;h3 id=&quot;第二步-遇到问题-先聊聊你咋看&quot;&gt;第二步: “遇到问题, 先聊聊你咋看?”&lt;/h3&gt;
&lt;p&gt;LLM有了全局观, 接下来才能讨论具体问题。&lt;/p&gt;
&lt;p&gt;核心原则: 要”聊方案”, 而不是”直接让它上手”。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;好的第二轮提问:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light-default github-dark-default&quot; style=&quot;background-color:#ffffff;--shiki-dark-bg:#0d1117;color:#1f2328;--shiki-dark:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;我发现猫片评分逻辑和数据库仓储层耦合太紧, 不连数据库就没法测。你能提几点重构建议, 怎么用依赖注入模式解耦?&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;不好的提问:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light-default github-dark-default&quot; style=&quot;background-color:#ffffff;--shiki-dark-bg:#0d1117;color:#1f2328;--shiki-dark:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;让猫片评分代码变得易测。&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;差别巨大吧?前者引导LLM参与讨论, 后者直接让AI”自作主张”动手。&lt;/p&gt;
&lt;p&gt;这时, 进入”头脑风暴模式”, 你和AI来回碰撞:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;LLM&lt;/strong&gt;: “建议为仓储层抽接口, 通过依赖注入传给评分服务…”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;你&lt;/strong&gt;: “可以, 但评分缓存现在在仓储层, 你怎么看?”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;LLM&lt;/strong&gt;: “确实, 那可以把缓存提到服务层, 或者单独建个缓存层…”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这阶段你甚至可以问三, 五, 十个”what if”, 方案越扎实越好。&lt;/p&gt;
&lt;p&gt;重点: &lt;strong&gt;这一步绝不让AI动代码!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;LLM成了你的架构顾问, 而非”码农”。它帮你权衡利弊, 预判风险, 给出多种可选方案, 而你始终把控大方向。&lt;/p&gt;
&lt;p&gt;这一招极大降低了焦虑。你不会再眼睁睁看着AI瞎改一通, 最后不得不推倒重来。所有决定都是你俩”面基”聊出来的, 等思路清楚了才动手。&lt;/p&gt;
&lt;h3 id=&quot;第三步-ok-咱们正式开工&quot;&gt;第三步: “OK, 咱们正式开工!”&lt;/h3&gt;
&lt;p&gt;等你们就解决方案达成一致, 权衡了所有权衡的东西, 这时候才可以下令:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light-default github-dark-default&quot; style=&quot;background-color:#ffffff;--shiki-dark-bg:#0d1117;color:#1f2328;--shiki-dark:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;这个方案可以, 咱们现在把它实现到代码里吧。&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;此时, LLM才开始写代码。&lt;/p&gt;
&lt;p&gt;因为前面沟通充分, 最终实现会:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完全贴合你的架构&lt;/li&gt;
&lt;li&gt;遵循团队一贯风格&lt;/li&gt;
&lt;li&gt;类型, 异常全都合乎规范&lt;/li&gt;
&lt;li&gt;解决原有问题且不制造新坑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最美妙的是, 你不用事无巨细地盯着AI写代码。变量名, import, 文件拆分这些杂事, AI全包了。&lt;/p&gt;
&lt;p&gt;你定了方向, LLM负责落地。&lt;/p&gt;
&lt;h2 id=&quot;完整开发回路长啥样&quot;&gt;完整开发回路长啥样?&lt;/h2&gt;
&lt;p&gt;实际用起来, 大致流程如下:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light-default github-dark-default&quot; style=&quot;background-color:#ffffff;--shiki-dark-bg:#0d1117;color:#1f2328;--shiki-dark:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;会话1:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├─ 第一步: &quot;了解我的架构&quot; (@project_big_picture.md)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├─ 第二步: &quot;猫片评分和数据库耦合, 怎么重构?&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├─ 讨论: 4-5轮打磨方案&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├─ 第三步: &quot;可以上手了&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─ AI实现&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;会话2:  (同样架构, 另一个问题)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├─ 第一步: &quot;了解我的架构&quot; (同一份@project_big_picture.md, 复用!)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├─ 第二步: &quot;图片上传校验不一致, 有啥优化建议?&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├─ 讨论: 6轮&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├─ 第三步: &quot;动手吧&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─ AI实现&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;会话3:  (架构有大改动)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├─ 实现过程中发现需要加缓存层&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;├─ 更新@project_big_picture.md记录新架构&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;└─ 下次会话用新版架构重新&quot;入职&quot;AI&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;什么时候要更新 &lt;code&gt;project_big_picture.md&lt;/code&gt;?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;遇到以下情况要及时更新:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新增了架构层级 (比如加了缓存层)&lt;/li&gt;
&lt;li&gt;换了核心模式 (比如REST转GraphQL)&lt;/li&gt;
&lt;li&gt;重构了关键抽象层&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些情况不需要更新:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;修bug&lt;/li&gt;
&lt;li&gt;基于既有模式的新功能&lt;/li&gt;
&lt;li&gt;不影响公开接口的小幅重构&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更新方式也可以交给AI:&lt;/p&gt;
&lt;pre class=&quot;astro-code astro-code-themes github-light-default github-dark-default&quot; style=&quot;background-color:#ffffff;--shiki-dark-bg:#0d1117;color:#1f2328;--shiki-dark:#e6edf3; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;根据我们的讨论和改动, 帮我更新下project_big_picture.md。&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;保持风格一致, 既要有指导性, 也要能体现我们的设计决策, 重点描述架构演进, 具体实现细节不用写太细。&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;这样做-究竟改变了什么&quot;&gt;这样做, 究竟改变了什么?&lt;/h2&gt;
&lt;p&gt;自从用上这套”先聊后写”流程, 发生了这些变化:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;花钱少了:&lt;/strong&gt; 再也没月末刷爆400美元额度了。每次只聚焦一个问题, 讨论到位后才让AI动手, token用量直降70%。有时候甚至把AI的建议粘出来, 换个新对话再分析一遍, 听起来有点”抠”, 但真的省钱。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;代码质量提升:&lt;/strong&gt; 代码不再”自己长歪”了, 完全贴合我定下的架构。类型安全, 异常处理都很统一, 整个项目风格一致, 写起来有底气。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;调试更轻松:&lt;/strong&gt; 线上出bug, 我能一眼定位问题源头——因为关键决策都是我拍板的, AI只负责实现。代码结构我心里门清。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;思维负担减轻:&lt;/strong&gt; 这点最让我意外。原以为加了流程会累赘, 结果恰恰相反。我不用一边想”我到底想要啥”, 一边又猜”AI到底干了啥”。我专注设计, AI专注实现, 像和一个永远不累, 码速爆表的搭档并肩写代码。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;开发速度反而更快了:&lt;/strong&gt; 前期讨论花的时间, 远远少于后期debug和返工的时间。省事又高效。&lt;/p&gt;
&lt;h2 id=&quot;给还在观望的你-我也曾经是&quot;&gt;给还在观望的你 (我也曾经是)&lt;/h2&gt;
&lt;p&gt;如果你试过AI助手, 最后只觉得”AI写的都是垃圾”, 其实你没错。我也深受其害, 见识过混乱类型, 架构乱套, 那种”能跑但不敢上线”的代码。&lt;/p&gt;
&lt;p&gt;但说到底, LLM不是架构师, &lt;strong&gt;你才是&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;如果你让AI直接写代码, 就是把项目大权交给一个对你团队规则, 项目历史, 未来维护一无所知的”外包”。写出来的东西当然难以入眼。&lt;/p&gt;
&lt;p&gt;但只要你把AI拉回”讨论区”, 用它做思想碰撞, 方案推演, 最后才让它执行, AI助手真的能变成得力帮手。&lt;/p&gt;
&lt;p&gt;换个角度, 你招个新人, 也不会让他第一天就随便推main分支吧?肯定要让他先读架构文档, 参与讨论, 做code review。&lt;/p&gt;
&lt;p&gt;LLM也要这样: 先了解项目, 讨论方案, 最后才动手。每次都要按这个顺序来。&lt;/p&gt;
&lt;h2 id=&quot;终极法则&quot;&gt;终极法则&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;一定要: 先讨论, 再决策, 最后才让AI上手实现。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你发现AI在设计讨论阶段就开始”手痒”写代码, 立刻叫停, 拉回正轨。告诉它: 咱们先把思路聊明白。&lt;/p&gt;
&lt;p&gt;你的职责: 把控架构, 定设计, 守质量。&lt;/p&gt;
&lt;p&gt;AI的职责: 记住一切细节, 干琐碎活, 把你的想法高效落地。&lt;/p&gt;
&lt;p&gt;界限划清, AI助力开发就不再是混乱, 而是真正的生产力提升。你可以放心写代码, 不怕余额见底, 不怕代码长歪, 不怕线上一出问题就手足无措。&lt;/p&gt;
&lt;p&gt;而且, 写代码又变得有趣起来了。你不用和一个”永远比你多事”的助手斗智斗勇, 而是和一个能听懂你设计, 按你要求实现的靠谱搭档协作。这才是我一直想要的开发体验。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;(本篇由人类原创, 部分内容参考AI建议优化。)&lt;/em&gt;&lt;/p&gt;</description><pubDate>Mon, 20 Oct 2025 00:00:00 GMT</pubDate></item></channel></rss>