<?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://xiaobox.github.io/tags/%E6%9E%B6%E6%9E%84/</link><description>Recent content in 架构 on 小盒子的技术分享</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 08:38:12 +0000</lastBuildDate><atom:link href="https://xiaobox.github.io/tags/%E6%9E%B6%E6%9E%84/index.xml" rel="self" type="application/rss+xml"/><item><title>我用两句中文，让 Claude Code 帮我画了10张出版级技术图</title><link>https://xiaobox.github.io/p/2026-04-12-wo-yong-liang-ju-zhong-wen-rang-claude-code-bang-wo-hua-le-1/</link><pubDate>Sun, 12 Apr 2026 08:38:12 +0000</pubDate><guid>https://xiaobox.github.io/p/2026-04-12-wo-yong-liang-ju-zhong-wen-rang-claude-code-bang-wo-hua-le-1/</guid><description>&lt;img src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-04-12-wo-yong-liang-ju-zhong-wen-rang-claude-code-bang-wo-hua-le-1/cover.jpg" alt="Featured image of post 我用两句中文，让 Claude Code 帮我画了10张出版级技术图" /&gt;&lt;p&gt;前两天在写一篇技术文章，写到一半需要配一张微服务架构图。我打开了某在线画图工具，对着空白画布发了十分钟的呆，拖了两个方块，连了一条线，觉得丑，删掉，再拖两个方块。&lt;/p&gt;
&lt;p&gt;半小时过去了，图还没画完，文章的灵感已经凉透了。&lt;/p&gt;
&lt;p&gt;我相信很多搞技术内容的朋友都有过这种体验。你脑子里其实很清楚这张图应该长什么样，但你就是得花一两个小时在画图工具里对齐、配色、调字号。明明内容才是核心，结果时间全花在了排版上。&lt;/p&gt;
&lt;p&gt;然后我发现了一个东西，彻底解决了这个问题。&lt;/p&gt;
&lt;p&gt;它叫 fireworks-tech-graph，是一个 Claude Code 的 skill。装上之后，你跟 Claude Code 说一句中文，它就能给你吐出一张出版级别的技术图。SVG 矢量源文件加 1920px 高清 PNG，直接能往文章里塞。&lt;/p&gt;
&lt;p&gt;我用它画了10张不同类型的图，从架构图到 ER 图到状态机，从白底极简到暗色霓虹到工程蓝图。每张图从下指令到拿到成品 PNG，平均不超过30秒。&lt;/p&gt;
&lt;p&gt;30秒。&lt;/p&gt;
&lt;p&gt;我之前在画图工具里对齐一个箭头的时间都不止30秒。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;怎么装呢，你甚至不需要记任何命令。&lt;/p&gt;
&lt;p&gt;打开 Claude Code，直接跟它说「帮我安装 fireworks-tech-graph 这个 skill」，它自己就把活干了。装完之后你说「画一个 xxx 图」，它就自动触发。&lt;/p&gt;
&lt;p&gt;如果你喜欢手动装也行，就一句 claude skills install fireworks-tech-graph，完事。&lt;/p&gt;
&lt;p&gt;触发词非常宽泛，「画图」「帮我画」「做个架构图」「生成一个流程图」「可视化一下」，随便怎么说都行，它都能识别。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;它能画什么？&lt;/p&gt;
&lt;p&gt;这个 skill 支持10种有模板的图表类型，外加4种无模板但有规则定义的类型。我挑几个最实用的说一下。&lt;/p&gt;
&lt;p&gt;1，架构图。这是用得最多的，画微服务分层、系统组件关系。你告诉它有哪些服务、怎么分层、哪些组件之间有调用关系，它自动帮你排好。我画的那张微服务架构图有5层，右侧还挂了一个观测性旁路，出来的效果跟正经架构文档里的图一模一样。&lt;/p&gt;
&lt;p&gt;2，流程图。CI/CD 流水线、审批流、业务决策流。菱形判断节点、圆角矩形处理步骤、失败回环，全都有。你只需要描述「从提交代码到部署生产」中间经过哪些步骤和判断就行。&lt;/p&gt;
&lt;p&gt;3，时序图。微服务之间谁先调谁，消息怎么传递。标准的 UML 时序图，有生命线、激活框、alt 分组框。你列出参与者和消息序列，它帮你排好。&lt;/p&gt;
&lt;p&gt;4，ER 图。数据库表之间的关系。支持鸦脚记法，PK 自动下划线，FK 标注。你把实体和属性列出来，告诉它哪些是一对多、哪些是多对多，它画出来的东西可以直接放进数据库设计文档。&lt;/p&gt;
&lt;p&gt;5，状态机。订单生命周期、工单状态流转这种。每个状态是一个圆角矩形，转换线上标事件名，有初始态的实心圆和终态的同心圆。&lt;/p&gt;
&lt;p&gt;6，对比矩阵。横评几个模型、几个方案的时候特别好使。我画了一张 LLM 模型对比表，5个模型7个维度，绿色打勾红色打叉，交替行填充，出来就是一张可以直接发朋友圈的表。&lt;/p&gt;
&lt;p&gt;7，时间线。项目路线图、版本规划。甘特图样式，彩色横条加菱形里程碑。&lt;/p&gt;
&lt;p&gt;除了这些，还有 Agent 架构图、用例图、数据流图。反正你在技术写作里能用到的图，它基本都覆盖了。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;比较骚的是它有7种视觉风格，每种味道完全不一样。&lt;/p&gt;
&lt;p&gt;默认的 Flat Icon 是白底彩色，适合博客和文档。Dark Terminal 是暗色霓虹风，发 GitHub 和技术社区特别帅。Blueprint 是工程蓝图风，深蓝色背景加网格线加角标，那种 CAD 图纸的感觉。Notion Clean 是极简白，一根线一个色。Glassmorphism 是毛玻璃卡片，适合产品官网和 Keynote。最近还加了 Claude Official 和 OpenAI Official 两种风格，分别是 Anthropic 和 OpenAI 的品牌调性。&lt;/p&gt;
&lt;p&gt;你指定风格的方式就是在 prompt 里加一句「用蓝图风」或者「Style 3」，就这么简单。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;我觉得这个 skill 最打动我的点，不是它画得多漂亮，而是它把「画图」这件事的心理门槛降到了零。以前我写文章需要配图的时候，经常会想「算了这里用文字描述一下也行吧」，因为打开画图工具、画完、导出、插入这一套流程太重了。现在不一样了，我在 Claude Code 里写着文章，写到需要配图的地方，直接说一句「帮我画一个 xxx」，30秒后图就在本地了。&lt;/p&gt;
&lt;p&gt;这种体验就像是，你本来在用文本编辑器写代码，突然有人给你装了一个实时预览插件。功能上没变，但那个「随时能看到效果」的即时反馈感，会让你更愿意去做这件事。&lt;/p&gt;
&lt;p&gt;画图也是一样。当成本足够低的时候，你会发现你开始「想画就画」了。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;想试的朋友，打开 Claude Code，说一句「帮我安装 fireworks-tech-graph」，等它装完，再说一句「画一个 xxx 图」。&lt;/p&gt;
&lt;p&gt;就这么简单。两句话的事。&lt;/p&gt;
&lt;p&gt;下面附一些 demo 图：&lt;/p&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-04-12-wo-yong-liang-ju-zhong-wen-rang-claude-code-bang-wo-hua-le-1/001-a45422ed.png"&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-04-12-wo-yong-liang-ju-zhong-wen-rang-claude-code-bang-wo-hua-le-1/002-ae30d407.png"&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-04-12-wo-yong-liang-ju-zhong-wen-rang-claude-code-bang-wo-hua-le-1/003-08fbb303.png"&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-04-12-wo-yong-liang-ju-zhong-wen-rang-claude-code-bang-wo-hua-le-1/004-4787f3ce.png"&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-04-12-wo-yong-liang-ju-zhong-wen-rang-claude-code-bang-wo-hua-le-1/005-fc59df47.png"&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-04-12-wo-yong-liang-ju-zhong-wen-rang-claude-code-bang-wo-hua-le-1/006-5f1611fe.png"&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-04-12-wo-yong-liang-ju-zhong-wen-rang-claude-code-bang-wo-hua-le-1/007-6052529a.png"&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-04-12-wo-yong-liang-ju-zhong-wen-rang-claude-code-bang-wo-hua-le-1/008-475c5a2d.png"&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-04-12-wo-yong-liang-ju-zhong-wen-rang-claude-code-bang-wo-hua-le-1/009-f8934911.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-04-12-wo-yong-liang-ju-zhong-wen-rang-claude-code-bang-wo-hua-le-1/010-2706d92e.png"&gt;&lt;/p&gt;</description></item><item><title>让Agent快上100倍的秘密，其实藏在一本大一计算机教科书里</title><link>https://xiaobox.github.io/p/2026-04-11-rang-agent-kuai-shang-100-bei-de-mi-mi-qi-shi-cang-zai-yi-be/</link><pubDate>Sat, 11 Apr 2026 10:50:21 +0000</pubDate><guid>https://xiaobox.github.io/p/2026-04-11-rang-agent-kuai-shang-100-bei-de-mi-mi-qi-shi-cang-zai-yi-be/</guid><description>&lt;img src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-04-11-rang-agent-kuai-shang-100-bei-de-mi-mi-qi-shi-cang-zai-yi-be/cover.jpg" alt="Featured image of post 让Agent快上100倍的秘密，其实藏在一本大一计算机教科书里" /&gt;&lt;p&gt;事情是这样的。&lt;/p&gt;
&lt;p&gt;最近我几乎每天都在用Claude Code写东西。用得越多，我越产生一种奇怪的感觉。&lt;/p&gt;
&lt;p&gt;就是你给它下完一个任务之后，它开始一步一步地干活。先是啪，读了一个文件。然后哒，想了几秒。然后啪，又打开一个文件。再想几秒。再打开一个文件。就这么一直持续下去。&lt;/p&gt;
&lt;p&gt;你坐在椅子上看着进度条一格一格地亮起来，心里清楚得不能再清楚，这十个文件它明明可以一起读的，它们之间根本没有任何依赖关系。&lt;/p&gt;
&lt;p&gt;但它就是不。它就是要一个接一个地来。&lt;/p&gt;
&lt;p&gt;一时间无语凝噎。&lt;/p&gt;
&lt;p&gt;后来我跟几个同样重度用Agent的朋友聊了一下，他们也都有这个感受。说真的我始终觉得这是现在所有Agent产品共同的一个病，不管是 &lt;code&gt;Claude Code&lt;/code&gt;、&lt;code&gt;Cursor&lt;/code&gt;、&lt;code&gt;Manus&lt;/code&gt;还是那些MCP插件，只要你让它干稍微复杂一点的活，你就会看到它在那里慢悠悠地一步一步走，像一个做事非常有耐心但完全不会一心二用的老实人。&lt;/p&gt;
&lt;p&gt;前两天跟朋友吐槽这事的时候，我又想起了两年前Berkeley那帮人写的一篇论文。论文叫LLMCompiler，2024年就发在ICML上了，现在回头看它也不算新东西。但每次我被Agent气到的时候都会想起它，觉得它的思路到今天都没过时，甚至越品越有味道。&lt;/p&gt;
&lt;p&gt;它当时就已经把这个病的根源讲得很清楚了，这个慢不是LLM的错，也不是任务复杂度的错，是我们给它用的那套调度系统，还停留在1960年代的水平。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-04-11-rang-agent-kuai-shang-100-bei-de-mi-mi-qi-shi-cang-zai-yi-be/001-5d4b1967.png"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;这篇论文的名字挺干的，叫**《An LLM Compiler for Parallel Function Calling》**，ICML 2024。作者是Sehoon Kim、Amir Gholami那帮人，都在Berkeley和LBNL。它不是今年的新论文，但在我心里一直是Agent方向上最被低估的几篇之一。&lt;/p&gt;
&lt;p&gt;它在做的事其实非常cool。&lt;/p&gt;
&lt;p&gt;它在把大学一年级《计算机组成原理》那本书里的东西，原样搬到LLM的世界里。&lt;/p&gt;
&lt;p&gt;坦率的讲，你想想看过去60年整个计算机体系结构的历史，其实就是一部「怎么让本来是串行的指令跑得更并行」的历史。指令流水线、乱序执行、超标量、分支预测，这些听着就头大的名词，说到底都是在干一件事，就是让CPU不要一条指令一条指令傻乎乎地等，能同时干的活就一起干。&lt;/p&gt;
&lt;p&gt;这套东西人类已经研究得非常透了。透到什么程度呢？透到你今天买一颗普通的i5芯片，它每个时钟周期能同时发射的指令数，大概是80年代那种整栋楼的超级计算机的水平。&lt;/p&gt;
&lt;p&gt;但是。&lt;/p&gt;
&lt;p&gt;当我们把LLM当成一种新型处理器去用的时候，这套智慧全忘了。&lt;/p&gt;
&lt;p&gt;现在几乎所有的Agent框架，底层都是一个叫ReAct的东西。它是Yao等人2022年提的，全称是Reason + Act。工作方式非常朴素，想一步，做一步，看结果，再想一步，再做一步，再看结果。它是一个循环。&lt;/p&gt;
&lt;p&gt;听着很自然对吧？它确实自然。但你仔细看就会发现，这玩意从执行效率上来说，跟那种每次只能执行一条指令、做完一条才开始下一条的远古处理器，是一样的。&lt;/p&gt;
&lt;p&gt;一次一条。干等。&lt;/p&gt;
&lt;p&gt;而且这个问题在越来越多的Agent场景里暴露得越来越厉害，因为我们现在给Agent的活越来越复杂，一次要调用的工具越来越多。ReAct的串行执行就成了一个越来越重的镣铐。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;回到LLMCompiler这块。&lt;/p&gt;
&lt;p&gt;作者的思路简单粗暴，既然Agent执行工具调用的过程跟CPU执行指令长得一样，那就直接套编译器的架构好了。他们搞了三个组件。&lt;/p&gt;
&lt;p&gt;第一个叫 &lt;strong&gt;Function Calling Planner&lt;/strong&gt;，函数调用规划器。你可以把它想象成编译器里那个分析语义、构建依赖图的部分。用户给了一个问题，比如论文里举的那个例子，「微软的市值需要涨多少才能超过苹果？」，Planner要做的事情是先把这个问题拆成几个独立的任务，再搞清楚这些任务之间谁依赖谁。&lt;/p&gt;
&lt;p&gt;它会拆成三步。&lt;/p&gt;
&lt;p&gt;一，去查微软的市值。 二，去查苹果的市值。 三，用一个数学工具做减法，把差值算出来。&lt;/p&gt;
&lt;p&gt;然后它会发现一件事，任务1和任务2，彼此没有任何关系。它们完全可以同时去查。只有任务3需要等前两个都拿到结果。&lt;/p&gt;
&lt;p&gt;这就是一张 &lt;strong&gt;DAG&lt;/strong&gt;，有向无环图，编译器里最核心的数据结构之一。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-04-11-rang-agent-kuai-shang-100-bei-de-mi-mi-qi-shi-cang-zai-yi-be/002-04810f26.png"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;第二个组件叫 &lt;strong&gt;Task Fetching Unit&lt;/strong&gt;，任务获取单元。这个名字直接就是从CPU里偷来的。&lt;/p&gt;
&lt;p&gt;在现代CPU里有一个东西叫指令获取单元，它的任务是一旦前一条指令把某个寄存器的值算出来了，立刻把依赖这个寄存器的下一条指令发射出去，别等一整串指令都准备好再开搞，那样太慢。&lt;/p&gt;
&lt;p&gt;LLMCompiler的Task Fetching Unit做的事完全一样。Planner一吐出DAG，它就开始扫描，发现哪些任务的依赖已经解决了，立刻往下扔。任务1和任务2没有依赖？好，同时发射，两个搜索并行执行。任务3等着1和2的结果？好，等它们回来我再把结果塞进任务3里，然后发射。&lt;/p&gt;
&lt;p&gt;整个过程是流式的。Planner一边在吐计划，执行器一边在干活，中间没有「等Planner把所有计划全想完再开始」这种停顿。论文里专门做了个消融实验，流式处理本身就贡献了一个量级的加速。&lt;/p&gt;
&lt;p&gt;第三个组件叫 &lt;strong&gt;Executor&lt;/strong&gt;，执行器。这个没啥好说的，它就是真正去调工具的那个家伙。Task Fetching Unit告诉它哪个工具可以调了，它就调。&lt;/p&gt;
&lt;p&gt;三个东西加起来，整个架构就跟一台小号的CPU一模一样。有人分析程序，有人调度，有人执行。&lt;/p&gt;
&lt;p&gt;说到这我真的有点被打动。你知道我为啥被打动吗？因为这个思路其实任何一个学过编译原理的本科生都能想到。它没有任何复杂的数学，没有什么神秘的训练技巧，就是把一个用了60年的老配方，拿来炒一道新菜。&lt;/p&gt;
&lt;p&gt;但它偏偏有效。而且效果好到离谱。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;顺着上面的再聊聊，这篇论文最让我兴奋的其实是实验结果部分。&lt;/p&gt;
&lt;p&gt;作者用了四个benchmark来测试LLMCompiler。这四个测试排起来有一个隐藏的升番结构，从最简单的场景到最复杂的场景，效果一个比一个炸。我逐个说一下。&lt;/p&gt;
&lt;p&gt;第一个叫HotpotQA。这是个很经典的多跳问答数据集，论文的Figure 1就举了一个例子，「斯科特·德瑞克森和埃德·伍德是不是同一个国籍？」这种问题。用ReAct的话就是一步一步来，先搜A，拿到结果，再搜B，拿到结果，再对比。用LLMCompiler的话，A和B可以同时搜。&lt;/p&gt;
&lt;p&gt;速度快了1.8倍。成本降了3.37倍。准确率基本一样。&lt;/p&gt;
&lt;p&gt;就这个结果拎出来看已经很能打了，但它只是开胃菜。&lt;/p&gt;
&lt;p&gt;第二个叫Movie Recommendation。这个更有意思，它每次要你从8部电影里找出跟某部电影最像的那部。也就是要对8部电影分别做独立的搜索和分析。&lt;/p&gt;
&lt;p&gt;ReAct在这里干了一件特别傻的事。论文附录里有一张图我看完直接笑出声，它显示有大约85%的样本，ReAct根本没搜完8部就结束了。它搜到第五部就停下来，觉得「我好像够了」，然后给一个答案。&lt;/p&gt;
&lt;p&gt;你敢信？？？&lt;/p&gt;
&lt;p&gt;一个号称能干活的Agent，居然连把活干完都做不到。它会提前认输。&lt;/p&gt;
&lt;p&gt;LLMCompiler在这里就完全没这个问题，因为Planner一开始就把8个任务全部规划好了，Executor必须全部执行完才能汇总。结果是速度快了3.74倍，成本降了6.73倍，准确率还反超ReAct 7个多点。&lt;/p&gt;
&lt;p&gt;第三个叫Game of 24。这游戏你们可能玩过，给你4个数字让你用加减乘除搞出24。之前最强的解法叫Tree-of-Thoughts，让LLM自己去搜索各种可能的组合。LLMCompiler在这里做了一个很骚的事，它把「Tree-of-Thoughts的一次尝试」当成一个工具，然后让Planner去并行调度这些尝试。&lt;/p&gt;
&lt;p&gt;速度快了2倍。&lt;/p&gt;
&lt;p&gt;到这里我已经觉得够牛了。&lt;/p&gt;
&lt;p&gt;但是真正让我给整不会的是第四个benchmark，WebShop。这是一个模拟网上购物的环境，你要在一堆商品里找到符合某些需求的那一个。典型的操作是搜索→看结果→再搜索→再看结果。&lt;/p&gt;
&lt;p&gt;LLMCompiler在这里直接跑出了101.7倍的加速。&lt;/p&gt;
&lt;p&gt;不是10倍，不是50倍，是一百零一点七倍。&lt;/p&gt;
&lt;p&gt;而且成功率还比ReAct高了25.7个百分点。&lt;/p&gt;
&lt;p&gt;我第一次看到这个数字的时候真的愣住了。我来回看了好几遍论文的表格，生怕自己看错了小数点。101.7x。&lt;/p&gt;
&lt;p&gt;它的原因其实非常直观。WebShop里有大量「先广撒网再选最优」的搜索动作。LLMCompiler可以一口气把所有候选搜索并行发射出去，而ReAct得一个一个搜。你想想，如果你在淘宝上找一个东西，你是一次打开十几个标签页横向对比，还是一个一个点开再返回再点开？&lt;/p&gt;
&lt;p&gt;答案很明显。&lt;/p&gt;
&lt;p&gt;但前者需要你有一个「规划」的能力，得先知道哪十几个是值得看的。这恰好就是LLMCompiler在做的事。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-04-11-rang-agent-kuai-shang-100-bei-de-mi-mi-qi-shi-cang-zai-yi-be/003-df4faf7b.png"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;这块需要注意一下。LLMCompiler的意义不只是快，还有一个更深的点，它顺手救了准确率。&lt;/p&gt;
&lt;p&gt;这个我刚才提到了一嘴，但值得展开说说。作者分析了ReAct失败的案例之后发现，这些失败的绝大多数其实跟智力无关，跟纪律有关。&lt;/p&gt;
&lt;p&gt;两种典型的失败场景。一种是提前收工，它只搜了部分信息就觉得够了，开始瞎答。另一种更惨，是它会在同一个查询上无限循环，因为Wikipedia返回的信息不够精确，它就一直搜一直搜一直搜，直到context window爆掉。&lt;/p&gt;
&lt;p&gt;这两种失败加起来，贡献了ReAct绝大部分的失败样本。&lt;/p&gt;
&lt;p&gt;为啥会这样？我自己的理解是，ReAct是一种即兴架构。它没有全局视野，每一步都是基于上一步的观察临时决策的。这种即兴决策模式很像我们人脑，但它也天然带着人脑即兴决策的毛病，容易累、容易放弃、容易走进死胡同。&lt;/p&gt;
&lt;p&gt;LLMCompiler强迫模型在一开始就把所有要做的事列出来，这等于逼着它做一次系统性的规划。规划好了之后，执行阶段就只负责执行，不再思考。&lt;/p&gt;
&lt;p&gt;我觉得这里有一个非常深的启发。我们过去几年一直在迷信让LLM多想一步，搞出了Chain-of-Thought、Tree-of-Thoughts、Self-Reflection各种花活，都是在鼓励模型「思考得更细、更久、更多」。但其实有时候反过来，让它先想一次然后别再想了，反而更管用。&lt;/p&gt;
&lt;p&gt;CPU的设计哲学其实也是这样。现代CPU里最快的指令是那些不需要跳转、不需要预测、不需要动态决策的指令。凡是涉及到走一步看一步的指令，都会拖慢整条流水线。&lt;/p&gt;
&lt;p&gt;计算机硬件的人早就发现了，即兴决策是昂贵的。&lt;/p&gt;
&lt;p&gt;而这个老道理，现在又回到了AI Agent这边。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;坦率的讲，我觉得LLMCompiler这篇论文本身可能不是最大的新闻。真正的新闻是它揭示的那个更大的趋势。&lt;/p&gt;
&lt;p&gt;我们正在把整个计算机体系结构，重新发明一遍。&lt;/p&gt;
&lt;p&gt;你仔细想想这几年LLM推理和Agent方向上那些最亮眼的突破，几乎每一个都能在老教科书里找到原型。&lt;/p&gt;
&lt;p&gt;Speculative decoding，是把CPU的分支预测搬到了LLM推理。 KV cache，是把CPU的cache机制搬到了LLM推理。 Continuous batching，是把操作系统的进程调度搬到了LLM推理。 现在LLMCompiler，是把编译器的指令调度搬到了LLM Agent。&lt;/p&gt;
&lt;p&gt;每一个都在发生。每一个都带来10倍甚至100倍的加速。每一个的核心创意都不是横空出世的神来之笔，而是一句「等等，这个问题我们在硬件/OS层面已经解决过了，直接拿来用就好」。&lt;/p&gt;
&lt;p&gt;卡帕西前阵子说过一句我记了很久的话，他说LLM是一种新的计算机，一种以自然语言为指令集的计算机。这句话如果你真的认真对待，那它的所有推论都是自洽的。既然它是一种新的计算机，那我们给旧计算机发明的所有优化技巧，理论上都应该能再用一次。&lt;/p&gt;
&lt;p&gt;我有时候会觉得，我们这一代做AI的人特别幸运。我们在亲眼看一部已经拍过一遍的电影，被用新的道具重新拍摄。剧本是一样的，角色是一样的，剧情走向都是一样的。但因为道具全换了，看起来就像一部全新的片子。而且你手里只要有一本原版的剧本，你就能提前知道下一幕会发生什么。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-04-11-rang-agent-kuai-shang-100-bei-de-mi-mi-qi-shi-cang-zai-yi-be/004-65e386c4.png"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;回到这篇论文本身。&lt;/p&gt;
&lt;p&gt;我觉得它最重要的贡献其实不是那些benchmark数字，而是它开了一个非常清晰的方向。那就是Agent的慢不是不可解决的。&lt;/p&gt;
&lt;p&gt;你今天用Claude Code等十分钟，不是因为LLM笨，也不是因为你的任务太复杂。是因为底下那套调度系统还在用ReAct这种20世纪60年代级别的执行模式。只要换上哪怕一个粗糙的编译器思路，立刻就能快10倍、快100倍。&lt;/p&gt;
&lt;p&gt;其实这两年已经有不少框架在往这个方向走了，LangGraph、LlamaIndex都陆陆续续搞过类似的planner组件，多Agent框架里的并发调度也都能看到这套思路的影子。但奇怪的是，我们日常在用的那些最主流的Agent产品，Claude Code、Cursor这些，还是没有把这套东西吃得特别透。你还是经常能看到它们在那里一步一步串行地跑，跑得你抓狂。&lt;/p&gt;
&lt;p&gt;我始终觉得这是一件很可惜的事。一个两年前就该被充分吸收的好思路，到今天还只在部分框架里存在，绝大多数用户还是在吃ReAct的苦。&lt;/p&gt;
&lt;p&gt;其实之前OpenAI做过一个简化版，它叫Parallel Function Calling。但这篇论文里也明确对比了，OpenAI那个只能处理最简单的、完全独立的并行任务，一碰到有依赖关系的就歇菜了。LLMCompiler能处理有依赖的完整DAG，这是质变。而且论文在ParallelQA这个他们自己造的benchmark上，直接把OpenAI的并行函数调用给干穿了。&lt;/p&gt;
&lt;p&gt;还有一个让我很开心的点，LLMCompiler不依赖特定模型。它能跑在闭源的GPT系列上，也能跑在开源的LLaMA-2 70B上，效果都很好。这意味着你要用它，不需要求爷爷告奶奶去办一个特殊API，自己拿个开源模型搭一套就能跑。对整个开源生态是实实在在的利好。&lt;/p&gt;
&lt;p&gt;论文的代码早就开源在 &lt;a class="link" href="https://github.com/SqueezeAILab/LLMCompiler" target="_blank" rel="noopener"
 &gt;https://github.com/SqueezeAILab/LLMCompiler&lt;/a&gt; ，这两年我零零散散跑过一些例子，整体感觉是它确实好使，但对Planner的prompt质量非常敏感，稍微写粗糙一点就容易崩。这大概也是为啥它没在主流产品里全面铺开的原因之一，论文里优雅的架构，落到工程上总会多出一堆脏活。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;最后说点题外话。&lt;/p&gt;
&lt;p&gt;我一直觉得AI这个行业最迷人的地方，就在于它需要你是一个杂食动物。你得懂一点机器学习，懂一点系统，懂一点产品，懂一点用户。因为AI正在跟所有领域发生化学反应，任何一个你以为已经过时的角落，都可能突然长出一个全新的方向。&lt;/p&gt;
&lt;p&gt;LLMCompiler这篇论文就是一个典型的例子。它既不需要你是最顶尖的ML研究员，也不需要你是最强的系统工程师。它需要你有一个能从「我的LLM Agent跑得好慢啊」跳到「诶等等，CPU当年也有这个问题，是怎么解决的来着？」的跨界联想能力。&lt;/p&gt;
&lt;p&gt;我始终觉得这种联想能力，比任何单一领域的深度都重要。&lt;/p&gt;
&lt;p&gt;很多朋友问我怎么跟上AI的发展。我有时候觉得，与其拼命去看最新的模型发布，不如回头去翻翻那些老的、经典的、看起来跟AI毫无关系的书。编译原理、操作系统、计算机网络、数据库系统、图形学。这些书里有太多你以为已经过时的东西，在LLM时代突然又活了过来。&lt;/p&gt;
&lt;p&gt;你读过的每一本旧书，都可能在未来某天变成一枚重新上膛的子弹。&lt;/p&gt;
&lt;p&gt;前提是你得先把枪挂在墙上。&lt;/p&gt;
&lt;p&gt;以上。&lt;/p&gt;</description></item><item><title>干货 | 轻量级驾驭工程：AI Coding Workflow 最佳落地实践</title><link>https://xiaobox.github.io/p/2026-03-30-gan-huo-qing-liang-ji-jia-yu-gong-cheng-ai-coding-workflow-z/</link><pubDate>Mon, 30 Mar 2026 11:58:33 +0000</pubDate><guid>https://xiaobox.github.io/p/2026-03-30-gan-huo-qing-liang-ji-jia-yu-gong-cheng-ai-coding-workflow-z/</guid><description>&lt;img src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-30-gan-huo-qing-liang-ji-jia-yu-gong-cheng-ai-coding-workflow-z/cover.jpg" alt="Featured image of post 干货 | 轻量级驾驭工程：AI Coding Workflow 最佳落地实践" /&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;导读&lt;/strong&gt;：
在 AI 辅助编程普及的今天，你的团队是怎么写代码的？是靠开发者随心所欲的“自然对话”，还是有严谨的工作流约束？
本文将为你详细拆解“轻量 Harness 化 AI 研发工作流”的设计思路、工具选型与落地路径。无论你是独立开发者还是研发团队负责人，这套直接可抄作业的 Workflow 都不容错过。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="一-ai-编程的向左走向右走"&gt;&lt;a href="#%e4%b8%80-ai-%e7%bc%96%e7%a8%8b%e7%9a%84%e5%90%91%e5%b7%a6%e8%b5%b0%e5%90%91%e5%8f%b3%e8%b5%b0" class="header-anchor"&gt;&lt;/a&gt;一、 AI 编程的“向左走向右走”
&lt;/h2&gt;&lt;p&gt;当前 AI 编程的实践，大致演化出了两条截然不同的路径：&lt;strong&gt;Vibe Coding&lt;/strong&gt; 与 &lt;strong&gt;规范驱动开发 (SDD)&lt;/strong&gt;。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;维度&lt;/th&gt;
 &lt;th&gt;🎨 Vibe Coding (直觉编程)&lt;/th&gt;
 &lt;th&gt;📐 规范驱动开发 (SDD)&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;核心理念&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;自由交互，强调开发者与 AI 的自然对话&lt;/td&gt;
 &lt;td&gt;规范先行，以 Spec 为唯一事实来源&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;适用场景&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;快速原型、概念验证、探索性开发&lt;/td&gt;
 &lt;td&gt;生产环境、复杂系统、高质量要求&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;侧重点&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;提示词 (Prompt) 工程的灵活性&lt;/td&gt;
 &lt;td&gt;规范的严谨性与完整性&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-30-gan-huo-qing-liang-ji-jia-yu-gong-cheng-ai-coding-workflow-z/001-67e36290.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⚠️ Vibe Coding 的隐患：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;随着大模型能力的增强，Vibe Coding 搭配插件确实能快速出活。但在&lt;strong&gt;团队级实践&lt;/strong&gt;中，它暴露出 4 个致命问题：&lt;/p&gt;
&lt;p&gt;1.&lt;strong&gt;效果不可控&lt;/strong&gt;：不同模型、不同 Prompt 风格的产出质量参差不齐。&lt;/p&gt;
&lt;p&gt;2.&lt;strong&gt;幻觉难约束&lt;/strong&gt;：缺乏结构化约束，强如顶尖模型也会“胡编乱造”。&lt;/p&gt;
&lt;p&gt;3.&lt;strong&gt;技术债隐蔽&lt;/strong&gt;：表面跑通了，底层可能埋下了架构和质量的“雷”。&lt;/p&gt;
&lt;p&gt;4.&lt;strong&gt;协作难统一&lt;/strong&gt;：个人习惯各异，大规模协作时极易失控。&lt;/p&gt;
&lt;p&gt;正是为了系统性解决这些痛点，&lt;strong&gt;SDD (Spec-Driven Development)&lt;/strong&gt; 应运而生。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二-什么是-sdd它为什么重要"&gt;&lt;a href="#%e4%ba%8c-%e4%bb%80%e4%b9%88%e6%98%af-sdd%e5%ae%83%e4%b8%ba%e4%bb%80%e4%b9%88%e9%87%8d%e8%a6%81" class="header-anchor"&gt;&lt;/a&gt;二、 什么是 SDD？它为什么重要？
&lt;/h2&gt;
 &lt;blockquote&gt;
 &lt;p&gt;💡 &lt;strong&gt;核心理念：&lt;/strong&gt; 在 SDD 中，&lt;strong&gt;规范（而非代码）才是唯一的事实来源&lt;/strong&gt;。开发者编写严谨的自然语言规范，由 AI 自动生成、测试并维护代码。
参考阅读：GitHub Spec-Driven Development&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;采用 SDD，意味着研发范式的三大转变：&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 或加功能，不再直接改代码，而是&lt;strong&gt;先更新规范&lt;/strong&gt;，再让 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;：强制 AI 聚焦业务逻辑。遇到模糊需求必须提问（&lt;code&gt;[需要澄清]&lt;/code&gt;），杜绝瞎猜。&lt;/p&gt;
&lt;p&gt;▫&lt;strong&gt;架构宪法&lt;/strong&gt;：设定硬规则（如：必须先写测试并确认失败，才能写业务代码；强制模块化等）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🎯 终极价值&lt;/strong&gt;：消除需求与实现之间的鸿沟，让程序员从“敲代码的打工人”进化为“定义系统意图的架构师”。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="三-击中痛点告别实现漂移"&gt;&lt;a href="#%e4%b8%89-%e5%87%bb%e4%b8%ad%e7%97%9b%e7%82%b9%e5%91%8a%e5%88%ab%e5%ae%9e%e7%8e%b0%e6%bc%82%e7%a7%bb" class="header-anchor"&gt;&lt;/a&gt;三、 击中痛点：告别“实现漂移”
&lt;/h2&gt;&lt;p&gt;主流 AI 工作流为何纷纷拥抱 SDD？因为它解决了一个核心顽疾——&lt;strong&gt;实现漂移 (Implementation Drift)&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;在随意的 Vibe Coding 中，代码层的知识无法被提取和固化。AI Agent 就像一个失忆的工人，缺乏上层显性知识和关键上下文，导致：&lt;/p&gt;
&lt;p&gt;○&lt;strong&gt;效率低下&lt;/strong&gt;：每次开发都要让 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; &amp;amp; &lt;strong&gt;质量崩塌&lt;/strong&gt;：Bug 和技术债越滚越大。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="四-主流-sdd-工作流大比拼"&gt;&lt;a href="#%e5%9b%9b-%e4%b8%bb%e6%b5%81-sdd-%e5%b7%a5%e4%bd%9c%e6%b5%81%e5%a4%a7%e6%af%94%e6%8b%bc" class="header-anchor"&gt;&lt;/a&gt;四、 主流 SDD 工作流大比拼
&lt;/h2&gt;&lt;p&gt;社区中已涌现出众多优秀的 SDD 实践方案，我们进行了深度体验对比：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;工作流&lt;/th&gt;
 &lt;th&gt;定位与特色&lt;/th&gt;
 &lt;th&gt;GitHub 仓库&lt;/th&gt;
 &lt;th&gt;实践痛点&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Spec-Kit&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;官方工具链，全链路 (constitution/spec/plan/tasks/implement) 完整&lt;/td&gt;
 &lt;td&gt;github/spec-kit&lt;/td&gt;
 &lt;td&gt;流程重、Token 消耗大、耗时长、维护成本高&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;OpenSpec&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;轻量级 SDD 实现，更灵活&lt;/td&gt;
 &lt;td&gt;Fission-AI/OpenSpec&lt;/td&gt;
 &lt;td&gt;需人为设计流程，上手门槛较高&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;GSD&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;强调 fresh context 和 map-codebase 的分阶段框架&lt;/td&gt;
 &lt;td&gt;gsd-build/get-shit-done&lt;/td&gt;
 &lt;td&gt;棕地项目知识总结极佳，但完整流程耗时长&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;superpowers&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Skills 驱动，强调 brainstorming, TDD 和 review&lt;/td&gt;
 &lt;td&gt;obra/superpowers&lt;/td&gt;
 &lt;td&gt;亮点突出，但整体流程中部分步骤相对薄弱&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;compound engineering&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;闭环流程 (Brainstorm→Plan→Work→Review→Compound)&lt;/td&gt;
 &lt;td&gt;EveryInc/compound-engineering-plugin&lt;/td&gt;
 &lt;td&gt;流程合理，但对棕地项目的存量知识沉淀不足&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;结论：&lt;/strong&gt; 在生产环境中，我们需要平衡&lt;strong&gt;开发效率、代码质量和 Token 成本&lt;/strong&gt;。目前没有任何单一工作流能完美兼顾，强行绑定只会让开发体验打折。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="五-破局策略组合最优解缝合怪战术"&gt;&lt;a href="#%e4%ba%94-%e7%a0%b4%e5%b1%80%e7%ad%96%e7%95%a5%e7%bb%84%e5%90%88%e6%9c%80%e4%bc%98%e8%a7%a3%e7%bc%9d%e5%90%88%e6%80%aa%e6%88%98%e6%9c%af" class="header-anchor"&gt;&lt;/a&gt;五、 破局策略：组合最优解（缝合怪战术）
&lt;/h2&gt;&lt;p&gt;基于上述痛点，我们的落地策略是：&lt;strong&gt;取各家之长，组合使用&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;○&lt;strong&gt;阶段一（当下）&lt;/strong&gt;：做“缝合怪”。串联 &lt;code&gt;GSD&lt;/code&gt; + &lt;code&gt;compound engineering&lt;/code&gt; + &lt;code&gt;superpowers&lt;/code&gt; 的最佳环节，先跑通验证。&lt;/p&gt;
&lt;p&gt;○&lt;strong&gt;阶段二（未来）&lt;/strong&gt;：逐步过渡到自研工作流，形成完全契合团队基因的 AI 编程链路。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🛠️ 工具选用原则与雷达图：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;流程环节&lt;/th&gt;
 &lt;th&gt;选用工具&lt;/th&gt;
 &lt;th&gt;选用理由（最佳平衡点）&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;🔍 &lt;strong&gt;Codebase 分析&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;GSD &lt;code&gt;/gsd:map-codebase&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;对棕地项目（遗留系统）分析最全面完整&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;🧠 &lt;strong&gt;Brainstorm&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;CE &lt;code&gt;/ce:brainstorm&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;探索速度与效果的最优平衡&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;📝 &lt;strong&gt;Plan&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;CE &lt;code&gt;/ce:plan&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;兼具效率和生成质量，Token 消耗合理&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;💻 &lt;strong&gt;Work&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Claude Code / Codex&lt;/td&gt;
 &lt;td&gt;无需特殊指令，明确方案下 AI Agent 自主能力已足够&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;👀 &lt;strong&gt;Review&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;superpowers (自然语言)&lt;/td&gt;
 &lt;td&gt;综合表现最佳：不慢、不冗长、反馈极具价值&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;📈 &lt;strong&gt;Compound&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;GSD &lt;code&gt;/gsd:map-codebase&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;支持增量更新，自动识别并沉淀项目变化&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;em&gt;(注：CE 为 compound engineering 的简称)&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="六-终极实战六步法完整工作流"&gt;&lt;a href="#%e5%85%ad-%e7%bb%88%e6%9e%81%e5%ae%9e%e6%88%98%e5%85%ad%e6%ad%a5%e6%b3%95%e5%ae%8c%e6%95%b4%e5%b7%a5%e4%bd%9c%e6%b5%81" class="header-anchor"&gt;&lt;/a&gt;六、 终极实战：六步法完整工作流
&lt;/h2&gt;&lt;p&gt;综合打磨后，我们得出了这套黄金六步法。它与 Compound Engineering 的流程高度重合（因其设计合理），但我们&lt;strong&gt;补齐了 Codebase 环节，并替换了部分步骤的具体实现&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-30-gan-huo-qing-liang-ji-jia-yu-gong-cheng-ai-coding-workflow-z/002-5af760dc.png"&gt;&lt;/p&gt;
&lt;h3 id="-step-1-codebase-建立项目认知"&gt;&lt;a href="#-step-1-codebase-%e5%bb%ba%e7%ab%8b%e9%a1%b9%e7%9b%ae%e8%ae%a4%e7%9f%a5" class="header-anchor"&gt;&lt;/a&gt;👣 Step 1: Codebase (建立项目认知)
&lt;/h3&gt;&lt;p&gt;○&lt;strong&gt;执行方式&lt;/strong&gt;：运行 GSD 的 &lt;code&gt;/gsd:map-codebase&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;○&lt;strong&gt;作用&lt;/strong&gt;：并行拉起多个代理，全面提取架构文档、规范、外部集成、技术栈、风险点。为后续开发提供关键上下文。&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-30-gan-huo-qing-liang-ji-jia-yu-gong-cheng-ai-coding-workflow-z/003-533e2da0.png"&gt;&lt;/p&gt;
&lt;h3 id="-step-2-brainstorm--research-技术方案探索"&gt;&lt;a href="#-step-2-brainstorm--research-%e6%8a%80%e6%9c%af%e6%96%b9%e6%a1%88%e6%8e%a2%e7%b4%a2" class="header-anchor"&gt;&lt;/a&gt;👣 Step 2: Brainstorm / Research (技术方案探索)
&lt;/h3&gt;&lt;p&gt;○&lt;strong&gt;执行方式&lt;/strong&gt;：运行 &lt;code&gt;/ce:brainstorm&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;○&lt;strong&gt;作用&lt;/strong&gt;：结合项目现状探索可行性方案，效率与效果极佳。&lt;/p&gt;
&lt;h3 id="-step-3-plan-制定开发计划"&gt;&lt;a href="#-step-3-plan-%e5%88%b6%e5%ae%9a%e5%bc%80%e5%8f%91%e8%ae%a1%e5%88%92" class="header-anchor"&gt;&lt;/a&gt;👣 Step 3: Plan (制定开发计划)
&lt;/h3&gt;&lt;p&gt;○&lt;strong&gt;执行方式&lt;/strong&gt;：运行 &lt;code&gt;/ce:plan&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;○&lt;strong&gt;作用&lt;/strong&gt;：总结探索成果，输出高质低耗的开发计划。&lt;/p&gt;
&lt;h3 id="-step-4-work-执行开发"&gt;&lt;a href="#-step-4-work-%e6%89%a7%e8%a1%8c%e5%bc%80%e5%8f%91" class="header-anchor"&gt;&lt;/a&gt;👣 Step 4: Work (执行开发)
&lt;/h3&gt;&lt;p&gt;○&lt;strong&gt;执行方式&lt;/strong&gt;：&lt;strong&gt;直接对话&lt;/strong&gt;使用 Claude Code 或 Codex。&lt;/p&gt;
&lt;p&gt;○&lt;strong&gt;作用&lt;/strong&gt;：为什么不加约束？因为前置方案已明确，放开手脚让 AI 自主调用工具和子代理，反而能最大化效率。&lt;/p&gt;
&lt;h3 id="-step-5-review-代码审查"&gt;&lt;a href="#-step-5-review-%e4%bb%a3%e7%a0%81%e5%ae%a1%e6%9f%a5" class="header-anchor"&gt;&lt;/a&gt;👣 Step 5: Review (代码审查)
&lt;/h3&gt;&lt;p&gt;○&lt;strong&gt;执行方式&lt;/strong&gt;：通过自然语言触发 superpowers，例如：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;em&gt;&amp;ldquo;用 superpowers 对最新的一次 commit 进行 code review&amp;rdquo;&lt;/em&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;○&lt;strong&gt;作用&lt;/strong&gt;：提供速度适中、精炼且极具价值的代码质量反馈。&lt;/p&gt;
&lt;h3 id="-step-6-compound-知识复利"&gt;&lt;a href="#-step-6-compound-%e7%9f%a5%e8%af%86%e5%a4%8d%e5%88%a9" class="header-anchor"&gt;&lt;/a&gt;👣 Step 6: Compound (知识复利)
&lt;/h3&gt;&lt;p&gt;○&lt;strong&gt;执行方式&lt;/strong&gt;：再次运行 &lt;code&gt;/gsd:map-codebase&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;○&lt;strong&gt;作用&lt;/strong&gt;：沉淀显性知识（业务逻辑、技术决策等）。支持增量识别，无需每次代码变更都执行。&lt;strong&gt;建议执行时机&lt;/strong&gt;：Feature 完成时、做出重要技术决策时、架构显著变化时。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="七-灵活适配按场景裁剪流程"&gt;&lt;a href="#%e4%b8%83-%e7%81%b5%e6%b4%bb%e9%80%82%e9%85%8d%e6%8c%89%e5%9c%ba%e6%99%af%e8%a3%81%e5%89%aa%e6%b5%81%e7%a8%8b" class="header-anchor"&gt;&lt;/a&gt;七、 灵活适配：按场景“裁剪”流程
&lt;/h2&gt;&lt;p&gt;全套流程虽好，但没必要杀鸡用牛刀。团队可根据任务粒度自由裁剪：&lt;/p&gt;
&lt;p&gt;○🚀 &lt;strong&gt;完整 Feature 开发&lt;/strong&gt; (工作量大)：&lt;code&gt;Codebase → Brainstorm → Plan → Work → Review → Compound&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;○🏃 &lt;strong&gt;中等粒度任务&lt;/strong&gt; (方案清晰)：&lt;code&gt;Codebase → Work → Review → Compound&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;○🔧 &lt;strong&gt;小型修复/调整&lt;/strong&gt; (日常 Bug)：&lt;code&gt;Codebase → Work → Review&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;○🩹 &lt;strong&gt;快速修补&lt;/strong&gt; (十万火急)：&lt;code&gt;Codebase → Work&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⚠️ 避坑指南：&lt;/strong&gt; 即使使用短流程，也要记得&lt;strong&gt;定期执行 Compound (&lt;code&gt;/gsd:map-codebase&lt;/code&gt;)&lt;/strong&gt; 沉淀知识，防止“实现漂移”死灰复燃！&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="八-建立知识沉淀体系动静分离策略"&gt;&lt;a href="#%e5%85%ab-%e5%bb%ba%e7%ab%8b%e7%9f%a5%e8%af%86%e6%b2%89%e6%b7%80%e4%bd%93%e7%b3%bb%e5%8a%a8%e9%9d%99%e5%88%86%e7%a6%bb%e7%ad%96%e7%95%a5" class="header-anchor"&gt;&lt;/a&gt;八、 建立知识沉淀体系（动静分离策略）
&lt;/h2&gt;&lt;p&gt;通过上述 Workflow，项目会自然沉淀出两类核心资产，我们称之为&lt;strong&gt;动静分离&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;1.🔄 &lt;strong&gt;Codebase 文档 (动态，全队共享)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;由 &lt;code&gt;/gsd:map-codebase&lt;/code&gt; 自动刷新，包含项目结构、模块关系、依赖分析。它是 AI Agent 的“实时地图”。&lt;/p&gt;
&lt;p&gt;2.📌 &lt;strong&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; / &lt;code&gt;AGENTS.md&lt;/code&gt; (静态，手动维护)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;用于兼容不同 AI 工具的内容一致性文件。主要记录&lt;strong&gt;开发规范、技术约束、业务规则和“绝对禁区”&lt;/strong&gt;。不频繁变更。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(除这两者外，其他过程文档在开发结束后可直接删除或归档。)&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="九-驾驭工程的核心上下文工程"&gt;&lt;a href="#%e4%b9%9d-%e9%a9%be%e9%a9%ad%e5%b7%a5%e7%a8%8b%e7%9a%84%e6%a0%b8%e5%bf%83%e4%b8%8a%e4%b8%8b%e6%96%87%e5%b7%a5%e7%a8%8b" class="header-anchor"&gt;&lt;/a&gt;九、 驾驭工程的核心：上下文工程
&lt;/h2&gt;&lt;p&gt;有工具还不够，AI 编程的终极壁垒是：&lt;strong&gt;将隐性知识转化为显性知识。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不要指望 AI 自己去翻代码找表结构，这不仅慢而且容易错。我们需要主动投喂“AI 友好的知识形态”（Context Engineering）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;✅ AI 喜欢的格式：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;○&lt;code&gt;.md&lt;/code&gt; Markdown 文件 (如 PRD 文档)&lt;/p&gt;
&lt;p&gt;○&lt;code&gt;.sql&lt;/code&gt; 数据库脚本 / 表结构导出&lt;/p&gt;
&lt;p&gt;○结构化的 Schema / JSON / YAML (如 UI 交互描述)&lt;/p&gt;
&lt;p&gt;○CLI 命令行工具 / Bash 脚本&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;❌ AI 讨厌的格式：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;○Word、Excel、PPT 等非结构化办公文档。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;落地建议：&lt;/strong&gt; 团队需建立规范，确保业务规则、设计图和数据结构在进入工作流前，已被转化为上述机读友好的格式。这是划定 AI 操作边界、消除幻觉的关键。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-附录工具链安装避坑指南"&gt;&lt;a href="#-%e9%99%84%e5%bd%95%e5%b7%a5%e5%85%b7%e9%93%be%e5%ae%89%e8%a3%85%e9%81%bf%e5%9d%91%e6%8c%87%e5%8d%97" class="header-anchor"&gt;&lt;/a&gt;🛠️ 附录：工具链安装避坑指南
&lt;/h2&gt;&lt;p&gt;为了方便大家上手，我们整理了三大工具的安装差异。&lt;strong&gt;整体结论：建议统一使用 Claude Code 执行工作流，支持度最好。&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;工具&lt;/th&gt;
 &lt;th&gt;Claude Code 安装姿势&lt;/th&gt;
 &lt;th&gt;Codex 安装姿势&lt;/th&gt;
 &lt;th&gt;差异与踩坑点&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;GSD&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;npx get-shit-done-cc --claude --global&lt;/code&gt; (或 &lt;code&gt;--local&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;npx get-shit-done-cc --codex --global&lt;/code&gt; (或 &lt;code&gt;--local&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;同一个 installer，Codex 侧是 skills-first，最省事。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;superpowers&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/plugin install superpowers@claude-plugins-official&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;需 clone 仓库 + 建立 symlink 到 Codex skills 目录。详见 Codex 官方文档&lt;/td&gt;
 &lt;td&gt;明显 Claude-first，Codex 需要繁琐的手工安装。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;compound-engineering&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;先 &lt;code&gt;/plugin marketplace add EveryInc/compound-engineering-plugin&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;再 &lt;code&gt;/plugin install compound-engineering&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bunx @every-env/compound-plugin install compound-engineering --to codex&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Claude 是原生插件；Codex 是转换安装（且官方标明为 experimental）。&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;🔗 传送门：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;○GSD: &lt;a class="link" href="https://github.com/gsd-build/get-shit-done" target="_blank" rel="noopener"
 &gt;https://github.com/gsd-build/get-shit-done&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;○superpowers: &lt;a class="link" href="https://github.com/obra/superpowers" target="_blank" rel="noopener"
 &gt;https://github.com/obra/superpowers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;○compound-engineering: &lt;a class="link" href="https://github.com/EveryInc/compound-engineering-plugin" target="_blank" rel="noopener"
 &gt;https://github.com/EveryInc/compound-engineering-plugin&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Google 刚刚把多模态检索，从“拼装工程”变成了“基础能力”</title><link>https://xiaobox.github.io/p/2026-03-12-google-gang-gang-ba-duo-mo-tai-jian-suo-cong-pin-zhuang-gong/</link><pubDate>Thu, 12 Mar 2026 02:51:44 +0000</pubDate><guid>https://xiaobox.github.io/p/2026-03-12-google-gang-gang-ba-duo-mo-tai-jian-suo-cong-pin-zhuang-gong/</guid><description>&lt;img src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-12-google-gang-gang-ba-duo-mo-tai-jian-suo-cong-pin-zhuang-gong/cover.jpg" alt="Featured image of post Google 刚刚把多模态检索，从“拼装工程”变成了“基础能力”" /&gt;&lt;p&gt;过去几年，多模态检索一直有一种很别扭的感觉：大家都知道它重要，也都知道它有价值，但真要落地，往往就会迅速滑向一场“拼装工程”。文本一套模型，图片一套模型，音频最好先转写，视频最好先抽帧，PDF 还要单独解析。最后系统看起来像是“能搜”，可背后其实是五六条处理链硬拼在一起，复杂、昂贵，而且很难优雅。&lt;/p&gt;
&lt;p&gt;Google 新发布的 &lt;strong&gt;Gemini Embedding 2&lt;/strong&gt;，真正让人眼前一亮的，不是它又把 embedding 做强了一点，而是它第一次把&lt;strong&gt;文本、图片、音频、视频、PDF拉进了同一个统一向量空间里&lt;/strong&gt;。官方把它定义为 Google &lt;strong&gt;首个原生多模态 embedding 模型&lt;/strong&gt;，目前已经通过 &lt;strong&gt;Gemini API&lt;/strong&gt; 和 &lt;strong&gt;Vertex AI&lt;/strong&gt; 进入 Public Preview。&lt;/p&gt;
&lt;p&gt;这件事听上去像模型更新，实际上更像一次架构层的洗牌。因为从这一刻起，多模态检索终于不再只是“大厂能做、小团队很难做优雅”的高级能力，而开始像一项真正的基础设施：可以被调用，可以被组合，也可以被更低成本地接进你的搜索、RAG、知识库和内容系统里。&lt;/p&gt;
&lt;h2 id="它到底强在哪不只是支持多模态"&gt;&lt;a href="#%e5%ae%83%e5%88%b0%e5%ba%95%e5%bc%ba%e5%9c%a8%e5%93%aa%e4%b8%8d%e5%8f%aa%e6%98%af%e6%94%af%e6%8c%81%e5%a4%9a%e6%a8%a1%e6%80%81" class="header-anchor"&gt;&lt;/a&gt;它到底强在哪，不只是“支持多模态”
&lt;/h2&gt;&lt;p&gt;很多人看到这里，第一反应可能是：&lt;/p&gt;
&lt;p&gt;“支持文本、图片、音频、视频、PDF，这不就是多模态吗？”&lt;/p&gt;
&lt;p&gt;还真不止。&lt;/p&gt;
&lt;p&gt;Gemini Embedding 2 的关键不只是“什么都能输进去”，而是所有模态出来以后能落在同一个 embedding space 里。这意味着什么？意味着你不再一定要为每种媒介维护完全独立的语义体系。文本可以搜图片，图片可以召回 PDF，音频可以关联视频片段，跨模态检索终于不是一层额外的“补丁能力”，而成了模型本身的默认能力。&lt;/p&gt;
&lt;p&gt;这会直接改变系统设计思路。&lt;/p&gt;
&lt;p&gt;以前你更像是在设计“五条平行管线”。&lt;/p&gt;
&lt;p&gt;现在你更像是在设计“一个统一召回底座”。&lt;/p&gt;
&lt;p&gt;注意，我这里说的是“更像”，不是说所有复杂度从此消失。长视频仍然要切片，复杂知识库仍然要做 metadata 设计，高要求场景依然常常需要 rerank。&lt;/p&gt;
&lt;h2 id="最值钱的地方是它终于不再要求你先做翻译官"&gt;&lt;a href="#%e6%9c%80%e5%80%bc%e9%92%b1%e7%9a%84%e5%9c%b0%e6%96%b9%e6%98%af%e5%ae%83%e7%bb%88%e4%ba%8e%e4%b8%8d%e5%86%8d%e8%a6%81%e6%b1%82%e4%bd%a0%e5%85%88%e5%81%9a%e7%bf%bb%e8%af%91%e5%ae%98" class="header-anchor"&gt;&lt;/a&gt;最值钱的地方，是它终于不再要求你先做“翻译官”
&lt;/h2&gt;&lt;p&gt;过去处理非文本内容时，行业里一个非常常见的默认动作是“先降级成文本”。&lt;/p&gt;
&lt;p&gt;●音频？先 Whisper。&lt;/p&gt;
&lt;p&gt;●视频？先抽帧，最好再加字幕。&lt;/p&gt;
&lt;p&gt;●PDF？先 OCR，再抽正文。&lt;/p&gt;
&lt;p&gt;这类方案当然能工作，但本质上是在让系统把所有模态都挤进“文本入口”里。Gemini Embedding 2 做的，是把入口重新打开。它可以&lt;strong&gt;原生摄取音频，不需要中间文本转写&lt;/strong&gt;；视频支持约 2 分钟级别的原生输入；PDF 也可以直接嵌入。&lt;/p&gt;
&lt;p&gt;这意味着搜索开始更接近人真正理解世界的方式。&lt;/p&gt;
&lt;p&gt;●你问“哪节课讲过这个图”，系统不一定非要先把整门课转成文本再去关键词匹配；&lt;/p&gt;
&lt;p&gt;●你上传一段声音，也不一定非得先变成文字才能参与检索；&lt;/p&gt;
&lt;p&gt;●你搜一个商品，也不一定要把图和文分开索引，最后再人工拼装成“结果页”。&lt;/p&gt;
&lt;h2 id="一个特别容易被低估的能力它可以表示实体不只是素材"&gt;&lt;a href="#%e4%b8%80%e4%b8%aa%e7%89%b9%e5%88%ab%e5%ae%b9%e6%98%93%e8%a2%ab%e4%bd%8e%e4%bc%b0%e7%9a%84%e8%83%bd%e5%8a%9b%e5%ae%83%e5%8f%af%e4%bb%a5%e8%a1%a8%e7%a4%ba%e5%ae%9e%e4%bd%93%e4%b8%8d%e5%8f%aa%e6%98%af%e7%b4%a0%e6%9d%90" class="header-anchor"&gt;&lt;/a&gt;一个特别容易被低估的能力：它可以表示“实体”，不只是“素材”
&lt;/h2&gt;&lt;p&gt;Gemini Embedding 2 还有一个很值得说的亮点：&lt;strong&gt;它支持混合输入。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你在一个 content entry 里传入多个 parts，比如“文字 + 图片”，模型会为这组内容生成一个聚合后的 embedding；如果你在 contents 数组里放多个独立条目，它则会返回多个独立向量。官方文档甚至直接建议：对于像社交媒体帖子这种包含多种媒体内容的复杂对象，可以把多个 embedding 聚合，形成一个 &lt;code&gt;post-level representation&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这件事非常关键。&lt;/p&gt;
&lt;p&gt;因为它把 embedding 的对象，从“原子素材”升级成了“业务实体”。&lt;/p&gt;
&lt;p&gt;一块手表，不只是商品图，也不只是商品描述；&lt;/p&gt;
&lt;p&gt;一条社交帖子，不只是文字，也不只是配图；&lt;/p&gt;
&lt;p&gt;一堂课程，不只是讲义 PDF，也不只是视频和录音。&lt;/p&gt;
&lt;p&gt;过去这些东西往往是拆开建索引、拆开召回、最后在上层硬拼。&lt;/p&gt;
&lt;p&gt;现在你可以在索引层就把它们当成一个“对象”来表示。&lt;/p&gt;
&lt;p&gt;这对于做内容平台、商品搜索、企业知识库、课程检索，影响都非常大。因为从这里开始，RAG 的检索单元不再只能是 text chunk，它可以是一个帖子、一个商品、一段课堂内容，甚至一个带图文说明的复杂知识实体。&lt;/p&gt;
&lt;h2 id="3072-维不是重点重点是你终于可以按成本来调语义密度"&gt;&lt;a href="#3072-%e7%bb%b4%e4%b8%8d%e6%98%af%e9%87%8d%e7%82%b9%e9%87%8d%e7%82%b9%e6%98%af%e4%bd%a0%e7%bb%88%e4%ba%8e%e5%8f%af%e4%bb%a5%e6%8c%89%e6%88%90%e6%9c%ac%e6%9d%a5%e8%b0%83%e8%af%ad%e4%b9%89%e5%af%86%e5%ba%a6" class="header-anchor"&gt;&lt;/a&gt;3072 维不是重点，重点是你终于可以按成本来调“语义密度”
&lt;/h2&gt;&lt;p&gt;做系统的人都知道，维度本身并不是越大越好。更大的维度意味着更高的存储成本、更高的计算开销、更长的检索延迟。Gemini Embedding 2 默认输出 3072 维，但支持用 output_dimensionality 调整维度，官方推荐的常见选择是 768、1536、3072，并说明它支持从 128 到 3072 的灵活输出。这个能力背后用的是 MRL（Matryoshka Representation Learning）&lt;/p&gt;
&lt;p&gt;简单说就是：你可以根据场景，在“效果”和“成本”之间做更细粒度的平衡。&lt;/p&gt;
&lt;p&gt;●如果你是大规模通用检索，1536 维可能就已经很香；&lt;/p&gt;
&lt;p&gt;●如果你追求极致成本和吞吐，768 维会很有吸引力；&lt;/p&gt;
&lt;p&gt;●如果你做的是高价值高精度场景，3072 维会更稳。&lt;/p&gt;
&lt;h2 id="免费吗多少钱"&gt;&lt;a href="#%e5%85%8d%e8%b4%b9%e5%90%97%e5%a4%9a%e5%b0%91%e9%92%b1" class="header-anchor"&gt;&lt;/a&gt;免费吗？多少钱？
&lt;/h2&gt;&lt;p&gt;Gemini Embedding 2 现在有两条主路径，&lt;strong&gt;想快速试、想低门槛上手，用 Gemini Developer API；想走企业治理、云权限、生产环境，走 Vertex AI。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="第一条是-gemini-developer-api"&gt;&lt;a href="#%e7%ac%ac%e4%b8%80%e6%9d%a1%e6%98%af-gemini-developer-api" class="header-anchor"&gt;&lt;/a&gt;第一条是 Gemini Developer API。
&lt;/h3&gt;&lt;p&gt;这一条更轻，适合开发者快速试。官方价格页明确写了：gemini-embedding-2-preview 当前有 Free Tier，文本、图片、音频、视频输入在免费层里都是 Free of charge。免费层数据 Used to improve our products: Yes；如果切到付费层，这一项会变成 No。付费价格方面：&lt;/p&gt;
&lt;p&gt;●标准模式下文本是 $0.20 / 1M tokens&lt;/p&gt;
&lt;p&gt;●图片约 $0.00012 / 张&lt;/p&gt;
&lt;p&gt;●音频约 $0.00016 / 秒&lt;/p&gt;
&lt;p&gt;●视频约 $0.00079 / 帧；&lt;/p&gt;
&lt;p&gt;如果用 Batch API，价格大约是标准价的 50%。&lt;/p&gt;
&lt;h3 id="第二条是-vertex-ai"&gt;&lt;a href="#%e7%ac%ac%e4%ba%8c%e6%9d%a1%e6%98%af-vertex-ai" class="header-anchor"&gt;&lt;/a&gt;第二条是 Vertex AI。
&lt;/h3&gt;&lt;p&gt;这一条更偏企业与云上生产环境。你需要 Google Cloud 项目、启用 billing、开启 Vertex AI API，并配置认证；而且 AI Studio 的 API key 不能直接用于 Vertex AI。模型页还写明：Gemini Embedding 2 当前支持的是 Standard PayGo，不支持 Provisioned Throughput、Flex PayGo、Priority PayGo 和 Batch Prediction，当前页面列出的区域是 us-central1。Vertex AI 价格页对它的专属条目写的是：&lt;/p&gt;
&lt;p&gt;●文本 $0.2 / 1M tokens&lt;/p&gt;
&lt;p&gt;●图片 $0.00012 / image&lt;/p&gt;
&lt;p&gt;●视频 $0.00079 / frame&lt;/p&gt;
&lt;p&gt;●音频 $0.00016 / sec&lt;/p&gt;
&lt;p&gt;●输出不收费。&lt;/p&gt;
&lt;h2 id="两个很容易踩的坑"&gt;&lt;a href="#%e4%b8%a4%e4%b8%aa%e5%be%88%e5%ae%b9%e6%98%93%e8%b8%a9%e7%9a%84%e5%9d%91" class="header-anchor"&gt;&lt;/a&gt;两个很容易踩的坑
&lt;/h2&gt;&lt;p&gt;第一个坑，&lt;strong&gt;是不要把旧向量直接拿来和新模型混用。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;gemini-embedding-001 和 gemini-embedding-2-preview 的 embedding spaces 不兼容。也就是说，如果你准备升级到 Gemini Embedding 2，旧数据不能直接拿来比较，你需要重新做一遍 re-embedding。这对已经有存量索引库的团队来说，是非常现实的迁移成本。&lt;/p&gt;
&lt;p&gt;第二个坑，&lt;strong&gt;是不要把“视频支持时长”写得过于绝对。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;目前官方资料里有三种写法：&lt;/p&gt;
&lt;p&gt;●Google 博客写的是支持最多 120 秒视频；&lt;/p&gt;
&lt;p&gt;●Gemini API 文档写的是视频上限 128 秒；&lt;/p&gt;
&lt;p&gt;●Vertex AI 模型页则更细，写成带音频视频上限 80 秒，不带音频视频上限 120 秒。&lt;/p&gt;
&lt;p&gt;所以总结来说它当前具备 2 分钟级别的视频原生 embedding 能力，更长的视频仍建议切片后索引。&lt;/p&gt;
&lt;h2 id="它不会消灭所有复杂度但它确实改写了默认架构"&gt;&lt;a href="#%e5%ae%83%e4%b8%8d%e4%bc%9a%e6%b6%88%e7%81%ad%e6%89%80%e6%9c%89%e5%a4%8d%e6%9d%82%e5%ba%a6%e4%bd%86%e5%ae%83%e7%a1%ae%e5%ae%9e%e6%94%b9%e5%86%99%e4%ba%86%e9%bb%98%e8%ae%a4%e6%9e%b6%e6%9e%84" class="header-anchor"&gt;&lt;/a&gt;它不会消灭所有复杂度，但它确实改写了“默认架构”
&lt;/h2&gt;&lt;p&gt;Gemini Embedding 2没有神奇到让多模态检索从此没有工程问题。&lt;/p&gt;
&lt;p&gt;它不会自动帮你解决 metadata、chunking、权限隔离、召回融合、在线延迟、索引更新这些老问题。&lt;/p&gt;
&lt;p&gt;但它确实把过去那种“多模态一定要多套模型、多套索引、多阶段拼装”的默认范式，往前推了一大步。&lt;/p&gt;
&lt;p&gt;更重要的是，这一步不是停留在“论文层面”的。Google 已经给出了官方接入路径，也已经列出 LangChain、LlamaIndex、Haystack、Weaviate、Qdrant、ChromaDB 和 Vertex AI Vector Search 等生态集成方式。也就是说，这不是一个“看上去很厉害但暂时用不起来”的能力，它已经开始变成开发者今天就能碰、今天就能试、今天就能接进系统里的东西。&lt;/p&gt;
&lt;p&gt;所以，Gemini Embedding 2 真正改变的，可能不是“embedding 这个模型又进步了多少”，而是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Google 终于把多模态检索，从一项需要大量拼装和妥协的工程活，推进成了一种更统一、更自然、更接近基础设施的能力。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="最后"&gt;&lt;a href="#%e6%9c%80%e5%90%8e" class="header-anchor"&gt;&lt;/a&gt;最后
&lt;/h2&gt;&lt;p&gt;如果文本、图片、音频、视频、PDF 真的开始共享一个语义空间，接下来最值得重新思考的问题，也许就不再是：&lt;/p&gt;
&lt;p&gt;“我还能接多少模型？”&lt;/p&gt;
&lt;p&gt;而是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;在我的系统里，什么才算一个真正值得被检索的对象？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;是一段文字，&lt;/p&gt;
&lt;p&gt;是一页 PDF，&lt;/p&gt;
&lt;p&gt;是一张图，&lt;/p&gt;
&lt;p&gt;是一条帖子，&lt;/p&gt;
&lt;p&gt;还是一个由图文、声音、视频共同组成的“实体”？&lt;/p&gt;
&lt;p&gt;Gemini Embedding 2 给出的，不只是一个新模型。&lt;/p&gt;
&lt;p&gt;它更像是在提醒所有做 AI 应用的人：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;下一代检索系统要统一的，从来不只是接口，而是我们理解世界的入口。&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>OpenClaw 爆火背后：它不是聊天机器人，而是一套真正会做事的 AI 系统</title><link>https://xiaobox.github.io/p/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/</link><pubDate>Wed, 11 Mar 2026 10:14:30 +0000</pubDate><guid>https://xiaobox.github.io/p/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/</guid><description>&lt;img src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/cover.jpg" alt="Featured image of post OpenClaw 爆火背后：它不是聊天机器人，而是一套真正会做事的 AI 系统" /&gt;&lt;p&gt;如果你最近在 GitHub 上关注过 AI Agent 领域，大概率已经看到过 OpenClaw。到 2026 年 3 月 10 日，它的 GitHub 仓库已经来到约 297k stars，超过了 React 的约 244k 和 Linux 的约 222k。更重要的不是数字本身，而是它火起来的方式：它不是靠一个漂亮网页，也不是靠一个“会聊天的套壳”，而是靠一整套&lt;strong&gt;把大模型接入真实消息渠道、真实设备、真实浏览器、真实文件系统的系统架构&lt;/strong&gt;，硬生生把“AI 助手”做成了一个长期在线的工程系统。&lt;/p&gt;
&lt;p&gt;但如果你只把 OpenClaw 理解成“接了很多 IM 的机器人”，你会完全错过它最有价值的部分。OpenClaw 官方 README 写得很直白：“&lt;strong&gt;The Gateway is just the control plane — the product is the assistant.&lt;/strong&gt;” 这句话几乎就是读懂整个项目的钥匙。它的重点从来不是“有多少入口”，而是：&lt;strong&gt;有没有一个统一控制面，把消息、状态、路由、模型、工具、节点、权限和安全边界收在一起&lt;/strong&gt;。 README、架构文档和 Vision 文档都在强调同一件事：OpenClaw 想做的是“真正会做事的 AI”，运行在你的设备、你的渠道、你的规则之内。&lt;/p&gt;
&lt;p&gt;这篇文章，我想尽量回答七个问题：&lt;/p&gt;
&lt;p&gt;1.它到底是什么？&lt;/p&gt;
&lt;p&gt;2.它为什么会采用现在这套架构？&lt;/p&gt;
&lt;p&gt;3.Gateway 到底在系统里扮演什么角色？&lt;/p&gt;
&lt;p&gt;4.Agent 是怎么运行起来的？&lt;/p&gt;
&lt;p&gt;5.Memory、Workspace、Session 为什么是它的关键设计？&lt;/p&gt;
&lt;p&gt;6.多 Agent、节点、工具体系是怎么拼到一起的？&lt;/p&gt;
&lt;p&gt;7.以及最后，为什么它值得被看作下一代 AI 助手的典型系统样本。&lt;/p&gt;
&lt;p&gt;在回答这些问题之前，我不得不说，现在龙虾有些过热了，对于想 “卖铲子” 的公司当然觉得这是好事，于是他们推波助澜，但对于专业人士不能人云亦云。openClaw 有它优秀的一面，也有被炒作夸大的一面，应该客观地看。&lt;/p&gt;
&lt;h2 id="一openclaw-的本质不是聊天机器人而是个人-ai-助手控制面"&gt;&lt;a href="#%e4%b8%80openclaw-%e7%9a%84%e6%9c%ac%e8%b4%a8%e4%b8%8d%e6%98%af%e8%81%8a%e5%a4%a9%e6%9c%ba%e5%99%a8%e4%ba%ba%e8%80%8c%e6%98%af%e4%b8%aa%e4%ba%ba-ai-%e5%8a%a9%e6%89%8b%e6%8e%a7%e5%88%b6%e9%9d%a2" class="header-anchor"&gt;&lt;/a&gt;一、OpenClaw 的本质，不是聊天机器人，而是“个人 AI 助手控制面”
&lt;/h2&gt;&lt;p&gt;一句话定义 OpenClaw，我会这样说：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenClaw = 一个以 Gateway 为中心的个人 AI 助手控制平面，下面挂着嵌入式 agent runtime、会话系统、工具系统、消息渠道、节点设备和安全边界。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个定义不是我自己拔高出来的，而是官方文档本身就在往这个方向写。&lt;/p&gt;
&lt;p&gt;●README 说它是“你运行在自己设备上的 personal AI assistant”；&lt;/p&gt;
&lt;p&gt;●架构文档说它是一个 single long-lived Gateway，拥有所有 messaging surfaces；&lt;/p&gt;
&lt;p&gt;●Vision 文档则把它描述为“the AI that actually does things”，运行在你的设备、你的渠道、你的规则里。&lt;/p&gt;
&lt;p&gt;把这些信息放在一起看，你会发现 OpenClaw 的设计起点根本不是一个“聊天 UI”，而是一个&lt;strong&gt;长期在线、可被多入口触发、可调用工具、可连接设备、可持续维护状态的 AI 系统。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/001-edb50d9b.png"&gt;&lt;/p&gt;
&lt;p&gt;这也是为什么我认为 OpenClaw 更接近“控制面”而不是“应用层”。在很多 AI 产品里，用户打开网页，输入问题，后端调一下模型，返回一段文本，交互就结束了。OpenClaw 则完全不是这种形态。它默认有一个长期运行的 Gateway 进程，消息渠道接到这个 Gateway，上层的 CLI、Control UI、WebChat 接这个 Gateway，macOS/iOS/Android/headless 节点也接这个 Gateway，甚至定时任务、exec approvals、pairing 和 health 事件都围绕 Gateway 展开。也就是说，&lt;strong&gt;Gateway 不是一个消息转发器，而是系统中枢。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/002-4ba00a5d.png"&gt;&lt;/p&gt;
&lt;h2 id="二gateway-为什么是-openclaw-最关键的设计"&gt;&lt;a href="#%e4%ba%8cgateway-%e4%b8%ba%e4%bb%80%e4%b9%88%e6%98%af-openclaw-%e6%9c%80%e5%85%b3%e9%94%ae%e7%9a%84%e8%ae%be%e8%ae%a1" class="header-anchor"&gt;&lt;/a&gt;二、Gateway 为什么是 OpenClaw 最关键的设计
&lt;/h2&gt;&lt;p&gt;OpenClaw 官方架构文档里最重要的一句话，是它把 Gateway 明确成 &lt;strong&gt;single control plane&lt;/strong&gt;。一个长期运行的 Gateway 拥有所有 messaging surfaces；control-plane clients 通过 WebSocket 连进来；nodes 也通过 WebSocket 连进来，但会声明自己是 &lt;code&gt;role: node&lt;/code&gt;；Canvas host 也由 Gateway 的 HTTP server 提供，而且默认和 Gateway 共用 127.0.0.1:18789 这个端口。&lt;/p&gt;
&lt;p&gt;这意味着什么？意味着 OpenClaw 的系统设计不是“每个端各做一套逻辑”，而是“先做一个统一控制面，再让所有端接入它”。这在工程上有三个非常大的好处。&lt;/p&gt;
&lt;p&gt;第一，&lt;strong&gt;状态是统一的&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;会话在哪里维护？在 Gateway。&lt;/p&gt;
&lt;p&gt;路由在哪里决策？在 Gateway。&lt;/p&gt;
&lt;p&gt;设备配对、认证 token、事件广播、健康状态、cron、工具审批在哪里收敛？还是在 Gateway。&lt;/p&gt;
&lt;p&gt;这让系统不会因为前端入口变多而出现多套状态、多个事实来源。&lt;/p&gt;
&lt;p&gt;第二，&lt;strong&gt;协议是统一的&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Gateway protocol 文档明确写了：OpenClaw 不是“随便传一段 JSON”，而是有明确握手流程和版本约束的 WebSocket 协议。服务端先发 &lt;code&gt;connect.challenge&lt;/code&gt;，客户端再带着 &lt;code&gt;device identity&lt;/code&gt;、&lt;code&gt;role&lt;/code&gt;、&lt;code&gt;scopes&lt;/code&gt;、&lt;code&gt;caps&lt;/code&gt;、&lt;code&gt;auth&lt;/code&gt;、签名等参数发起 connect，通过后才返回 hello-ok。协议版本有 minProtocol/maxProtocol 协商，协议 schema 由 TypeBox 定义，再生成 JSON Schema 以及 Swift model。对一个跨 CLI、网页、桌面、移动端、节点设备的系统来说，这种 typed protocol 的价值非常高。&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/003-1f7f4ec8.png"&gt;&lt;/p&gt;
&lt;p&gt;第三，&lt;strong&gt;能力是统一暴露的&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;比如 Control UI 不是一个独立后端，而是 Gateway 在同一端口上提供的浏览器管理界面；WebChat 直接连 Gateway WebSocket；nodes 也不是第二套服务，而是带 &lt;code&gt;role:node&lt;/code&gt; 的外围设备。也就是说，OpenClaw 并不是“一个 App + 一堆外挂”，而是“一个控制面 + 多个表面”。&lt;/p&gt;
&lt;p&gt;很多人第一次看 OpenClaw，会把注意力放在“它居然支持这么多渠道”。但真正懂架构的人，会先看 Gateway。因为能不能把多个入口、多种设备、多条事件流、多种工具执行方式，全都压到一个长期运行的控制面里，决定了它到底是“一个功能”还是“一个系统”。OpenClaw 的做法很明确：&lt;strong&gt;先有控制面，再有助手&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="三它最强的抽象不是对话框而是-agentsession-和-route"&gt;&lt;a href="#%e4%b8%89%e5%ae%83%e6%9c%80%e5%bc%ba%e7%9a%84%e6%8a%bd%e8%b1%a1%e4%b8%8d%e6%98%af%e5%af%b9%e8%af%9d%e6%a1%86%e8%80%8c%e6%98%af-agentsession-%e5%92%8c-route" class="header-anchor"&gt;&lt;/a&gt;三、它最强的抽象，不是对话框，而是 Agent、Session 和 Route
&lt;/h2&gt;&lt;p&gt;很多 AI 产品最基础的抽象单位是“聊天窗口”。OpenClaw 不是。&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/004-717935e1.png"&gt;&lt;/p&gt;
&lt;p&gt;OpenClaw 的真正基础模型，是：&lt;/p&gt;
&lt;p&gt;●&lt;strong&gt;谁来回复（Agent）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;●&lt;strong&gt;回复落在哪段连续上下文里（Session）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;●&lt;strong&gt;一条消息应该被路由到哪个 agent 和哪个 session（Route）&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="agent一颗完整隔离的大脑"&gt;&lt;a href="#agent%e4%b8%80%e9%a2%97%e5%ae%8c%e6%95%b4%e9%9a%94%e7%a6%bb%e7%9a%84%e5%a4%a7%e8%84%91" class="header-anchor"&gt;&lt;/a&gt;Agent：一颗完整隔离的大脑
&lt;/h3&gt;&lt;p&gt;Multi-Agent 文档里写得很清楚：一个 agent 是一个 &lt;strong&gt;fully scoped brain&lt;/strong&gt;，拥有&lt;/p&gt;
&lt;p&gt;●自己的 workspace&lt;/p&gt;
&lt;p&gt;●自己的 agentDir&lt;/p&gt;
&lt;p&gt;●自己的 auth profiles&lt;/p&gt;
&lt;p&gt;●自己的 session store&lt;/p&gt;
&lt;p&gt;它的文件、人格、配置、认证信息和会话历史都是围绕这个 agent 单独组织的。默认路径也很清晰：&lt;/p&gt;
&lt;p&gt;●workspace 在 &lt;code&gt;~/.openclaw/workspace&lt;/code&gt; 或 &lt;code&gt;workspace-&amp;lt;agentId&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;●session 存在 &lt;code&gt;~/.openclaw/agents/&amp;lt;agentId&amp;gt;/sessions&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;●auth profile 在 &lt;code&gt;~/.openclaw/agents/&amp;lt;agentId&amp;gt;/agent/auth-profiles.json&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这件事非常重要。因为这说明 OpenClaw 的多 Agent，不是“在一个上下文里换不同 system prompt 假装多人格”，而是&lt;strong&gt;真的把状态、身份、凭证和工作目录做成了隔离单元&lt;/strong&gt;。但要注意，这种独立是为了让系统跑得更有条理，属于“防君子不防小人”的内部隔离。官方的意思很明确：同一个网关（Gateway）里的 Agent 默认都是“自己人”，不能把互不信任、甚至带有敌意的任务强行塞进同一个网关里，它并没有提供那种级别的安全防御。&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/005-b96b6812.png"&gt;&lt;/p&gt;
&lt;h3 id="session上下文连续性的主键"&gt;&lt;a href="#session%e4%b8%8a%e4%b8%8b%e6%96%87%e8%bf%9e%e7%bb%ad%e6%80%a7%e7%9a%84%e4%b8%bb%e9%94%ae" class="header-anchor"&gt;&lt;/a&gt;Session：上下文连续性的主键
&lt;/h3&gt;&lt;p&gt;Session 文档里有一句特别关键的话：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;OpenClaw treats one direct-chat session per agent as primary.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;这句话可以理解成：&lt;strong&gt;对每一个 agent，OpenClaw 都认为它有一个“主私聊会话”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;OpenClaw 默认会将一个 Agent 接收到的所有私聊（Direct Message, DM）都汇聚到一个主会话里（即 &lt;code&gt;agent:&amp;lt;agentId&amp;gt;:&amp;lt;mainKey&amp;gt;&lt;/code&gt;）。对于群聊、频道或特定的话题（Thread），则会自动拆分独立处理。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;对于 direct chat， agent 有一个规范意义上的主会话；默认所有 DM 都往这里归并，以保证连续性。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;假设你有一个 agent 叫 main。默认情况下：&lt;/p&gt;
&lt;p&gt;●你在 Web UI 私聊它一次&lt;/p&gt;
&lt;p&gt;●之后又在 CLI 私聊它&lt;/p&gt;
&lt;p&gt;●再后来在手机端私聊它&lt;/p&gt;
&lt;p&gt;如果这些都被识别为 direct chat，而且你没有改 session.dmScope，那么这些私聊会折叠进同一个主 session,这样做的好处是：&lt;strong&gt;agent 会把这些私聊视为同一条连续对话，而不是三个彼此割裂的会话&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;默认的主会话机制在单用户场景下很完美，但在&lt;strong&gt;多用户场景&lt;/strong&gt;下就是一个巨大的安全漏洞。&lt;/p&gt;
&lt;p&gt;如果 Alice 和 Bob 都去私聊同一个 Agent，在默认配置下，他们实际上是在向同一个“上下文沙箱”里写入数据。这就好比两个人共用一个日记本：&lt;/p&gt;
&lt;p&gt;●Alice 刚和 Agent 聊完财务密码。&lt;/p&gt;
&lt;p&gt;●Bob 接着去问 Agent“我们刚才聊了什么？”&lt;/p&gt;
&lt;p&gt;●Agent 就会直接把 Alice 的密码复述给 Bob，造成严重的信息泄露。&lt;/p&gt;
&lt;p&gt;为了应对多用户场景，OpenClaw 提供了 &lt;code&gt;session.dmScope&lt;/code&gt; 配置，允许你在架构层面把私聊的上下文切分成更安全的细粒度：&lt;/p&gt;
&lt;p&gt;●按发信人隔离（&lt;code&gt;per-peer&lt;/code&gt;）。&lt;/p&gt;
&lt;p&gt;●按频道+发信人隔离。(&lt;code&gt;per-channel-peer&lt;/code&gt;)&lt;/p&gt;
&lt;p&gt;●按账号+频道+发信人隔离(&lt;code&gt;per-account-channel-peer&lt;/code&gt;)。&lt;/p&gt;
&lt;p&gt;⚠️ 如果你在开发面向多用户的 AI Agent，&lt;strong&gt;绝对不能盲目使用默认的私聊配置&lt;/strong&gt;。必须根据业务需求，通过调整 &lt;code&gt;dmScope&lt;/code&gt; 将用户的对话状态彻底隔离开，防止你的 Agent 变成一个没有隐私边界的“大喇叭”。&lt;/p&gt;
&lt;h3 id="route决定消息进入哪颗大脑"&gt;&lt;a href="#route%e5%86%b3%e5%ae%9a%e6%b6%88%e6%81%af%e8%bf%9b%e5%85%a5%e5%93%aa%e9%a2%97%e5%a4%a7%e8%84%91" class="header-anchor"&gt;&lt;/a&gt;Route：决定消息进入哪颗大脑
&lt;/h3&gt;&lt;p&gt;Channel Routing 文档把消息路由规则写得非常明确，一条消息发过来，绝对不是“哪个 Agent 闲着就扔给谁”，而是像网关（Gateway）匹配规则一样，必须严格按照优先级一层层往下筛，直到找到唯一确定的接收者。&lt;/p&gt;
&lt;p&gt;我们可以用**“公司收发室分拣快递”**来打个比方，看一下这 5 层降级（Fallback）匹配规则：&lt;/p&gt;
&lt;p&gt;1.&lt;strong&gt;精准单聊 (Exact peer match)&lt;/strong&gt;：快递单上写着“直接交到张三本人手里”。&lt;/p&gt;
&lt;p&gt;○明确的点对点直接交互，优先级最高。&lt;/p&gt;
&lt;p&gt;2.&lt;strong&gt;跟帖/线程继承 (Parent peer match)&lt;/strong&gt;：快递单没写名字，但备注了“这是昨天那个加急件的补充材料”。收发室一查昨天是李四负责的，直接给李四。&lt;/p&gt;
&lt;p&gt;○识别 Thread 或上下文，让同一个 Agent 连贯处理同一个话题。&lt;/p&gt;
&lt;p&gt;3.&lt;strong&gt;平台级群组与角色 (Discord guild+roles / Slack team)&lt;/strong&gt;：快递写着“给财务部经理”或“给核心开发组”。&lt;/p&gt;
&lt;p&gt;○根据外部平台（如 Discord/Slack）的特定权限组或大团队来分配对应的 Agent。&lt;/p&gt;
&lt;p&gt;4.&lt;strong&gt;账号与频道 (Account / Channel)&lt;/strong&gt;：快递写着“送到 3 楼会议室”或“交给官方客服号”。&lt;/p&gt;
&lt;p&gt;○匹配特定的聊天频道或绑定的公共账号。&lt;/p&gt;
&lt;p&gt;5.&lt;strong&gt;默认兜底 (Default agent)&lt;/strong&gt;：啥也没写清楚的无主件，统统扔给“前台总机”处理。&lt;/p&gt;
&lt;p&gt;○如果上面所有条件都未命中，最后由默认的 Agent 统一接管。&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/006-a89a97a1.png"&gt;&lt;/p&gt;
&lt;p&gt;这意味着 OpenClaw 的“消息归属”不是模糊的。一条消息不是“谁在线谁回”，而是经过一套确定性规则，先判定该由哪个 agent 接管，再决定落到哪个 session 里。&lt;/p&gt;
&lt;p&gt;所以 OpenClaw 能天然处理这些现实世界场景：&lt;/p&gt;
&lt;p&gt;●同一个 Gateway 托管多个 agent；&lt;/p&gt;
&lt;p&gt;●一个 Telegram 群给 work agent；&lt;/p&gt;
&lt;p&gt;●一个 WhatsApp 家庭群给 family agent；&lt;/p&gt;
&lt;p&gt;●一个 Slack team 给 support agent；&lt;/p&gt;
&lt;h2 id="四agent-不是外挂调用而是嵌入式运行时"&gt;&lt;a href="#%e5%9b%9bagent-%e4%b8%8d%e6%98%af%e5%a4%96%e6%8c%82%e8%b0%83%e7%94%a8%e8%80%8c%e6%98%af%e5%b5%8c%e5%85%a5%e5%bc%8f%e8%bf%90%e8%a1%8c%e6%97%b6" class="header-anchor"&gt;&lt;/a&gt;四、Agent 不是外挂调用，而是嵌入式运行时
&lt;/h2&gt;&lt;p&gt;很多人对 OpenClaw 最大的误解，是把它当成了一个简单的“任务调度员”——以为它只是在收到消息时，拉起一个外部的子进程（Subprocess）去跑一下，或者通过接口（RPC）远程调一下就完事了。&lt;/p&gt;
&lt;p&gt;但架构文档明确指出：OpenClaw 是将 Agent 运行时“原生内嵌”到自己的网关里的。 它不是把 Agent 当作一个不可控的外部黑盒，而是直接在内部实例化 Agent 的核心会话（AgentSession）。&lt;/p&gt;
&lt;p&gt;Pi Integration Architecture 文档写得非常明确：OpenClaw &lt;strong&gt;不是&lt;/strong&gt; 把 pi 作为 subprocess 或 RPC mode 的外部黑盒去调用，而是直接导入并实例化 pi 的 AgentSession，通过 createAgentSession() 把 agent runtime 嵌入 到自己的消息网关架构里。&lt;/p&gt;
&lt;p&gt;这种“深度内嵌”的架构设计，直接赋予了系统 6 大核心优势：&lt;/p&gt;
&lt;p&gt;1.&lt;strong&gt;全局生命周期掌控&lt;/strong&gt;： 从对话的创建、挂起、恢复到销毁，网关层拥有绝对的控制权。&lt;/p&gt;
&lt;p&gt;2.&lt;strong&gt;动态能力扩展&lt;/strong&gt;： 可以在运行时，随时把自定义的外部工具“塞”给 Agent 使用。&lt;/p&gt;
&lt;p&gt;3.&lt;strong&gt;“看人下菜碟”的人设&lt;/strong&gt;： 能够根据消息来源（不同的平台渠道或上下文），动态切换 Agent 的系统提示词。&lt;/p&gt;
&lt;p&gt;4.&lt;strong&gt;强悍的记忆管理&lt;/strong&gt;： 不仅能持久化保存对话，还支持高级的“记忆压缩（Compaction）”防止上下文爆满，甚至支持像 Git 一样对对话“开分支（Branching）”。&lt;/p&gt;
&lt;p&gt;5.&lt;strong&gt;智能凭证轮询&lt;/strong&gt;： 在多个账号或 API Key 之间自动无缝切换，轻松应对并发和限流问题。&lt;/p&gt;
&lt;p&gt;6.&lt;strong&gt;模型厂商解绑&lt;/strong&gt;： 底层的大模型想换就换，完全不受单一服务商（如 OpenAI、Anthropic）的绑架。&lt;/p&gt;
&lt;p&gt;简单来说，OpenClaw 走的是“直接收编”的路线，它把 Agent 的核心大脑直接“拔”过来，原生种植在了自己的神经中枢里。这就好比你不再是打电话咨询外部专家，而是直接把这位专家招进了自家的核心指挥部。正因为“人”彻底成了内部员工，你才能拥有上帝视角般的掌控力：你可以全面接管他的作息安排（会话生命周期），随时往他手里塞各种定制兵器（动态注入工具），根据不同场合要求他扮演不同的角色（按渠道切换提示词），像操作代码仓库一样去整理甚至分叉他的记忆（支持压缩与分支的持久化），甚至连他背后的“脑力供应商”（随时无缝切换各家大模型）和权限账号，都能在底层悄无声息地替他自动轮换。说白了，OpenClaw 不是在和 Agent “跨部门合作”，而是直接把 Agent 融为了自己身体的一部分。换句话说，&lt;strong&gt;OpenClaw 不是“在用一个 agent”，而是“在拥有一个 agent runtime，并把它纳入自己的控制面”。这也是它跟很多“外接 Agent SDK 的应用层产品”最大的差别之一。别人只是调用，OpenClaw 是接管&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/007-b6154044.png"&gt;&lt;/p&gt;
&lt;h2 id="五agent-loop一条消息的真实旅程"&gt;&lt;a href="#%e4%ba%94agent-loop%e4%b8%80%e6%9d%a1%e6%b6%88%e6%81%af%e7%9a%84%e7%9c%9f%e5%ae%9e%e6%97%85%e7%a8%8b" class="header-anchor"&gt;&lt;/a&gt;五、Agent Loop：一条消息的&amp;quot;真实旅程&amp;quot;
&lt;/h2&gt;&lt;p&gt;前面我们讲了 Gateway 如何把消息路由到正确的 Agent。现在让我们跟随一条消息，看看它进入 OpenClaw 后，到底经历了什么。&lt;/p&gt;
&lt;h3 id="不是一次请求而是一个完整生命周期"&gt;&lt;a href="#%e4%b8%8d%e6%98%af%e4%b8%80%e6%ac%a1%e8%af%b7%e6%b1%82%e8%80%8c%e6%98%af%e4%b8%80%e4%b8%aa%e5%ae%8c%e6%95%b4%e7%94%9f%e5%91%bd%e5%91%a8%e6%9c%9f" class="header-anchor"&gt;&lt;/a&gt;不是&amp;quot;一次请求&amp;quot;，而是一个完整生命周期
&lt;/h3&gt;&lt;p&gt;如果你习惯了网页聊天框的&amp;quot;发消息→等回复&amp;quot;模式，OpenClaw 的处理方式会让你有点意外。&lt;/p&gt;
&lt;p&gt;传统模式：&lt;/p&gt;
&lt;p&gt;⚡ 代码片段&lt;code&gt;用户发消息 → 后端调用模型 → 返回文本 → 结束&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;OpenClaw 模式：&lt;/p&gt;
&lt;p&gt;⚡ 代码片段&lt;code&gt;用户发消息 → 分配 runId → 解析 session → 装配上下文 → 运行 agent → 流式返回事件 → 持久化 session → 结束&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这一条链路，实际上就是你给 OpenClaw 发一句话之后，系统内部真实发生的事情。它不是“一次 HTTP 请求”，而是一个完整的运行生命周期。&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/008-b98e49e5.png"&gt;&lt;/p&gt;
&lt;p&gt;OpenClaw 把你的消息视为一个&lt;strong&gt;进程而非请求&lt;/strong&gt;。它会给这个进程分配ID、监控生命周期、管理并发、持久化状态。&lt;/p&gt;
&lt;h3 id="并发控制为什么同一聊天窗口的消息要排队"&gt;&lt;a href="#%e5%b9%b6%e5%8f%91%e6%8e%a7%e5%88%b6%e4%b8%ba%e4%bb%80%e4%b9%88%e5%90%8c%e4%b8%80%e8%81%8a%e5%a4%a9%e7%aa%97%e5%8f%a3%e7%9a%84%e6%b6%88%e6%81%af%e8%a6%81%e6%8e%92%e9%98%9f" class="header-anchor"&gt;&lt;/a&gt;并发控制：为什么同一聊天窗口的消息要&amp;quot;排队&amp;quot;？
&lt;/h3&gt;&lt;p&gt;想象一下这个场景：你在 Telegram 连续发了三条消息：&lt;/p&gt;
&lt;p&gt;●“帮我查一下明天天气”&lt;/p&gt;
&lt;p&gt;●“顺便看看日程”&lt;/p&gt;
&lt;p&gt;●“把第一封邮件标为已读”&lt;/p&gt;
&lt;p&gt;如果这三条消息并发执行，会发生什么？&lt;/p&gt;
&lt;p&gt;●Agent 可能先处理了邮件，再处理天气&lt;/p&gt;
&lt;p&gt;●Session 历史会乱序写入&lt;/p&gt;
&lt;p&gt;●工具调用可能互相冲突&lt;/p&gt;
&lt;p&gt;OpenClaw 的解决方案很简单：每个 session 串行化执行。这不是性能问题，而是状态一致性问题。长期在线的助手，必须保证&amp;quot;记忆&amp;quot;不会被乱序操作搞乱。是&lt;strong&gt;防止工具竞争和状态污染&lt;/strong&gt;的工程必要选择。&lt;/p&gt;
&lt;h3 id="流式事件你看到的不是打字动画而是真实的工作过程"&gt;&lt;a href="#%e6%b5%81%e5%bc%8f%e4%ba%8b%e4%bb%b6%e4%bd%a0%e7%9c%8b%e5%88%b0%e7%9a%84%e4%b8%8d%e6%98%af%e6%89%93%e5%ad%97%e5%8a%a8%e7%94%bb%e8%80%8c%e6%98%af%e7%9c%9f%e5%ae%9e%e7%9a%84%e5%b7%a5%e4%bd%9c%e8%bf%87%e7%a8%8b" class="header-anchor"&gt;&lt;/a&gt;流式事件：你看到的不是&amp;quot;打字动画&amp;quot;，而是真实的工作过程
&lt;/h3&gt;&lt;p&gt;OpenClaw 的流式输出，不是简单的&amp;quot;逐字显示&amp;quot;，而是三种事件流：&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/009-19119b2c.png"&gt;&lt;/p&gt;
&lt;p&gt;为什么要这样设计？ 因为这让用户能真正&amp;quot;看到 AI 在工作&amp;quot;。不是动画，不是假进度条，而是系统内部真实发生的事件被推送到前端。它的体验更像一个&amp;quot;正在办公的助手&amp;quot;而非&amp;quot;死寂的输入框&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/010-67135bf9.png"&gt;&lt;/p&gt;
&lt;h2 id="六真正让它像一个人的不是模型而是-workspacesystem-prompt-和-memory"&gt;&lt;a href="#%e5%85%ad%e7%9c%9f%e6%ad%a3%e8%ae%a9%e5%ae%83%e5%83%8f%e4%b8%80%e4%b8%aa%e4%ba%ba%e7%9a%84%e4%b8%8d%e6%98%af%e6%a8%a1%e5%9e%8b%e8%80%8c%e6%98%af-workspacesystem-prompt-%e5%92%8c-memory" class="header-anchor"&gt;&lt;/a&gt;六、真正让它“像一个人”的，不是模型，而是 Workspace、System Prompt 和 Memory
&lt;/h2&gt;&lt;p&gt;很多人体验 OpenClaw 后会有一种明显感觉：它比普通网页聊天更像一个“持续存在的助手”。这种感觉，核心不是来自模型，而是来自它对&lt;strong&gt;工作区、提示词和记忆&lt;/strong&gt;的系统化设计&lt;/p&gt;
&lt;h3 id="workspaceai-的家而不是一个临时目录"&gt;&lt;a href="#workspaceai-%e7%9a%84%e5%ae%b6%e8%80%8c%e4%b8%8d%e6%98%af%e4%b8%80%e4%b8%aa%e4%b8%b4%e6%97%b6%e7%9b%ae%e5%bd%95" class="header-anchor"&gt;&lt;/a&gt;Workspace：AI 的家，而不是一个临时目录
&lt;/h3&gt;&lt;p&gt;简单说，Workspace 就是 AI 的&amp;quot;家&amp;quot;：&lt;/p&gt;
&lt;p&gt;●它有固定的位置（~/.openclaw/workspace/）&lt;/p&gt;
&lt;p&gt;●它有固定的文件结构&lt;/p&gt;
&lt;p&gt;●它是 AI 长期工作的地方，不是临时落脚点&lt;/p&gt;
&lt;p&gt;OpenClaw 在 Workspace 里约定了一整套&amp;quot;说明书文件&amp;quot;：&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/011-71f8b973.png"&gt;&lt;/p&gt;
&lt;p&gt;这个设计特别妙。因为它把很多系统会偷偷塞进 prompt 模板或数据库里的东西，变成了&lt;strong&gt;用户可见、可读、可改、可备份&lt;/strong&gt;的文件系统资产。你不是在“配一个人设”，而是在维护一个 AI 的长期工作环境。&lt;/p&gt;
&lt;p&gt;这里有一个非常重要的提醒：&lt;strong&gt;workspace 是默认工作目录，但不是硬沙箱（hard sandbox）；相对路径默认在 workspace 内解析，但绝对路径仍可能访问宿主机其它位置，除非你开启 sandbox。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="system-prompt每次运行都在编译上下文"&gt;&lt;a href="#system-prompt%e6%af%8f%e6%ac%a1%e8%bf%90%e8%a1%8c%e9%83%bd%e5%9c%a8%e7%bc%96%e8%af%91%e4%b8%8a%e4%b8%8b%e6%96%87" class="header-anchor"&gt;&lt;/a&gt;System Prompt：每次运行都在&amp;quot;编译上下文&amp;quot;
&lt;/h3&gt;&lt;p&gt;OpenClaw 不是把用户的问题直接扔给模型，而是每次都重新构建一份完整的上下文：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;⚡ 代码片段System Prompt 结构：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;├── Tooling（可用工具列表）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt;├── Safety（安全规则）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;4&lt;/span&gt;&lt;span class="cl"&gt;├── Skills（技能列表）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;5&lt;/span&gt;&lt;span class="cl"&gt;├── Workspace Context（工作区文件）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;6&lt;/span&gt;&lt;span class="cl"&gt;├── Documentation（相关文档）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;7&lt;/span&gt;&lt;span class="cl"&gt;├── Current Date &amp;amp; Time（当前时间）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;8&lt;/span&gt;&lt;span class="cl"&gt;└── Runtime（运行环境信息）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Context 文档还补充了细节：默认会把 AGENTS.md、SOUL.md、TOOLS.md、IDENTITY.md、USER.md、HEARTBEAT.md、BOOTSTRAP.md 等文件作为 Project Context 注入系统提示；技能本身只会注入“技能列表和描述”，真正的 SKILL.md 需要模型按需读取。&lt;/p&gt;
&lt;p&gt;类比：&lt;/p&gt;
&lt;p&gt;●传统聊天：像&amp;quot;临时起意打电话&amp;quot;&lt;/p&gt;
&lt;p&gt;●OpenClaw：像&amp;quot;开会前先发会议议程和背景资料&amp;quot;&lt;/p&gt;
&lt;h3 id="memory真正写到磁盘才算记住"&gt;&lt;a href="#memory%e7%9c%9f%e6%ad%a3%e5%86%99%e5%88%b0%e7%a3%81%e7%9b%98%e6%89%8d%e7%ae%97%e8%ae%b0%e4%bd%8f" class="header-anchor"&gt;&lt;/a&gt;Memory：真正写到磁盘，才算记住
&lt;/h3&gt;&lt;p&gt;Memory 文档里我最喜欢的一句话是：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;The files are the source of truth; the model only “remembers” what gets written to disk.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;OpenClaw 默认的记忆结构非常简单，但非常工程化:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;⚡ 代码片段workspace/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt; ├── memory/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt; │ ├── 2026-03-10.md ← 今天的日志
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;4&lt;/span&gt;&lt;span class="cl"&gt; │ ├── 2026-03-09.md ← 昨天的日志
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;5&lt;/span&gt;&lt;span class="cl"&gt; │ └── ...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;6&lt;/span&gt;&lt;span class="cl"&gt; └── MEMORY.md ← 长期、精炼的永久记忆
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;两种记忆的区别：&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/012-105dfd4a.png"&gt;&lt;/p&gt;
&lt;h3 id="检索机制不是只有文件也不是只有向量"&gt;&lt;a href="#%e6%a3%80%e7%b4%a2%e6%9c%ba%e5%88%b6%e4%b8%8d%e6%98%af%e5%8f%aa%e6%9c%89%e6%96%87%e4%bb%b6%e4%b9%9f%e4%b8%8d%e6%98%af%e5%8f%aa%e6%9c%89%e5%90%91%e9%87%8f" class="header-anchor"&gt;&lt;/a&gt;检索机制：不是&amp;quot;只有文件&amp;quot;，也不是&amp;quot;只有向量&amp;quot;
&lt;/h3&gt;&lt;p&gt;OpenClaw 使用&lt;strong&gt;混合检索&lt;/strong&gt;,它明确暴露了两个 agent-facing tools：&lt;/p&gt;
&lt;p&gt;●memory_search 负责检索&lt;/p&gt;
&lt;p&gt;●memory_get 负责精确读取某个 Markdown 文件或行段&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;⚡ 代码片段用户问&amp;#34;我上次出差去哪了？&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt; BM25 关键词检索 ← 精确匹配&amp;#34;出差&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;4&lt;/span&gt;&lt;span class="cl"&gt; +
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;5&lt;/span&gt;&lt;span class="cl"&gt; 向量语义检索 ← 理解&amp;#34;去哪了&amp;#34;是问目的地
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;6&lt;/span&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;7&lt;/span&gt;&lt;span class="cl"&gt; MMR 重排序 ← 去重、多样化
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;8&lt;/span&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;9&lt;/span&gt;&lt;span class="cl"&gt; 返回最相关的几条记忆片段
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/013-94c69879.png"&gt;&lt;/p&gt;
&lt;h3 id="记忆刷新在遗忘前先存档"&gt;&lt;a href="#%e8%ae%b0%e5%bf%86%e5%88%b7%e6%96%b0%e5%9c%a8%e9%81%97%e5%bf%98%e5%89%8d%e5%85%88%e5%ad%98%e6%a1%a3" class="header-anchor"&gt;&lt;/a&gt;记忆刷新：在&amp;quot;遗忘&amp;quot;前先&amp;quot;存档&amp;quot;
&lt;/h3&gt;&lt;p&gt;OpenClaw 有一个很巧妙的设计：&lt;code&gt;pre-compaction memory flush&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;当 session 接近上下文上限（比如对话太长，快塞不进模型窗口了），OpenClaw 会：&lt;/p&gt;
&lt;p&gt;●触发一次&amp;quot;静默回合&amp;quot;（用户看不到）&lt;/p&gt;
&lt;p&gt;●提醒模型：“把值得记住的信息写入记忆文件”&lt;/p&gt;
&lt;p&gt;●然后再压缩上下文&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/014-d04133a7.png"&gt;&lt;/p&gt;
&lt;h2 id="七工具体系分层设计不是堆砌功能"&gt;&lt;a href="#%e4%b8%83%e5%b7%a5%e5%85%b7%e4%bd%93%e7%b3%bb%e5%88%86%e5%b1%82%e8%ae%be%e8%ae%a1%e4%b8%8d%e6%98%af%e5%a0%86%e7%a0%8c%e5%8a%9f%e8%83%bd" class="header-anchor"&gt;&lt;/a&gt;七、工具体系：分层设计，不是堆砌功能
&lt;/h2&gt;&lt;p&gt;如果说 Gateway 是控制面，Session 是状态骨架，那么 Tools / Plugins / Skills 就是 OpenClaw 的执行肌肉。&lt;/p&gt;
&lt;p&gt;OpenClaw 的工具体系有三个层次，很多人会混淆。让我们分清楚：&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/015-934c8d77.png"&gt;&lt;/p&gt;
&lt;h3 id="tools第一等公民"&gt;&lt;a href="#tools%e7%ac%ac%e4%b8%80%e7%ad%89%e5%85%ac%e6%b0%91" class="header-anchor"&gt;&lt;/a&gt;Tools：第一等公民
&lt;/h3&gt;&lt;p&gt;OpenClaw 暴露的是 &lt;strong&gt;first-class agent tools&lt;/strong&gt;，不是外挂脚本。 包括 browser、canvas、nodes、cron、gateway、session 相关工具、agents_list、image、pdf、message、exec 等。&lt;/p&gt;
&lt;p&gt;OpenClaw 没有把“能力调用”做成 prompt 技巧，而是做成了&lt;strong&gt;运行时契约&lt;/strong&gt;。Tool list 和 tool schema 会进入模型上下文；tool allow/deny、tool profiles、per-agent 工具策略、provider-specific 工具策略和 sandbox 工具策略共同决定模型实际能拿到哪些工具&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/016-1395dff2.png"&gt;&lt;/p&gt;
&lt;h3 id="plugins扩展系统本身"&gt;&lt;a href="#plugins%e6%89%a9%e5%b1%95%e7%b3%bb%e7%bb%9f%e6%9c%ac%e8%ba%ab" class="header-anchor"&gt;&lt;/a&gt;Plugins：扩展系统本身
&lt;/h3&gt;&lt;p&gt;插件是运行在 Gateway 内部的代码模块，可以：&lt;/p&gt;
&lt;p&gt;●注册新的 RPC 方法&lt;/p&gt;
&lt;p&gt;●添加新的 HTTP 路由&lt;/p&gt;
&lt;p&gt;●注册新的工具&lt;/p&gt;
&lt;p&gt;●启动后台服务&lt;/p&gt;
&lt;p&gt;类比：&lt;/p&gt;
&lt;p&gt;●Skills：像&amp;quot;使用说明书&amp;quot;&lt;/p&gt;
&lt;p&gt;●Tools：像&amp;quot;内置功能&amp;quot;&lt;/p&gt;
&lt;p&gt;●Plugins：像&amp;quot;给系统装新器官&amp;quot;&lt;/p&gt;
&lt;h3 id="skills教-ai-如何做事"&gt;&lt;a href="#skills%e6%95%99-ai-%e5%a6%82%e4%bd%95%e5%81%9a%e4%ba%8b" class="header-anchor"&gt;&lt;/a&gt;Skills：教 AI 如何做事
&lt;/h3&gt;&lt;p&gt;每个 Skill 就是一个目录，核心是 SKILL.md——一份详细的操作指南。Skill 的三个来源（优先级从高到低）：&lt;/p&gt;
&lt;p&gt;●&lt;code&gt;&amp;lt;workspace&amp;gt;/skills/&lt;/code&gt;：当前工作区专属&lt;/p&gt;
&lt;p&gt;●&lt;code&gt;~/.openclaw/skills/&lt;/code&gt;：用户私有技能&lt;/p&gt;
&lt;p&gt;●Bundled skills：系统内置技能&lt;/p&gt;
&lt;p&gt;与Plugins的本质区别:Plugins是给手机增加新硬件（如外接摄像头）；Skills是相机APP里的&amp;quot;夜景模式&amp;quot;说明书。&lt;/p&gt;
&lt;h2 id="八node让-ai-有手有眼"&gt;&lt;a href="#%e5%85%abnode%e8%ae%a9-ai-%e6%9c%89%e6%89%8b%e6%9c%89%e7%9c%bc" class="header-anchor"&gt;&lt;/a&gt;八、Node：让 AI “有手有眼”
&lt;/h2&gt;&lt;p&gt;OpenClaw 严格区分了两个概念：&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/017-7e75b671.png"&gt;&lt;/p&gt;
&lt;p&gt;为什么这样设计？&lt;/p&gt;
&lt;p&gt;如果把它们混在一起：&lt;/p&gt;
&lt;p&gt;●Telegram Bot 只能干 Telegram 允许的事&lt;/p&gt;
&lt;p&gt;●WhatsApp Bot 只能干 WhatsApp 允许的事&lt;/p&gt;
&lt;p&gt;每个渠道都要重新实现一遍&amp;quot;控制电脑&amp;quot;的能力&lt;/p&gt;
&lt;p&gt;OpenClaw 的设计：&lt;/p&gt;
&lt;p&gt;●所有消息渠道都汇聚到 Gateway&lt;/p&gt;
&lt;p&gt;●所有设备能力也汇聚到 Gateway&lt;/p&gt;
&lt;p&gt;Gateway 负责调度：“这个 Telegram 消息需要控制 iPhone，我来协调”&lt;/p&gt;
&lt;h3 id="node-是什么"&gt;&lt;a href="#node-%e6%98%af%e4%bb%80%e4%b9%88" class="header-anchor"&gt;&lt;/a&gt;Node 是什么？
&lt;/h3&gt;
 &lt;blockquote&gt;
 &lt;p&gt;node 是 companion device，可以是 macOS、iOS、Android 或 headless 设备；它通过和 operator 一样的 Gateway WebSocket 接入，但使用 role: &amp;ldquo;node&amp;rdquo;，向 Gateway 暴露一组命令面，比如 canvas.&lt;em&gt;、camera.&lt;/em&gt;、device.&lt;em&gt;、notifications.&lt;/em&gt;、system.*，再由 node.invoke 触发。官方还特别强调：nodes are peripherals, not gateways。消息还是落在 Gateway，不是落在 node&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;Node 是一台&amp;quot;伴侣设备&amp;quot;，它：&lt;/p&gt;
&lt;p&gt;●通过 WebSocket 连接到 Gateway&lt;/p&gt;
&lt;p&gt;●向 Gateway 暴露一组能力（camera、notifications、system…）&lt;/p&gt;
&lt;p&gt;●等待 Gateway 的指令&lt;/p&gt;
&lt;p&gt;类比：&lt;/p&gt;
&lt;p&gt;●Gateway：大脑&lt;/p&gt;
&lt;p&gt;●消息渠道：耳朵和嘴&lt;/p&gt;
&lt;p&gt;●Node：手和脚&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/018-094dd77e.png"&gt;&lt;/p&gt;
&lt;p&gt;没有 Node 的话：&lt;/p&gt;
&lt;p&gt;●Telegram Bot 无法直接控制你的 iPhone&lt;/p&gt;
&lt;p&gt;●需要你自己手动截图,再发给 Bot&lt;/p&gt;
&lt;p&gt;●AI 无法真正&amp;quot;替你做事&amp;quot;&lt;/p&gt;
&lt;p&gt;有了 Node：&lt;/p&gt;
&lt;p&gt;●AI 可以跨设备协同工作&lt;/p&gt;
&lt;p&gt;●你在 Telegram 发指令,它在你的 Mac 上执行&lt;/p&gt;
&lt;p&gt;●真正的&amp;quot;个人助手&amp;quot;体验&lt;/p&gt;
&lt;h2 id="九安全边界诚实比承诺更重要"&gt;&lt;a href="#%e4%b9%9d%e5%ae%89%e5%85%a8%e8%be%b9%e7%95%8c%e8%af%9a%e5%ae%9e%e6%af%94%e6%89%bf%e8%af%ba%e6%9b%b4%e9%87%8d%e8%a6%81" class="header-anchor"&gt;&lt;/a&gt;九、安全边界：诚实比承诺更重要
&lt;/h2&gt;&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/019-9b4d83b0.png"&gt;&lt;/p&gt;
&lt;p&gt;OpenClaw 的安全模型假设的是 &lt;strong&gt;one trusted operator boundary per gateway&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;OpenClaw 的安全文档非常诚实，这句话翻译成人话是：&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/020-fe2dc05d.png"&gt;&lt;/p&gt;
&lt;p&gt;这意味着：如果你把Gateway密码给朋友，让他也连进来，你们的对话历史、文件访问、记忆内容默认不隔离。这不是漏洞，是设计选择——为了简化架构，OpenClaw牺牲了多租户隔离，换取单用户场景下的极致能力。&lt;/p&gt;
&lt;h3 id="安全层次"&gt;&lt;a href="#%e5%ae%89%e5%85%a8%e5%b1%82%e6%ac%a1" class="header-anchor"&gt;&lt;/a&gt;安全层次
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;⚡&lt;/span&gt; &lt;span class="err"&gt;代码片段外层：公网&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="err"&gt;外部消息源&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;↓&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;第一道门：&lt;/span&gt;&lt;span class="n"&gt;Gateway&lt;/span&gt; &lt;span class="err"&gt;入口保护&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;token&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;password&lt;/span&gt; &lt;span class="err"&gt;认证&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;challenge&lt;/span&gt; &lt;span class="err"&gt;签名验证&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;device&lt;/span&gt; &lt;span class="n"&gt;identity&lt;/span&gt; &lt;span class="err"&gt;校验&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;pairing&lt;/span&gt; &lt;span class="err"&gt;审批&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;↓&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;第二道门：权限控制&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;operator&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="err"&gt;角色&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;scopes&lt;/span&gt; &lt;span class="err"&gt;权限范围&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;↓&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;第三道门：执行保护&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="k"&gt;tool&lt;/span&gt; &lt;span class="n"&gt;policy&lt;/span&gt;&lt;span class="err"&gt;（工具策略）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;exec&lt;/span&gt; &lt;span class="n"&gt;approvals&lt;/span&gt;&lt;span class="err"&gt;（执行审批）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;sandbox&lt;/span&gt;&lt;span class="err"&gt;（沙箱隔离）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;17&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;allowlist&lt;/span&gt;&lt;span class="err"&gt;（白名单）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;18&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;↓&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;19&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;内层：高风险边界&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;20&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;plugins&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;trusted&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;21&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="err"&gt;插件和&lt;/span&gt; &lt;span class="n"&gt;Gateway&lt;/span&gt; &lt;span class="err"&gt;同等权限&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/021-58fc1d46.png"&gt;&lt;/p&gt;
&lt;h3 id="sandbox可以隔离也可以放行"&gt;&lt;a href="#sandbox%e5%8f%af%e4%bb%a5%e9%9a%94%e7%a6%bb%e4%b9%9f%e5%8f%af%e4%bb%a5%e6%94%be%e8%a1%8c" class="header-anchor"&gt;&lt;/a&gt;Sandbox：可以隔离，也可以放行
&lt;/h3&gt;&lt;p&gt;OpenClaw 的沙箱设计非常灵活：&lt;/p&gt;
&lt;p&gt;配置维度：&lt;/p&gt;
&lt;p&gt;●mode：off / non-main / all（是否启用沙箱）&lt;/p&gt;
&lt;p&gt;●scope：session / agent / shared（沙箱范围）&lt;/p&gt;
&lt;p&gt;●workspaceAccess：none / ro / rw（工作区访问权限）&lt;/p&gt;
&lt;p&gt;实际用法举例：&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/022-0a65a7e5.png"&gt;&lt;/p&gt;
&lt;h3 id="浏览器隔离不是接管你的-chrome"&gt;&lt;a href="#%e6%b5%8f%e8%a7%88%e5%99%a8%e9%9a%94%e7%a6%bb%e4%b8%8d%e6%98%af%e6%8e%a5%e7%ae%a1%e4%bd%a0%e7%9a%84-chrome" class="header-anchor"&gt;&lt;/a&gt;浏览器隔离：不是接管你的 Chrome
&lt;/h3&gt;&lt;p&gt;OpenClaw不会接管你的日常Chrome（那里面可能有银行登录态），而是拉起独立的Chrome Profile：&lt;/p&gt;
&lt;p&gt;●独立的Cookie、缓存、扩展&lt;/p&gt;
&lt;p&gt;●Agent专用，与你的个人浏览数据隔离&lt;/p&gt;
&lt;p&gt;●支持截图、点击、PDF生成，但无法访问你个人的浏览器历史&lt;/p&gt;
&lt;p&gt;这是&amp;quot;能力&amp;quot;与&amp;quot;安全&amp;quot;的折中：AI需要浏览器自动化，但不能拥有你的全部数字生活。&lt;/p&gt;
&lt;h2 id="十为什么这是个人ai操作系统的雏形"&gt;&lt;a href="#%e5%8d%81%e4%b8%ba%e4%bb%80%e4%b9%88%e8%bf%99%e6%98%af%e4%b8%aa%e4%ba%baai%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e7%9a%84%e9%9b%8f%e5%bd%a2" class="header-anchor"&gt;&lt;/a&gt;十、为什么这是&amp;quot;个人AI操作系统&amp;quot;的雏形？
&lt;/h2&gt;&lt;p&gt;OpenClaw 之所以值得研究，不是因为它 GitHub stars 多，而是因为它回答了一个未来会越来越重要的问题：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果 AI 不再是网页对话框，而是一个长期在线、能操作设备、能记住一切的助手，它的系统架构应该长什么样？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;OpenClaw 的答案是：&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-11-openclaw-bao-huo-bei-hou-ta-bu-shi-liao-tian-ji-qi-ren-er-sh/023-c6731cdd.png"&gt;&lt;/p&gt;
&lt;p&gt;这套答案不一定是终局，也还远没到“完美”。Vision 文档自己都说，项目还很早，当前重点依然是 security、safe defaults、bug fixes、stability 和 setup reliability。也就是说，它依然在快速迭代，仍然带着实验性。&lt;/p&gt;
&lt;p&gt;但它已经足够有代表性。因为它第一次比较完整地把“个人 AI 助手”这件事，从概念拉成了系统工程：&lt;/p&gt;
&lt;p&gt;●消息不再只是消息，而是事件入口；&lt;/p&gt;
&lt;p&gt;●模型不再只是回答器，而是运行时里的推理核心；&lt;/p&gt;
&lt;p&gt;●工具不再只是 function calling 演示，而是被策略、审批和沙箱约束的系统调用；&lt;/p&gt;
&lt;p&gt;●记忆不再只是“模型好像记得”，而是落到磁盘、可检索、可审计、可 Git 备份的工作区资产&lt;/p&gt;
&lt;h3 id="它具备了操作系统的味道"&gt;&lt;a href="#%e5%ae%83%e5%85%b7%e5%a4%87%e4%ba%86%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e7%9a%84%e5%91%b3%e9%81%93" class="header-anchor"&gt;&lt;/a&gt;它具备了&amp;quot;操作系统&amp;quot;的味道
&lt;/h3&gt;&lt;p&gt;不是说它替代 Windows 或 macOS，而是说它有那种系统级的感觉：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;⚡ 代码片段传统应用：打开 → 用 → 关闭
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;操作系统：开机 → 长期运行 → 管理所有应用 → 关机
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;4&lt;/span&gt;&lt;span class="cl"&gt;传统 AI：聊天 → 结束
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;5&lt;/span&gt;&lt;span class="cl"&gt;OpenClaw：启动 Gateway → 长期在线 → 管理所有 Agent → 关闭
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;最后，再强调一次：&lt;strong&gt;OpenClaw 的本质，不是一个接了很多渠道的聊天 Bot，而是一套以 Gateway 为控制面、以 Agent/Session/Memory 为状态骨架、以工具与节点为执行面，把大模型真正接入现实世界的个人 AI 助手系统。&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>昨天面试官问我：一个 Prompt 进入大模型后，内部到底发生了什么？</title><link>https://xiaobox.github.io/p/2026-03-06-zuo-tian-mian-shi-guan-wen-wo-yi-ge-prompt-jin-ru-da-mo-xing/</link><pubDate>Fri, 06 Mar 2026 03:44:58 +0000</pubDate><guid>https://xiaobox.github.io/p/2026-03-06-zuo-tian-mian-shi-guan-wen-wo-yi-ge-prompt-jin-ru-da-mo-xing/</guid><description>&lt;img src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-06-zuo-tian-mian-shi-guan-wen-wo-yi-ge-prompt-jin-ru-da-mo-xing/cover.jpg" alt="Featured image of post 昨天面试官问我：一个 Prompt 进入大模型后，内部到底发生了什么？" /&gt;&lt;p&gt;昨天面试时，面试官抛给我一道很典型的问题：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“描述一下一个请求 prompt 经过 LLM 直到返回结果，这中间的推理过程，越详细越好。”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这类题看起来开放，实际上很考验基本功。&lt;/p&gt;
&lt;p&gt;因为它不是在问你会不会背几个名词，而是在看你是否真的理解：&lt;/p&gt;
&lt;p&gt;●一个请求在系统里是怎么流动的&lt;/p&gt;
&lt;p&gt;●进入模型之后到底算了什么&lt;/p&gt;
&lt;p&gt;●为什么大模型是一个 token 一个 token 地往外生成&lt;/p&gt;
&lt;p&gt;●为什么会有 prefill、decode、KV cache、sampling 这些概念&lt;/p&gt;
&lt;p&gt;●为什么工程侧还要引入 batching、FlashAttention、continuous batching 之类的优化&lt;/p&gt;
&lt;p&gt;如果回答得太浅，就会变成泛泛而谈；如果一上来就扎进公式，又很容易失去结构。&lt;/p&gt;
&lt;p&gt;我后来复盘了一下，觉得这道题最好的答法，不是“想到哪说到哪”，而是按一条完整链路去讲：&lt;strong&gt;服务层怎么处理请求，LLM 内部怎么做前向计算，生成阶段又是如何一步步产出结果的&lt;/strong&gt;。 这也是 GPT-3 所代表的自回归语言模型在推理时的基本工作方式：它不会在一次请求里更新参数，而是在固定权重下做前向传播，并逐 token 预测后续内容&lt;/p&gt;
&lt;h2 id="一个高分回答最好先把整体框架立住"&gt;&lt;a href="#%e4%b8%80%e4%b8%aa%e9%ab%98%e5%88%86%e5%9b%9e%e7%ad%94%e6%9c%80%e5%a5%bd%e5%85%88%e6%8a%8a%e6%95%b4%e4%bd%93%e6%a1%86%e6%9e%b6%e7%ab%8b%e4%bd%8f" class="header-anchor"&gt;&lt;/a&gt;一个高分回答，最好先把整体框架立住
&lt;/h2&gt;&lt;p&gt;如果让我在面试里先用一句话概括，我会这样回答：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一个 prompt 从输入到输出，大体会经历 6 个阶段：请求封装、tokenization、推理调度、prefill、decode、结果反解码返回。其核心本质是：模型先并行“读懂”整段输入，建立上下文状态和 KV cache，然后再进入自回归生成循环，每次只预测下一个 token。&lt;/strong&gt; 这种“自回归 + 不做本次梯度更新”的推理方式，正是 GPT 类语言模型的基本范式；而 Transformer 则提供了它内部 attention 和前馈网络的计算骨架。&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-06-zuo-tian-mian-shi-guan-wen-wo-yi-ge-prompt-jin-ru-da-mo-xing/001-6e34d687.png"&gt;&lt;/p&gt;
&lt;p&gt;这句话为什么重要？&lt;/p&gt;
&lt;p&gt;因为它先把&lt;strong&gt;系统层和模型层&lt;/strong&gt;分开了，也先把&lt;strong&gt;prefill和decode&lt;/strong&gt;分开了。很多人答这道题失分，不是因为不会，而是因为把所有层次混在一起，听起来就没有脉络。&lt;/p&gt;
&lt;h2 id="第一阶段用户输入的-prompt并不是模型真正看到的内容"&gt;&lt;a href="#%e7%ac%ac%e4%b8%80%e9%98%b6%e6%ae%b5%e7%94%a8%e6%88%b7%e8%be%93%e5%85%a5%e7%9a%84-prompt%e5%b9%b6%e4%b8%8d%e6%98%af%e6%a8%a1%e5%9e%8b%e7%9c%9f%e6%ad%a3%e7%9c%8b%e5%88%b0%e7%9a%84%e5%86%85%e5%ae%b9" class="header-anchor"&gt;&lt;/a&gt;第一阶段：用户输入的 Prompt，并不是模型真正看到的内容
&lt;/h2&gt;&lt;p&gt;我们在聊天框里看到的是自然语言，但模型真正接收到的，通常不是这段原始文本本身。&lt;/p&gt;
&lt;p&gt;在送入模型之前，服务层一般会先把 system、user、assistant 等多轮消息按固定模板组织起来，再补上一些特殊标记。随后，文本会经过 tokenizer，被切成 token 序列。像 OpenAI 开源的 tiktoken 就明确说明，它是一个用于模型的 BPE tokenizer。也就是说，对模型来说，文本首先会被变成一串离散的 token IDs，而不是“句子”本身。&lt;/p&gt;
&lt;p&gt;这一层很多人容易忽略，但它很关键。&lt;/p&gt;
&lt;p&gt;因为后面所有推理，都是建立在 token 序列上的。你输入的是一句中文、一段英文、还是一段代码，对模型来说，第一步都得先转换成 token IDs。&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-06-zuo-tian-mian-shi-guan-wen-wo-yi-ge-prompt-jin-ru-da-mo-xing/002-48de7d31.png"&gt;&lt;/p&gt;
&lt;h2 id="第二阶段请求不会立刻进模型而是先进入推理服务和调度层"&gt;&lt;a href="#%e7%ac%ac%e4%ba%8c%e9%98%b6%e6%ae%b5%e8%af%b7%e6%b1%82%e4%b8%8d%e4%bc%9a%e7%ab%8b%e5%88%bb%e8%bf%9b%e6%a8%a1%e5%9e%8b%e8%80%8c%e6%98%af%e5%85%88%e8%bf%9b%e5%85%a5%e6%8e%a8%e7%90%86%e6%9c%8d%e5%8a%a1%e5%92%8c%e8%b0%83%e5%ba%a6%e5%b1%82" class="header-anchor"&gt;&lt;/a&gt;第二阶段：请求不会立刻进模型，而是先进入推理服务和调度层
&lt;/h2&gt;&lt;p&gt;在真实工程系统里，一个请求到达后，通常不会马上冲进 GPU 执行。&lt;/p&gt;
&lt;p&gt;它往往还要经过一层推理服务框架，比如 TGI、vLLM 这一类系统。它们会负责请求排队、动态 batching、缓存管理、流式返回等工作。Hugging Face 的 TGI 文档明确把 &lt;strong&gt;continuous batching、token streaming、Flash Attention、Paged Attention&lt;/strong&gt; 等列为核心特性；而 Transformers 的 continuous batching 文档也说明，这种动态调度的目的是提高 GPU 利用率、降低延迟，并允许请求在每一步动态加入和退出批次。&lt;/p&gt;
&lt;p&gt;所以，从系统视角看，链路通常是这样的：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;用户输入 → prompt 模板展开 → tokenization → 请求调度 / batching → 送入模型&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这一步的意义在于：&lt;/p&gt;
&lt;p&gt;模型推理不是单个请求的“裸跑”，而是和其他请求一起，由推理引擎统一组织和优化的。&lt;/p&gt;
&lt;p&gt;我们上一阶段说的 tokenization ，&lt;strong&gt;严格来说， 不属于 Transformer 前向推理本身，模型只接收 input_ids。但在现代推理服务里，tokenizer 往往和 serving 引擎绑定在一起，所以工程上看起来像是推理引擎在处理原始字符串。像 vLLM 就同时支持 text prompt 和 pre-tokenized prompt，两种模式都能跑。&lt;/strong&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;用户通常把原始字符串发给后端；后端中的推理服务通常持有 tokenizer，先把字符串编码成 token IDs，再交给模型执行 prefill/decode。只有在某些架构下，tokenization 才会提前在客户端或独立预处理层完成。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="第三阶段进入模型后token-会先变成向量表示"&gt;&lt;a href="#%e7%ac%ac%e4%b8%89%e9%98%b6%e6%ae%b5%e8%bf%9b%e5%85%a5%e6%a8%a1%e5%9e%8b%e5%90%8etoken-%e4%bc%9a%e5%85%88%e5%8f%98%e6%88%90%e5%90%91%e9%87%8f%e8%a1%a8%e7%a4%ba" class="header-anchor"&gt;&lt;/a&gt;第三阶段：进入模型后，token 会先变成向量表示
&lt;/h2&gt;&lt;p&gt;真正进入 LLM 后，第一步不是“开始回答”，而是把 token IDs 映射成高维向量。&lt;/p&gt;
&lt;p&gt;这一步叫 &lt;strong&gt;embedding lookup&lt;/strong&gt;。每个 token 都会查一张巨大的 embedding 表，得到自己的向量表示。到这时，模型才真正进入连续空间的数值计算。Transformer 的基础论文《Attention Is All You Need》所定义的，就是这样一种基于 attention 的序列建模方式。&lt;/p&gt;
&lt;p&gt;不过只有 token 向量还不够，因为模型还得知道“谁在前、谁在后”。&lt;/p&gt;
&lt;p&gt;早期 Transformer 使用位置编码，后来很多大模型会用 &lt;strong&gt;RoPE&lt;/strong&gt;（Rotary Position Embedding）。RoPE 的核心价值，是把位置信息融入 attention 计算中，让模型在处理 token 时同时保留相对位置信息。&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-06-zuo-tian-mian-shi-guan-wen-wo-yi-ge-prompt-jin-ru-da-mo-xing/003-100bf39a.png"&gt;&lt;/p&gt;
&lt;h2 id="第四阶段真正的推理核心发生在一层层-transformer-block-里"&gt;&lt;a href="#%e7%ac%ac%e5%9b%9b%e9%98%b6%e6%ae%b5%e7%9c%9f%e6%ad%a3%e7%9a%84%e6%8e%a8%e7%90%86%e6%a0%b8%e5%bf%83%e5%8f%91%e7%94%9f%e5%9c%a8%e4%b8%80%e5%b1%82%e5%b1%82-transformer-block-%e9%87%8c" class="header-anchor"&gt;&lt;/a&gt;第四阶段：真正的“推理核心”发生在一层层 Transformer Block 里
&lt;/h2&gt;&lt;p&gt;这是这道题最核心的部分。&lt;/p&gt;
&lt;p&gt;如果面试官说“越详细越好”，你就必须把 Transformer Block 讲清楚。&lt;/p&gt;
&lt;p&gt;一个典型的 decoder-only LLM，每一层大体都会做两件事：&lt;/p&gt;
&lt;p&gt;●&lt;strong&gt;第一，Self-Attention&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;●&lt;strong&gt;第二，FFN / MLP（前馈网络&lt;/strong&gt;）&lt;/p&gt;
&lt;p&gt;中间再配合残差连接和归一化。Transformer 论文给出的主体结构就是这样。&lt;/p&gt;
&lt;p&gt;你可以把它想成：&lt;/p&gt;
&lt;p&gt;●attention 负责“读群聊”&lt;/p&gt;
&lt;p&gt;●FFN 负责“自己想一想、整理一下”&lt;/p&gt;
&lt;h3 id="self-attention-在干什么"&gt;&lt;a href="#self-attention-%e5%9c%a8%e5%b9%b2%e4%bb%80%e4%b9%88" class="header-anchor"&gt;&lt;/a&gt;Self-Attention 在干什么？
&lt;/h3&gt;&lt;p&gt;可以把它理解成：&lt;strong&gt;当前位置的 token，要去看上下文里哪些 token 最相关。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;模型会把当前隐藏状态投影成 Query、Key、Value 三组向量，然后通过 Query 和所有 Key 的相似度算出注意力权重，再对 Value 做加权求和。Transformer 论文把它定义为 &lt;strong&gt;Scaled Dot-Product Attention&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;对于生成式语言模型，还有一个必须强调的点：causal mask。&lt;/p&gt;
&lt;p&gt;也就是当前位置只能看见自己和前面的 token，不能偷看未来。这一点决定了模型天然是自回归生成的：它永远只能基于已有上下文，去预测下一个 token。GPT-3 论文里所讨论的 few-shot/in-context learning，本质上也是建立在这种&lt;strong&gt;自回归&lt;/strong&gt;预测机制之上的。&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-06-zuo-tian-mian-shi-guan-wen-wo-yi-ge-prompt-jin-ru-da-mo-xing/004-a52cdfd4.png"&gt;&lt;/p&gt;
&lt;p&gt;关于 Q、K、V，可以简单这样理解：&lt;/p&gt;
&lt;p&gt;Q = 我现在想找什么&lt;/p&gt;
&lt;p&gt;K = 每个词身上贴的“索引标签”&lt;/p&gt;
&lt;p&gt;V = 每个词真正携带、可被取走的信息。&lt;/p&gt;
&lt;p&gt;最通俗的比喻是“图书馆检索”：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;你现在脑子里有一个问题，这就是 Q（Query）；书架上每本书卡片上的主题标签，是 K（Key）；书里真正的内容，是 V（Value）。系统先拿你的问题 Q 去和所有标签 K 比一比，看看“像不像、相关不相关”；相关度高的那些书，它们的内容 V 就会被更多地取出来，最后合成当前这一步该看的信息。Transformer 论文对 attention 的定义，本质上就是“一个 query 对一组 key-value 对做匹配，输出是 values 的加权和”。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="ffn-又在干什么"&gt;&lt;a href="#ffn-%e5%8f%88%e5%9c%a8%e5%b9%b2%e4%bb%80%e4%b9%88" class="header-anchor"&gt;&lt;/a&gt;FFN 又在干什么？
&lt;/h3&gt;&lt;p&gt;如果说 attention 负责“从上下文搬运信息”，那么 FFN 更像是“对当前位置做进一步加工”。&lt;/p&gt;
&lt;p&gt;它不会跨位置交互，而是对每个 token 的表示单独做非线性变换，把特征进一步提纯和增强。Transformer 论文把它称为 position-wise feed-forward network。&lt;/p&gt;
&lt;p&gt;所以一个 Transformer Block 可以粗略理解成：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;先决定我该关注上下文里的谁，再把取回来的信息做一轮更深的特征变换&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-06-zuo-tian-mian-shi-guan-wen-wo-yi-ge-prompt-jin-ru-da-mo-xing/005-ea012f28.png"&gt;&lt;/p&gt;
&lt;p&gt;注意在整个流程中，&lt;strong&gt;prefill 和 decode 阶段，都要做 self-attention 和 FFN。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;但要分清楚：“都要做”不等于“做法完全一样”。&lt;/p&gt;
&lt;p&gt;●Prefill 把整段 prompt 一次性送进去。 这时每一层都会对这批 token 做 masked self-attention，然后再过 FFN。因为整段 prompt 一开始就都已知，所以这一步可以在单个请求内部并行处理很多 token。Hugging Face 对 prefill 的描述也是：prefill 会处理整段输入，并建立 KV cache。&lt;/p&gt;
&lt;p&gt;●Decode 开始一个 token 一个 token 往后生成。 这时每生成一个新 token，它仍然要在每一层里经过：一次 self-attention，一次 FFN&lt;/p&gt;
&lt;p&gt;decode 不是把旧 token 全部再跑一遍 attention 和 FFN。有了 KV cache 后，旧 token 的 K/V 会被缓存起来；新 token 到来时，只需要为这个新 token 计算当前层需要的表示，再和历史 K/V 做注意力计算，然后继续过 FFN。Hugging Face 官方缓存文档明确说了：后续生成时，只传入尚未处理的新 token，并把 key/value 写入和读取自 cache。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;FFN 就是 Transformer 每层里、紧跟在 self-attention 后面的前馈网络，本质上是对每个 token 单独做的 MLP 加工。在标准 LLM 里，prefill 和 decode 两个阶段都要经过 self-attention 和 FFN；区别只是 prefill 处理整段已知 token，decode 只处理当前新 token，并复用历史 KV cache&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="第五阶段prefill先把整段-prompt-读完"&gt;&lt;a href="#%e7%ac%ac%e4%ba%94%e9%98%b6%e6%ae%b5prefill%e5%85%88%e6%8a%8a%e6%95%b4%e6%ae%b5-prompt-%e8%af%bb%e5%ae%8c" class="header-anchor"&gt;&lt;/a&gt;第五阶段：Prefill——先把整段 Prompt “读完”
&lt;/h2&gt;&lt;p&gt;很多人会误以为模型一进来就开始逐字生成。&lt;/p&gt;
&lt;p&gt;其实不是。生成前通常会先有一个很重要的阶段：&lt;strong&gt;Prefill&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Prefill 的意思是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;先把整段 prompt 一次性跑完整个前向过程。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在这个阶段，模型会为输入中的所有 token 计算各层隐藏状态，并且生成后面 decode 要用到的 KV cache。Hugging Face 的缓存文档明确指出，KV cache 会把注意力层中之前 token 产生的 key-value 对存下来，后续生成时直接复用，从而避免重复计算。&lt;/p&gt;
&lt;p&gt;Prefill 的一个重要特点是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;它通常可以高度并行。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;因为整段输入已经完整给定了，GPU 能把很多矩阵操作一起做完。所以 prefill 更像“先整体读题”，吞吐通常更高。vLLM 文档也明确把 prefill 归类为更偏 compute-bound 的阶段&lt;/p&gt;
&lt;p&gt;你可以把 prefill 想象成一个正在考试的人，prefill 就是他正在读题，把题目先读到脑子里，填充好上下文，然后再开始做答（输出 token）&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-06-zuo-tian-mian-shi-guan-wen-wo-yi-ge-prompt-jin-ru-da-mo-xing/006-a96fea1e.png"&gt;&lt;/p&gt;
&lt;h2 id="第六阶段kv-cache为什么不会每次都重算全文"&gt;&lt;a href="#%e7%ac%ac%e5%85%ad%e9%98%b6%e6%ae%b5kv-cache%e4%b8%ba%e4%bb%80%e4%b9%88%e4%b8%8d%e4%bc%9a%e6%af%8f%e6%ac%a1%e9%83%bd%e9%87%8d%e7%ae%97%e5%85%a8%e6%96%87" class="header-anchor"&gt;&lt;/a&gt;第六阶段：KV Cache——为什么不会每次都重算全文
&lt;/h2&gt;&lt;p&gt;这部分是面试里非常加分的点。&lt;/p&gt;
&lt;p&gt;因为它体现你不只懂“算法”，还懂“推理为什么能跑得起来”。&lt;/p&gt;
&lt;p&gt;如果没有 KV cache，那么每生成一个新 token，模型都要把整个历史上下文从头再算一遍，成本会非常高。&lt;/p&gt;
&lt;p&gt;而有了 KV cache 后，历史 token 在每层 attention 中算出的 K 和 V 都会被缓存起来。下一个时间步只需要为新 token 计算新的 Query、Key、Value，再用新的 Query 去和历史缓存里的 Key 做匹配即可。Hugging Face 的官方文档把这一点解释得很清楚：KV cache 的目标就是消除重复计算，加速自回归生成。&lt;/p&gt;
&lt;p&gt;一句话说明就是：&lt;/p&gt;
&lt;p&gt;●&lt;strong&gt;没有 KV cache，像每次都重读整篇文章&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;●&lt;strong&gt;有 KV cache，则像前文已经做好笔记，现在只补最后一句。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="为什么-kv-cache-只缓存-k-和-v而不缓存-q"&gt;&lt;a href="#%e4%b8%ba%e4%bb%80%e4%b9%88-kv-cache-%e5%8f%aa%e7%bc%93%e5%ad%98-k-%e5%92%8c-v%e8%80%8c%e4%b8%8d%e7%bc%93%e5%ad%98-q" class="header-anchor"&gt;&lt;/a&gt;为什么 KV cache 只缓存 K 和 V，而不缓存 Q？
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;一个东西值不值得缓存，不看它“重不重要”，而看它“后面还会不会再次被用到”。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;KV cache 只缓存 K 和 V，不缓存 Q，不是因为 Q 不重要，而是因为 Q “只在当前这一步有用一次”；而 K、V 会在后面每一步继续被反复用到。 这正是 Hugging Face 官方对缓存机制的解释：过去 token 的 K 和 V 可以缓存并复用，而在推理时，只需要“最后一个 token 的 query”来计算当前步的表示。&lt;/p&gt;
&lt;h2 id="第七阶段decode开始逐-token-生成答案"&gt;&lt;a href="#%e7%ac%ac%e4%b8%83%e9%98%b6%e6%ae%b5decode%e5%bc%80%e5%a7%8b%e9%80%90-token-%e7%94%9f%e6%88%90%e7%ad%94%e6%a1%88" class="header-anchor"&gt;&lt;/a&gt;第七阶段：Decode——开始逐 token 生成答案
&lt;/h2&gt;&lt;p&gt;当 prefill 完成后，模型已经“读懂”了整段输入。&lt;/p&gt;
&lt;p&gt;接下来，系统会取最后一个位置的隐藏状态，通过输出层映射成整个词表上的 logits，也就是“下一个 token 的打分”。随后再通过 softmax 和解码策略，决定下一个 token 输出什么。Transformer 的输出逻辑与 Hugging Face 的生成文档都说明了这一点。&lt;/p&gt;
&lt;p&gt;这里又有一个容易被问到的点：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;下一个 token 是怎么选出来的？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;并不是只有“选概率最大”这一种方式。常见解码策略包括 greedy、sampling、top-k、top-p 等。不同策略会影响文本的稳定性、多样性和创造性。Hugging Face 的生成策略文档对此有系统说明。&lt;/p&gt;
&lt;p&gt;然后，流程进入一个循环：&lt;/p&gt;
&lt;p&gt;●把刚生成的 token 接到上下文后面&lt;/p&gt;
&lt;p&gt;●复用 KV cache&lt;/p&gt;
&lt;p&gt;●只为这个新 token 跑一遍前向计算&lt;/p&gt;
&lt;p&gt;●再得到新的 logits&lt;/p&gt;
&lt;p&gt;●再生成下一个 token&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-06-zuo-tian-mian-shi-guan-wen-wo-yi-ge-prompt-jin-ru-da-mo-xing/007-469317f3.png"&gt;&lt;/p&gt;
&lt;p&gt;这就是为什么你看到的大模型回答，总是一个 token 一个 token 流式地吐出来，而不是整段瞬间出现。&lt;/p&gt;
&lt;h2 id="为什么第一个字慢后面快"&gt;&lt;a href="#%e4%b8%ba%e4%bb%80%e4%b9%88%e7%ac%ac%e4%b8%80%e4%b8%aa%e5%ad%97%e6%85%a2%e5%90%8e%e9%9d%a2%e5%bf%ab" class="header-anchor"&gt;&lt;/a&gt;为什么“第一个字慢，后面快”？
&lt;/h2&gt;&lt;p&gt;这也是一个非常像面试 follow-up 的问题。&lt;/p&gt;
&lt;p&gt;很多候选人知道 prefill 和 decode，但解释不清为什么两者速度特征不同。&lt;/p&gt;
&lt;p&gt;vLLM 的优化文档明确提到，&lt;strong&gt;prefill 更偏 compute-bound，decode 更偏 memory-bound。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;原因在于：prefill 可以把整段输入并行做大矩阵乘法，吃满 GPU 算力；而 decode 虽然每步只算一个 token，但它强依赖历史 KV cache，频繁访问显存，并且步骤之间有严格的顺序依赖。&lt;/p&gt;
&lt;p&gt;这也是为什么工程上会有很多针对推理性能的优化，比如：&lt;/p&gt;
&lt;p&gt;●FlashAttention：通过 IO-aware 的 attention 计算方式，减少显存读写&lt;/p&gt;
&lt;p&gt;●continuous batching：动态调整批次，减少 GPU 空转&lt;/p&gt;
&lt;p&gt;●chunked prefill / Paged Attention：改进长上下文和缓存管理效率&lt;/p&gt;
&lt;p&gt;要注意，这些技术优化的是执行效率，不是模型的“语义本质”。模型本质上做的事情仍然是：基于已有上下文，反复预测下一个 token&lt;/p&gt;
&lt;p&gt;我现在觉得，这道题最稳妥的回答方式，就是最后收束成一句话：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一个 LLM 请求的推理过程，本质上是：先把 prompt 模板化并 token 化，经由推理服务调度进入 GPU；模型通过 embedding 和多层 Transformer block 并行完成 prefill，建立上下文表示和 KV cache；随后进入 decode 循环，基于历史缓存逐 token 执行注意力、前馈网络和采样，直到生成结束，再把 token 序列反解码成文本返回。 这条链路同时体现了 Transformer 的计算机制、自回归生成范式，以及现代推理系统在 batching、缓存和 attention kernel 上的工程优化&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="看起来都是推理引擎的活儿啊"&gt;&lt;a href="#%e7%9c%8b%e8%b5%b7%e6%9d%a5%e9%83%bd%e6%98%af%e6%8e%a8%e7%90%86%e5%bc%95%e6%93%8e%e7%9a%84%e6%b4%bb%e5%84%bf%e5%95%8a" class="header-anchor"&gt;&lt;/a&gt;看起来都是推理引擎的活儿啊？
&lt;/h2&gt;&lt;p&gt;从整个流程上看，几乎都是推理引擎在负责，所以可以这么理解，但要再往前走半步：&lt;/p&gt;
&lt;p&gt;●从“流程编排”角度看，LLM 本体确实很被动；&lt;/p&gt;
&lt;p&gt;●从“核心计算与语义生成”角度看，LLM 才是全链路里最不可替代的部分。&lt;/p&gt;
&lt;p&gt;如果把整个链路拆开，职责大致是这样的：&lt;/p&gt;
&lt;p&gt;1.&lt;strong&gt;推理引擎 / serving 系统负责&lt;/strong&gt;：接 HTTP 请求、做 tokenization / 输入处理、调度 batching、管理 KV cache、协调 GPU worker、流式返回结果、做一部分采样与系统优化。vLLM 的官方文档甚至把这几层写得很直白：最少会有 1 个 API server 负责 HTTP、tokenization 和输入处理，1 个 engine core 负责 scheduler 和 KV cache 管理，再加上 N 个 GPU worker 负责执行模型前向计算。&lt;/p&gt;
&lt;p&gt;2.&lt;strong&gt;LLM 模型本体负责&lt;/strong&gt;：对 input_ids 做 embedding，经过多层 Transformer block 的 self-attention 和 feed-forward network，输出 logits，也就是“下一个 token 的分数分布”。Transformer 论文给出的核心结构就是 attention + FFN；Transformers 文档也明确说 causal language modeling 本质上是在左侧上下文条件下做 next-token prediction，而模型输出里的 logits 是对词表中每个 token 的预测分数。&lt;/p&gt;
&lt;p&gt;所以，**推理引擎决定“怎么高效地跑”，模型决定“到底生成什么”。**前者偏“编排与优化”，后者偏“语义计算与内容生成”&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-03-06-zuo-tian-mian-shi-guan-wen-wo-yi-ge-prompt-jin-ru-da-mo-xing/008-d8a4beaa.png"&gt;&lt;/p&gt;</description></item><item><title>嘿，朋友，做了个 AI 模型比价工具，想请你来试试</title><link>https://xiaobox.github.io/p/2026-01-22-hei-peng-you-zuo-le-ge-ai-mo-xing-bi-jia-gong-ju-xiang-qing/</link><pubDate>Thu, 22 Jan 2026 07:51:40 +0000</pubDate><guid>https://xiaobox.github.io/p/2026-01-22-hei-peng-you-zuo-le-ge-ai-mo-xing-bi-jia-gong-ju-xiang-qing/</guid><description>&lt;img src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-01-22-hei-peng-you-zuo-le-ge-ai-mo-xing-bi-jia-gong-ju-xiang-qing-/cover.jpg" alt="Featured image of post 嘿，朋友，做了个 AI 模型比价工具，想请你来试试" /&gt;&lt;p&gt;大家好，我是小盒子。&lt;/p&gt;
&lt;p&gt;这两年 AI 大模型卷得厉害，GPT-4、Claude、Gemini、Llama……模型眼花缭乱，价格也是五花八门。作为一个经常要调用 API 的开发者，我经常想搞清楚一个问题：&lt;strong&gt;到底谁家的模型便宜？性价比高的是哪个？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;说实话，每次想比较价格，我都得打开一堆浏览器标签页：AWS Bedrock 的定价页、Azure OpenAI 的价格表、OpenAI 官网、还有 OpenRouter……然后手动对比，算汇率，头都大了。更要命的是，这些价格还时不时更新，上周看的数据，这周可能就变了。&lt;/p&gt;
&lt;p&gt;不知道你有没有同感：&lt;/p&gt;
&lt;p&gt;●想用 Claude 3.5 Sonnet，但不确定是直接调 Anthropic 便宜，还是走 AWS Bedrock 便宜？&lt;/p&gt;
&lt;p&gt;●项目预算有限，想找个便宜点的模型先跑通，但不知道该选谁？&lt;/p&gt;
&lt;p&gt;●跟老板汇报要说清楚模型成本，却发现各家的计价单位都不一样，有的按 1K tokens，有的按 1M tokens，换算起来很麻烦？&lt;/p&gt;
&lt;p&gt;就因为这些&amp;quot;痛点&amp;quot;，前段时间，我干脆撸起袖子，做了一个工具来解决这个问题。&lt;/p&gt;
&lt;p&gt;于是，&lt;code&gt;Model Price&lt;/code&gt; 就这么诞生了。&lt;/p&gt;
&lt;p&gt;它的目标很简单：&lt;strong&gt;把各大 AI 服务商的模型价格聚合到一起，让你一眼就能看清谁便宜、谁贵、性价比如何。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;代码都在这儿了，开诚布公，欢迎随时来坐坐：&lt;/p&gt;
&lt;p&gt;●&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a class="link" href="https://github.com/xiaobox/model-price" target="_blank" rel="noopener"
 &gt;https://github.com/xiaobox/model-price&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;●&lt;strong&gt;在线演示:&lt;/strong&gt; &lt;a class="link" href="https://modelprice.boxtech.icu" target="_blank" rel="noopener"
 &gt;https://modelprice.boxtech.icu&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;（要是觉得还行，顺手点个 Star，就是对我最大的肯定。）&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-01-22-hei-peng-you-zuo-le-ge-ai-mo-xing-bi-jia-gong-ju-xiang-qing-/001-3ae3bd24.png"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id="这把锤子我花了些心思去打磨"&gt;&lt;a href="#%e8%bf%99%e6%8a%8a%e9%94%a4%e5%ad%90%e6%88%91%e8%8a%b1%e4%ba%86%e4%ba%9b%e5%bf%83%e6%80%9d%e5%8e%bb%e6%89%93%e7%a3%a8" class="header-anchor"&gt;&lt;/a&gt;这把&amp;quot;锤子&amp;quot;，我花了些心思去打磨
&lt;/h1&gt;&lt;p&gt;我不想只做个&amp;quot;能看&amp;quot;的工具，我希望它能&amp;quot;好用&amp;quot;，甚至让你&amp;quot;爱用&amp;quot;。所以，在几个关键的地方下了功夫。&lt;/p&gt;
&lt;h2 id="首先数据要全"&gt;&lt;a href="#%e9%a6%96%e5%85%88%e6%95%b0%e6%8d%ae%e8%a6%81%e5%85%a8" class="header-anchor"&gt;&lt;/a&gt;首先，数据要全
&lt;/h2&gt;&lt;p&gt;目前 Model Price 覆盖了 &lt;strong&gt;6 家主流 AI 服务商，580+ 个模型&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;服务商&lt;/th&gt;
 &lt;th&gt;模型数量&lt;/th&gt;
 &lt;th&gt;数据来源&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;AWS Bedrock&lt;/td&gt;
 &lt;td&gt;96+&lt;/td&gt;
 &lt;td&gt;公开 API&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Azure OpenAI&lt;/td&gt;
 &lt;td&gt;50+&lt;/td&gt;
 &lt;td&gt;零售价格 API&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;OpenAI&lt;/td&gt;
 &lt;td&gt;53+&lt;/td&gt;
 &lt;td&gt;官网爬虫&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Google Gemini&lt;/td&gt;
 &lt;td&gt;31+&lt;/td&gt;
 &lt;td&gt;官网爬虫&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;OpenRouter&lt;/td&gt;
 &lt;td&gt;339+&lt;/td&gt;
 &lt;td&gt;公开 API&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;xAI (Grok)&lt;/td&gt;
 &lt;td&gt;12+&lt;/td&gt;
 &lt;td&gt;官方文档&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;无论你用的是 GPT-4、Claude 3.5、Gemini Pro 还是 Llama，都能在这里找到对应的价格。&lt;/p&gt;
&lt;h2 id="其次数据要准"&gt;&lt;a href="#%e5%85%b6%e6%ac%a1%e6%95%b0%e6%8d%ae%e8%a6%81%e5%87%86" class="header-anchor"&gt;&lt;/a&gt;其次，数据要准
&lt;/h2&gt;&lt;p&gt;最让我头疼的就是价格变动。所以我给 Model Price 做了自动数据获取机制：&lt;/p&gt;
&lt;p&gt;●对于有公开 API 的服务商（如 AWS、Azure、OpenRouter），直接调接口拿最新数据&lt;/p&gt;
&lt;p&gt;●对于没有 API 的服务商（如 OpenAI、Google），用 Playwright 爬虫自动抓取官网定价&lt;/p&gt;
&lt;p&gt;这样一来，数据基本能保持实时更新，你不用再担心看到的是过时信息。&lt;/p&gt;
&lt;h2 id="查找要快"&gt;&lt;a href="#%e6%9f%a5%e6%89%be%e8%a6%81%e5%bf%ab" class="header-anchor"&gt;&lt;/a&gt;查找要快
&lt;/h2&gt;&lt;p&gt;580+ 个模型，如果只能翻页查看，那体验也太差了。所以我加了多维度筛选：&lt;/p&gt;
&lt;p&gt;●按&lt;strong&gt;提供商&lt;/strong&gt;筛选：只看 OpenAI 的？只看 AWS 的？一键切换&lt;/p&gt;
&lt;p&gt;●按&lt;strong&gt;模型系列&lt;/strong&gt;筛选：只看 GPT-4 系列？只看 Claude 系列？&lt;/p&gt;
&lt;p&gt;●按&lt;strong&gt;能力标签&lt;/strong&gt;筛选：支持视觉的？支持音频的？支持 Function Call 的？&lt;/p&gt;
&lt;p&gt;●按&lt;strong&gt;价格排序&lt;/strong&gt;：从低到高、从高到低&lt;/p&gt;
&lt;p&gt;基本上，三秒内就能找到你想要的模型。&lt;/p&gt;
&lt;h2 id="最后看着要舒服"&gt;&lt;a href="#%e6%9c%80%e5%90%8e%e7%9c%8b%e7%9d%80%e8%a6%81%e8%88%92%e6%9c%8d" class="header-anchor"&gt;&lt;/a&gt;最后，看着要舒服
&lt;/h2&gt;&lt;p&gt;我做了两种视图模式：&lt;/p&gt;
&lt;p&gt;●&lt;strong&gt;卡片视图&lt;/strong&gt;：信息展示更直观，适合浏览&lt;/p&gt;
&lt;p&gt;●&lt;strong&gt;表格视图&lt;/strong&gt;：数据更紧凑，适合对比&lt;/p&gt;
&lt;p&gt;每个模型的价格还有一个小的柱状图，让你一眼就能看出谁贵谁便宜。输入输出价格分开展示，Batch API 价格也有，该有的都有。&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-01-22-hei-peng-you-zuo-le-ge-ai-mo-xing-bi-jia-gong-ju-xiang-qing-/002-8abb0741.png"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id="技术栈给爱折腾的朋友参考"&gt;&lt;a href="#%e6%8a%80%e6%9c%af%e6%a0%88%e7%bb%99%e7%88%b1%e6%8a%98%e8%85%be%e7%9a%84%e6%9c%8b%e5%8f%8b%e5%8f%82%e8%80%83" class="header-anchor"&gt;&lt;/a&gt;技术栈，给爱折腾的朋友参考
&lt;/h1&gt;&lt;p&gt;&lt;code&gt;Model Price&lt;/code&gt; 的技术选型很主流，方便大家二次开发：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;后端：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;●Python 3.11+&lt;/p&gt;
&lt;p&gt;●FastAPI（高性能异步框架）&lt;/p&gt;
&lt;p&gt;●Playwright（网页爬虫，用于抓取 OpenAI、Google 官网）&lt;/p&gt;
&lt;p&gt;●httpx（异步 HTTP 客户端）&lt;/p&gt;
&lt;p&gt;●uv（超快的 Python 包管理器）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;前端：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;●React 18&lt;/p&gt;
&lt;p&gt;●TypeScript 5&lt;/p&gt;
&lt;p&gt;●Vite（构建工具）&lt;/p&gt;
&lt;p&gt;●CSS Variables（主题系统）&lt;/p&gt;
&lt;p&gt;代码结构清晰，Provider 采用插件架构，想要接入新的服务商，只需要实现一个 &lt;code&gt;BaseProvider.fetch()&lt;/code&gt; 方法就行。&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id="这只是个开始"&gt;&lt;a href="#%e8%bf%99%e5%8f%aa%e6%98%af%e4%b8%aa%e5%bc%80%e5%a7%8b" class="header-anchor"&gt;&lt;/a&gt;这只是个开始
&lt;/h1&gt;&lt;h2 id="想邀请你一起来添砖加瓦"&gt;&lt;a href="#%e6%83%b3%e9%82%80%e8%af%b7%e4%bd%a0%e4%b8%80%e8%b5%b7%e6%9d%a5%e6%b7%bb%e7%a0%96%e5%8a%a0%e7%93%a6" class="header-anchor"&gt;&lt;/a&gt;想邀请你一起来添砖加瓦
&lt;/h2&gt;&lt;p&gt;现在 &lt;code&gt;Model Price&lt;/code&gt; 已经能用了，但它离&amp;quot;完美&amp;quot;还差得很远。一个人的力量终究有限，一个好的开源项目，生命力在于社区。&lt;/p&gt;
&lt;p&gt;所以，我诚心地邀请你，无论你是谁，都可以来参与这件事：&lt;/p&gt;
&lt;p&gt;●&lt;strong&gt;如果你只是想找个工具查价格&lt;/strong&gt;：欢迎直接访问 &lt;a class="link" href="https://modelprice.boxtech.icu" target="_blank" rel="noopener"
 &gt;https://modelprice.boxtech.icu&lt;/a&gt; 使用。如果能顺手在 GitHub 上点个 Star，我会非常开心。&lt;/p&gt;
&lt;p&gt;●&lt;strong&gt;如果你经常用某个服务商，发现数据有误&lt;/strong&gt;：欢迎提 Issue 告诉我，我会尽快修复。&lt;/p&gt;
&lt;p&gt;●&lt;strong&gt;如果你和我一样，是个爱折腾的开发者&lt;/strong&gt;：欢迎来读源码，提 PR。比如接入新的服务商、优化爬虫逻辑、改进 UI 交互……都非常欢迎。&lt;/p&gt;
&lt;p&gt;●&lt;strong&gt;如果你有其他想法&lt;/strong&gt;：比如想要对比历史价格、想要价格变动提醒、想要导出 Excel……都可以提 Issue，我们一起讨论。&lt;/p&gt;
&lt;p&gt;一个优秀的开源项目，就像一场漫长的篝火晚会，需要不断有人添柴，才能一直燃烧下去。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Model Price&lt;/code&gt; 就是我点起的第一根火柴。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;好了，就说这么多。感谢你耐心听我这个老家伙唠叨。&lt;/p&gt;
&lt;p&gt;如果你对 &lt;code&gt;Model Price&lt;/code&gt; 有一点点兴趣，就去看看吧。期待在 GitHub 上，看到你的身影。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GitHub 传送门：&lt;/strong&gt; &lt;a class="link" href="https://github.com/xiaobox/model-price" target="_blank" rel="noopener"
 &gt;https://github.com/xiaobox/model-price&lt;/a&gt;&lt;/p&gt;</description></item><item><title>硅谷还在堆卡，DeepSeek 却在做题：2025 最后一天，他们用一道数学公式重写了底层</title><link>https://xiaobox.github.io/p/2026-01-03-gui-gu-hai-zai-dui-ka-deepseek-que-zai-zuo-ti-2025-zui-hou-y/</link><pubDate>Sat, 03 Jan 2026 03:17:15 +0000</pubDate><guid>https://xiaobox.github.io/p/2026-01-03-gui-gu-hai-zai-dui-ka-deepseek-que-zai-zuo-ti-2025-zui-hou-y/</guid><description>&lt;img src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-01-03-gui-gu-hai-zai-dui-ka-deepseek-que-zai-zuo-ti-2025-zui-hou-y/cover.jpg" alt="Featured image of post 硅谷还在堆卡，DeepSeek 却在做题：2025 最后一天，他们用一道数学公式重写了底层" /&gt;&lt;p&gt;2025 年终于翻篇了。&lt;/p&gt;
&lt;p&gt;回看过去这一年，全球 AI 行业简直是在 “神仙打架”。从美国的 OpenAI 到中国的各大厂，大家都在疯狂迭代，没有谁敢在舒适圈里躺平。 但在如此窒息的竞争节奏下，DeepSeek 依然是个异类。 无论是综合能力极强的 &lt;strong&gt;V3&lt;/strong&gt;，还是推理模型 &lt;strong&gt;R1&lt;/strong&gt;，亦或 &lt;strong&gt;Coder&lt;/strong&gt; 系列，DeepSeek 总能以一种 “不仅强，而且便宜得不可思议” 的姿态出现。&lt;/p&gt;
&lt;p&gt;大家都在研究他们的显卡利用率，研究他们的 MoE 路由。 然后 &lt;strong&gt;2025 年的最后一天&lt;/strong&gt;，DeepSeek 又默默丢出了一篇名为 &lt;strong&gt;mHC&lt;/strong&gt; 的论文 。&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-01-03-gui-gu-hai-zai-dui-ka-deepseek-que-zai-zuo-ti-2025-zui-hou-y/001-2a41b3d4.png"&gt;&lt;/p&gt;
&lt;p&gt;看完这篇论文，我才真正理解了 DeepSeek 这个生态为何能爆发得如此之快。 这不仅仅是一项技术优化，更是一种&lt;strong&gt;敢于挑战权威和规则的勇气。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;当大多数团队还在常规的架构上修修补补时，DeepSeek 的研究员们已经把手术刀伸向了模型最基础、也最敏感的 “血管”—— 残差连接。 这是一次极高风险的赌博：&lt;strong&gt;他们为了追求极致的模型容量，选了一条理论上极不稳定的路，用一道优雅的数学公式，硬生生把这条路给铺平了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;DeepSeek 最可怕的不是某一个具体的模型，而是他们&lt;strong&gt;对底层数学原理的掌控力&lt;/strong&gt;。正是这种能力，支撑起了从 R1 到 V3 这一条条产品线的快速突破。&lt;strong&gt;DeepSeek 的护城河，比我们想象的还要深&lt;/strong&gt;。&lt;/p&gt;
&lt;h1 id="即使是-gpt-5也逃不掉的-老祖宗之法"&gt;&lt;a href="#%e5%8d%b3%e4%bd%bf%e6%98%af-gpt-5%e4%b9%9f%e9%80%83%e4%b8%8d%e6%8e%89%e7%9a%84-%e8%80%81%e7%a5%96%e5%ae%97%e4%b9%8b%e6%b3%95" class="header-anchor"&gt;&lt;/a&gt;即使是 GPT-5，也逃不掉的 “老祖宗之法”
&lt;/h1&gt;&lt;p&gt;在深度学习领域，&lt;strong&gt;网络越深，越需要一条 “直通车”。残差（ResNet）就是那条车道：不一定唯一，但几乎是默认选项。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不管是 GPT-5 还是 Gemini 3，扒开代码，核心逻辑都长这样：&lt;/p&gt;
&lt;p&gt;⚡ 代码片段&lt;code&gt;下一层的输入 = 上一层的输出 + 这一层的变化&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这叫&lt;strong&gt;恒等映射&lt;/strong&gt;。它像一条笔直的管道，保证信号能安全地流到第 100 层。从何凯明的《Deep Residual Learning for Image Recognition》开始，十年了，哪怕是最激进的架构师，也不敢轻易动这个地方。&lt;/p&gt;
&lt;p&gt;但创新的接力赛其实已经开始了。 2024 年 9 月，&lt;strong&gt;字节跳动（ByteDance）&lt;/strong&gt; 的 Seed 团队率先搞出了一个叫 &lt;strong&gt;Hyper-Connections (HC)&lt;/strong&gt; 的理论 （https://arxiv.org/abs/2409.19606）。 这帮人的脑洞很大：&lt;strong&gt;为什么要死守着原封不动？把信号打散、揉碎，多搞几条路混合在一起，模型的脑容量不是更大吗？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不得不说，字节跳动这个想法很有前瞻性，但在当时来看，它更像是个 “&lt;strong&gt;半成品&lt;/strong&gt;”。 因为它有个致命缺陷：极其不稳定。对于追求稳妥的大模型团队来说，这种 “理论收益高、实际风险大” 的方案，通常看完论文就扔进收藏夹吃灰了 —— 毕竟谁也不想拿几千万的显卡去赌一个可能会炸的模型。&lt;/p&gt;
&lt;p&gt;但 DeepSeek 的工程师思路不太一样。 他们看完论文，没盯着风险看，而是死死盯着那个 “收益”。 他们觉得，这玩意儿虽然现在会炸，但原理没毛病。只要能想办法给它装个 “刹车”，它就是跑得最快的。 于是，他们做了一个非常务实的决定：&lt;strong&gt;把这个友商没跑通的架构捡起来，自己动手修好，然后真的用到了自家的大模型上。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;但这毕竟是给高速行驶的赛车换引擎，稍微手抖一下就是车毁人亡。DeepSeek 真的稳住了吗？&lt;/strong&gt;&lt;/p&gt;
&lt;h1 id="压力测试"&gt;&lt;a href="#%e5%8e%8b%e5%8a%9b%e6%b5%8b%e8%af%95" class="header-anchor"&gt;&lt;/a&gt;压力测试
&lt;/h1&gt;&lt;p&gt;DeepSeek 为了证明自己的方案（mHC）到底稳不稳，他们在 27B 的模型上，用 mHC（灰线） 和 HC（蓝线）做了个对比测试：&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-01-03-gui-gu-hai-zai-dui-ka-deepseek-que-zai-zuo-ti-2025-zui-hou-y/002-ed5a3f33.png"&gt;&lt;/p&gt;
&lt;p&gt;大家注意看这两条线的走向。&lt;/p&gt;
&lt;p&gt;●左图 (a) ：蓝线（HC）的 Loss Gap 在 12000 步之前，它还在 0 附近徘徊；但过了 12000 步，蓝线突然&lt;strong&gt;旱地拔葱，直线飙升&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;●右图 (b) ：蓝线（HC）的梯度在 12000 步左右突然开始疯狂抖动，全是毛刺。&lt;/p&gt;
&lt;p&gt;HC 在训练进行到 12000 步时，&lt;strong&gt;梯度范数（Grad Norm）突然开始剧烈震荡&lt;/strong&gt;。 这意味着什么？意味着模型内部的信号传导出问题了，每一次参数更新都在 “乱指路”。这就好比赛车开到 200 码时，方向盘突然开始疯狂抖动，车身剧烈摇摆。结果就是&lt;strong&gt;车彻底撞毁了&lt;/strong&gt;，因为右边的梯度乱了，左边的 Loss 自然就崩了。 蓝线（Loss Gap）的瞬间飙升，就是梯度失控的直接后果。模型不仅学不到新东西，反而把之前学到的也吐出来了。这就是典型的 “训练崩溃”。&lt;/p&gt;
&lt;p&gt;再看那条灰线，对比简直不要太强烈。 无论右边的梯度怎么波动，加了数学约束的 mHC（灰线）始终把梯度按得死死的，&lt;strong&gt;平滑得像条直线&lt;/strong&gt;。 因为内部稳住了，外部的表现自然就稳了 —— 所以在左图中，它的 Loss 始终贴着基准线走，完全没有出现暴涨。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DeepSeek 用这组图证明了&lt;/strong&gt;： HC 的崩溃不是偶然，而是必然（右图的梯度震荡）。 而 mHC 成功的原因是数学约束带来的平稳。&lt;/p&gt;
&lt;h1 id="3000-倍的隐形-通胀"&gt;&lt;a href="#3000-%e5%80%8d%e7%9a%84%e9%9a%90%e5%bd%a2-%e9%80%9a%e8%83%80" class="header-anchor"&gt;&lt;/a&gt;3000 倍的隐形 “通胀”
&lt;/h1&gt;&lt;p&gt;既然灰线（mHC）在结果上已经赢了，那我们必须得搞清楚：蓝线（HC）到底是怎么输的？&lt;/p&gt;
&lt;p&gt;DeepSeek 的工程师对模型内部的信号做了一次深度 CT 扫描。他们想看看，信号在网络里传导时，到底是被放大了还是缩小了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-01-03-gui-gu-hai-zai-dui-ka-deepseek-que-zai-zuo-ti-2025-zui-hou-y/003-10953fbf.png"&gt;&lt;/p&gt;
&lt;p&gt;这是一组极具欺骗性的对比。&lt;/p&gt;
&lt;p&gt;●左图 (a) &lt;strong&gt;看单层&lt;/strong&gt;：看起来很正常。每一个单独的层（Single Layer），信号增益都在 1 附近波动，稍微大一点点而已。&lt;/p&gt;
&lt;p&gt;●右图 (b) &lt;strong&gt;看叠加&lt;/strong&gt;：灾难发生了。当几十层叠加在一起（Composite Mapping），那个微小的 “一点点” 被指数级放大，蓝线直接飙到了天际。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这两张图揭示了 HC 架构最隐蔽的致命伤&lt;/strong&gt;。如果你只看单层（左图），你会觉得 HC 没啥大毛病。它的信号放大倍数也就 1.1、1.2 的样子。很多工程师看到这就放心了：“这不挺稳的嘛？” 但别忘了，大模型动不动就是 60 层起步。真正的恐怖在右图。 当信号穿过 60 层网络时，那些看似无害的 1.1 倍被连续相乘。 1.1 的 60 次方=304。 如果是 1.2 呢？结果是 &lt;strong&gt;56000&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;图中蓝线（HC）清晰地记录了这个失控的过程：在深层网络，反向传播的梯度增益（Backward Gradient Gain）最高飙到了 3000 。&lt;strong&gt;这是什么概念？&lt;/strong&gt; 正常模型的信号增益应该是 1（能量守恒）。 但蓝线飙到了 3000。这就好比你在第一层对模型耳语了一句 “你好”，传到第 60 层时，&lt;strong&gt;变成了 3000 个广场舞大喇叭同时贴着你耳朵尖叫。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在这种噪音下，梯度瞬间爆炸，前面提到的梯度震荡就是这么来的。这简直是个死局： &lt;strong&gt;想聪明（用宽连接），就会爆炸；想稳定（用老架构），就得忍受平庸。&lt;/strong&gt;&lt;/p&gt;
&lt;h1 id="一道-小学数学题-救场"&gt;&lt;a href="#%e4%b8%80%e9%81%93-%e5%b0%8f%e5%ad%a6%e6%95%b0%e5%ad%a6%e9%a2%98-%e6%95%91%e5%9c%ba" class="header-anchor"&gt;&lt;/a&gt;一道 “小学数学题” 救场
&lt;/h1&gt;&lt;p&gt;面对这个死局，DeepSeek 的解法简单得很。 既然信号会因为连乘而无限放大，那就给它加个 “&lt;strong&gt;会计&lt;/strong&gt;”，强制它遵守能量守恒。&lt;/p&gt;
&lt;p&gt;他们引入了一个概念：&lt;strong&gt;双随机矩阵（Doubly Stochastic Matrices）&lt;/strong&gt;。 名字很唬人，但本质极简。它其实就是强制模型做 “&lt;strong&gt;加权平均&lt;/strong&gt;” 。&lt;/p&gt;
&lt;p&gt;DeepSeek 给那个狂暴的混合矩阵定了一条死规矩： “&lt;strong&gt;不管你怎么折腾，你每一行的权重加起来必须等于 1，每一列加起来也必须等于 1。&lt;/strong&gt;”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这就是数学的魔力&lt;/strong&gt;： 你想想，如果你计算一组数的 “平均值”，结果有可能超过最大值吗？&lt;strong&gt;绝对不可能&lt;/strong&gt;。DeepSeek 证明了：这种矩阵就算乘上一万次，它依然守规矩，永远不会让能量溢出（信号范数 ≤ 1）。&lt;/p&gt;
&lt;p&gt;效果立竿见影。看看这组热力图对比，这就是 “无序” 和 “有序” 的区别：&lt;/p&gt;
&lt;p&gt;&lt;img alt="图片" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2026-01-03-gui-gu-hai-zai-dui-ka-deepseek-que-zai-zuo-ti-2025-zui-hou-y/004-aa379c54.png"&gt;&lt;/p&gt;
&lt;p&gt;●第一排是失控的 HC 方案，那些深蓝色的色块代表数值极大的异常点（有的飙到了 268.9，有的跌到 -255.2），整个矩阵一片混乱&lt;/p&gt;
&lt;p&gt;●第二排是加了 “紧箍咒” 的 mHC 方案，颜色立刻变浅且均匀，所有数值被死死锁在 0 到 1 之间，井井有条。&lt;/p&gt;
&lt;p&gt;那个飙到 3000 倍的信号核爆，被瞬间按回了 &lt;strong&gt;1.6 倍&lt;/strong&gt; 。 面对 3000 倍的信号核爆，DeepSeek 没有用工程上的 “补丁”（比如强行截断数值），而是从数学底层定义了一个新的&lt;strong&gt;流形&lt;/strong&gt;（Manifold）。这道 “数学题” 的真面目，其实就是著名的 &lt;strong&gt;Birkhoff 多面体投影&lt;/strong&gt;。&lt;/p&gt;
&lt;h1 id="生态爆发的秘密"&gt;&lt;a href="#%e7%94%9f%e6%80%81%e7%88%86%e5%8f%91%e7%9a%84%e7%a7%98%e5%af%86" class="header-anchor"&gt;&lt;/a&gt;生态爆发的秘密
&lt;/h1&gt;&lt;p&gt;如果你觉得这只是个学术实验，那就太天真了。注意看原文中这句容易被忽略的话：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;This conclusion is further corroborated by our in-house large-scale training experiments&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;“这一结论得到了我们内部大规模训练实验的进一步证实。”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这句话翻译过来就是：&lt;strong&gt;虽然这篇论文展示的是 27B 小模型的实验数据，但我们在内部那个庞大的模型矩阵（包括大家熟知的 V3 等）身上，早就验证过这一套了&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这就解释了为什么 DeepSeek 总能比别人 “多算一步”： 当行业还在卷应用层时，他们已经在底层的连接方式上，用 &lt;strong&gt;6.7%&lt;/strong&gt; 的额外计算时间 ，换来了一个容量更大、表达更强、且绝不炸膛的通用架构。正是这种底层技术的溢出，才支撑起了 DeepSeek 从 &lt;strong&gt;V3&lt;/strong&gt; 到 &lt;strong&gt;R1&lt;/strong&gt; 再到 &lt;strong&gt;Coder&lt;/strong&gt; 的全线开花。&lt;/p&gt;
&lt;p&gt;另外，离春节不远了，你应该知道我要说什么。哈哈&lt;/p&gt;
&lt;h1 id="总结"&gt;&lt;a href="#%e6%80%bb%e7%bb%93" class="header-anchor"&gt;&lt;/a&gt;总结
&lt;/h1&gt;&lt;p&gt;读完这篇论文，我最大的感受是：DeepSeek 赢的不是显卡数量，而是对数学的直觉。&lt;/p&gt;
&lt;p&gt;如果非要用一句话总结这篇论文，我想引用一位网友的神评论：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;以前的模型像个 被牵着手的乖孩子（ResNet），安全但学不会跑。 后来大家撒手让它跑，结果它是 撒手没，跑两步就疯了（HC）。&lt;/p&gt;
&lt;p&gt;DeepSeek 做的事，就是给孩子画了个 圈（双随机矩阵）。 不管你在圈里怎么跑、怎么翻跟头都行，但绝对不许出圈。&lt;/p&gt;
&lt;p&gt;于是，孩子既学会了跑，又没跑丢。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;当硅谷还在比拼谁的 H100 更多时，DeepSeek 用一道数学题证明了： &lt;strong&gt;有时候，约束才是最大的自由。&lt;/strong&gt;&lt;/p&gt;
&lt;h1 id="附录"&gt;&lt;a href="#%e9%99%84%e5%bd%95" class="header-anchor"&gt;&lt;/a&gt;附录
&lt;/h1&gt;&lt;p&gt;●DeepSeek 的跨年 “交卷” 之作：https://arxiv.org/pdf/2512.24880&lt;/p&gt;
&lt;p&gt;●字节跳动的大胆尝试：https://arxiv.org/abs/2409.19606&lt;/p&gt;
&lt;p&gt;●不可动摇的 “老祖宗”：https://arxiv.org/abs/1512.03385&lt;/p&gt;
&lt;p&gt;●那道神奇的 “数学题”：Sinkhorn, R. (1964). A Relationship Between Arbitrary Positive Matrices and Doubly Stochastic Matrices.&lt;/p&gt;</description></item><item><title>提示词缓存:让 LLM 成本降 10 倍</title><link>https://xiaobox.github.io/p/2025-12-29-ti-shi-ci-huan-cun-rang-llm-cheng-ben-jiang-10-bei/</link><pubDate>Mon, 29 Dec 2025 05:37:52 +0000</pubDate><guid>https://xiaobox.github.io/p/2025-12-29-ti-shi-ci-huan-cun-rang-llm-cheng-ben-jiang-10-bei/</guid><description>&lt;img src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2025-12-29-ti-shi-ci-huan-cun-rang-llm-cheng-ben-jiang-10-bei/cover.jpg" alt="Featured image of post 提示词缓存:让 LLM 成本降 10 倍" /&gt;
 &lt;blockquote&gt;
 &lt;p&gt;“&lt;/p&gt;
&lt;p&gt;OpenAI 和 Anthropic 声称，缓存的输入 token 在成本上比常规输入 token 便宜 10 倍。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2025-12-29-ti-shi-ci-huan-cun-rang-llm-cheng-ben-jiang-10-bei/001-3eded4f7.png"&gt;&lt;/p&gt;
&lt;h1 id="到底什么是-cached-token-"&gt;&lt;a href="#%e5%88%b0%e5%ba%95%e4%bb%80%e4%b9%88%e6%98%af-cached-token-" class="header-anchor"&gt;&lt;/a&gt;到底什么是 Cached Token ？
&lt;/h1&gt;&lt;p&gt;&lt;strong&gt;Cached Token 就是让 AI “记住” 它刚刚读过的长内容，不用每次都在脑子里从头重新算一遍，从而让回答变得极快且极便宜&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;想象你正在参加一场开卷考试，考试内容是一本 500 页的历史书。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;没有 Cache (传统模式)&lt;/strong&gt; ：&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;第一题： 你把书从第 1 页读到第 500 页，然后回答问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;第二题： 你忘光了刚才读的内容，必须再次从第 1 页读到第 500 页，才能回答第二个问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;后果： 每次回答都很慢，而且把你累得半死（消耗算力，费钱）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;有了 Cached Token (缓存模式)&lt;/strong&gt; ：&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;第一题： 你从第 1 页读到第 500 页，并把关键知识点和理解暂时存在脑子里（存入显存）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;第二题： 你直接调用脑子里的记忆，跳过阅读过程，立刻回答问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;后果： 只有第一次慢，后面飞快，而且因为不用重复劳动，甚至可以给考官（用户）打个一折的优惠价&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2025-12-29-ti-shi-ci-huan-cun-rang-llm-cheng-ben-jiang-10-bei/002-6ca0bffb.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;很多人会误以为 “缓存 = 把上次的回复存起来再发一遍”。不是的&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;更准确地说，缓存的是模型在处理这段输入时产生的一些中间计算结果（常被称为 KV cache：attention 里的 K / V 矩阵）。所以即使 cached_tokens 很高，你也仍然可能得到不同的回答（因为采样、temperature 等发生在更后面）&lt;/p&gt;
&lt;h2 id="llm-架构"&gt;&lt;a href="#llm-%e6%9e%b6%e6%9e%84" class="header-anchor"&gt;&lt;/a&gt;LLM 架构
&lt;/h2&gt;&lt;p&gt;想要彻底弄明白 Cached Token，我们需要从原理上了解一下 LLM 架构。&lt;/p&gt;
&lt;p&gt;我们可以将大语言模型（LLM）的架构看作是一个巨大的数学函数：输入一串数字，输出一个数字。这个过程主要由以下四个核心部分组成：&lt;/p&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2025-12-29-ti-shi-ci-huan-cun-rang-llm-cheng-ben-jiang-10-bei/003-604505c7.png"&gt;&lt;/p&gt;
&lt;h3 id="tokenizer-分词器--切词器"&gt;&lt;a href="#tokenizer-%e5%88%86%e8%af%8d%e5%99%a8--%e5%88%87%e8%af%8d%e5%99%a8" class="header-anchor"&gt;&lt;/a&gt;Tokenizer (分词器 / 切词器)
&lt;/h3&gt;&lt;p&gt;这是模型与人类语言交互的翻译官。&lt;/p&gt;
&lt;p&gt;LLM 无法直接理解文本（如中文或英文），它只能处理数字。Tokenizer 的作用是将你输入的提示词（Prompt）切分成一个个小的片段，称为 Token，并为每个 Token 分配一个唯一的整数 ID。&lt;/p&gt;
&lt;p&gt;比如输入 &amp;ldquo;Check out ngrok.ai&amp;rdquo;，Tokenizer 会将其切分为 [&amp;ldquo;Check&amp;rdquo;, &amp;ldquo;out&amp;rdquo;, &amp;ldquo;ng&amp;rdquo;, &amp;ldquo;rok&amp;rdquo;, &amp;ldquo;.ai&amp;rdquo;]，并转换为对应的数字序列 。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2025-12-29-ti-shi-ci-huan-cun-rang-llm-cheng-ben-jiang-10-bei/004-911d1b28.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：不同的模型（如 GPT-5 和 Claude）使用不同的 Tokenizer 规则&lt;/p&gt;
&lt;h3 id="embedding-嵌入层"&gt;&lt;a href="#embedding-%e5%b5%8c%e5%85%a5%e5%b1%82" class="header-anchor"&gt;&lt;/a&gt;Embedding (嵌入层)
&lt;/h3&gt;&lt;p&gt;这是让数字拥有含义的一步。将 Tokenizer 生成的简单整数 ID 转换为 高维向量（即一长串数字数组）。这个过程就像查字典，每个 Token ID 对应一个固定的向量。&lt;/p&gt;
&lt;p&gt;下面是一个例子，可以看到将原始 token 进行 embedding 后是什么样子。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2025-12-29-ti-shi-ci-huan-cun-rang-llm-cheng-ben-jiang-10-bei/005-6e6071e9.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2025-12-29-ti-shi-ci-huan-cun-rang-llm-cheng-ben-jiang-10-bei/006-91838d99.png"&gt;&lt;/p&gt;
&lt;p&gt;Embedding 是可以有很多维度的，最大的模型甚至超过 10,000 维，上面的例子只显示了三维。&lt;strong&gt;维度越多，大语言模型对每个标记的表示就越复杂、越细致&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2025-12-29-ti-shi-ci-huan-cun-rang-llm-cheng-ben-jiang-10-bei/007-08a0a8f3.png"&gt;&lt;/p&gt;
&lt;p&gt;这些向量代表了 Token 的 “语义位置”。在这个高维空间中，含义相似的词（如 “猫” 和 “狗”）在空间上的距离会更近。这一步还会把 Token 的 位置信息 编码进去，这样模型就能知道词语的先后顺序。&lt;/p&gt;
&lt;p&gt;如果你听说过 “余弦相似度”，那么恭喜你找对了方向。Embedding（嵌入） 和 Cosine Similarity（余弦相似度） 的关系可以理解为 “坐标” 与 “距离测量工具” 的关系。&lt;/p&gt;
&lt;p&gt;想象一个巨大的多维空间（就像一个无限大的图书馆）。Embedding 就是把每一个词、每一句话都变成这个空间里的一个 具体的坐标点，在这个空间里，意思相近的词（比如 “猫” 和 “小猫”），它们的坐标点会靠得很近；意思无关的词（比如 “猫” 和 “微波炉”），距离就会很远。&lt;strong&gt;Embedding 把文字变成了数学空间里的向量，而余弦相似度用来计算这些向量之间的 “语义距离”。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="transformer-变换器--核心处理层"&gt;&lt;a href="#transformer-%e5%8f%98%e6%8d%a2%e5%99%a8--%e6%a0%b8%e5%bf%83%e5%a4%84%e7%90%86%e5%b1%82" class="header-anchor"&gt;&lt;/a&gt;Transformer (变换器 / 核心处理层)
&lt;/h3&gt;&lt;p&gt;这是 LLM 的大脑，负责理解和推理。&lt;/p&gt;
&lt;p&gt;它的主要工作是让输入序列中的每个 Token 相互 “交流”。模型会计算每个 Token 对其他 Token 的重要程度（即 “注意力权重”）。例如在句子 &amp;ldquo;Mary had a little lamb&amp;rdquo; 中，模型会计算出 &amp;ldquo;Mary&amp;rdquo; 对 &amp;ldquo;had&amp;rdquo; 的生成有多重要。这就是它的核心机制。&lt;/p&gt;
&lt;p&gt;到这里我知道你肯定会想到这篇开山之作**《Attention Is All You Need》**。没错，这篇论文作为开山之作，几乎全篇都在讨论 “Transformer”。该论文提出的 Transformer 架构，其主要职责就是接收 Embedding 层的输入（一堆数字向量），然后在这一层内部通过 Attention（注意力机制） 和 Feedforward（前馈网络） 对这些数据进行复杂的数学变换。关于论文这里不便展开，我们言归正传。&lt;/p&gt;
&lt;p&gt;在这一层，输入的 Embedding 会被转化为 &lt;strong&gt;Query (Q)、Key (K) 和 Value (V)&lt;/strong&gt; 三种形态。通过复杂的矩阵运算（Q 乘以 K 得到权重，再乘以 V），模型能够理解上下文的语境和词与词之间的关系。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2025-12-29-ti-shi-ci-huan-cun-rang-llm-cheng-ben-jiang-10-bei/008-582549f3.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2025-12-29-ti-shi-ci-huan-cun-rang-llm-cheng-ben-jiang-10-bei/009-b37c275b.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2025-12-29-ti-shi-ci-huan-cun-rang-llm-cheng-ben-jiang-10-bei/010-43603666.png"&gt;&lt;/p&gt;
&lt;p&gt;简单来说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每个 token 会生成三组向量：&lt;strong&gt;Q (Query：我想找什么)、K (Key：我有什么线索)、V (Value：我的内容是什么)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;通过计算 Q 和所有 K 的相似度，得到 “该关注谁” 的权重（softmax 归一化），再对 V 做加权求和，得到 “结合上下文后的新表示”。&lt;/li&gt;
&lt;li&gt;Multi-head 就是并行做多组注意力，让模型能同时学到多种关系（语法、指代、主题等）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2025-12-29-ti-shi-ci-huan-cun-rang-llm-cheng-ben-jiang-10-bei/011-bf555d65.png"&gt;&lt;/p&gt;
&lt;p&gt;这个阶段是计算量最大的部分。为了加速，推理过程中会将计算过的 K 和 V 矩阵缓存起来（即 KV Cache），避免对之前的 Token 重复计算&lt;/p&gt;
&lt;h3 id="output-输出层"&gt;&lt;a href="#output-%e8%be%93%e5%87%ba%e5%b1%82" class="header-anchor"&gt;&lt;/a&gt;Output (输出层)
&lt;/h3&gt;&lt;p&gt;这是最终生成结果的一步。&lt;/p&gt;
&lt;p&gt;经过 Transformer 层层处理后，最后得到一个新的 Embedding。输出层会将其转化为概率分布，预测 下一个最可能出现的 Token。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LLM 是 “自回归” 的，这意味着它每次只生成一个 Token。生成的这个新 Token 会被加回到输入的末尾，整个流程（Tokenizer -&amp;gt; &amp;hellip; -&amp;gt; Output）再次循环，直到生成结束符（如）或达到长度限制&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2025-12-29-ti-shi-ci-huan-cun-rang-llm-cheng-ben-jiang-10-bei/012-215f95d4.gif"&gt;&lt;/p&gt;
&lt;h2 id="实现原理"&gt;&lt;a href="#%e5%ae%9e%e7%8e%b0%e5%8e%9f%e7%90%86" class="header-anchor"&gt;&lt;/a&gt;实现原理
&lt;/h2&gt;&lt;p&gt;了解了之前这些背景知道，我们就可以解释 Cached Token 的技术原理了。&lt;/p&gt;
&lt;p&gt;在 LLM（大语言模型）推理过程中，Cached Token 指的是对 KV Cache (Key-Value Cache) 的复用技术。&lt;/p&gt;
&lt;p&gt;Transformer 架构是自回归的。在生成回答（Decode 阶段）之前，模型必须先 “理解” 输入（Prefill 阶段）。这个 “理解” 过程涉及大量的矩阵运算，计算出每个 Token 的 Key 和 Value 向量（即注意力机制的中间状态）。对于长文本（如 RAG 场景中的大量文档），每次请求都重新计算这些 KV 向量是巨大的算力浪费，这就是 Cached Token 解决的问题。&lt;/p&gt;
&lt;p&gt;实现机制：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;存储状态&lt;/strong&gt;： 当模型第一次处理前缀（Prefix，例如 System Prompt 或长文档）时，将计算好的 KV 向量驻留在 GPU 显存（VRAM）或层级存储中。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;前缀匹配&lt;/strong&gt;： 当新的请求进来，如果开头部分（Prefix）与缓存中的 Token 完全一致，推理引擎（如 vLLM, SGLang）会直接加载已计算好的 KV 状态，跳过 Transformer 的前向计算过程。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PagedAttention&lt;/strong&gt;： 现代推理引擎（如 vLLM）使用类似操作系统内存分页的技术（PagedAttention）来管理这些缓存块，解决了显存碎片化问题，允许多个请求共享同一份物理显存中的 Prompt 数据&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="想省钱要这样用"&gt;&lt;a href="#%e6%83%b3%e7%9c%81%e9%92%b1%e8%a6%81%e8%bf%99%e6%a0%b7%e7%94%a8" class="header-anchor"&gt;&lt;/a&gt;想省钱，要这样用
&lt;/h1&gt;&lt;p&gt;要在应用里稳定吃到 cached tokens（prompt caching），核心就三句话：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;提示词要够长&lt;/strong&gt;（通常 ≥ 1024 tokens 才会开始命中）&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;/ol&gt;
&lt;p&gt;所以我们要从设计上进行些调整才能够 “省钱”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;设计 “可缓存的前缀结构”&lt;/strong&gt;，把 prompt 拆成两段（非常重要）：&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;可缓存前缀（Static Prefix）：system 指令、角色设定、规范、few-shot 示例、工具定义、长期不变的背景资料&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;动态尾部（Dynamic Tail）：用户输入、RAG 检索内容、实时数据、时间戳、request_id、实验开关等&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;多轮对话 / Agent 的注意事项&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;消息数组要 “只追加，不改历史”：如果你为了省 tokens 把历史消息重排、压缩、或插入到中间，很可能导致前缀变了 → cache miss。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;工具定义（tools）必须完全一致，顺序也要一致，否则工具部分也进不了缓存前缀&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;“&lt;/p&gt;
&lt;p&gt;OpenAI Cookbook 直接建议： 静态内容放开头，可变内容放结尾；工具 / 图片也一样。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="常见-踩坑清单"&gt;&lt;a href="#%e5%b8%b8%e8%a7%81-%e8%b8%a9%e5%9d%91%e6%b8%85%e5%8d%95" class="header-anchor"&gt;&lt;/a&gt;常见 “踩坑清单”
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;把时间戳 / 随机 ID 放在 system 开头：每次都变，等于主动让缓存失效。&lt;/li&gt;
&lt;li&gt;JSON 序列化不稳定：同一份 tool schema 如果字段顺序、空格、换行变化，token 序列可能变 → miss（所以建议对 system/tools 做 “规范化输出”，并保持完全一致）&lt;/li&gt;
&lt;li&gt;指令在每次请求里微调一两个字：看似小改动，可能让前 1024 tokens 出现差异，直接从 “高命中” 变成 “全 miss”。Azure 文档 明确说 “前 1024 tokens 一个字符差异就会 miss”&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="缓存能活多久--怎么保持"&gt;&lt;a href="#%e7%bc%93%e5%ad%98%e8%83%bd%e6%b4%bb%e5%a4%9a%e4%b9%85--%e6%80%8e%e4%b9%88%e4%bf%9d%e6%8c%81" class="header-anchor"&gt;&lt;/a&gt;缓存能活多久 / 怎么保持
&lt;/h2&gt;&lt;p&gt;不同厂商策略不同，但你可以这么理解：缓存不是永久的，要么靠短时间内重复使用，要么使用更长的保留策略（如果提供）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Azure OpenAI：缓存通常在空闲 5–10 分钟清理，并且最晚 1 小时内会移除；还支持 prompt_cache_key 帮你影响路由提高命中，但同一前缀 + key 如果请求过猛（文档提到约 15 RPM 量级）可能溢出导致命中变差。&lt;/li&gt;
&lt;li&gt;OpenAI：提供 prompt_cache_retention（默认 in_memory，也可选 24h 做更长保留），并说明缓存的是 attention prefill 产生的 KV tensors，原始提示文本不以同样方式持久化。&lt;/li&gt;
&lt;li&gt;Anthropic Claude：通过在特定内容块上标注 cache_control 来启用 / 控制缓存（用法是显式的）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="落地建议"&gt;&lt;a href="#%e8%90%bd%e5%9c%b0%e5%bb%ba%e8%ae%ae" class="header-anchor"&gt;&lt;/a&gt;落地建议
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;给开发&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把系统提示词拆成 STATIC_SYSTEM_PROMPT（长期不变）+ DYNAMIC_CONTEXT（每次变）&lt;/li&gt;
&lt;li&gt;所有请求都按固定模板拼：STATIC_SYSTEM_PROMPT + tools + (可选固定示例) + DYNAMIC_CONTEXT + user_question&lt;/li&gt;
&lt;li&gt;总结来说：把静态内容（System Prompt、Tools）置顶，动态内容（User Query、Time）置底；确保 JSON 序列化顺序固定；针对 Claude 需手动加标记；监控 “缓存命中率”（Cache Hit Rate）指标，确保不是在做负优化。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;给产品&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;缓存能让长文档分析、多轮对话变得极快且便宜。设计功能时，尽量让用户基于一个 “固定的背景”（如上传一份文档后针对该文档多次提问），这最能利用缓存优势。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="实际应用场景"&gt;&lt;a href="#%e5%ae%9e%e9%99%85%e5%ba%94%e7%94%a8%e5%9c%ba%e6%99%af" class="header-anchor"&gt;&lt;/a&gt;实际应用场景
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;多轮对话 (Chatbot)： 用户和 AI 聊了 20 轮，第 21 轮时，前 20 轮的历史记录就是 “Cached Token”。不用每次都重算历史记录，响应更快。&lt;/li&gt;
&lt;li&gt;文档问答 (RAG)： 上传一本 PDF 法律合同。只要文件没变，第二个问题开始，AI 就不需要重新处理这份文件&lt;/li&gt;
&lt;li&gt;代码助手 (Coding Agent)： 将整个项目的代码库结构作为 Prompt 发送给 AI。这部分内容巨大且变动不频繁，非常适合缓存。&lt;/li&gt;
&lt;li&gt;角色扮演 / Agent： 复杂的 System Prompt（设定 AI 的性格、规则、工具定义）通常很长且固定，缓存后每次调用都极快&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>逃离旧世界的引力：AI 进化的三个阶梯</title><link>https://xiaobox.github.io/p/2025-12-17-tao-li-jiu-shi-jie-de-yin-li-ai-jin-hua-de-san-ge-jie-ti/</link><pubDate>Wed, 17 Dec 2025 03:29:11 +0000</pubDate><guid>https://xiaobox.github.io/p/2025-12-17-tao-li-jiu-shi-jie-de-yin-li-ai-jin-hua-de-san-ge-jie-ti/</guid><description>&lt;img src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2025-12-17-tao-li-jiu-shi-jie-de-yin-li-ai-jin-hua-de-san-ge-jie-ti/cover.jpg" alt="Featured image of post 逃离旧世界的引力：AI 进化的三个阶梯" /&gt;&lt;p&gt;有关 “AI Native” 的话题很热，最近看到一个视频，个人感觉很值得一看，我总结了一下内容，建议大家可以先看一下原视频&lt;/p&gt;
&lt;h2 id="马车夫的诅咒"&gt;&lt;a href="#%e9%a9%ac%e8%bd%a6%e5%a4%ab%e7%9a%84%e8%af%85%e5%92%92" class="header-anchor"&gt;&lt;/a&gt;马车夫的诅咒
&lt;/h2&gt;&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2025-12-17-tao-li-jiu-shi-jie-de-yin-li-ai-jin-hua-de-san-ge-jie-ti/001-3ec4bf60.png"&gt;&lt;/p&gt;
&lt;p&gt;如果穿越回 19 世纪末，去问一位马车夫当务之急是什么，他绝不会幻想一台 “内燃机”，他只会祈祷上帝赐予他一匹更快的马。&lt;/p&gt;
&lt;p&gt;福特这句被引用烂了的名言，之所以历久弥新，是因为它精准地揭示了一个横亘在所有技术革命面前的诅咒：**“拟物化”**的思维惯性。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;人类总是试图用旧世界的容器，去盛装新世界的技术&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;今天的 AI 浪潮，正深陷在这个陷阱里。残酷的现实是：AI 赋能（AI Enabled）并不是通往未来的必经之路，而是一条铺满鲜花、看似舒适，实则通往平庸的死胡同。真正的变革，绝不是在旧躯壳上修修补补，而是从基因层面进行的暴力重组。&lt;/p&gt;
&lt;h2 id="ai-enabled给马车装上法拉利引擎"&gt;&lt;a href="#ai-enabled%e7%bb%99%e9%a9%ac%e8%bd%a6%e8%a3%85%e4%b8%8a%e6%b3%95%e6%8b%89%e5%88%a9%e5%bc%95%e6%93%8e" class="header-anchor"&gt;&lt;/a&gt;AI Enabled：给马车装上法拉利引擎
&lt;/h2&gt;&lt;p&gt;目前绝大多数企业，都停留在第一阶段。&lt;/p&gt;
&lt;p&gt;这一阶段的底层公式是：&lt;strong&gt;旧流程 + AI 插件 = 数字化转型？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这是一种极其危险的错觉。在这种模式下，权力的拓扑结构纹丝不动。人类依然是系统的 CPU（中央处理器），负责所有的逻辑判断、流程串联；而 AI 仅仅是一个外接的 GPU，被要求在某个局部环节加速。这就像给一辆老式木制马车硬塞进了一台 V12 引擎。速度或许能短暂提升，但那副为了马匹设计的脆弱车架，根本无法承受剧烈的推力。在一个 “人是 CPU” 的系统里，强行插入一个超强的 AI，只会让协作变得拥堵。 协调成本的激增，将彻底抵消技术带来的红利。这是做加法，不是做乘法。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2025-12-17-tao-li-jiu-shi-jie-de-yin-li-ai-jin-hua-de-san-ge-jie-ti/002-a080efc3.png"&gt;&lt;/p&gt;
&lt;h2 id="跨越门槛的三重奏"&gt;&lt;a href="#%e8%b7%a8%e8%b6%8a%e9%97%a8%e6%a7%9b%e7%9a%84%e4%b8%89%e9%87%8d%e5%a5%8f" class="header-anchor"&gt;&lt;/a&gt;跨越门槛的三重奏
&lt;/h2&gt;&lt;p&gt;要从 “赋能” 跃迁到 “原生”，我们需要跨越技术与认知的双重鸿沟。幸运的是，技术界正在发生三场静悄悄的突变：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;从 “鹦鹉学舌” 到 “深度思考” (System 2)： AI 正在戒掉单纯的概率拟合，生长出 “思考链”（Chain of Thought）。人不再是流程中必须存在的 “盖章员”，我们只需在关键的例外时刻登场。&lt;/li&gt;
&lt;li&gt;从 “坐而论道” 到 “起而行之” (Agent)： AI 终于拿到了键盘和鼠标的控制权。它不再是顾问，而是执行者。人类被迫向两端迁移：在上游制定策略，在下游处理烂摊子。&lt;/li&gt;
&lt;li&gt;从 “无状态” 到 “长时记忆” (Memory)： 这是资产的根本转移。未来的经验将固化在系统的向量数据库里。人类不再是经验的肉身载体，而是记忆结构的设计师。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2025-12-17-tao-li-jiu-shi-jie-de-yin-li-ai-jin-hua-de-san-ge-jie-ti/003-c7397178.png"&gt;&lt;/p&gt;
&lt;h2 id="ai-native流程即代码数据如流水"&gt;&lt;a href="#ai-native%e6%b5%81%e7%a8%8b%e5%8d%b3%e4%bb%a3%e7%a0%81%e6%95%b0%e6%8d%ae%e5%a6%82%e6%b5%81%e6%b0%b4" class="header-anchor"&gt;&lt;/a&gt;AI Native：流程即代码，数据如流水
&lt;/h2&gt;&lt;p&gt;当上述三次突变完成，商业世界将迎来 “奇点”：AI Native（AI 原生）。&lt;/p&gt;
&lt;p&gt;这是一个 “AI 是 CPU，人是协处理器” 的新世界。我们不再是给旧马车加速，而是基于 “第一性原理”，从零开始设计一辆智能汽车。&lt;/p&gt;
&lt;p&gt;在这个阶段，组织架构将发生剧烈的 “去骨架化”。数据流和 Agent 像水银泻地般自动流转。检验一家企业是否进入 “原生” 阶段，只需三个灵魂拷问：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;生死之问： 拔掉 AI，你的业务是 “变慢了”，还是 “不存在了”？（前者是赋能，后者才是原生）。&lt;/li&gt;
&lt;li&gt;传球之问： 在业务链条里，谁在传球？真正的原生组织不仅让人机协作，更让 AI 与 AI 之间直接 “握手”。&lt;/li&gt;
&lt;li&gt;护城河之问： 你的系统是在单纯消耗数据，还是在吞噬经验？如果机器不能把人类的痛苦转化为直觉，那它只是在搬砖，没有建立壁垒。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2025-12-17-tao-li-jiu-shi-jie-de-yin-li-ai-jin-hua-de-san-ge-jie-ti/004-a9cf5292.png"&gt;&lt;/p&gt;
&lt;h2 id="ai-awaken这里的黎明静悄悄"&gt;&lt;a href="#ai-awaken%e8%bf%99%e9%87%8c%e7%9a%84%e9%bb%8e%e6%98%8e%e9%9d%99%e6%82%84%e6%82%84" class="header-anchor"&gt;&lt;/a&gt;AI Awaken：这里的黎明静悄悄
&lt;/h2&gt;&lt;p&gt;在 Native 阶段，我们穷尽了效率。但紧接着，我们将被迫直面一个令人战栗的终极问题：如果机器做完了所有的 “How”（怎么做），谁来定义 “What”（做什么）和 “Why”（为什么）？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;当 AI 不再满足于在已知的地图里导航，而是闯入 “无人区” 发现新规律；&lt;/li&gt;
&lt;li&gt;当 AI 不再满足于回答问题，而是开始质疑问题本身；&lt;/li&gt;
&lt;li&gt;当 AI 不再盲目逼近目标函数，而是开始修改那个关乎生死的奖励函数时……&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它就不再是一个工具，而是一个拥有意志的新物种。这便是 AI Awaken（AI 觉醒）。&lt;/p&gt;
&lt;p&gt;你可能会问：人类为什么会允许事态发展到这一步？答案既简单又冷酷：为了赢。&lt;/p&gt;
&lt;p&gt;AI Native 的天花板，依然是人类认知的边界。当所有人都把效率卷到极致时，胜负手就取决于谁能投出那一招突破人类盲区的 “神之一手”。那一刻，并不是 AI 想造反，而是商业竞争的 “囚徒困境” 逼迫我们不得不这样做。&lt;/p&gt;
&lt;p&gt;Native 阶段，我们交出了执行权。 Awaken 阶段，我们将交出定义权。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2025-12-17-tao-li-jiu-shi-jie-de-yin-li-ai-jin-hua-de-san-ge-jie-ti/005-95050479.png"&gt;&lt;/p&gt;
&lt;h2 id="最后的领地"&gt;&lt;a href="#%e6%9c%80%e5%90%8e%e7%9a%84%e9%a2%86%e5%9c%b0" class="header-anchor"&gt;&lt;/a&gt;最后的领地
&lt;/h2&gt;&lt;p&gt;面对这个不可逆的未来，请不要再问 “AI 还能帮我做什么”。你应该问的是：当这个硅基物种比我更勤奋、更聪明、甚至比我更懂 “什么是正确” 时，我存在的必要性到底是什么？或者说，当所有的理性决策都可以被外包，这个世界上究竟还剩下什么东西，是必须由一个会犯错、会衰老、会痛苦、会叹息的碳基生命，亲自来完成的？&lt;/p&gt;
&lt;p&gt;这或许，才是人类最后的护城河。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Image" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2025-12-17-tao-li-jiu-shi-jie-de-yin-li-ai-jin-hua-de-san-ge-jie-ti/006-3ea4ff81.png"&gt;&lt;/p&gt;</description></item></channel></rss>