<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>工程实践 on 奇诺分享 | 重在分享</title>
        <link>https://blog.ccino.org/tags/%E5%B7%A5%E7%A8%8B%E5%AE%9E%E8%B7%B5/</link>
        <description>Recent content in 工程实践 on 奇诺分享 | 重在分享</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Sun, 24 May 2026 08:20:45 +0800</lastBuildDate><atom:link href="https://blog.ccino.org/tags/%E5%B7%A5%E7%A8%8B%E5%AE%9E%E8%B7%B5/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>快模型需要慢开发者：AI 写代码越快，人越不能急</title>
        <link>https://blog.ccino.org/p/fast-models-need-slow-developers/</link>
        <pubDate>Sun, 24 May 2026 08:20:45 +0800</pubDate>
        
        <guid>https://blog.ccino.org/p/fast-models-need-slow-developers/</guid>
        <description>&lt;img src="https://blog.ccino.org/p/fast-models-need-slow-developers/imgs/cover.png" alt="Featured image of post 快模型需要慢开发者：AI 写代码越快，人越不能急" /&gt;&lt;p&gt;如果一个 AI 编程模型每秒能吐出 1200 个 token，我的第一反应其实不是兴奋，而是有点警惕。&lt;/p&gt;
&lt;p&gt;等模型输出很烦，这大家都知道。以前让 AI 改一个稍微复杂点的功能，等几分钟很正常。等它打字的时候，人很容易切走，去看消息、喝水、处理别的事。回来的时候，屏幕上已经多了一大段代码，甚至改了好几个文件。&lt;/p&gt;
&lt;p&gt;慢模型时代，这种习惯已经不太好；到了快模型时代，它会变得更危险。&lt;/p&gt;
&lt;p&gt;Sarah Chieng 在 AI Engineer 的分享里讲到 Cerebras 和 OpenAI 合作推出的 Codex Spark。据她介绍，这个模型可以用每秒 1200 tokens 的速度生成代码。很多常见模型大概是每秒 40 到 60 tokens。换句话说，过去十分钟才堆出来的一大坨 diff，现在可能半分钟就出现。&lt;/p&gt;
&lt;p&gt;这时问题就变了。不是“AI 太慢，影响效率”，而是“AI 太快，人还没来得及判断，它已经替你做完了好几个决定”。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/fast-models-need-slow-developers/imgs/failure-modes.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/fast-models-need-slow-developers/imgs/failure-modes_hu_f32a6e9c3c143102.png 480w, https://blog.ccino.org/p/fast-models-need-slow-developers/imgs/failure-modes_hu_2fabe37a452923a9.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;快模型改变 AI coding 的失败模式&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;速度会改变出错的样子&#34;&gt;速度会改变出错的样子
&lt;/h2&gt;&lt;p&gt;以前我们习惯写一个很大的 prompt。背景、需求、约束、文件结构、注意事项，能塞进去的都塞进去，然后希望模型一次性给个完整结果。&lt;/p&gt;
&lt;p&gt;这套办法为什么流行？因为等待很贵。既然等一轮输出要几分钟，那当然希望一轮多做点。&lt;/p&gt;
&lt;p&gt;可一旦模型很快，这个逻辑就不太成立了。快模型适合短跑，不适合在没人看的情况下自己开车上高速。一个 agent 如果理解错了需求，它可以很快改完多个文件，顺手删掉旧逻辑，补几条看起来合理的测试，再把接口整理得像模像样。你打开 diff 时，甚至会觉得它挺认真。&lt;/p&gt;
&lt;p&gt;麻烦就在这里。坏代码不一定长得很粗糙。AI 生成的坏代码，经常是语气很自信、结构很完整、命名也还不错，只是方向错了。&lt;/p&gt;
&lt;p&gt;所以我觉得“快模型需要慢开发者”这句话，重点不是让大家少用 AI，而是提醒我们：不能再把 AI coding 当成“丢给外包，晚点验收”。它更像一台转速很高的机器。机器当然能提高产能，但你得盯着它切到哪里、有没有越界、有没有把不该动的地方也顺手磨掉。&lt;/p&gt;
&lt;h2 id=&#34;现在真正贵的是判断&#34;&gt;现在真正贵的是判断
&lt;/h2&gt;&lt;p&gt;生成速度上来之后，便宜的是代码草稿，贵的是判断。&lt;/p&gt;
&lt;p&gt;判断它有没有误解需求。判断它有没有破坏原来的接口。判断它是不是为了让测试通过，悄悄改了测试本身。判断它加的抽象是真有必要，还是只是看起来高级。判断它是不是把一个小问题扩成了一个“顺便重构”。&lt;/p&gt;
&lt;p&gt;这些判断不会因为模型变快就自动消失。相反，模型越快，它们出现得越密集。&lt;/p&gt;
&lt;p&gt;我现在更愿意把快模型当成“候选方案生成器”。比如做一个 UI 组件，与其让它一次写出最终版，不如让它给几种布局；写一个边界条件多的函数，也可以让它给两三种处理方式。然后人来选，选完再让它收敛。&lt;/p&gt;
&lt;p&gt;这和演讲里提到的 cherry-pick 思路很接近。快模型的价值不是替你跳过审美和工程判断，而是让你有更多可比较的草稿。人的价值，也不再只是亲手敲每一行代码，而是知道哪一版更稳、更贴近需求、更不容易给未来挖坑。&lt;/p&gt;
&lt;h2 id=&#34;测试别留到最后&#34;&gt;测试别留到最后
&lt;/h2&gt;&lt;p&gt;我以前也常犯一个错：让 AI 先写完，最后统一跑测试。&lt;/p&gt;
&lt;p&gt;这个习惯在快模型时代要改。原因很简单，代码几秒钟就能生成一轮，测试就不该等到最后才出现。否则你会得到一个很大的 diff，然后才发现第一步就走错了。&lt;/p&gt;
&lt;p&gt;更舒服的节奏应该小很多：先划清任务边界，让 AI 只改一个局部；改完马上跑对应测试、lint 或类型检查；结果不对就立刻停下，缩小问题，再来一轮。没有测试的项目，也至少要让它给出可观察的验证方式，比如启动页面、检查输出、对比某个 API 返回。&lt;/p&gt;
&lt;p&gt;这听起来慢，但通常会省时间。真正浪费时间的不是多跑几次测试，而是半小时后才发现 AI 从一开始就理解错了。&lt;/p&gt;
&lt;p&gt;在高速 AI coding 里，验证不是保守动作，而是节奏的一部分。就像开车不是因为胆小才看后视镜，而是因为车速上来了，不看就太冒险。&lt;/p&gt;
&lt;h2 id=&#34;规划和执行最好分开&#34;&gt;规划和执行最好分开
&lt;/h2&gt;&lt;p&gt;Sarah Chieng 还提到一个分工：高智能模型负责规划，快模型负责执行。&lt;/p&gt;
&lt;p&gt;我觉得这点特别适合放到 Claude Code、Codex、Cursor 这类工具里理解。并不是所有任务都应该交给最快的模型。速度适合明确的小任务：改一个组件，补一个测试，实现一个函数，生成几个候选方案。&lt;/p&gt;
&lt;p&gt;但架构判断、需求拆解、跨模块迁移、兼容性边界，这些事情不该只追求快。它们需要更强的推理，也需要人先把边界写清楚。&lt;/p&gt;
&lt;p&gt;一个比较稳的 AI coding 流程，通常会分成两段。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/fast-models-need-slow-developers/imgs/slow-workflow.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/fast-models-need-slow-developers/imgs/slow-workflow_hu_d056f0a4ba7e5ec8.png 480w, https://blog.ccino.org/p/fast-models-need-slow-developers/imgs/slow-workflow_hu_a179a410d1b93510.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;慢开发者的 AI coding 工作流&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;先做规划：这次到底改什么，不改什么，哪些接口不能动，哪些行为要保持，怎么证明改对了。这个阶段不用急，越急越容易漏约束。&lt;/p&gt;
&lt;p&gt;再做执行：在明确边界里快速试错，生成代码，补测试，修 lint，跑局部验证。这里才应该吃速度红利。&lt;/p&gt;
&lt;p&gt;很多翻车不是因为模型不会写某一行代码，而是你让它同时当产品经理、架构师、程序员、测试和 reviewer。它当然会省事，也当然会在某些地方糊弄过去。速度越快，这种糊弄越不容易被及时发现。&lt;/p&gt;
&lt;h2 id=&#34;把上下文写进文件里&#34;&gt;把上下文写进文件里
&lt;/h2&gt;&lt;p&gt;演讲里还有一个细节我很喜欢：用几个持久的 Markdown 文件管理上下文，比如 &lt;code&gt;agents.md&lt;/code&gt;、&lt;code&gt;plan.md&lt;/code&gt;、&lt;code&gt;progress.md&lt;/code&gt;、&lt;code&gt;verify.md&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这不是为了仪式感。快模型会更快吃掉上下文窗口。原来十分钟才触发的压缩，现在可能几十秒就遇到。上下文一压缩，早期说过的限制就可能被淡化，尤其是那些“不要做什么”。&lt;/p&gt;
&lt;p&gt;把关键上下文写进文件里，就等于给 AI 留了一本项目手册。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;agents.md&lt;/code&gt; 可以写角色和边界，&lt;code&gt;plan.md&lt;/code&gt; 写目标和步骤，&lt;code&gt;progress.md&lt;/code&gt; 记录已经做完什么、还卡在哪里，&lt;code&gt;verify.md&lt;/code&gt; 写每一步怎么验收。不一定非得照搬这四个文件，但原则很简单：重要约束不要只留在聊天记录里。&lt;/p&gt;
&lt;p&gt;尤其是这几类信息，最好落到文件：需求边界、禁止改动范围、验证命令、已知风险、已经做过但失败的方案。这样下一轮生成不是凭模型记忆接着猜，而是有明确的状态可以读。&lt;/p&gt;
&lt;h2 id=&#34;我会怎么用-claude-code&#34;&gt;我会怎么用 Claude Code
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://blog.ccino.org/p/fast-models-need-slow-developers/imgs/claude-code-workflow.png&#34;
	width=&#34;2752&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://blog.ccino.org/p/fast-models-need-slow-developers/imgs/claude-code-workflow_hu_797ee48383f7c447.png 480w, https://blog.ccino.org/p/fast-models-need-slow-developers/imgs/claude-code-workflow_hu_97617abedb1a7ab8.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;我会怎么用 Claude Code&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;430px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;如果把这套想法落到 Claude Code，我会尽量把任务切得更短。&lt;/p&gt;
&lt;p&gt;第一步先让它读代码，别急着写。让它说清楚准备改哪些文件、为什么改、怎么验证。这个时候重点看它有没有误解项目结构。&lt;/p&gt;
&lt;p&gt;第二步只允许它做最小闭环。能改三行就不要改三十行，能补一个测试就不要顺手重构一片。AI 很喜欢“顺便优化”，但很多麻烦也来自顺手。&lt;/p&gt;
&lt;p&gt;第三步，改完立刻验证。能跑测试就跑测试，不能跑测试也要有替代检查。不要接受那种“理论上应该可以”的交付。&lt;/p&gt;
&lt;p&gt;最后看 diff 的时候，不只问“做了什么”，还要问“有没有改到不该改的地方”。这个问题比总结功能更有用。&lt;/p&gt;
&lt;h2 id=&#34;慢下来不是少用-ai&#34;&gt;慢下来，不是少用 AI
&lt;/h2&gt;&lt;p&gt;我不觉得“慢开发者”是在怀念手写代码。恰恰相反，只有真正用得多，才会意识到节奏控制有多重要。&lt;/p&gt;
&lt;p&gt;AI 写代码越快，人越需要知道什么时候该停。什么时候让模型继续跑，什么时候要读 diff；什么时候让它生成多个候选，什么时候只允许它改一个文件；什么时候追求速度，什么时候必须先补验证。&lt;/p&gt;
&lt;p&gt;以后熟练使用 AI coding 的人，可能不是 prompt 写得最长的人，而是最会设检查点的人。&lt;/p&gt;
&lt;p&gt;快模型把可能性铺开，开发者负责把它收束成可以维护、可以验证、可以上线的工程结果。速度本身不是坏事，但没有边界的速度，很容易只是更快的技术债。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bestblogs.dev/video/fe5bc07&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Fast Models Need Slow Developers — Sarah Chieng, Cerebras&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/watch?v=TeGsFFNqRLA&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;YouTube: Fast Models Need Slow Developers — Sarah Chieng, Cerebras&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.producthunt.com/categories/ai-coding-agents&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Product Hunt: AI Coding Agents&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
