# 17 · 大模型时代的架构判断:vibe coding 时代,你靠什么不可替代 > 一句话点题:**当「写代码」坍缩成几秒钟、几句自然语言就能完成的廉价动作,真正稀缺、真正值钱的,只剩下一件事——在动手之前判断「这个系统该长什么样、会死在哪、我在拿什么换什么」。** 这是进阶篇的收官,也是整套教程的收官:把前面所有的硬道理,投射到我们正身处的这个 AI 时刻。 --- > **🏁 全教程到这里收尾。** 入门篇(01–09)教你**看懂系统、并从 0 设计一个中小系统**;进阶篇(10–16)教你**驾驭做大做关键后才咬人的硬骨头**:分布式、失败、规模、演进、组织、安全。这最后一章不引入新的"硬骨头",而是做一件更重要的事——**把这套判断力,对准当下:一个 AI 替你写代码(vibe coding)、同时又催生出一批全新系统(LLM / Agent)的时代。** --- ## 一、两个同时发生的转变 我们这一代工程师,正同时被两股力量改写: ``` 转变 A:AI 改变了"怎么造" 转变 B:AI 带来了"造什么"的新物种 ───────────────────────── ────────────────────────────────── vibe coding:自然语言 → 代码 LLM / Agent 系统:对话、RAG、 实现从"稀缺手艺"坍塌成"几秒生成" agent、推理服务……一批前所未有的系统 ↓ ↓ 人从"敲实现"转向"定义 + 判断" 它们有自己的硬骨头(不确定性、上下文、成本) ``` **转变 A** 有了名字。2025 年 2 月 2 日,Andrej Karpathy 造了个词——**vibe coding**:「**完全交给感觉,拥抱指数,甚至忘了代码的存在**」。它是他 2023 年那句「**最热的编程语言是英语**」的兑现。这个词当年就成了 Collins 词典的年度词汇。它描述的是一个事实:**「把代码写对、写快」这门手艺,正在贬值。** **转变 B** 是:大模型不只是写代码的工具,它本身成了**一类新系统的核心零件**。本仓库新增的那批 AI 模板——[AI 对话产品](../templates/ai-chat-product/README.md)、[RAG 知识库](../templates/rag-knowledge-base/README.md)、[AI Agent 平台](../templates/ai-agent-platform/README.md)、以及四个真实 Agent 产品([Claude Code](../templates/claude-code/README.md)、[Codex](../templates/codex/README.md)、[OpenClaw](../templates/openclaw/README.md)、[Hermes](../templates/hermes/README.md))——就是这批新物种的架构地图。 > **把两股力合起来,得到本章、乃至本仓库的核心论断**:**实现越来越廉价,判断越来越值钱。** 当 AI 几秒就能产出能跑的代码,你的护城河不再是"会写",而是"**会判断**"——这正是 [README](../templates/README.md) 开篇那句「未来优秀的开发者,首先是会做架构判断的人」的时代注脚。 --- ## 二、vibe coding 放大了一切——包括架构错误 vibe coding 很爽,也很危险。Simon Willison 有一个清醒的区分:**不是所有"AI 辅助编程"都叫 vibe coding**——vibe coding 特指**不审查就接受 AI 产出的代码**。拿来做玩具、做原型,绝妙;但**直接推上生产,等于把一座你没读过的房子交给用户住**。 为什么危险?因为 AI 把"产出"加速了,却没有同步加速"判断": ``` 传统时代: 想清楚(慢) → 写实现(慢) 瓶颈在"写" vibe时代: 想清楚(慢) → 生成实现(秒!) 瓶颈整个移到了"想清楚" ↑ "AI 写得快" 同时意味着 "架构错得也快、错得更大、债积得更猛" ``` - AI 默认给你**乐观路径**的代码:能跑通 demo,但没有超时、没有重试与幂等([11]/[12])、没有降级与隔离([12])、没想过分片与热点([13])、没考虑提示注入([16])。这些**恰恰是前面六章的全部内容**。 - 原型到生产的鸿沟,从未如此容易被"它看起来能跑"所掩盖。 > **架构智慧**:vibe coding 时代,**代码是 AI 产的,但规格、约束、验收标准、和"这玩意儿会死在哪"的判断,是你的。** 越是能一键生成实现,"想清楚要造什么、容忍什么、放弃什么"就越是唯一的瓶颈和唯一的护城河。**会写,正在贬值;会判断,正在升值。** --- ## 三、非确定性:LLM 系统的头号新约束 传统系统的地基是**确定性**:同样的输入,永远得到同样的输出——所以你能写精确断言、能复现 bug、能回归测试。**LLM 把这块地基抽走了**:同样的输入,因为采样温度、模型版本更新、上下文变化,可能给出**不同的输出**。 这是架构级的新约束,逼出一套新打法: ``` 传统: assert output == expected (二元:对 / 错) LLM: 用"评测集 + 评分"衡量一个分布 (光谱:够不够好 / 退化没退化) • 准备一批有代表性的输入 • 评分:规则、或"模型当裁判(LLM-as-judge)" • CI 里跑 eval,看分数有没有掉 • 关注的是"质量分布",不是"单条正确" ``` > **判断要点**:面对非确定性,架构上要做三件事——① **评测驱动(eval-driven)**:用数据集和评分把"够好"量化,放进 CI,防止换模型/改提示后悄悄退化;② **护栏与人审关卡**:不确定的输出在产生副作用前要有兜底(承接 [AI Agent 平台](../templates/ai-agent-platform/README.md) 的 human-in-the-loop);③ **可观测与可回退**:每一步都能追溯、能回滚。**把不确定性当一等约束来设计,而不是假装它不存在。** --- ## 四、上下文工程:新的「内存层级」 LLM 的上下文窗口,就是它的**工作内存**——有限、且按 token 计费昂贵。如何"在有限且昂贵的窗口里,放进恰好够用的信息",成了 LLM 系统的核心功夫,这就是**上下文工程(context engineering)**。它本质上是 [05 · 数据与状态](05-数据与状态.md) 的"为访问形态选存储"和 [13 · 规模化的力学](13-规模化的力学.md) 的"内存层级"在 AI 时代的回响: ``` 新的"内存层级"(越往下越便宜、越慢、越大): ┌───────────────────────────┐ │ 上下文窗口(最贵最快,工作内存) │ ← 塞太多:贵 + "迷失在中间";塞太少:缺依据 ├───────────────────────────┤ │ 检索 RAG / 向量召回(按需取) │ ← 链 RAG 知识库 / 向量数据库 ├───────────────────────────┤ │ 长期记忆(跨会话,落盘) │ ← 链 Hermes 的 FTS5 记忆、Claude Code 的压缩 └───────────────────────────┘ ``` - 核心取舍:**长上下文 vs RAG vs 微调**——塞进超长上下文简单但贵、且模型会"迷失在中间";RAG 精准但要维护检索质量;微调改变模型本身但僵化。没有最好,只有最合适(又一次)。 - 这正是 [RAG 知识库](../templates/rag-knowledge-base/README.md)、[向量数据库](../templates/vector-database/README.md)、[Hermes](../templates/hermes/README.md) 的记忆设计、[Claude Code](../templates/claude-code/README.md) 的上下文自动压缩在解决的同一个问题。 --- ## 五、新的质量属性三角:成本 / 延迟 / 质量 [06 · 质量属性与取舍](06-质量属性与取舍.md) 教你权衡性能、可用性、一致性、成本。LLM 系统在此之上,多了一组**互相拉扯**、且格外尖锐的新属性: ``` 答案质量 ▲ ╱ ╲ 强模型:质量高,但贵、慢 ╱ ╲ 弱模型:快、省,但质量打折 ╱ ╲ ——你永远在这个三角里选位置 token 成本 ◀───▶ 首字延迟(TTFT) ``` - **成本是一等公民**:每次调用都在烧 token,常驻 agent 更是 7×24 地烧。[OpenClaw](../templates/openclaw/README.md) 这类常驻 agent "心跳唤醒就烧钱"的设计,逼出了"只在到期时跑、无事就停"的克制——这本质就是 [12 · 韧性工程](12-为失败而设计.md) 里的**降载**与**预算上限**。 - 破解手段都似曾相识:**模型路由**(简单任务用小模型,难任务才上大模型)、**缓存**、**批处理**——正是 [AI 网关](../templates/ai-gateway/README.md) 和 [模型推理服务](../templates/inference-serving/README.md) 的核心看点。 --- ## 六、Agentic 系统:把整个进阶篇都用上 如果说前面是"分",这一节是"合"。一个**自主 Agent 系统**,恰恰是前面每一章硬骨头的叠加——这也是为什么我们把四个真实 Agent 产品收进了模板库: | Agent 系统的难点 | 它其实就是进阶篇的哪一章 | |---|---| | 行动循环必须有步数/成本/超时上限,防失控烧钱 | [12 · 韧性工程](12-为失败而设计.md)的**降载与熔断** | | 工具调用要幂等、多步任务像一个分布式 Saga | [11 · 数据一致性工程](11-数据一致性工程.md) | | 长任务跑很久、节点会失败、分不清死活、要可恢复 | [10 · 分布式系统的硬道理](10-分布式系统的硬道理.md)的**部分失败** | | 多 Agent 协作 / 并发子任务 = 分布式 + 扇出放大 | [10](10-分布式系统的硬道理.md) / [13 · 规模化的力学](13-规模化的力学.md) | | 提示注入是头号威胁,工具权限要最小化、要沙箱 | [16 · 安全与多租户架构](16-安全与多租户架构.md) | | Agent 作为"虚拟同事"重塑团队与分工 | [15 · 组织即架构](15-组织即架构.md) | | 从能跑的原型渐进演化为可控系统 | [14 · 演进与拆分大型系统](14-演进与拆分大型系统.md) | > 这就是为什么 Anthropic 反复强调那句克制的话——**「能用确定的工作流解决,就别上自主 Agent」**:自主性越强,上面这些硬骨头叠加得越狠。读 [Claude Code](../templates/claude-code/README.md)/[Codex](../templates/codex/README.md)(编码 Agent)与 [OpenClaw](../templates/openclaw/README.md)/[Hermes](../templates/hermes/README.md)(常驻自治 Agent)这四张地图,你会发现它们的"灵魂"全在如何给放飞的自主性装上刹车——而刹车的设计原理,你已经在进阶篇里学完了。 --- ## 七、什么没有变(而且永远不会变) 技术换了一茬又一茬,但有一层东西,AI 不仅没让它过时,反而把它的稀缺性推到了顶: - [02 · 架构师的思考框架](02-架构师的思考框架.md) 那套**「需求 → 约束 → 质量属性 → 取舍」**,对 LLM 系统照样成立——只是质量属性表里多了"成本/延迟/质量/可评测性"几行。 - **「没有最好的架构,只有最合适的」**——长上下文还是 RAG、强模型还是弱模型、工作流还是 Agent,全是取舍,没有银弹。 - **「先问为什么,再看怎么做」**——AI 能秒答"怎么做",但"为什么是它、代价是什么"依然要人来问。 > **架构智慧**:AI 把"实现"变成了商品,却把"判断"的稀缺性推到了历史最高。**一个能对每个技术选择自然地问出「为什么是它?代价是什么?会死在哪?」的人,在 vibe coding 时代不是被替代,而是变得前所未有地不可替代。** --- ## 📌 真实案例:「vibe coding」如何从一条推文,变成一记时代警钟 2025 年 2 月,Andrej Karpathy 的一条推文造出了 "vibe coding" 这个词,精准击中了时代情绪——同年它就当选 Collins 词典年度词汇。但紧接着,从业者们开始划清界限: - **Simon Willison**(资深开发者、Django 联合创始人)写道:**vibe coding 用于学习与原型很棒,但把"不审查就接受的 AI 代码"推上生产是另一回事**——生产系统依然需要有人读懂它、测试它、并对它的架构负责。这恰好印证本章:**AI 加速了产出,没有加速判断;而判断,才是把原型变成可信系统的那一步。** 工具侧也给出了答案:Anthropic 在《Building Effective Agents》里反复强调"**保持简单、能不放飞就别放飞**";本仓库收录的四个真实 Agent 产品,无一例外把大量设计花在**给自主性装刹车**(沙箱、权限、预算上限、人审)。这都是同一个信号:**AI 越强,架构判断越是那根定海神针。** - 📎 [Vibe coding(Wikipedia,含 Karpathy 起源与年度词)](https://en.wikipedia.org/wiki/Vibe_coding) - 📎 [Simon Willison《Not all AI-assisted programming is vibe coding》](https://simonwillison.net/2025/Mar/19/vibe-coding/) - 📎 [Anthropic《Building Effective Agents》](https://www.anthropic.com/research/building-effective-agents) --- ## 🤖 那么,vibe coding 到底该怎么用? 不是要你拒绝 vibe coding——它是这个时代最强的杠杆。而是要你**带着架构判断去用它**: - **玩具与原型:尽情 vibe。** 验证想法、探索方案,越快越好,别过度设计(呼应 [04](04-十大核心架构模式.md)「能用单体就别微服务」的克制)。 - **生产系统:vibe 出草稿,用判断收口。** 让 AI 生成实现,但由你来追问:数据一致吗([11])?失败了会怎样([12])?规模上来会死在哪([13])?这能演进吗([14])?安全边界在哪([16])? - **把你的判断"喂"给 AI。** 在 `CLAUDE.md` / `AGENTS.md` 这类文件里写下你的架构约束与质量目标——相当于把"架构师的判断"变成 AI 能持续遵守的护栏([Claude Code](../templates/claude-code/README.md) / [Codex](../templates/codex/README.md) 的记忆文件正是干这个的)。 --- ## 🎯 随堂检验 --- ## 本章小结 - **两个转变**:AI 改变了"怎么造"(vibe coding:实现坍塌成廉价),也带来了"造什么"的新物种(LLM / Agent 系统)。合起来一句话:**实现越来越廉价,判断越来越值钱。** - **vibe coding 放大一切**:它加速了产出却没加速判断,"写得快"也意味着"错得快、债积得猛";代码是 AI 产的,**规格、约束、验收、和"会死在哪"的判断是你的**。 - **三个 LLM 时代的新约束**:① **非确定性** → 评测驱动 + 护栏 + 可回退;② **上下文工程** → 把上下文当新的"内存层级"来管(长上下文 vs RAG vs 微调);③ **成本/延迟/质量三角** → 模型路由、缓存、预算上限。 - **Agentic 系统是进阶篇的总和**:行动循环要降载([12])、工具要幂等([11])、长任务要容错([10])、多 Agent 是分布式([13])、提示注入是头号威胁([16])、还重塑组织([15])——四个 Agent 模板就是活案例。 - **什么没变**:[02](02-架构师的思考框架.md) 的判断框架、"没有最好只有最合适"、"先问为什么"——AI 让它们更值钱,而非过时。 > **🏁 结语:轮到你了。** 你已经走完了入门篇(看懂系统、从 0 设计)与进阶篇(驾驭分布式、失败、规模、演进、组织、安全),并把它们对准了这个 AI 时刻。**现在,挑一张 [模板地图](../templates/README.md) 深读,或对你正在做的系统,逐条问出那几个"为什么"和"代价是什么"。** 在一个 AI 替所有人写代码的时代,愿你成为那个——**先看清地图,再决定上不上路的人。**