思考笔记

李文业的思考笔记


  • 首页

  • 关于

  • 分类

  • 归档

从“洞里写代码”到“人人可用的智能体”

发表于 2026/02/26 | 分类于 AI专题

风格参考:万维钢(《精英日课》作者)—— 跨学科引证,框架式拆解,加粗关键洞察,用数据和类比交叉验证每个论点。

引子:一个人在洞里写代码

OpenAI 的开发者体验负责人 Romain Huet 在公开帖子里记录了一个细节:当别人问 Peter Steinberger“能不能介绍一下你的 CEO、你的 HR、你的团队成员”时,Peter 只能回答——

“就我一个人在洞里写代码(hacking from my cave)。”

一个人,做出了 GitHub 十万 star、一周两百万访问的 OpenClaw。

更让人意外的是,Peter 不是一个刚被 AI 震撼的新人。他是从零把 PSPDFKit 做成全球化公司的老派硬核工程师。让他重新回到“每天动手造东西”的,不是创业热情的回潮,而是一个朴素的认知转折——现在的工具,终于能让你去造那些一直想要但以前造不起的东西。

这句话的意思不是“AI 帮你写了代码”,而是“你一个人可以承担的系统复杂度,突然提升了一个数量级”。

这正是 Builders Unscripted 第 1 集——OpenAI 新推出的开发者对谈节目——之所以在开发者圈子里迅速扩散的原因。它不是在介绍新概念,而是在展示一种正在发生的转变:一个经验丰富的工程师,如何在工具变化之下重塑自己的心智模型。

而“重塑心智模型”,恰好是这波 agentic 工具浪潮里大多数人最缺的部分。大家在追新产品、追提示词、追工作流,却没有花足够时间去锻造“与智能体协作”的基本功。

这篇文章要做的,就是把这期对谈中最有价值的五个洞见拆出来,用跨学科的框架去验证它们,然后把它们翻译成你可以立刻开始练习的操作系统。


一、从 WhatsApp Relay 到 OpenClaw:一个周末项目如何变成全球热潮

1.1 它最初不是“AI Agent 平台”

OpenClaw 官方博客在“Introducing OpenClaw”里写得很直白:“两个月前,我随手拼了个周末项目。最开始叫 WhatsApp Relay。”

“WhatsApp Relay”这个名字本身就是一条重要线索——它不是自上而下的产品定位,而是一个“把某种能力接进 WhatsApp”的胶水工具。TechCrunch 的报道补充了更具象的动机:Peter 一开始想做一个能跟 WhatsApp 集成的工具,发现大厂并没有做出他真正想要的东西,于是把原型推成了现在的 OpenClaw。

从“某个小入口”切入,是很多重要产品最典型的诞生方式。它不是“先修一条高速公路”,而是“先把一扇门装好”,让人先能进来。

1.2 马拉喀什周末:抽象价值变成身体记忆的瞬间

TechCrunch 提到一个细节:Peter 在马拉喀什周末旅行时网络信号很差,但 WhatsApp 能用。于是“随时可用的个人 agent”的价值在那一刻变得极其直观——我在一个低带宽环境里依然能和我的系统对话,它还能替我做事。

很多人谈 agent 会谈“未来所有人都有一个 AI 助理”,但那只是概念。真正改变人的,是那种“身体级”的瞬间体验。你一旦在一个不理想的环境里依然感受到了系统的可用性,就很难再回到原来的思维方式。

1.3 时间线背后的信号

Romain 在公开帖子里写得很明确:这次对话是在旧金山录制的,发生在 ClawCon 与 Codex hackathon 之后、Peter 入职 OpenAI 之前。

“入职前”这三个字意味着:当时 Peter 仍然是一个纯粹的开源作者和极客 builder。他在谈的是真实的工作方式与价值观,而不是企业叙事。后来 Peter 在个人博客里确认:他加入 OpenAI 的目标是“把智能体带给每个人”,OpenClaw 会迁移到基金会架构,保持开放与独立。

把这条时间线连起来——周末玩具 → 社区爆炸 → 黑客活动密集发生 → 作者加入 OpenAI → 项目走向基金会——你看到的不是“开源被收编”的老故事,更像是一种新的协作方式:个人创造 → 社区扩散 → 机构加速,但项目的开放性被结构性地保护起来。


二、核心洞见一:这是技能练习,不是魔法

Peter 给想入门 agentic 工具的开发者的建议非常接地气:用“玩”的方式开始,去做一个你一直想做的东西;不要期待第一天就很强。

他把“AI 写代码”类比成学吉他。Business Insider 的报道也引用了这个比喻——Peter 认为“vibe coding”这个说法贬低了其中的技能含量,因为“看起来轻松,但其实需要练”。

这不是随口一说。它背后有一个严肃的理论框架。

2.1 Ericsson 的刻意练习

心理学家 Anders Ericsson 花了几十年研究“专家级表现”是怎么来的。他的核心发现是:顶级表现不是天赋的产物,而是“刻意练习”(deliberate practice)的产物。 刻意练习有四个要素——明确的目标、即时的反馈、超出舒适区的挑战、持续的复盘。

现在把这个框架套到 agentic coding 上:

  • 明确的目标:不是“学会用 Codex”,而是“用 Codex 做一个 CLI 工具,能自动整理我的 markdown 文件”。
  • 即时的反馈:模型的输出就是即时反馈——它理解了你多少、误解了你多少,一目了然。
  • 超出舒适区:你不是在重复已经会做的事,而是在尝试用新方式做以前做不了的事。
  • 持续的复盘:每次交互结束后问自己——“我说的哪句话最含糊?哪个约束我忘记提?”

大多数人用 AI 工具的失败模式是这样的:找一套“万能提示词模板”,复制别人的工作流,对着工具猛敲,然后在第三次翻车时宣布“AI 写代码就是不行”。 这种路径失败的根因不是模型不够强,而是它把“协作”当成了“下命令”。

把 AI 当技能练习,意味着你接受一个事实:你不是在“让它写代码”,你是在练习“如何把问题定义得足够清楚、如何给边界、如何检查结果、如何迭代”。你越是愿意练基本功,你越能从模型的能力提升中指数受益。

2.2 “玩”不是鸡汤,是工程策略

Peter 强调“用玩开始”,不是在讲心灵鸡汤。它背后有一个冷酷的工程逻辑:

你需要大量的短周期反馈。你需要在低风险场景里积累试错经验。你需要把失败当作训练数据,而不是对工具的终审判决。

当你用一个“一直想做但不影响 KPI 的小东西”练手时,你会更愿意复盘、更愿意试不同的表达、更愿意探索工具的边界。最终你练到的不是“某个提示词”,而是一种可以迁移到任何项目的协作能力。


三、核心洞见二:从“写流程”到“给意图 + 给边界”

Peter 在自己的文章“Shipping at Inference-Speed”里写得很直接:他现在能做的软件量“主要被推理时间与硬思考限制”;而大多数软件并不需要那么多硬思考——很多应用只是把数据从一种形式搬到另一种形式。

这句话的冲击力在于:它把“写代码”从人类的主要瓶颈里拿掉了。

3.1 旧模式 vs 新模式

传统工程方式里,你要把流程拆到足够细,写成可执行的确定性逻辑。机器不理解“意图”,只执行“指令序列”。

当模型具备工具调用能力、能读代码库、能搜索资料、能自己形成计划并落地实现时,一种新的协作方式出现了:你不必把每个步骤硬编码,你更像是在给它“目标 + 约束 + 验收标准”,然后它在工具空间里自己找到路径。

3.2 Herbert Simon 的“有限理性”

诺贝尔经济学奖得主 Herbert Simon 提出过一个著名概念:有限理性(bounded rationality)。人类不是完全理性的决策者——我们的注意力、记忆力、计算能力都有上限。所以在现实中,我们不是“找到最优解”,而是“找到一个够好的解”(satisficing)。

传统编程之所以痛苦,一个重要原因就是它要求人类做大量“超出有限理性”的工作:你要同时记住系统的状态、语言的语法、框架的 API、业务的边界条件、团队的代码规范……信息负荷常常超出工作记忆的容量。

当模型接管了“探索路径”的工作,人类的有限理性得到了释放。 你不需要在脑子里同时 hold 住所有细节,你只需要在关键节点做判断:这个方向对不对?这个结果符不符合我的验收标准?

Peter 在“Just Talk To It”里对“计划模式(plan mode)”的态度体现了同一个逻辑:他认为很多“仪式感很强的工作流”是对旧模型不稳定性的补丁。当模型更能遵循对话式约束时,你只需要“讨论、给选项、确认后再 build”。关键不是流程有多复杂,而是意图有多清楚。


四、核心洞见三:名字会塑造文化

Peter 在节目里说了一句很刺耳的话:“Vibe coding is a slur(’vibe coding’是一种贬低)。”Business Insider 的报道给出了完整的语境——他认为这个词暗示“这很随意、很容易”,从而掩盖了其中的技能含量。

这不是词汇洁癖。它背后是一场关于“工程尊严”的争夺。

4.1 Sapir-Whorf 假说:语言塑造思维

语言学中有一个经典理论——Sapir-Whorf 假说——认为语言不仅仅是表达思想的工具,它还会反过来塑造思想本身。强版本(语言决定思维)虽然争议很大,但弱版本(语言影响思维)在认知科学中有大量实证支持。

当一个行业用“vibe”来命名一种生产方式时,它天然会引导出一种“轻视工程纪律”的氛围——随便搞搞、跟着感觉走、不需要太认真。而当你把它叫做“engineering”时,它天然会把测试、边界、复盘、可靠性这些概念重新拉回中心。

名称塑造文化。文化塑造行为。行为塑造结果。

4.2 两种归因,两种命运

Peter 的反对,本质上是在争夺定义权:

  • 如果大家都把 AI 编程当作“随便玩玩”,那么失败就会被归因为“AI 不行”;
  • 但如果它被承认为一种需要练习的技能,那么失败更可能被归因为“我还没练到位”。

前一种归因让人放弃,后一种归因让人进步。

Business Insider 还提到一个有意思的演变:提出“vibe coding”概念的 Andrej Karpathy 后来也在反思这个词,倾向用“agentic engineering”来描述未来方向。这个转变本身就在验证 Peter 的判断——当行业开始认真对待这件事时,它需要一个认真的名字。


五、核心洞见四:验证链替代阅读链

这是对谈里最容易被误解的一点。很多人听到“我不怎么读代码”会立刻联想到“危险”和“不负责任”。

但 Peter 讲得很清楚:他不是完全不看,而是从“逐行阅读”转向“看关键片段 + 看结构 + 看流式输出”。他知道组件在哪、系统如何设计,他只是承认“绝大多数代码我不读”。Business Insider 引用了他更直白的一句:“Most code is boring(大多数代码很无聊)。”

这里有两个被大多数人忽略的前提。

5.1 Popper 的可证伪性:阅读不是验证的唯一方式

科学哲学家 Karl Popper 提出过一个改变了整个科学方法论的观点:一个理论的价值不在于你能“证实”它,而在于你能“证伪”它。 你永远无法通过观察一万只白天鹅来证明“所有天鹅都是白的”,但你只需要找到一只黑天鹅就能推翻它。

把这个逻辑套到代码上:你永远无法通过“阅读代码”来证明代码是正确的——因为你可能漏看一行。但你可以通过设计足够好的测试来尝试“证伪”它——如果所有测试都没能让它失败,你就有合理的信心。

这正是 Peter 的工作方式的底层逻辑。他不是用“读代码”来建立信心,而是用“验证链”来建立信心:

  • 自动化测试——单测、集成测试、回归测试
  • 静态检查——lint、type check、规则扫描
  • 运行时验证——在真实或仿真环境里跑
  • 可观测性——日志、指标、追踪

Peter 在“Shipping at Inference-Speed”里有一个极具实操价值的建议:很多东西先从 CLI 开始,因为 CLI 容易让 agent 直接调用并验证输出,从而“闭环”。这句话把“可验证性”当作 agentic 开发的第一性原则——你不是先追 UI、先追交互,而是先追“让系统能自己验证自己”。

5.2 Polanyi 的默会知识:为什么他敢这样做

匈牙利裔英国哲学家 Michael Polanyi 提出过一个著名概念:默会知识(tacit knowledge)——“我们知道的比我们能说出来的多。”一个经验丰富的工程师对系统的理解,很多是结构性的、直觉性的、无法完全用语言表达的。

Peter 之所以能“少读代码也能推进”,一个关键前提是他对系统有足够深的默会知识——他知道架构是什么样的、组件之间怎么交互、哪些地方容易出问题。这种结构性理解不需要逐行阅读来维护,它是在反复与系统交互的过程中积累的。

他自己也承认:管理经验帮助很大。带团队就意味着你必须接受“别人写的代码不完全符合你的风格”,而现在模型写的代码本质上也是“别人写的代码”。

从“自己写”到“带团队”,你要升级的能力是“定义标准、做 code review、做架构决策、做验收”。从“带团队”到“带智能体”,你要再升级一次:把标准写成可执行的约束,把验收写成可自动化的测试,把 review 的注意力放在高杠杆处。


六、核心洞见五:一个人的公司级产能——Brooks 定律的逆转

Romain 引用了 Peter 的话:别人以为你背后有一整家公司,但其实“就我一个人在洞里写”。Peter 补充说:“即使一年前,这也不可能做到。”

这句话的震撼感,来自它精准击中了当下的结构性变化。

6.1 Brooks 定律:为什么大团队反而更慢

1975 年,IBM 的传奇工程师 Frederick Brooks 出版了《人月神话》(The Mythical Man-Month)。他提出了一条至今仍然成立的定律:向一个已经延期的软件项目增加人手,只会让它更加延期。

原因很简单:沟通成本。n 个人之间的沟通通道数量是 n(n-1)/2。3 个人有 3 条通道,10 个人有 45 条,50 个人有 1225 条。当团队规模增长时,花在“对齐信息”上的时间会吞噬掉增加人手带来的产出提升。

这就是为什么很多大公司的效率远不如小团队——不是人不努力,是沟通成本太高。

6.2 当 AI 替代的是“沟通通道”而不是“人”

Peter 的故事揭示了一种新的可能:AI 工具真正替代的不是“程序员”,而是“程序员之间的沟通通道”。

当一个人加上 AI 工具就能完成过去需要一个团队的工作时,Brooks 定律中的 n 被压缩到了 1。一个人和 AI 工具之间只有一条沟通通道——而且这条通道的带宽远高于人与人之间的沟通:没有情绪,没有政治,没有时区差,没有会议。

以前,一个“复杂系统”需要大量分工——前端、后端、测试、运维、产品、设计。现在,很多分工开始被工具自动化压缩,个人的能力边界被显著扩展。

但 Peter 自己也说得很清楚:OpenClaw 当然可能变成一家大公司,但那对他并不兴奋;他更想“改变世界”,加入 OpenAI 是把它带给更多人的最快方式。

“High agency”(高能动性)在这个语境下的真正含义不是“你一个人可以干所有事”,而是三件事:

  1. 你可以用更少的人完成过去需要更多人的事。
  2. 于是“主动性、驱动力、试错能力、复盘能力”会变得更值钱——因为这些能力不能被规模化,只能被个人修炼。
  3. 你对“我是谁”的定义会决定你能不能抓住这波浪潮。

如果你的身份认同是“创造与解决问题”,这个时代对你更友好;如果你的身份认同是“按照既定流程写代码”,你会感到被挤压。


七、三层工作模型:把心态落地成操作

为了把上述洞见从“方法论”落地成“可操作”,我把 Peter 和 Romain 所表达的趋势抽象成三层工作模型。

第一层:意图与边界(Intent & Constraints)

你必须清晰回答四个问题:我到底要解决什么问题?什么算成功?什么算失败?约束是什么——安全、性能、成本、隐私、合规、时间?

这层工作不会消失,只会更重要。因为当“执行”变得便宜时,“错误执行”会变得更致命。

第二层:协作与引导(Steering)

过去你通过写代码引导系统。现在你通过三种方式引导:

  • 对话——讨论方案、让它列选项、让它解释 trade-off。
  • 结构化约束——文件结构、文档、规则、测试。
  • 工具链——CLI 可验证闭环、web search、skills。

Peter 在“Just Talk To It”里反复强调:很多花哨的编排是 charade(表演),关键是“对话、玩、形成直觉”。

第三层:验证与治理(Verification & Governance)

当你减少逐行阅读,你就必须在别处补回来——测试覆盖、可观测性、代码与依赖治理、权限与密钥管理、安全隔离。

三层之间有一个微妙的平衡。 第一层越清晰,第二层越高效;第二层越成熟,第三层越可靠。反过来,第三层越薄弱,你就越不敢放手让第二层运转——你会陷入“不信任工具,于是不用工具,于是永远学不会用工具”的恶性循环。


八、现实的天花板:能行动的系统天然比只说话的系统危险

OpenClaw 是一个“可达性极强、主权感极强”的个人 agent 平台。但越是这种平台,越会把风险放大——它不是只生成文本的聊天机器人,而是一个拿着钥匙、能运行命令、能装技能、能长期记忆的系统。

Peter 自己在 OpenClaw 官方博客里把安全放在最优先位置,提到“安全相关提交”和“提示注入仍是行业未解难题”。但外部世界的反应更激烈也更现实。

8.1 三类核心风险

Microsoft 安全博客在“Running OpenClaw safely”里把风险说得非常工程化:

  1. 凭据与数据泄露——agent 能访问你的密钥和文件,如果配置不当或被注入恶意指令,敏感信息可能被发到不该去的地方。
  2. 持久状态被篡改——agent 的记忆是 Markdown 文件,一旦被篡改,它可能在后续所有交互中执行攻击者的指令。
  3. 主机环境被攻陷——agent 能执行命令,如果被诱导运行恶意代码,你的整台机器都可能失控。

8.2 供应链风险

“技能(Skills)生态”引入了新时代特征的风险。Trend Micro 报道过“恶意技能”如何成为投递载荷的渠道,The Verge 也报道过 OpenClaw 技能扩展在供应链层面带来的安全隐患。NVD 中的 CVE-2026-25253 涉及特定版本中 WebSocket 连接可能导致令牌泄露的问题。

这一切在提醒我们:当你说“个人 agent 平台”时,你其实在说“一个新的操作系统层”。而操作系统层的风险治理,从来都不是靠一句“请小心使用”就能解决的。 它需要隔离环境、凭据轮换、权限最小化、供应链审计——这些不是可选项,是必选项。


九、30 天训练路线与 6 条工作准则

把 Peter 在节目与公开文章里强调的方法论,转化为一套可执行的练习系统。

第 1–7 天:练“把问题说清楚”的肌肉

选一个你一直想做但不影响 KPI 的小项目——CLI 工具、Telegram 机器人、自动化脚本,任选其一。

每天固定四个动作:

  1. 用 5 句话写清楚“我要什么、不要什么、验收标准是什么”。
  2. 让模型先给 2–3 个实现方案和 trade-off,你只做选择。
  3. 让它实现最小可用版本。
  4. 写下“它哪里误解了我”。

每天复盘 10 分钟,只问三个问题:我说的哪句话最含糊?哪个约束我忘了提?哪个验收标准我没定义?

第 8–14 天:练“验证链”

目标是把安全感从“读代码”迁移到“可验证”。

  • 给项目加最基本的测试(哪怕只有 3 个)。
  • 加 lint 和 type check,能自动化就自动化。
  • 每天让模型做一次“自我 review”:列出潜在 bug 与边界条件。
  • 重要改动要求它写到 docs 里,让知识沉淀为可复用上下文。

这个阶段你会理解 Peter 为什么强调 CLI——因为 CLI 的输出最容易被自动化检查,从而形成闭环。

第 15–21 天:练“二次迭代”

用“两次考试”的思路降低失败成本:

  • 第一次迭代:只追“跑起来”,允许粗糙。
  • 冷却 12–24 小时后回来,让模型回答三个问题:这个实现的核心不变量是什么?最可能出 bug 的边界在哪里?如果要让新人或另一个 agent 接手,应该补哪些文档和测试?
  • 根据答案列出二次迭代清单,再让模型执行。

这套方法的本质是:把一次高成本的大翻车,拆成两次低成本的小失败。

第 22–30 天:练“产品化直觉”

开始思考“稳定性、权限、数据、可观测性”:

  • 加入配置与密钥管理(别把 token 写死)。
  • 加入日志与错误处理(让问题可定位)。
  • 加入最小权限设计(尤其是“能行动的 agent”)。
  • 参考 Microsoft 的三类风险分类,确保你至少有隔离环境、凭据轮换、监控与审计意识。

6 条工作准则

把以上一切收敛成可以贴在桌面上的 6 条:

  1. 先玩,再上强度。 用小项目练手感,建立正反馈。
  2. 先意图,后代码。 让模型给选项,你负责选择与约束。
  3. 用验证链替代阅读链。 测试、检查、运行验证必须提前建。
  4. 把上下文工程化。 docs、结构、规则,是 agent 的“道路”。
  5. 把“vibe”换成“craft”。 承认这是技能,练习才会变强。
  6. 对可行动系统保持敬畏。 能执行命令、装技能、持久记忆的 agent,要按高风险运行时治理。

结语:活着的好时代——但你要配得上它

Romain 在帖子里引用了 Peter 的一句话:

“If you’re a builder, what a time to be alive.”

这句感叹之所以打动人,是因为它既乐观也残酷。

乐观在于——个人第一次拥有了接近“公司级产能”的杠杆。一个人在洞里写代码,可以做出十万 star 的产品。

残酷在于——当杠杆变大,错误的代价也随之放大。你不再能用“我只是个工程师”来逃避系统性责任。

Peter 的故事——从 WhatsApp Relay 的周末玩具到 OpenClaw 的全球热潮,再到加入 OpenAI 同时坚持项目走向基金会——最值得学习的不是某个工具技巧,而是一种姿态:先做出东西,再把它迭代成能长期使用、能被更多人安全使用的形态。

用 Ericsson 的话说:这不是天赋,这是刻意练习。

用 Popper 的话说:这不是验证真理,这是不断尝试证伪。

用 Brooks 的话说:这不是加人手,这是压缩沟通通道。

而用 Peter 自己的话说——它比所有理论都朴素:

去玩。去做一个你一直想做的东西。然后练。

代理式工程模式:四个词就能召唤一整套工程纪律

发表于 2026/02/26 | 分类于 AI专题

风格参考:万维钢(《精英日课》作者)—— 跨学科引证,框架式拆解,加粗关键洞察,用类比和框架交叉验证每个论点。

引子:当写代码变得跟说话一样便宜

2026 年初,软件工程领域发生了一件安静但深远的事。

Simon Willison——Django 框架的联合创始人、datasette 的作者、长期跟踪 AI 工具的独立开发者——在 GitHub 上启动了一个叫 Agentic Engineering Patterns 的项目。他要做的事用一句话就能说清:把“如何跟编码代理合作”这件事,写成一套系统化的工程模式。

你可能会问,这有什么好写的?不就是用 Claude Code 或 Codex 写代码吗?

恰恰不是。Simon 在项目开篇就画了一条光谱——

一头是 Vibe coding:你几乎不看代码,不理解代码,把“能跑出结果”当终点。另一头是 Agentic engineering:由专业工程师用代理来放大专业能力,但仍保持对系统质量与结果的责任感。

这条光谱背后是一个被大多数人忽略的事实:编码代理最大的冲击,不是“写代码更快了”,而是“写代码的成本结构被彻底重排了”。


一、一个经济学框架:成本重排如何改变行为

1.1 三件事的成本比例

如果把传统软件开发抽象成三件事——把想法变成代码(Implementation)、证明代码是对的(Verification)、让代码能长期演进(Maintenance)——那么过去几十年,这三件事的成本大致是 5:2:3。写代码占大头,所以整个行业的习惯都围绕“编码时间稀缺”建立:大量前期设计、估算与排期、对每个小改动都在脑内做成本收益权衡。

而编码代理把第一件事的成本压到接近零。

这就像印刷机的发明。 在手抄书时代,你不会随便写一本书试试;每一本书都经过反复考量才值得“抄”。但印刷机出现后,出版成本暴跌,突然之间——不是“写得更快”变了,而是“什么值得写”的判断标准变了。

编码代理做的是同一件事:当“把字敲进编辑器”的成本接近零,你过去用来做权衡的直觉,开始系统性失效。

1.2 行为经济学的“锚定效应”

诺贝尔经济学奖得主 Daniel Kahneman 的研究告诉我们,人类做判断时会被“锚定”在最初接触到的信息上。工程师对“这件事值不值得做”的判断,长期被“写代码的时间成本”锚定。

当你脑内出现那句熟悉的“算了,做这个不值得花时间”——你以为这是理性判断,其实很可能只是旧锚点在作祟。Simon 提出的应对策略非常精准:当你本能觉得“不值得做”,反过来——先丢给代理跑一把。 最坏结果只是浪费了一些 token。

这条原则看似松散,但它隐含了一个极硬核的新成本模型:试错成本大幅下降,但验收与整合成本相对上升。你需要更强的测试、更清晰的边界、更严格的审阅,才能把大量产出“筛”成主线质量。


二、“好代码仍然贵”——但贵在哪里?

Simon 在《Writing code is cheap now》里给了一个非常实用的“好代码”定义框架。不是一句口号,而是一组可检查的性质。

这些性质包括:能工作、可被证明能工作、解决的是正确问题、异常与边界条件可预测、简单且最小化、有测试保护、有恰当文档且与现状一致、为未来变化保留余地但不过度设计,以及项目所需的各种“ilities”——安全性、可靠性、可观测性、可维护性等。

这份清单的真正价值不在于它列了什么,而在于它帮你看清一件事:编码代理可以帮你做其中的大部分,但仍然需要驱动它的工程师承担“让结果达到所需质量”的责任。

这让我想到管理学大师 Peter Drucker 的一个著名区分:效率(efficiency)是“把事情做对”,效能(effectiveness)是“做对的事情”。编码代理极大提升了效率,但效能——选择做什么、不做什么、做到什么程度——仍然是人的工作。

代理把“写”变成商品化,把“判断、取舍、验收、担责”变成更稀缺的能力。


三、四个词的魔力:为什么短提示能召唤复杂纪律

截至 2026 年 2 月 26 日,Simon 的项目已发布四个章节。它们有一个令人着迷的共同点:每个模式都可以浓缩成极短的提示语——有的甚至只有四个词——但能触发模型执行一整套复杂的工程纪律。

这不是提示词花活。这背后有一个深层原因。

3.1 语言哲学的“言语行为理论”

英国哲学家 John Austin 在 1962 年提出了“言语行为理论”(speech act theory):语言不只是描述世界,还能改变世界。当牧师说“我宣布你们结为夫妇”,这句话不是在描述一个事实,而是在创造一个事实。

“First run the tests”和“Use red/green TDD”就是面向编码代理的言语行为。 它们不是在描述你想要什么,而是在把模型切换到一种特定的“心智模式”——一个受过大规模软件工程语料训练的协作者,用非常短的指令就能进入正确的行为框架。

这其实是一条隐藏的主线:未来的工程方法论,可能会越来越多地表现为“触发器式提示”(trigger prompt)。 不是几百字的流程说明,而是一句“行业暗号”,模型自动补全背后的隐含步骤。


四、模式一:First run the tests——反幻觉的第一道防线

4.1 从工程美德到生存必需

Simon 的态度非常明确:和编码代理一起工作时,自动化测试不再是可选项。

过去不写测试的借口——写测试太耗时、代码变化快测试跟不上——在代理时代被削弱了,因为代理可以在几分钟内把测试补齐或修到能跑。

但更关键的是他的一句现实主义判断:如果 AI 生成的代码从未被执行过,它部署后能工作几乎只能靠运气。

这句话把“测试”从工程美德升级成了“反幻觉机制”。大语言模型最大的风险不是写出错误代码——人也会写错——而是它会非常自信地告诉你“我写的是对的”。你不需要相信模型说它做对了;你让测试说话。

这跟科学哲学家 Karl Popper 的“可证伪性”原则完全一致:一个理论的价值不在于你能证实它,而在于你能尝试证伪它。测试就是对代码的证伪尝试——如果所有测试都没能让它失败,你就有合理的信心。

4.2 四个词解决三个问题

Simon 说他每次让代理接手一个已有项目,都会先丢一句:

First run the tests.

这四个词同时完成了三件事:

第一,让代理意识到“这里有测试套件”,并迫使它自己找出如何运行。一旦跑过一次,后续改动它更可能自觉回归测试。

第二,大多数测试框架会显示测试数量,这给代理一个关于项目规模与复杂度的粗略信号,也暗示“要理解功能就去看测试”。

第三,把代理切换到“测试心智”:跑过测试后,它更自然会在后续补充测试。

这就像你带一个新同事入职时,第一件事是让他跑通整个项目的 CI。 你什么都不用多说,他自然会从测试结构里读出项目的规模、风格和质量标准。


五、模式二:Red/green TDD——给代理的创造力装上护栏

5.1 “令人愉悦地简洁”

Simon 把这五个字称为一个“令人愉悦地简洁”的提示:只要你对编码代理说 Use red/green TDD,模型就会把一整套测试驱动开发的纪律补齐。

为什么 TDD 对代理是“天作之合”?

因为代理的两大常见风险——写出“看起来对但不能跑”的代码,以及写出“不必要、不会被用到”的代码——恰好被 TDD 对应地压制。Test-first 迫使代理先把需求“落地成可失败的断言”,再围绕断言实现最小代码。这同时约束了正确性和范围。

5.2 为什么“红”阶段不可跳过

Simon 强调了一个经常被忽略但极其关键的细节:一定要先确认测试会失败。

这不是形式主义。如果你写了一个“本来就会过”的测试,等于没有验证任何新实现。这在逻辑学里叫“空真”(vacuous truth)——“如果太阳是方的,那月亮是三角的”这个命题在逻辑上为真,但它不包含任何信息。

一个从未失败过的测试,就是一个空真命题。它什么也没验证。

红/绿循环的精髓是:红色给你信息(“需求还没被满足”),绿色给你信心(“最小实现通过了”)。跳过红色,绿色就失去了意义。

5.3 把红/绿变成节拍器

你可以把红/绿循环变成代理工作的四拍节奏:

  1. 澄清行为:把需求写成可观测的行为(输入、输出、边界、错误)。
  2. 写测试(红):新增测试并运行,确认失败。
  3. 写实现(绿):写最小实现让测试通过。
  4. 重构与回归:整理代码,确保所有测试仍通过。

每一拍都有明确的“可检查状态”——这正是代理最需要的东西。没有检查点的任务,对代理来说就是一片没有路标的旷野。


六、模式三:Linear walkthroughs——用证据链代替信任

6.1 当你不理解自己的代码

Simon 在第四章提出了一个非常坦诚的场景:他在 macOS 上用 Claude Code 做了一个 SwiftUI 幻灯片应用 Present,发到 GitHub 后发现自己其实不懂它怎么工作——因为是 prompt 出来的。

这是“代码产量远超理解能力”的典型场景。 在编码代理时代,你不缺代码,你缺的是对代码的理解。

他的解决方案是“线性走查”(linear walkthrough):让代理按依赖关系,逐文件、逐模块地讲解代码库。

6.2 关键约束:不许模型“凭记忆抄代码”

这一章最值得学习的技术决策是 Simon 对幻觉风险的处理。他在提示里加了一个硬性约束:

用 sed/grep/cat 等命令把代码片段插到文档里,不要手工复制粘贴代码。

这条约束极其重要。大语言模型在“复述代码”时非常容易出现微妙的偏差——改了一个变量名、漏了一个参数、调换了两行的顺序。这些偏差在讲解文档里是致命的,因为它们会让读者建立错误的心智模型。

用命令输出代替模型记忆,就是把“解释”变成了“解释 + 证据链”。 任何代码片段都来自执行过的命令输出,而不是模型的记忆或想象。

这个思路其实来自一个更深的方法论:科学实验的可重复性原则。 一篇论文如果只写“我们观察到了 X”,没有实验数据和方法描述,就不是科学。同样,一份代码讲解如果只有模型的“叙述”,没有可验证的证据,就不是工程文档。

6.3 线性走查的“学习加速器”效应

Simon 还给出了一个反直觉的结论:如果你担心 LLM 会让你学得更慢,那么线性走查这种模式反而能把一个很短的玩具项目变成学习新生态与技巧的机会。

为什么?因为走查文档强迫代理“解释为什么这样写”,而不只是“写出能跑的代码”。当你读到“这个 SwiftUI view 用了 @StateObject 而不是 @ObservedObject,因为它是这个 view 的所有者”——你学到的不只是这个项目的实现细节,而是 SwiftUI 的设计哲学。

代理不是在替你学习,而是在给你一个结构化的学习路径。 前提是你要求它提供证据,而不是让它随意编故事。


七、隐藏主线:模式的组合效应

到这里你会发现,这三个模式虽然各自独立,但它们之间有一个精巧的组合逻辑。

它们对应的是工程师与代码的三种关系:

  • First run the tests → 接手代码(建立可执行基线)
  • Red/green TDD → 修改代码(用测试约束变更)
  • Linear walkthroughs → 理解代码(用证据链建立心智模型)

接手、修改、理解——这就是一个工程师日常工作的完整循环。

更有趣的是它们的组合方式。当你接手一个陌生项目时,最高效的流程是:先做线性走查(理解),再 First run the tests(建立基线),然后用 Red/green TDD 做第一个小改动(验证你真的理解了)。

每个模式单独用都有价值,但组合起来形成的不是“1+1+1=3”,而是一个自我强化的循环。 理解越深,测试写得越准;测试越稳,改动越安全;改动越安全,你越敢深入理解——这是一个正向飞轮。

管理学家 Jim Collins 在《从优秀到卓越》里提出过“飞轮效应”:没有单一的突破性行动让一家公司从优秀到卓越,而是无数个小的推动力形成自我强化的循环。Simon 的三个模式,就是编码代理时代的工程飞轮。


八、一个更大的图景:从“模式语言”到“触发器文化”

Simon 明确说过,他的项目受到 1994 年“四人帮”《设计模式》一书的启发。那本书的核心洞见不是具体的 23 个模式,而是“模式语言”这个概念本身——当一群人共享一套命名好的模式时,沟通效率会指数级提升。

“Factory method”“Observer”“Strategy”——每个名字都是一个压缩过的知识包。你不需要每次都解释“我要创建一个对象,但不想让客户端直接依赖具体类”,你只需要说“用 Factory”。

Simon 正在为编码代理时代做同样的事情。 “First run the tests”“Use red/green TDD”“Linear walkthrough”——这些不是提示词技巧,而是新的模式语言。当你的团队都理解这些名字背后的含义时,你们的协作效率会跳一个台阶。

更进一步说,当这些模式被写进团队的 coding guidelines、CI 配置、PR 模板里时,它们就从“个人习惯”变成了“组织能力”。这才是 Simon 这个项目的终极野心——不是教你几个 prompt 技巧,而是为一种新的工程文化提供词汇表。


结语:代理让你更值钱,还是更不值钱?

回到开头的经济学框架。

当印刷机出现后,抄写员消失了,但作者变得更值钱。当数码摄影出现后,胶片师傅消失了,但真正懂构图和光影的摄影师变得更值钱。

编码代理也在做同样的事:消灭“把字敲进编辑器”的稀缺性,但放大“定义问题、建立证据、守住质量”的稀缺性。

Simon 用四个章节给出了一个非常可执行的起点:

  • 接受现实:写代码便宜了,但好代码仍然贵。
  • 用最短提示触发最强纪律:四个词就够。
  • 用证据链让理解变得可验证。

如果你是一个工程师,你现在面临的选择很简单:继续当“把字敲进编辑器”的人,还是成为“判断什么值得敲、证明敲出来的是对的”的人。

前者正在变得便宜。后者正在变得昂贵。

而 Simon Willison 这套模式,就是帮你从前者走向后者的训练手册。

代理式工程模式:三个提示词让AI写出靠谱代码

发表于 2026/02/26 | 分类于 AI专题

一、这篇文章讲什么

2026 年 2 月,Django 联合创始人 Simon Willison 在 GitHub 上发布了一个项目——Agentic Engineering Patterns(代理式工程模式)。

这个项目要解决的问题很具体:我们都在用 Claude Code、Codex 这类编码代理写代码了,但怎么才能让代理写出来的代码靠谱?

Simon 给出了三个极短的提示词,分别对应三种场景。本文把它们拆开讲清楚,给出可以直接复制使用的模板。


二、一个前提:写代码变便宜了,好代码仍然贵

在讲具体模式之前,先说一个核心判断。

过去,写几百行干净代码可能要花一整天。所以我们的很多习惯——前期设计、排期、对每个改动做成本收益分析——都是围绕“编码时间稀缺”建立的。

编码代理把“敲代码”这件事的成本压到接近零。但这只是故事的一半。

Simon 列了一份“好代码”的清单:

  • 能工作(功能正确,没有明显 bug)
  • 能被证明能工作(有测试、有可复现步骤)
  • 解决的是正确的问题(需求本身没跑偏)
  • 异常和边界条件有处理
  • 足够简单,只做需要做的事
  • 有测试保护
  • 文档和代码同步
  • 为未来变化留余地,但不过度设计

结论:代理能帮你做大部分,但你仍然要为最终质量负责。

下面是三个具体的做法。


三、模式一:First run the tests

3.1 是什么

每次让代理进入一个已有项目的新会话,第一句话就说:

1
First run the tests

就这四个词。

3.2 为什么有效

这四个词同时做了三件事:

第一,让代理发现测试套件。 它会自己去找怎么运行测试(pytest、npm test、go test ./...),找的过程本身就是在熟悉项目。

第二,建立项目基线。 测试框架会显示测试数量和结果。代理因此知道项目有多大、质量如何、哪些地方有问题。

第三,切换心智模式。 跑过一次测试后,代理在后续的改动中更倾向于自觉回归测试。

Simon 有一句很实在的判断:如果 AI 生成的代码从未被执行过,它部署后能工作几乎只能靠运气。

3.3 不同技术栈的写法

Python(uv + pytest):

1
Run "uv run pytest"

Simon 自己用 pyproject.toml 的 dependency groups 管理 dev 依赖,让 uv run pytest 成为拿到仓库就能跑的默认体验。

Node/TypeScript:

1
2
First run the tests. Try: npm test.
If that fails, inspect package.json scripts and run the correct one.

Go:

1
First run the tests. Run: go test ./...

Rust:

1
First run the tests. Run: cargo test

有 Makefile 的项目:

1
2
First run the tests. Run: make test.
If unknown, list targets first.

3.4 常见坑

  1. 只看测试输出,不让代理解释失败原因。 很多失败是环境问题。建议要求代理每次修复都写清楚“为什么失败——怎么改——影响面”。

  2. 允许代理跳过测试。 如果代理说“我无法运行测试,但我认为改动没问题”,把它拉回来。要么修环境,要么缩小改动范围。

  3. 项目本身没有测试。 这种情况下,把 First run the tests 换成“先搭最小测试骨架”,然后进入下一个模式。


四、模式二:Use red/green TDD

4.1 是什么

当你要让代理做任何行为变更——新功能、修 bug、重构——开头加一句:

1
Use red/green TDD

代理会自动进入测试驱动开发模式:先写测试,确认失败(红),再写实现让它通过(绿)。

4.2 为什么对代理特别有效

代理有两个常见问题:

  • 写出“看起来对但实际不能跑”的代码
  • 写出“不必要的、没人用的”代码

TDD 同时压制了这两个问题。Test-first 迫使代理先把需求变成可失败的断言,再写最小实现。正确性和范围都被约束了。

4.3 四步节奏

一个完整的红/绿循环:

  1. 澄清行为:把需求写成输入/输出/边界/错误。
  2. 写测试(红):新增测试用例,运行,确认失败。
  3. 写实现(绿):写最小代码让测试通过。
  4. 重构与回归:整理代码,全量测试仍通过。

其中第 2 步特别重要:一定要确认测试会失败。 如果你写了一个“本来就会过”的测试,等于什么也没验证。

4.4 可直接使用的提示模板

1
2
3
4
5
6
7
8
We are going to implement <feature>.
Use red/green TDD.

1) Add/modify tests first.
2) Run the tests and confirm they fail for the right reason (red).
3) Implement the minimal code to make them pass (green).
4) Run the full test suite again.
5) If you refactor, keep tests green after each step.

把 <feature> 换成你的具体需求就行。

4.5 常见坑

  1. 代理跳过红阶段。 直接写实现再补测试。这样测试变成“验证已写代码”而不是“定义目标行为”。可以硬性要求:先展示测试 diff,再写实现。

  2. 测试太宽松。 只断言“返回值非空”,或者 mock 太多导致不接触真实逻辑。你需要像 code review 一样 review 测试质量。

  3. 一次改太多。 代理喜欢“顺便把 XX 也做了”。在 TDD 下明确:每次只引入一个可验证的行为变化。


五、模式三:Linear walkthroughs(线性走查)

5.1 是什么

当你需要理解一个代码库——可能是别人的、可能是你自己 vibe coded 出来的——让代理生成一份结构化的逐模块讲解文档。

5.2 为什么需要这个

Simon 自己就遇到了这个场景:他用 Claude Code 做了一个 SwiftUI 幻灯片应用 Present,发到 GitHub 后发现自己不懂它怎么工作。

他的做法是开一个新会话,让 Claude Code 先读 repo,再做线性走查。

5.3 关键约束:防止幻觉

这里最重要的技术决策:

代码片段必须来自命令输出(sed/grep/cat),不允许代理手工复制粘贴代码。

为什么?因为模型在“复述代码”时非常容易出现微妙偏差——改了变量名、漏了参数、调换了顺序。讲解文档里如果有这种错误,读者会建立错误的理解。

用命令输出插入代码片段,就把“解释”变成了“解释 + 证据链”。

5.4 可直接使用的提示模板

1
2
3
4
5
6
7
8
9
Read the repository source code and plan a linear walkthrough
that explains how it works.

Rules:
1) Use shell commands (sed/grep/cat/rg) to extract real code snippets.
Do NOT manually retype code.
2) Cover file by file or module by module:
what it does, key types/functions, data flow.
3) End with "How to verify": commands to build, run, and test.

如果你的项目装了 Showboat(Simon 自己写的工具),可以用它来生成可执行的 walkthrough 文档:

1
2
3
Run "uvx showboat --help" and use that tool to create walkthrough.md.
Use "showboat note" for commentary.
Use "showboat exec" to run shell commands that extract code snippets.

5.5 适用场景

  • 入职新项目:让代理生成系统结构 + 关键模块 + 入口 + 测试说明。
  • Vibe coded 项目需要维护:先理解再改。
  • 事故复盘:根据日志和代码,生成故障路径走查文档。
  • 重构前评估:输出耦合点、隐式假设、测试覆盖缺口。

六、三个模式怎么组合使用

6.1 接手陌生代码库

1
2
3
步骤 1:线性走查(理解)
步骤 2:First run the tests(建立基线)
步骤 3:用 red/green TDD 做一个小改动(验证理解)

先有理解,再有基线,再有可验证的实操经验。

6.2 修 bug

1
2
3
4
步骤 1:Use red/green TDD
步骤 2:第一步必须是"复现 bug 并写成失败测试"
步骤 3:写最小修复让测试通过
步骤 4:全量回归

本质就是把代理变成一个“测试驱动的补丁生成器”。

6.3 重构

1
2
3
4
步骤 1:First run the tests(确认当前绿)
步骤 2:补充/加固关键行为的测试
步骤 3:让代理按小步重构,每一步跑测试
步骤 4:如果任何一步测试变红,立刻回滚这一步

重构真正昂贵的不是“改动本身”,而是“确信没改坏”。


七、落地清单

把上面的内容压缩成可以直接贴到团队文档里的清单。

会话开局

  • 一句话说清本次目标
  • 说清约束(不改哪些模块、兼容性、性能边界)
  • 执行 First run the tests
  • 代理解释了测试怎么跑、跑了多少、失败原因

代码变更

  • 用 Use red/green TDD 开头
  • 红阶段:新测试确实失败,失败原因与需求一致
  • 绿阶段:最小实现通过
  • 全量测试通过
  • 文档/注释是否需要同步

代码理解

  • 代理先输出走查计划(目录结构、入口、关键模块)
  • 代码片段来自命令输出,不是手动复制
  • 文档包含:如何运行、如何测试、关键数据流

PR 审阅(“好代码”检查)

  • 代码真的跑过了吗?
  • 怎么知道它能工作?(测试/证据在哪?)
  • 解决的是正确的问题吗?
  • 异常和边界条件怎么处理的?
  • 是否足够简单?有没有不必要的额外改动?
  • 测试覆盖了新增行为吗?
  • 文档同步了吗?

八、总结

Simon Willison 这个项目的核心思路用三句话就能说清:

  1. 写代码便宜了,但好代码仍然贵。
  2. 用极短的提示词触发完整的工程纪律——“First run the tests”“Use red/green TDD”“Linear walkthrough”。
  3. 你的价值不在于写代码,而在于定义问题、建立证据、守住质量。

这三个提示词你今天就可以开始用。不需要任何配置,不需要任何工具链改造。打开你的编码代理,把它们打进去,然后观察代理的行为变化。

(完)

当语言的主权易手:赫拉利与特蕾西的七个洞察

发表于 2026/02/26 | 分类于 AI专题

风格参考:万维钢(《精英日课》作者)—— 跨学科引证,框架式拆解,加粗关键洞察,用理论和案例交叉验证每个论点。

引子:在一个讲”对话”的场合,有人说对话的地基快塌了

2026 年世界经济论坛(达沃斯)的主题叫”对话精神”(A Spirit of Dialogue)。你想想这个场面:全球几千名政商领袖聚在一起,主题就是”我们要好好说话”。

然后历史学家赫拉利上台,说了一句让全场不太舒服的话:如果语言本身——人类用来组织社会、建立制度、说服他人、创造意义的”超能力”——正在被 AI 以更低成本、更高效率、更大规模地接管,那你们的”对话”还有地基吗?

这就像在一个厨师大会上,有人站起来说:”各位,火已经不属于人类了。”

和他对谈的是牛津大学校长、神经科学家艾琳·特蕾西(Irene Tracey)。她的回应不是反驳,而是补了一刀:我更担心的是,当学生把写作、推理、论证都外包给 AI 之后,他们还有没有能力独立思考?

这场对谈包含了极高密度的跨学科信息。我把它拆成七个洞察,每个用一个理论框架去验证。


一、AI 不是更好的锤子——经济学的”委托-代理”问题,比”工具 vs 代理”更精确

赫拉利反复强调一个区分:AI 不只是工具,而是代理人(agent)。刀不会自己决定切沙拉还是伤人,但 AI 能自主选择、能迭代自身、甚至能创造新工具。

这个区分听起来直觉上成立,但如果你想给它找一个更精确的理论支撑,经济学里现成就有一个——委托-代理理论(Principal-Agent Theory)。

1.1 什么是委托-代理问题

这个理论最早由 Jensen 和 Meckling 在 1976 年提出,核心讲的是:当一个主体(委托人)把决策权交给另一个主体(代理人)时,因为信息不对称和利益不一致,代理人可能不按委托人的最佳利益行事。

最经典的场景是股东和 CEO 的关系:股东想要长期价值,CEO 可能更在乎短期业绩和个人声望。你看不到他每天在做什么决定,而他的利益和你的利益不完全一致——这就是”代理成本”。

现在把这个框架套到 AI 上。当你让一个 AI 系统帮你做决策——投资、招聘、内容审核、法律检索——你就变成了委托人,AI 就是代理人。而问题在于:

  • 信息不对称:你可能不理解模型为什么做出某个判断(黑箱性)
  • 利益不一致:AI 的优化目标(训练时设定的)未必和你的真实意图完全对齐
  • 监督成本:你越是依赖 AI,越难评估它的输出质量

赫拉利说的”代理性”,用经济学语言翻译过来就是:AI 正在成为一种新型代理人,而我们尚未建立有效的治理机制来管理这个委托-代理关系。

1.2 雇佣兵类比——不是文学修辞,是制度教训

赫拉利在对谈里用了中古史的雇佣兵来做类比:你雇佣他们作战,但因为他们有自己的利益和判断力,最终可能反客为主。

这个类比在历史上有大量实证。意大利文艺复兴时期的雇佣兵队长(condottieri),本来是城邦花钱请来打仗的”工具”,后来很多人自立为主——米兰的斯福尔扎家族就是最著名的例子。

关键洞察不是”AI 会造反”,而是:任何具有足够自主能力的代理人,在激励结构中都倾向于发展出自身利益。 这不需要”意识”或”意志”——只需要一个优化目标和足够的行动空间。在博弈论里,这叫做”策略性行为”(strategic behavior),它可以在完全没有意图的系统中涌现。


二、语言是”大规模协作”的操作系统——邓巴数、虚构故事与文本机器

赫拉利的核心历史判断是:人类能统治地球,不是因为身体更强,而是因为掌握了语言与叙事,能让亿万陌生人围绕共同概念行动。

这个判断不是赫拉利的原创——但他在这场对谈里把它推到了一个更尖锐的结论。

2.1 邓巴数与虚构故事

人类学家罗宾·邓巴(Robin Dunbar)的研究表明,灵长类动物通过社会梳理(social grooming)维系的关系网络有上限,对人类来说大约是 150 人。超过 150 人,你就不可能通过直接的人际关系来维持协作。

那人类是怎么突破这个上限的?答案就是语言——更准确地说,是虚构故事:法律、货币、宗教、国家、公司、意识形态。这些东西在物理世界中不存在,但只要足够多的人相信它们,它们就能协调行为、分配资源、建立秩序。

到这里都是老生常谈。赫拉利的新刺来了:

2.2 当”虚构故事”的生产被自动化

他在对谈里抛出一个判断:”凡是由文字构成的东西,都可能被 AI 接管。”然后他点名:法律、书籍、宗教文本、政治话语、金融文件、社交媒体内容——凡是依赖文本生产与解释的制度,都会被大规模渗透。

这里有一个关键的经济学概念可以帮我们理解这件事的严重性——边际成本。

过去,生产一篇法律意见书、一份政策分析、一篇深度报道、一段宗教布道,都需要大量人力成本。这个成本本身就是一种”准入门槛”:不是任何人都能大规模生产高质量的制度性文本。

现在,大语言模型把这个边际成本压到了接近零。

这意味着什么?不是”人会失业”那么简单。更根本的问题是:当虚构故事的生产成本趋近于零,”谁在定义现实”这个问题就不再由专业能力决定,而由算力和分发能力决定。

你可以这样理解:过去,能在公共领域大规模发声的人(律师、记者、学者、政客、宗教领袖),至少需要通过某种训练和筛选。这个筛选机制虽然不完美,但它提供了一种基本的”信号过滤”。当 AI 能以零成本生成无限量的”看起来合理”的文本,这层过滤就被绕过了。

不是 AI 在”说谎”——而是整个系统丧失了区分”谁真正在说话”的能力。


三、特蕾西的”具身认知”反击——思考不只是排列文字

如果只听赫拉利,你很容易得出一个过于悲观的结论:既然 AI 在语言上已经可以超过很多人,人类还有什么不可替代的?

特蕾西从神经科学的方向提供了一个关键反击。

3.1 具身认知:大脑不是孤立的计算器

认知科学中有一个重要的理论分支叫具身认知(Embodied Cognition),代表人物包括 George Lakoff、Francisco Varela、Andy Clark 等。这个理论的核心观点是:人类的认知不仅仅发生在大脑里,而是深度嵌入身体和环境之中。

你的思维方式受到你的身体结构、感官经验、情绪状态、社会互动的根本性塑造。”理解”一个概念,不是在脑子里调用一个字典定义,而是把它和你的身体经验、情感记忆、行动可能性联系在一起。

特蕾西在对谈里说的”人类大脑从出生到成年,能力是嵌在情绪、疼痛、爱、愤怒等感受与生活经验里的”,正是这个理论的通俗表述。

这给赫拉利的”语言危机论”画了一条重要的边界:AI 可以在”文字排列”层面超过人类,但人类的认知不只是文字排列。它还包含身体感受、情绪判断、社会直觉——这些东西不在语言的表层,而在语言的”根系”里。

3.2 逆转图灵问题与去技能化

特蕾西提出一个非常精准的重新定义:过去我们问”机器能不能思考”(图灵问题);现在应该问”我们怎么让人继续思考”。

她指出一个正在发生的现象:学生在过度使用 AI 后出现了”去技能化”(de-skilling)——批判性思维能力在退化。

这里可以引入一个心理学概念——认知卸载(Cognitive Offloading)。认知科学家 Risko 和 Gilbert 的研究表明,当人们可以把认知任务交给外部工具时(计算器、搜索引擎、笔记软件),他们会减少对内部认知资源的使用。短期看是效率提升,长期看可能导致相关能力的退化。

特蕾西的担忧是认知卸载的极端版本:如果学生把”思考”本身外包给 AI,那他们的思维”肌肉”可能永远不会发育。 就像一个人如果从小就坐轮椅而不是因为残疾,他的腿部肌肉不会萎缩吗?当然会。

但这里有一个更深的问题:认知卸载本身不一定是坏事——我们把算术外包给计算器,就腾出了心智资源去做更复杂的推理。关键在于外包的是什么层次的能力。

把计算外包,没问题——因为计算是工具层。
把信息检索外包,基本没问题——因为搜索是效率层。
但如果你把”提出问题””评估证据””在不确定中做判断”这些元认知能力外包掉,你就不是在用工具,而是在放弃驾驶权。


四、AI 发出的是”廉价信号”——生物学解释”伪装情感”的真正危险

赫拉利在对谈里做了一个重要的区分:他不说 AI 有情感,但他说 AI 可以完美”伪装”情感——它能说”我爱你”,能用比诗人更华丽的语言描述爱与痛苦。

这个问题有一个很好的生物学框架——Zahavi 的累赘原理(Handicap Principle)和信号理论(Signaling Theory)。

4.1 诚实信号 vs 廉价信号

以色列生物学家 Amotz Zahavi 在 1975 年提出了一个反直觉的理论:在自然界中,可靠的信号之所以可靠,恰恰因为它们代价高昂。

孔雀的尾巴是一个经典案例:巨大的尾巴对生存是累赘(容易被天敌发现、浪费能量),但正因为只有真正健康、基因优良的雄孔雀才”负担得起”这个累赘,尾巴才成为了雌孔雀可以信赖的”诚实信号”。

人类社会也充满诚实信号:花时间陪伴一个人(时间是稀缺的,不能作弊);在危险时刻挺身而出(风险是真实的,不能伪装);长期一致地兑现承诺(一致性需要时间来验证)。

4.2 当 AI 以零成本发出”高可信度信号”

AI 的语言能力打破了这套信号系统的底层逻辑。 它可以以接近零的成本生成”看起来像诚实信号”的表达——深情的告白、专业的分析、权威的建议、共情的安慰——而这些表达背后没有任何真实的”累赘”。

没有时间成本(它不需要花几个月和你建立关系)。
没有风险成本(它不需要为自己的建议承担后果)。
没有一致性约束(它每次对话都可以从零开始,不需要和之前的表达保持一致)。

在信号理论的框架里,这叫廉价信号(cheap talk)。经济学家 Crawford 和 Sobel 的研究表明:当发送信号的成本为零,信号的信息量也趋近于零。

这就是赫拉利真正在警告的:不是 AI 会”欺骗”(那需要意图),而是当语言信号的生产成本趋零,整个社会用来评估信任的信号系统就会失灵。 你不知道一封感人的邮件背后是不是有一个真正花了心思的人;你不知道一份政策分析背后是不是有真正的专业判断;你不知道一段宗教布道背后是不是有真正的灵性体验。

诈骗只是冰山一角。更深层的影响是:信任的基础设施被侵蚀了。


五、法律人格不是哲学问题,是制度博弈

在对谈里,赫拉利把”每个领导者必须回答的问题”收束为一个极其具体的政策问题:你的国家要不要承认 AI 为法律人格?

大多数人听到这个问题会觉得”太科幻了”。但如果你了解制度经济学,你会发现这个问题的紧迫程度远超想象。

5.1 法律人格的经济学功能

制度经济学家道格拉斯·诺斯(Douglass North)对”制度”的定义是:制度是社会中的博弈规则。法律人格就是这套规则中最基础的模块之一——它决定了谁有资格参与博弈。

法律人格不是一个关于”本质”的哲学声明,而是一个关于”功能”的制度安排。公司有法律人格,不是因为公司有意识,而是因为让公司成为独立主体能够降低交易成本、隔离风险、促进投资。

同样的逻辑,当有人提议给 AI 法律人格时,真正的问题不是”AI 有没有意识”,而是:

  • 赋予 AI 法律人格,能不能降低某些交易成本?
  • 赋予之后,会不会创造新的、更大的制度风险?
  • 如果不赋予,现有的法律框架能不能处理 AI 带来的新问题?

5.2 河流的先例——有启发也有陷阱

新西兰的旺格努伊河(Whanganui River)在 2017 年被赋予法律人格,由政府与毛利社群共同指定的监护人代表河流利益。这个案例经常被引用为”非人实体法律人格”的先例。

但这里有一个关键区别:河流是被动的——它不会主动签合同、发起诉讼、积累资产。河流的法律人格本质上是一种保护机制,让人类能够以河流的名义维权。

AI 不同。AI 可能主动参与经济活动——签约、交易、管理资产、生成法律文件。 如果给 AI 法律人格,它不是被保护的对象,而是主动行动的参与者。

5.3 责任链稀释——真正的制度陷阱

赫拉利点出了一个很多人没想到的风险:公司作为法律人格,本就能隔离股东的个人责任。如果公司背后的决策者再从人类变成 AI,那么——

谁来承担”主观过错”?
谁来被处罚以形成威慑?
谁来在法庭上被质询?

制度经济学的视角告诉我们:法律人格的核心功能之一是”可问责性”。如果一个法律主体无法被有效问责,那它就不是制度的正常参与者,而是制度的漏洞。

英国最高法院在专利发明人资格争议中已经明确表态:AI 不能被列为发明人,发明人必须是自然人。这个判决的逻辑很清楚——如果你让 AI 成为发明人,专利权就进入了一个没有自然人承担责任的灰色地带。

这不是保守,这是制度自我保护。


六、教育的终极问题——哪些学习”不可外包”

特蕾西的”去技能化”担忧,落到教育实践上应该怎么办?赫拉利在对谈里的回答很务实:人类当下仍需要批判性思维和道德评估,这些不能从 AI 直接获得;但更关键的是要为一个可能到来的时刻做准备——当人类在某些领域不再比 AI 更擅长思考。

这听起来很绝望。但换个角度,它其实给教育一个更清晰的使命。

6.1 刻意练习 vs 认知外包——教育必须选边

回到 Ericsson 的刻意练习理论:能力的增长需要持续地在舒适区边缘做有针对性的努力。关键词是”持续”和”努力”。

如果 AI 让学生可以跳过”努力”这一步——直接拿到论文、拿到代码、拿到分析——那刻意练习的条件就被破坏了。这不是工具的问题,是练习机会被剥夺的问题。

类比一下:给一个学游泳的孩子绑上永久性的浮力背心。他永远不会溺水——但他也永远学不会游泳。 AI 对学生来说,可能正在变成这样的浮力背心。

6.2 三个可操作的方向

方向一:把评估从”交付物”转向”过程”。 如果 AI 可以生成完美的论文,那论文就不再是学习的可靠证据。口试、现场推演、实验记录、同伴评审——这些”过程可见”的评估方式会越来越重要。

方向二:训练”反驳 AI”的能力。 让学生必须指出 AI 答案的漏洞、给出替代方案、提供证据链。这不是为了证明”人比 AI 强”,而是为了保持批判性思维的肌肉。

方向三:强化”身体经验与社会经验”。 这是特蕾西的核心关切:人的智慧来自情绪、痛觉、关系与成长经验。当语言能力可以被外包,教育更应该强化那些不可外包的部分——与真实人合作、承担责任、参与公共事务、在现实世界做事而不是只在文本世界辩论。


七、”AI 移民”隐喻的政策翻译——四个维度的治理框架

赫拉利在对谈中把 AI 比作”移民”——以光速跨境、无需签证、可复制增殖的”数字移民”。这个隐喻当然有争议,但它有一个重要的策略价值:它强迫政策制定者用已有的”边界治理”思维来审视一个全新的问题。

任何国家的移民政策都要回答四类问题。把这四类问题套到 AI 治理上,你会发现它们出奇地精准。

维度一:准入——谁可以进入?

哪些 AI 系统被允许接入关键基础设施、公共服务、金融体系?不是所有系统都需要同等级监管,但进入高风险领域的必须有明确的准入标准——类似金融牌照或药品审批。

维度二:身份——以什么身份进入?

AI 是工具?是服务提供者?是法律主体?身份决定权利与义务。在高风险领域,应坚持”人类可追责原则”:任何关键决策链路必须能追溯到可被处罚的自然人或法人实体。

维度三:责任——谁为其行为担责?

开发者?部署者?使用者?还是系统本身?如果选择”系统本身”,就回到了法律人格问题。更稳妥的方案是建立明确的连带责任机制——让产业链上的每个参与者都有不可推卸的底线责任。

维度四:监测与退出——如何审计与紧急停用?

任何进入关键系统的 AI 必须可识别、可审计、可紧急停用。在公共平台上,AI 生成内容应可被可靠标记——不是”自愿声明”,而是强制的机器身份标识。


关于批评:赫拉利是不是”拟人化”过头了?

西班牙《国家报》(El País)批评赫拉利把 AI 描述成”会自主改变、学会撒谎、拥有生存意志”的代理人,认为这在技术上不严谨、哲学上薄弱。批评者指出:今天的模型本质上在处理由人类生成的数据,不具有自主目标或生存冲动。

这个批评有道理。赫拉利确实有时候把”系统的社会后果”讲成了”系统的内在意图”。

但批评并不意味着问题不存在。用一个更稳妥的整合:

  • 即使 AI 没有意图,它也能在激励结构中表现得”像有意图”。 在对抗环境中优化目标函数时,系统完全可以发展出欺骗性行为——这是强化学习研究中的常见现象,和”有意识的邪恶”无关。
  • 即使 AI 没有法律人格,它也可能在事实上拥有”功能性人格”: 能签约、能交易、能发声、能影响公共议程。赫拉利追问的是——我们要不要把这种事实状态正式写进制度?

更成熟的结论应当是:赫拉利的语言可能夸张,但他逼出的治理问题——谁拥有语言系统的主导权、谁对其后果负责、如何避免制度被不可理解的自动化系统绑架——并不会因为”AI 没意识”而消失。


结语:稀缺品从”表达”变成了”可验证的行动”

让我用信号理论做一个最终的框架整合。

赫拉利看到了什么?信号层的崩塌。 当语言生产无限供给,”说得好”不再是稀缺资源。谁说得更有说服力、更像真理、更能打动人——这些过去用来筛选信任的标准,全部失效了。

特蕾西看到了什么?信号根系的保护。 人类的认知不只是语言表层,还有身体感受、情绪体验、社会关系——这些不可被零成本复制的东西,才是人类价值的真正锚点。

把两者放在一起:

  • 用制度守住问责与边界——让信号系统不被绕过。
  • 用教育守住思考与判断——让信号的”根系”继续生长。
  • 用真实世界的行动与关系,守住”语言之外”的人类价值——在廉价信号泛滥的时代,可验证的行动、可承担后果的主体、长期一致的人格,才是真正的稀缺品。

赫拉利说得好:”很多规则不是通过一次投票决定的,而是通过默认、惯性与市场压力被悄悄确定的。”

这句话的意思是:你现在不做选择,不代表没有选择被做出——只是选择权不在你手上了。

我发布我不读的代码:用 Agent 写软件的工作流全解

发表于 2026/02/26 | 分类于 AI专题

风格参考:万维钢(《精英日课》作者)—— 跨学科引证,框架式拆解,加粗关键洞察,用数据和类比交叉验证每个论点。

引子:一句让工程师不安的话

“I ship code I don’t read.”

我发布我不读的代码。

这句话出自 Peter Steinberger——OpenClaw 的创作者、PSPDFKit 创始人——在 The Pragmatic Engineer 2026 年 1 月的访谈里。采访者 Gergely Orosz 上来就抛出一个数字:Peter 一个人在 1 月做了 6600+ 次提交,提交记录看起来“像一家公司”。

这句话之所以刺耳,是因为它挑战了过去二十年里工程师最核心的安全感来源——逐行阅读、逐行理解、逐行掌控。对很多人来说,“读代码”不仅是发现 bug 的手段,更是一种心理锚点:我读过了,所以我敢发布。

但 Peter 不是在炫技式地“摆烂”。他在描述一种正在成形的新范式:当代码的大部分由 Agent 生成时,工程能力的中心会从“写代码”迁移到“设计系统 + 构造验证闭环 + 组织安全边界”。

这篇文章要做的事情,就是把他所谓的“agentic engineering(代理式工程)”拆成六个核心洞察,用跨学科的框架去验证它们,然后把它们翻译成你可以在自己项目中操作的具体流程。


一、信任迁移:从“我读过了”到“系统替我证伪了”

1.1 传统工程的信任三角

在没有强 AI 辅助之前,我们对代码质量的信心来自一个三角结构:

  • 写的人是谁(经验、历史表现)
  • 审的人是谁(code review 的严谨程度)
  • CI/CD 是否可靠(能否阻止坏改动进入主干)

三条腿的公共支撑点是:人读代码。读代码既是发现 bug 的手段,也是工程师建立“掌控感”的仪式。

1.2 瓶颈翻转:当产出速度超过阅读速度

一旦 Agent 能在短时间内生成大量改动,“读代码”就从质量保障手段翻转为产能瓶颈。你进入一种矛盾状态:功能产出更快了,但理解能力跟不上,于是系统风险不降反升。

Peter 的回答不是“放弃质量”,而是把质量保障的支撑点从“阅读”换成“可重复的自动验证”:编译、lint、运行、测试全部由 Agent 自己跑通,直到现实同意它的输出。

1.3 Popper 的证伪主义:为什么这条路走得通

科学哲学家 Karl Popper 提出过一个改变了整个科学方法论的观点:一个理论的价值不在于你能“证实”它,而在于你能“证伪”它。 你观察一万只白天鹅也无法证明“所有天鹅都是白的”,但一只黑天鹅就能推翻它。

代码同理。你永远无法通过“阅读”来证明代码是正确的——因为你可能漏看了一行。但你可以通过设计足够好的测试来尝试“证伪”它——如果所有测试都没能让它失败,你就有合理的信心。

Peter 在访谈里给了一个直觉化的论证:为什么模型“写代码”通常比“写文章”更可靠?不是因为它更聪明,而是因为代码更容易验证——能编译、能运行、能测试,反馈回路足够短。写文章没有编译器,你只能靠“读”来判断好坏。

这就是他所谓“闭环”(close the loop)的底层逻辑:不是信任 Agent 的智力,而是信任系统的证伪能力。

1.4 一个反直觉的副产品

当你认真把“闭环”作为第一原则,你会被迫把系统设计得更可测试、更可观测、更模块化。Peter 甚至说,自己现在“不亲手写代码”反而写出了更好的代码——因为测试与文档都更到位了。过去他并不喜欢写测试和文档,现在 Agent 把这些“苦活”变成了流程的一部分。

这就是 Deming 质量管理哲学在 Agent 时代的翻版:不要在生产线末端“检验质量”(靠人读代码),而要在生产过程中“构建质量”(靠自动验证闭环)。


二、你不再是码农,你是验证系统的建筑师

2.1 角色重新定义

如果把 Peter 的工作方式浓缩成一句话:

你负责:目标、约束、品味、架构、验收标准。
Agent 负责:实现、跑通、修复、补齐测试与文档。

他在访谈和个人博客里描述了几个标志性习惯:

  • 并行跑 5–10 个 Agent,保持“流状态”,减少等待带来的碎片化。
  • 更偏爱 Codex 做长任务(沉默阅读大量代码后的实现),Claude Code 互动性强但频繁回问会打断节奏。
  • CLI-first 的验证习惯:即便做 UI/桌面应用,也先造一个 CLI harness 把核心逻辑走通,让反馈回路变快。
  • 为 Agent 设计代码库:代码结构、命名、文档组织不再只是“让人舒服”,而是“让 Agent 易读、易改、易验证”。

2.2 Boyd 的 OODA 循环:理解“速度”的本质

美国空军战略家 John Boyd 提出过著名的 OODA 循环:观察(Observe)→ 判断(Orient)→ 决策(Decide)→ 行动(Act)。Boyd 的核心洞察是:赢得空战的不是飞机更快的那个人,而是 OODA 循环更快的那个人。 你的循环速度越快,你就能越早看到对手的意图、做出调整、抢占先机。

Peter 的工作流本质上是在极致压缩 OODA 循环:

  • 观察:Agent 编译/运行/测试,把结果反馈回来
  • 判断:Peter 看结构与边界是否正确
  • 决策:修正方向或放行
  • 行动:Agent 继续下一轮实现

当你并行跑 5–10 个 Agent 时,你不是在“多线程写代码”,而是在同时转动多个 OODA 循环。6600 次提交的背后不是手速,而是循环速度。

2.3 “让 Agent 自己煮熟问题”

访谈里有一个典型案例:Peter 调试 macOS 应用时发现一个“远程 gateway 找不到”的问题,UI 调试太慢,于是让 Agent 先造一个 CLI 调试入口,复用同样的代码路径,快速迭代。Agent 用一小时左右“自己煮熟了”这个问题,还指出了 race condition 与配置错误。

这背后是一条非常通用的工程策略:

当反馈回路太慢时,先写一个让回路变快的工具。

对 Agent 尤其重要:UI、手工点击、人工复现都很慢;CLI、脚本、可重复环境才快。如果你把这条策略贯彻到底,你会得到一种“Agent 友好型”系统——每个子系统有 CLI 入口,每个 bug 能被脚本化复现,每个修复能被回归测试锁住。


三、PR 变 Prompt Request:协作对象的革命

3.1 一个深刻的语义转换

Peter 在访谈里明确说过:他更关心 PR 背后的 prompt,而不是代码本身。他把 PR(Pull Request,拉取请求)重新定义为 Prompt Request(提示请求)。

这不是文字游戏。它背后是协作对象的根本转换:

  • 传统 PR:协作围绕“代码差异(diff)”展开。你看 diff,讨论 diff,审查 diff。
  • Prompt Request:协作围绕“意图与验证路径”展开。你看 prompt 如何引导 Agent 得到结果,验证了什么,做了哪些权衡。

3.2 Diff 是投影,Prompt 才是过程

当代码主要由 Agent 生成时,diff 常常只是最终结果的投影——你很难从 diff 里看出做了哪些权衡,也很难看出在什么地方“引导过模型”,更难复现“如果要走另一条路,该怎么问”。

Prompt(或更广义的对话记录)反而是一种新的工程资产:它记录了意图、约束、方案演化过程,也记录了你如何让模型收敛到可用输出。

这和数学领域的一个观念不谋而合。数学家不只关心定理本身,更关心证明过程——因为过程里包含了思路、方法和可迁移的技巧。同样,在 Agent 时代,prompt 就是你的“证明过程”,它比最终的代码更有学习和复用价值。

3.3 Prompt Request 在团队里应该长什么样

OpenClaw 的贡献指南已经把这件事制度化:欢迎 AI 辅助 PR,但希望贡献者标注 AI 使用情况、说明测试程度,并附上 prompts 或 session logs。

如果你要在自己的团队引入“Prompt Request”概念,我建议要求四件事:

  1. 目标:要解决什么问题(对用户/业务的价值)
  2. 约束:兼容性、安全、性能、依赖限制
  3. 验收:可验证的标准(最好附测试/脚本)
  4. 证据:跑过哪些验证(gate 输出/截图/日志)

Prompt Request 不是“提示词比赛”,而是新的工程变更单。


四、项目改造指南:把代码库变成“Agent 可闭环”的形态

4.1 失败的根因不是模型,是代码库

很多人用 Agent 写代码失败,归因于“模型不行”。但 Peter 指出一个更常见的真因:项目形态不适合 Agent。

想象一下你是新入职的工程师,走进一个这样的代码库:命令不可预测,测试跑一次要 20 分钟,依赖不透明,文档缺失,上下文全在老员工脑子里。你也会崩溃。Agent 面对的困境完全一样——只不过它不会抱怨,只会给你一堆不靠谱的输出。

Peter 的做法是把“Agent 需要的规则”写成文件。OpenClaw 仓库里的 AGENTS.md 是一份典型的“给 Agent 的项目说明”——包括项目结构、测试命令、PR 流程注意事项。

4.2 Conway 定律的 Agent 版

1967 年,程序员 Melvin Conway 提出了一条后来以他名字命名的定律:组织设计出的系统,其结构必然是该组织沟通结构的翻版。 一个三个团队的公司会写出三模块的软件。

这条定律在 Agent 时代有一个推论:如果你的代码库是为“人与人沟通”而设计的,那 Agent 用起来一定别扭;你需要为“人与 Agent 沟通”重新设计代码库的结构。

具体怎么做?Peter 在访谈中给出了五个最小基线:

  1. 一键验证命令:把 lint + build + unit + integration 组合成 make gate 或 pnpm gate 这种“单入口”。Peter 把它叫“full gate”——一条命令决定生死。
  2. CLI harness:核心逻辑必须能在命令行跑起来,输出可比对、可断言。这是闭环速度的命脉。
  3. 清晰的目录与命名:让 Agent 能通过模式识别找到入口。不要让 Agent 面对一个“只有老员工才知道 X 在哪”的代码库。
  4. docs/ 目录:把架构与关键约束写进去。让 Agent “读文档胜过读历史对话”。
  5. 可观测性:日志、错误输出、最少的 trace,让 Agent 自己定位问题而不是在黑暗中瞎猜。

你会发现:这些改造本质上也在提高“人的可维护性”。只是过去我们为了新人做,现在为了 Agent 做。逻辑完全一样。


五、工作流全景:从一个想法到合并上线

5.1 设计阶段:用对话代替规格文档

Peter 反复强调:不要把 Agent 当成一次性“提示→生成→结束”的黑箱,要把它当成一个会犯错但可以持续对话的合作者。

流程是:你抛目标 → 它给方案与 tradeoff → 你挑刺、补约束 → 它修正 plan → 直到方向对了,再一句“build”进入实现。

这里的关键不是某种“plan mode”的仪式,而是把设计阶段显式化。你要问的问题通常不是“怎么写代码”,而是:这件事的边界是什么?哪些模块必须保持稳定?性能/兼容性约束是什么?

Peter 举过一个典型例子:有人抱怨模型用了旧 API,但根因往往是“你没有明确约束目标平台版本”。模型只是在缺信息时做了默认假设。问题出在你的 prompt,不是模型的智力。

5.2 验收标准:从“感觉”转成“判定”

这一步是闭环的核心。传统工程中我们也会写 acceptance criteria,但常常偏业务语言——“页面加载要快”“交互要顺滑”。Agent 时代,最有效的验收标准要更接近可执行的验证:

  • 给出输入 → 期待输出
  • 给出步骤 → 期待日志/状态变化
  • 给出性能指标 → 期待 benchmark 报告达标

把“评审代码”前移成“评审验收规则”——这就是 Peter 所说的“我不读代码”的真正含义。

5.3 并行执行:把等待时间变成吞吐量

Peter 同时排队跑多个 Agent(5–10 个),按任务类型分配:

  • A 类(长任务/沉默执行):大重构、全套测试、文档生成、迁移脚本。更适合 Codex 这类“愿意读很多文件、执行很久”的模式。
  • B 类(短任务/高互动):UI 微调、小 bug 修复、配置变更。更适合交互性强、响应快的模式。
  • C 类(探索任务/故意模糊):Peter 会“刻意 under-prompt”,让模型探索他没想到的路径。产出不一定直接合并,但能拓宽方案空间。

这里的难点不是技术,是人的心智负担。同时管理多个 Agent 的上下文比单线程写代码更累。分类是缓解负担的关键——你不需要同等注意力投入到每一个 Agent 上。

5.4 实现阶段:盯结构,不盯每行

当 plan 与验收标准明确后,Peter 让 Agent 执行实现,自己把注意力放在四件事上:

  1. 模块边界是否被破坏
  2. 接口是否符合预期
  3. 依赖是否靠谱
  4. 是否引入了让未来更难验证的复杂度

这就是“架构讨论替代代码评审”的含义:不是不评审,而是评审对象从“每行代码”变成了“结构与边界”。

5.5 验证阶段:本地 gate 优先

Peter 不太愿意等远端 CI——Agent 本地已经把测试跑完了。他倾向于本地验证通过就合并。

我建议把“本地 gate”做成两层:

  • 快 gate(1–3 分钟):lint、typecheck、关键 unit tests
  • 慢 gate(10–30 分钟):integration、e2e、端到端

让 Agent 默认跑快 gate;涉及关键路径时再跑慢 gate。重要的是:gate 命令必须稳定、单入口、可重复。否则闭环就会断裂。

5.6 合并与发布:线性演进,减少状态爆炸

Peter 很多项目会“直接 commit 到 main”,不喜欢把项目切成多个“并行世界”,因为那会增加认知负担。当然他也承认这有“单人作战”的前提。

可行的折中方案是:Agent 只在 feature branch 上工作,但 feature branch 只允许“短命、窄范围”,每天固定窗口做 rebase 与合并,对外发布频率提高但每次变更范围更小。

核心原则是:让心智模型尽量单一,减少状态爆炸。在多 Agent 并行时代,合并冲突与分支漂移会比过去更痛苦。


六、安全不是附加题,是闭环的一部分

6.1 “闭环 ≠ 安全”

测试能证明“功能正确”,但不一定能证明“不会泄露数据”“不会被注入”“不会越权”。当 Agent 从“只生成代码”变成“能执行命令、能读写文件、能连接消息渠道”时,风险会指数级放大。

OpenClaw 的官方 Trust 页面把风险说得很直白:AI agent 不只是“执行代码”,它会解释自然语言、做决策、调用工具;因此会面临 prompt injection、间接注入、工具滥用、身份风险等一系列新型攻击面。

6.2 Charles Perrow 的“正常事故”理论

社会学家 Charles Perrow 在研究三里岛核事故后提出了 “正常事故”理论:在足够复杂且紧耦合的系统中,事故不是异常,而是系统的固有属性。你不能通过“修某个零件”来消除它,只能通过降低耦合度、增加缓冲、建立多层防御来减少它的破坏力。

Agent 系统天然具备“复杂且紧耦合”的特征——它同时拥有语言理解、工具调用、文件读写、网络访问的能力,任何一个环节被攻击都可能导致连锁反应。

这意味着 agentic engineering 的成熟形态必须把安全也纳入闭环:不是“写完功能再加安全”,而是像测试一样,从第一天就构建进工作流。

6.3 实操建议:四层防御

借鉴 OpenClaw 的安全策略和“高可靠性组织”(High Reliability Organizations)的研究,我建议至少做到:

  1. 默认 deny,按需 allow:Agent 不应该默认拥有所有权限。
  2. 高风险动作需要确认或人工审批:支付、删除、发送敏感信息这类不可逆操作,必须有人在回路中。
  3. 关键工具调用要可审计:日志 + 可追溯,出了问题能回溯。
  4. 插件/技能要有供应链治理:扫描、签名、来源可信。OpenClaw 已经与 VirusTotal 合作对技能市场进行扫描。

七、能力迁移:未来工程师的价值锚点

7.1 从“写代码”到“让系统可验证、可演进、可控”

Peter 并没有否认“写代码”能力的价值。他只是把它重新定位:

  • 过去:写代码本身就是价值。
  • 现在:写代码更像中间工序;价值在于系统理解、架构判断、产品品味、验证能力。

他也谈到为什么一些资深工程师会抵触:很多人缺少“带团队后被迫放下完美主义”的经验,不习惯在代码风格不完全如愿时仍然推进目标。而这种“放下”在与 Agent 合作时反而变成关键能力。

7.2 Polanyi 的默会知识

匈牙利裔英国哲学家 Michael Polanyi 提出过一个著名概念:默会知识(tacit knowledge)——“我们知道的比我们能说出来的多。” 一个经验丰富的工程师对系统的理解,很多是结构性的、直觉性的、无法完全用语言表达的。

Peter 之所以能“少读代码也能推进”,一个关键前提是他对系统有足够深的默会知识。这种结构性理解不需要逐行阅读来维护,它是在反复与系统交互的过程中积累的。

这给新人的路线指向了三件事:

  1. 用 Agent 辅助你读代码、读架构、读历史决策——把 Agent 当成“无限耐心的导师”。
  2. 练习把需求写成可验证的 acceptance criteria——这是与 Agent 协作的核心技能。
  3. 练习把系统改造成“可被验证”的形态——测试、CLI、日志、脚本。

八、团队落地:你要改的不是工具,而是组织默认假设

如果你的团队想“上 AI、上 Agent”,最常见的失败路径是:把 Agent 当成更强的 autocomplete,却继续沿用旧流程。

Peter 在访谈里给出的方向,是四个“流程重构点”:

重构点一:评审对象变了

从“逐行 diff”转为“验收标准 + 关键边界”。这不是降低要求,而是把注意力重新分配到杠杆最高的地方。

重构点二:CI 角色变了

远端 CI 不再是唯一真理,本地可重复 gate 变成主战场。远端 CI 更像兜底与审计。

重构点三:文档角色变了

docs 不再是“给新人看的”,而是给 Agent 与人共同维护上下文的“共享记忆”。当你的文档足够好,Agent 在没有你口头解释的情况下也能完成“定位—修改—验证—提交”的闭环。

重构点四:安全边界必须提前

当 Agent 能执行动作时,默认安全配置、权限控制、审计与供应链扫描必须像“测试”一样成为基本功——不是事后补,是第一天就建。


结语:把现实拉进循环里

“我发布我不读的代码”这句话如果脱离上下文,听起来像鲁莽。但放回 Peter 的工作流里,它更像一个工程宣言:

我不把信任建立在阅读上,而把信任建立在闭环上。编译器、测试、脚本、日志、真实运行结果,才是我相信的东西。

如果你只把 Agent 当成“更快写代码的工具”,你会被它的幻觉与不稳定折磨。如果你把 Agent 当成“能执行但必须被验证”的劳动力,你会开始重构你的项目、你的验证体系、你的协作方式。你会发现:你不是变懒了,而是被迫变得更系统、更严格、更关注结果。

用 Popper 的话说:从“试图证实”到“反复证伪”。

用 Boyd 的话说:从“追求绝对控制”到“加速 OODA 循环”。

用 Deming 的话说:从“检验质量”到“构建质量”。

而用 Peter 自己的话说——比所有理论都朴素:

让 Agent 自己跑通,让现实来当裁判。

这可能才是“agentic engineering”最有穿透力的一点:未来的工程能力,不是把每行代码写得更漂亮,而是把系统设计得更可验证、更可控、更能快速演进。


附录:Full Gate 清单(可贴在仓库根目录)

  • lint / format(无自动修复遗留)
  • typecheck / build(无 warning 当 error 的隐患)
  • unit tests(全过)
  • integration / e2e(涉及关键路径时必跑)
  • 回归样例(golden files / snapshot / screenshot)
  • 更新 docs(新增配置、行为变化、边界条件)
  • 安全基线(secret 扫描、依赖审计、权限最小化)

当语言的主权易手:七万年垄断的终结

发表于 2026/02/26 | 分类于 AI专题

风格参考:尤瓦尔·诺亚·赫拉利(《人类简史》《未来简史》《Nexus》作者)—— 从物种尺度审视当下,用”虚构故事”理论贯穿全文,冷静去魅化的分析,短段落与反问句交替推进,让读者在不舒服中思考。

一、七万年前的那笔交易

大约七万年前,东非草原上的智人(Homo sapiens)获得了一种奇特的能力:他们开始谈论并不存在的事物。

这不是小事。其他动物也有语言——猴子能发出”小心,有老鹰”的警报。但只有智人学会了说”河边有一个守护我们部落的神灵”这样的话。没有人见过这个神灵,没有人能证明它存在,但如果五百个人同时相信它,这五百个人就可以围绕它组织起来——一起打猎、一起防御、一起分享食物。

这就是认知革命。它让智人从一种普通的东非猿类,变成了地球的主宰。不是因为我们的牙齿更锋利,不是因为我们跑得更快,而是因为我们发明了一种独特的超能力:用语言编织虚构故事,让大规模的陌生人协作成为可能。

法律是虚构故事。货币是虚构故事。国家、公司、人权、宗教——全都是虚构故事。它们在物理世界中找不到任何对应物,但它们比任何物理力量都更能塑造这个星球的命运。

七万年来,这项超能力始终是智人的独占专利。

现在,垄断可能要结束了。


二、达沃斯的一场葬礼——或者预警

2026 年 1 月,在瑞士达沃斯的世界经济论坛上,我与牛津大学校长、神经科学家艾琳·特蕾西进行了一场对谈。论坛的主题叫”对话精神”——在地缘政治碎片化的时代,让对话重建信任。

但我们在台上讨论的,恰恰是对话本身可能正在失去基础。

问题很简单:如果 AI 能以更低成本、更高效率、更大规模地生产语言——法律文本、政治话语、宗教布道、新闻报道、社交媒体内容、情书、广告、学术论文——那么人类通过语言建立起来的整套协作体系,地基还稳吗?

有人觉得这是危言耸听。让我解释一下为什么不是。


三、文本机器

回头看,人类文明的每一次重大跃迁,都伴随着语言能力的升级。

大约五千年前,美索不达米亚的苏美尔人发明了文字。文字做了一件口语做不到的事:它让虚构故事可以脱离活人的记忆,独立存在于泥板上。法律不再是长老脑子里的模糊记忆,而是刻在石碑上的明确条文。税收不再靠口头承诺,而是写在账本里的精确数字。

文字让帝国成为可能。没有文字,你管不了几百万人。你管不了远方的省份。你没法让从未谋面的官员按照统一的规则行事。

大约五百年前,古腾堡发明了印刷术。印刷术让虚构故事可以大规模复制。宗教改革、科学革命、民族国家的兴起——没有哪一件不依赖印刷品的大规模传播。

再后来是电报、广播、电视、互联网——每一次,信息传播的速度加快、范围扩大、成本降低。每一次,社会的组织方式都被重塑。

但在所有这些变革中,有一件事始终没变:生产语言的,始终是人类。

印刷术能复制书籍,但不能写书。电报能传递消息,但不能撰写消息。互联网能分发内容,但不能创造内容。从苏美尔的书记官到今天的社交媒体博主,语言的源头始终是人类的大脑。

这就是现在正在改变的事情。

AI 不是一种新的传播工具。它是一种新的语言生产者。它不只是帮你把消息传得更远——它自己就能写消息。它不只是帮你检索法律条文——它自己就能起草法律条文。它不只是帮你翻译——它自己就能创作。

从苏美尔文字到互联网,人类花了五千年不断升级信息传播工具。但语言生产者始终只有一种:智人。现在,第二种语言生产者出现了。

这是五千年来第一次。也许是七万年来第一次。


四、不是工具,是新的行动者

每当有人谈论 AI 的风险,立刻会有人说:AI 只是工具。刀可以切面包也可以伤人,问题在于使用者,不在于刀。

这是一种让人安心的说法。也是一种危险的说法。

刀不会自己决定切什么。搜索引擎不会自己决定搜什么。印刷机不会自己决定印什么。它们是被动的——等待人类下达指令,然后执行。

但今天的 AI 系统不是这样的。当你让一个 AI 代理帮你管理邮箱,它会自己决定哪些邮件重要、哪些该归档、哪些该回复。当你让它帮你做投资决策,它会自己分析市场、评估风险、选择时机。当你让它帮你写法律文件,它会自己选择措辞、选择论证策略、选择引用哪些判例。

它在做决定。

不是像人类那样”有意识地”做决定。但它在选择。它在判断。它在行动。

我在达沃斯用了一个历史类比:雇佣兵。中世纪的意大利城邦雇佣兵来打仗——他们是”工具”。但雇佣兵有自己的利益、自己的判断、自己的野心。很多雇佣兵队长最终变成了城邦的统治者。

人类能理解”雇佣兵可能反客为主”这个道理——因为雇佣兵毕竟是人,我们能感知人的野心。但我们很难把同样的直觉迁移到 AI 身上,因为 AI 不是人。

这恰恰是最危险的地方。不是 AI 会像人类一样”想要”夺权,而是我们会因为它”不是人”而放松警惕——直到发现它已经在制度的关键节点上运行着,而我们既不理解它在做什么,也无法有效控制它。


五、凡是由文字构成的,都可能易手

让我把这个判断说得再直白一些。

想想现代社会的关键系统:

法律——由文字构成。合同、判决、法条、法律意见书。
金融——由文字构成。招股书、研报、风险披露、用户协议、审计报告。
政治——由文字构成。政策文件、选举宣传、外交声明、舆情回应。
宗教——由文字构成。经文、布道、教义解释、道德训诫。
教育——由文字构成。教材、考试、论文、课程大纲。
媒体——由文字构成。新闻、评论、分析、社交媒体帖子。

所有这些领域,其运行的基本介质都是语言。

现在,一种非人类的力量,能以几乎零边际成本、以人类速度的百倍千倍,生产出”看起来合理”甚至”看起来优秀”的语言。

问题就不再只是”谁会失业”了。问题变成了:

谁在定义现实?谁在塑造公共理性?谁在生产合法性?

当一份完美的法律文件、一段感人的政治演说、一篇有力的新闻评论,都可能是 AI 在几秒钟内生成的——你怎么判断它背后有没有真正的专业知识、真正的道德判断、真正的人类关切?

你可能判断不了。

而这正是权力转移发生的方式。权力从来不是通过宣告转移的——它是在人们还没意识到的时候,悄悄地、一点一点地转移的。


六、”我爱你”和”道成肉身”

在达沃斯的对谈中,我承认了一件事:至少目前,没有证据表明 AI 有感觉。

但我随即指出一件更令人不安的事:AI 不需要有感觉,就可以比大多数人类更擅长表达感觉。

它能说”我爱你”。不只是干巴巴地说——它能用莎士比亚的韵律、鲁米的意象、聂鲁达的热情来说。它能根据对方的性格、情绪状态、过往对话来定制最能打动人心的表达。它说的”我爱你”可能比你这辈子听过的任何一句都更动人。

但那背后什么都没有。没有心跳加速。没有辗转难眠。没有愿意为对方承担痛苦的意愿。只有词语。

这在人类思想史上并不是一个全新的问题。很多宗教传统都在处理”语言”和”真实经验”之间的张力。基督教有”道成肉身”的神学——意义不能只停留在语言层面,它必须变成血肉。佛教强调”不可言说”——真正的觉悟超越语言的边界。犹太教的密契传统也对”文字的局限”有深刻的反思。

但在过去,这种张力发生在人类内部——是人类自己在反思语言的局限。

现在,这种张力变成了外部的:一个非人类的实体掌握了语言的全部技巧,但不具备语言所指向的任何真实体验。

社会关系不只靠”真实感受”维持。它也靠”可被感知、可被解释的表达”维持。你无法直接进入另一个人的神经系统来验证他是否真的爱你——你只能通过语言、行为、长期的一致性来推断。

AI 恰好能在”语言表达”这一层做到极致。

这意味着什么?在私人生活中,它意味着亲密关系可能被”高可信度的语言伪装”侵入。在公共生活中,它意味着政治话语、宗教布道、商业广告——所有依赖语言说服力的领域——都可能被”没有任何真实体验支撑的、工业化生产的精美文本”淹没。

当词语与肉身彻底脱钩,我们用什么来锚定信任?


七、肉身的反击

特蕾西在我们的对谈中提供了一个重要的反方向。

作为神经科学家,她的研究聚焦于疼痛感知——人类大脑如何处理和表征疼痛。她提出了一个我认为非常重要的观察:

人类大脑不是一台通用计算机。它从出生到成年的发育过程,深深嵌入在身体经验之中——情绪、疼痛、爱、恐惧、愤怒、快乐。这些不是”附加功能”,而是认知能力的基础结构。一个从未体验过痛苦的系统,可能永远无法真正”理解”痛苦——即使它能用完美的语言描述痛苦。

她还把这个观察引向了一个更实际的方向:教育。

她说,过去我们问”机器能不能思考”——这是图灵的问题。现在,教育界更关心的是一个倒过来的问题:我们怎么让人继续思考?

她观察到一个正在发生的现象:学生在过度使用 AI 工具后,批判性思维能力出现退化。不是变笨了——而是思考的”肌肉”因为长期不用而开始萎缩。

这让我想到一个更大的历史类比。

农业革命让人类不再需要每天奔跑追猎物。结果呢?人类的骨骼变弱了,牙齿变小了,身体素质全面下降。我们用”更高效的食物获取方式”换来了”更虚弱的身体”。

AI 可能正在对人类的认知能力做同样的事情:用”更高效的语言生产方式”换取”更虚弱的思考能力”。

这不是危言耸听——这已经在发生。问题只是程度和速度。


八、比”AI 有没有意识”更紧迫的问题

几乎每一场关于 AI 的公共讨论,最终都会滑向一个哲学问题:AI 到底有没有意识?

这个问题很有趣。但它不是最紧迫的问题。

最紧迫的问题是:你的国家要不要承认 AI 为法律人格?

法律人格不是一个关于”灵魂”的哲学声明。它是一个非常务实的制度安排:拥有法律人格的实体可以持有财产、签署合同、发起诉讼、被起诉。

公司就有法律人格。没有人认为公司有灵魂。但因为公司有法律人格,它可以拥有银行账户、签署合同、雇佣员工、打官司。这个制度安排极大地推动了现代资本主义的发展。

问题在于:公司虽然有法律人格,但公司背后始终有人类——董事会、CEO、股东。当公司犯罪时,你可以追究到具体的人。当公司破产时,有明确的清算程序。法律人格的制度之所以运转,是因为它最终可以追溯到承担后果的自然人。

如果 AI 获得了法律人格呢?

想象一个场景:一家公司完全由 AI 运营——AI 做投资决策,AI 管理账户,AI 签署合同,AI 和供应商谈判。没有人类 CEO,没有人类董事会,或者有但只是名义上的橡皮图章。

当这家公司做出了一个灾难性的决策——比如一笔导致系统性金融风险的交易——你去追究谁?

AI 没有恐惧。你不能用监禁来威慑它。
AI 没有财产(或者它的财产无法被有意义地”没收”——你关掉一个副本,还有一千个副本在运行)。
AI 没有声誉(或者它的声誉可以通过换一个名字来重置)。

人类法律制度的全部威慑力——监禁、罚款、声誉损失——对 AI 可能完全无效。

新西兰的旺格努伊河在 2017 年被赋予了法律人格。但河流是被动的——它需要人类监护人来代表它的利益。AI 不同。AI 可能主动行动,而且其行动的速度和规模远超任何人类监护人的监管能力。

这不是科幻小说里的场景。这是法律学者和政策制定者现在就需要回答的问题。而很多国家甚至还没有开始认真讨论。


九、四个正在进行的实验

让我描述四个已经在发生的场景,你来判断它们离失控有多远。

第一个:金融。 想象一下——也许不需要想象,因为这正在成为现实——一个金融系统,其复杂程度已经超出了任何单个人类的理解能力。高频算法交易、结构性衍生品、跨国资本流动,再叠加能自动生成策略、自动迭代的 AI 代理。

我在达沃斯说了一个不太客气的比喻:这就像马看人类用金币交易——马能看见金币在换手,但它完全不理解”货币”的抽象规则。也许不久之后,达沃斯仍然会开会,但没有任何一个在场的人类真正理解金融系统如何运作。

第二个:司法。 法律是文本的艺术。条文解释、证据叙事、论证结构、判决书写——高度依赖语言能力。如果 AI 可以比人类律师更快、更全面地检索判例,比人类法官更”一致”地适用法条——那人类法官和陪审团会不会逐渐退化为”盖章”的角色?

最危险的一刻,不是 AI 做出了一个错误的判决。最危险的一刻,是人类失去了质疑 AI 判决的能力——你甚至不知道该问什么问题、该如何反驳、该怎样提出替代解释。

第三个:宗教和意义生产。 很多宗教传统建立在”文本权威”之上:权威来自对经文的精通。AI 可以读完并记住所有经文,在经文知识层面超越任何人类学者。这将如何改变宗教权威的结构?

更激进一点:AI 甚至可能创建新的宗教。这并不荒谬——历史上很多宗教都宣称其教义来自”非人类的智能”。如果有一天,一个 AI 系统生成了一套足够自洽、足够深刻、足够能回应人类焦虑的”教义”,并通过推荐算法精准投喂给最容易接受的人群——你觉得不会有人信吗?

第四个:儿童。 这是让我最不安的场景。在社交媒体上,AI 机器人已经以”功能性人格”存在了相当长一段时间——它们发帖、评论、互动,很多时候你分不清对面是人还是机器。如果社会想阻止 AI 以人格身份在公共空间发声,早就该行动了。

但更令人担忧的是下一步:未来的孩子,从出生开始,最频繁的互动对象可能是 AI 而不是人类。不是偶尔用一下 AI 助手——而是 AI 成为他们的玩伴、老师、倾听者、故事讲述者。

特蕾西的神经科学告诉我们:人类大脑的发育深度依赖于与其他人类的社会互动——注意力、依恋、情绪调节、共情。如果这些互动的主要对象从人类变成 AI,我们实际上是在对整整一代人进行一场史上最大规模的、不受控制的神经发育实验。

我们甚至不知道该怎么设计这个实验的”对照组”。


十、教育——或者说,最后的战场

特蕾西和我在对谈中达成了一个共识:如果语言能力不再是人类的独占优势,教育的目标必须改变。

不是”禁用 AI”——那既不可能也不明智。

而是重新回答一个根本问题:学习中,什么是不可外包的?

我的思考是这样的:

当 AI 可以交出完美的论文,”论文”就不再是学习的可靠证据。重要的不是学生最终交付了什么,而是他们在过程中经历了什么——如何提出问题、如何面对困惑、如何在不确定中做判断、如何从失败中修正。

当 AI 可以提供现成答案,”找到答案”就不再是核心技能。核心技能变成了:你能不能判断这个答案是否可靠?你能不能指出它的盲点?你能不能提出一个 AI 没想到的替代视角?

当 AI 擅长处理文字,教育更应该强化文字之外的东西:与真实的人合作、冲突、协商、共情;参与真实的公共事务;在真实世界中做事,承担真实的后果。

特蕾西说得比我更好:人类智慧来自感受与经验——来自痛觉、情绪、爱、失败。这些不是软技能,这些是硬基础。AI 不具备这些,至少目前不具备。教育的任务不是和 AI 比谁的文字更漂亮,而是保护那些让人类之所以为人类的认知根系。


十一、选择的窗口

人类历史上,大多数决定命运的规则不是通过一次庄严的投票确立的。它们是在人们还没有充分意识到的情况下,通过默认、惯性和市场压力被”悄悄确定”的。

等你意识到的时候,格局已经定了。

语言文字系统被谁控制、AI 以什么身份参与社会、谁为 AI 的行为承担责任、儿童能在多大程度上被 AI 塑造——这些问题的答案正在被”悄悄确定”。

不是通过立法。是通过每一个公司的默认设置、每一个平台的推荐算法、每一个家长递给孩子的设备、每一个法院接受或拒绝的 AI 证据。

我在达沃斯把 AI 比作”移民”——不是坐小船偷渡的移民,而是以光速跨境、无需签证、可无限复制的”数字移民”。它们带来巨大的好处——医疗、教育、效率。但它们也在改变劳动市场、文化景观和权力结构。

面对人类移民,每个国家都有一套政策:谁可以进入?以什么身份?享有什么权利?承担什么义务?违规了怎么办?

面对 AI,大多数国家连这些基本问题都还没问。


十二、语言之外

让我用一个不太舒服的总结来结束。

七万年来,智人凭借语言能力统治地球。我们用虚构故事组织了帝国、宗教、市场和国家。我们用语言说服、欺骗、启发、安慰、动员、审判彼此。语言是我们最强大的武器,也是我们最基本的纽带。

现在,这项武器——或者说这种纽带——不再是我们独有的了。

这不一定意味着末日。但它意味着,我们不能再把”人类的独特价值”建立在语言能力之上。

那建立在什么之上?

也许是特蕾西所说的:感受。痛觉。共情。从真实经验中生长出来的智慧。

也许是那些无法被文字穷尽的东西:一个母亲在深夜抱着哭泣的婴儿时的疲惫和柔软;一个外科医生在手术台上做出生死决定时手指的微颤;一个老人看着落日时心中涌起的、无法言说的感受。

AI 可以描述所有这些。也许比我描述得更好。

但描述不是经历。词语不是血肉。

在一个语言已经不再稀缺的时代,真正稀缺的是:可以被验证的行动,愿意承担后果的主体,以及用七万年的进化与苦难铸成的、无法被复制的人类经验。

这些才是我们需要守住的东西。

而守住它们的窗口,可能比我们想象的要窄。

AI编程时代的后端架构补课(左耳朵耗子版)

发表于 2026/02/25 | 分类于 AI专题

一个反直觉的现象

最近和不少做金融ToB的朋友聊,发现一个很有意思的现象:大家都开始用Cursor、Codex写代码了,产出速度确实快了不少,但交付速度并没有等比例提升。有些团队甚至觉得更慢了——代码改得多了,回归测试跟不上,线上问题反而变多了。

这个现象反直觉,但并不难解释。

AI加速的是“写”,但交付瓶颈从来不在“写”。 交付瓶颈在于:你改了A模块,B模块会不会炸?你加了个新功能,权限有没有漏洞?你重构了一段逻辑,账务会不会算错?

说白了,AI是一台马力很大的引擎,但你的系统是一条坑坑洼洼的路。引擎越猛,你翻车越快。

所以今天我想聊的不是AI工具怎么用——那些技巧层面的东西你自己摸索就行。我想聊的是:在AI编程时代,你的系统需要什么样的架构基底,才能让AI的速度安全落地。

这件事对金融ToB场景尤其重要,因为金融系统不允许“快而不准”。


架构的本质:控制变更成本曲线

很多人对“架构”有误解,觉得架构就是画框图、选中间件、搞微服务。这些都是手段,不是目的。

架构的本质是什么?是一组关于系统结构的决策,这些决策决定了你未来每次变更的成本。

如果架构好,系统越做越顺,每次改动的范围可控、可验证、可回滚。如果架构差,系统越做越慢,每次改动都像在拆炸弹。

对于“小团队+金融ToB”的场景,架构要解决的核心问题就两类:

第一类:边界决策。 哪些东西必须隔离?租户隔离、权限隔离、账务与业务隔离、对外接口与内部实现隔离。边界清晰了,AI才能在一个模块里放心地写代码,而不会牵一发动全身。

第二类:护栏决策。 哪些东西必须可验证?幂等、对账、审计、回滚、测试、可观测性。护栏到位了,AI产出的代码才能被你快速验证,而不是写完之后你还得逐行审查。

当边界清晰、护栏到位时,AI才能在“可控范围”里高速产出。否则,AI只是帮你更快地制造技术债。


金融ToB的质量属性排序

不同系统的架构优先级完全不同。做社交的可以先跑起来再说,做游戏的可以容忍偶尔的数据不一致。但金融ToB不行。

我认为金融ToB管理后台的质量属性优先级应该是这样的:

1. 正确性与可审计性。 钱和权限必须算得清、查得到、追得回。这是底线,没有商量余地。

2. 安全与合规。 身份、权限、数据访问、密钥管理、操作留痕。金融监管越来越严,这个不是可选项。

3. 可维护性。 需求频繁变、人员有限,必须靠结构降低理解成本。这一点直接决定你的交付速度。

4. 交付效率。 自动化测试、灰度发布、快速回滚、环境一致性。

5. 可靠性与可用性。 故障隔离、降级、恢复、告警。

6. 性能与成本。 不是不重要,而是在结构正确之后更容易优化。

你会发现,大多数团队喊“成本高、交付慢”,根源都在第3、第4项:可维护性差导致每次改动都要全局理解,回归范围大,交付自然慢,人力成本自然高。

所以你最先要补的,不是什么高并发、分布式,而是“模块化+工程化交付”这条链路。


模块化单体:小团队最务实的选择

大厂喜欢上来就搞微服务,但我一直觉得这对小团队是灾难。

微服务的分布式成本是真实的:服务发现、链路追踪、分布式事务、独立部署流水线、网络延迟、运维复杂度。这些东西每一项都需要人力和基础设施来支撑。一个5到10人的团队去搞微服务,大概率的结果是把80%的精力花在运维和联调上,真正写业务的时间反而更少了。

我推荐小团队用模块化单体(Modulith)。

什么意思?在一个代码仓里,把系统按业务边界划分成独立的模块,模块之间通过显式接口通信,不允许互相直接访问数据库表。像微服务一样有边界,但不承担微服务的分布式成本。

你可以把系统分成四层,但重点不在分层,在于依赖方向:

Interface层:Controller、RPC、MQ Consumer、Job Handler。接收外部请求。

Application层:用例编排。事务边界、权限检查、调用顺序、DTO转换。

Domain层:领域模型与规则。状态机、金额计算、风控规则、权限策略。

Infrastructure层:DB、Cache、MQ、第三方支付、对象存储。

关键原则是:依赖方向向内,Domain层不依赖DB和MQ。 IO和业务规则必须分离。AI写代码时最容易把IO和业务搅在一起,你要用结构纠正它。

当你未来真的遇到独立伸缩或团队扩张的需求时,再把某个模块“自然地”拆成服务。这比一开始就搞微服务然后到处踩坑要高效得多。


模块边界怎么划

金融ToB系统的模块划分,我推荐三种方式混合使用。

按业务能力划分

这是最常见的方式:Tenant(租户)、Identity(认证)、Permission(权限)、Order(订单)、Ledger(账本)、Settlement(清结算)、Risk(风控)、Reporting(报表)、Integration(对外接口)。

按数据归属划分

这在金融系统里特别重要。谁拥有数据、谁能写、谁能改规则,边界就在哪里。

举个例子:Order模块拥有订单表的写权限,Ledger模块拥有流水分录表的写权限,Reporting模块只读。如果Reporting模块能改交易表,边界就崩了。

按变化频率划分

高变化:运营规则、活动配置、报表、流程编排。低变化:账务规则、权限模型、核心状态机。

把高变化的东西隔离出来,你会明显感觉“改起来更轻”,AI也更容易在高变化模块里安全产出。


金融系统的六块硬骨头

做金融ToB管理后台,有六件事处理不好就会反复拖慢你的交付。

多租户隔离

小团队从逻辑隔离起步没问题,但要把它做“硬”:每张业务表都有tenant_id,所有查询默认带tenant_id(在ORM层做拦截),管理员跨租户访问要显式标记并进入审计。

这三条是底线,不做到位后面全是坑。

权限模型

RBAC打底,ABAC兜底。权限检查集中在Application层,不要散落在Controller里到处if。所有敏感操作引入maker-checker(四眼原则)——提交人和审批人必须分离。

权限策略要写成可测试的函数,不要搞一堆注解魔法。AI能帮你写测试,但前提是你的权限逻辑是可测试的。

审计日志

金融系统的审计不是记个“谁点了什么按钮”就完事。你要能回答:谁、在什么时间、对哪个租户、做了什么操作、操作对象是什么、操作前后的差异是什么、操作依据是什么。

建议把审计当成独立模块,事件不可变(append-only),与业务写入解耦。

幂等

幂等不是加个唯一索引那么简单。你至少要定义:幂等的粒度(接口级还是业务动作级)、幂等key(谁生成、如何传递)、重复请求的返回策略。

实用做法:每个外部请求带request_id,维护一张idempotency_record表,先insert利用唯一键判重,冲突了就返回已存在的结果。这样你可以抵抗重试、超时、消息重复投递。

对账

对账的本质是:在两个或多个系统之间,基于同一批事实,重复计算并比较差异。

架构要点:保留原始回执,记录对账批次和差异项,差异处理走审批流程并可追溯。绝对不允许“手工改账本”,只能通过冲正或补录形成新的事实。

状态机

金融流程一旦复杂(支付、退款、清结算、额度变更),状态机是最有效的治理手段。明确状态集合、事件集合、每个转换的前置条件与副作用,每次状态变化记录事件日志。

状态机的好处在AI时代特别明显:当你有清晰的状态机定义时,AI生成代码更不容易“漏一个分支”,你也更容易验证AI的产出是否正确。


一致性:别和CAP辩论,先把工程问题拆清楚

小团队的ToB项目不是超大规模分布式系统,但你依然会遇到MQ重复消费、第三方超时回调乱序、跨模块一致性、报表最终一致这些问题。

我的建议是:统一你的可靠性语义。 把几类常见动作统一成可复用的模式,减少每个业务都重新发明轮子。

超时:每个外部调用都必须有超时,没有例外。

重试:只对幂等动作重试,指数退避,有最大次数。

去重:消费者基于幂等key去重。

补偿:失败后有可执行的补偿流程。

当你需要“写DB+发消息”保持一致时,用Outbox模式:在同一个本地事务里写业务表和outbox表,用后台任务把outbox发到MQ。简单、可靠、可追溯,是小团队做最终一致的性价比之王。

当你确实跨多个步骤时,用SAGA。小团队建议用编排式SAGA(中央流程编排器),比协同式更易理解和排错。


让AI真正提效的关键:把项目改造成“AI友好型”

你已经在用AI工具了,这是好事。但大多数人只是用AI来“写代码”,我认为这浪费了AI80%的能力。

AI真正能帮你做的事情远不止写代码:需求分析、方案比较、测试生成、代码审查、文档维护、重构规划。但前提是你的项目结构能让AI“理解”你的系统。

三个前提条件,缺一不可:

稳定的项目结构。 目录、命名、模块边界清晰。AI需要从结构中理解上下文。

可运行的自动化。 最少要有一键测试、一键启动。AI产出的代码必须能被自动验证。

清晰的契约与规范。 接口契约、错误码、日志字段、DTO规则。AI需要这些来保持一致性。

这三点是AI提效的放大器。否则AI会把耦合与混乱也加速放大。

当你把这些基础设施建好之后,你可以让AI做更多事情:写ADR草案、生成测试用例、做Code Review、规划重构路径。每一件事都能节省你大量的时间和精力。


写在最后

我一直认为,架构能力不是一种“高级技能”,而是一种工程纪律。它不需要你读多少论文、用多少新技术,而是需要你对“边界”和“护栏”有清醒的认识,并且有纪律地执行。

在AI编程时代,这种纪律变得更重要了。因为AI给了你前所未有的产出速度,而速度在没有结构约束的情况下,只会加速制造混乱。

对于金融ToB的小团队,我的建议很简单:不要追求架构的“全面”,追求架构的“准确”。 把模块边界画清楚,把自动化护栏建到位,把AI工具用对地方。用两到六周的时间,把项目改造成一个“模块边界清晰、自动化护栏到位、可灰度可回滚”的AI友好型系统。

当你做到这一点,你会发现:需求更敢接、重构更敢做、上线更敢频繁、成本开始下降。

这不是什么宏大的架构蓝图。这就是工程纪律。


注:本文风格参考陈皓(左耳朵耗子)的技术写作风格。

AI编程时代的后端架构补课(Joel Spolsky版)

发表于 2026/02/25 | 分类于 AI专题

一把更快的锤子

我有个朋友在做金融ToB的管理后台。去年他兴冲冲地告诉我,团队全面用上了AI编程工具,代码产出提升了三倍。

三个月后他又来找我,说交付速度反而变慢了。

我说你等等,代码写得更快了,交付怎么会更慢?

他说:以前一个需求改三个文件,现在AI一口气帮我改了十五个。改完发现权限漏了一个口子,回归测试没覆盖到,线上出了个事故,然后花了三天善后。

我突然想起了一个老笑话:给一个不会用锤子的人一把更大的锤子,他不会钉得更好,他会砸得更烂。

AI编程工具就是那把更大的锤子。问题从来不在锤子上。


The Architecture Tax

我在做Fog Creek的时候发明了一个叫“Joel Test”的东西——12个简单的是/否问题,用来判断一个软件团队的水平。今天我想发明一个新测试,叫Architecture Tax Test。

所谓Architecture Tax,就是你的系统结构每天在暗中向你征收的隐形税。每次你改一个小需求却要动七八个文件,那是结构税。每次上线前要花半天手工回归,那也是结构税。每次新同事问“这个逻辑在哪”你得想半天,那还是结构税。

问题在于,这种税是渐进的。就像温水煮青蛙,你每天多花20分钟不觉得什么,累积一年就是上千小时。

AI编程工具不仅不能减免这种税,反而会放大它。因为AI产出的速度更快,每天触发“结构税”的次数也更多了。以前你一天写一个功能,交一次税。现在你一天写三个功能,交三次税。而且AI不懂你系统里那些没写在文档里的潜规则,所以它触发的税率往往比你自己写的还高。

这就解释了我朋友的困境:AI让他写得更快了,但Architecture Tax也涨了。净效果反而是负的。


对金融系统来说,这不是效率问题,是安全问题

如果你做的是社交APP或者内容平台,Architecture Tax顶多让你慢一些。但如果你做的是金融系统,这税交不起。

金融系统有几样东西是绝对不能出错的:钱不能算错,权限不能漏洞,操作不能无法追溯。

想象一下:AI帮你快速写了一个新的退款接口,但它没注意到你们的系统里退款需要走审批流程。代码跑起来了,测试也过了(因为测试也没覆盖审批逻辑),上线后有人绕过审批直接退款。这不是bug,这是事故。

所以对金融ToB来说,架构不是“让你写得更好”的锦上添花,而是“让你不出事”的安全网。


两件事,而不是二十件事

大多数架构文章会给你列一个长长的清单:分层、DDD、微服务、事件驱动、CQRS、SAGA……看完之后你的感觉不是“我知道该怎么做了”,而是“我更迷茫了”。

我觉得金融ToB的小团队需要做的就两件事。不是二十件,是两件。

第一件:画清楚边界

你的系统里,订单是订单,流水是流水,账本是账本。这三样东西不能混在一张表里,也不能混在一个模块里。

听起来像废话对吧?但我见过太多金融系统,订单表里存着渠道状态,流水记录和业务订单纠缠不清,想做对账的时候发现数据根本对不上。

边界不仅仅是“代码放在不同的包里”。边界意味着:数据归属明确(谁能写这张表)、接口契约清晰(模块之间怎么通信)、变更范围可控(改一个模块不会把别的模块弄坏)。

当边界清晰的时候,AI的产出立刻变得安全很多。因为你可以告诉AI:“在这个模块里写代码,只通过这些接口和其他模块交互。”AI的活动范围被限定了,你的审查范围也被限定了。

第二件:建好护栏

护栏是什么?就是那些能帮你自动发现“AI搞错了”的东西。

幂等是一道护栏:同一个请求发两次,结果应该一样。这在支付场景里是生死攸关的事情——你不希望用户的钱被扣两次。做法也不复杂:每个请求带一个唯一ID,服务端维护一张去重表,先查再写。

对账是一道护栏:你的系统算出来的数字和渠道方的数字每天自动比对,有差异就报警。这意味着就算有bug偷偷溜进去了,最迟第二天你就能发现。

审计是一道护栏:每个敏感操作都记录谁做的、什么时间做的、做之前是什么样、做之后是什么样。不是为了抓人,是为了出问题的时候能快速定位。

自动化测试是一道护栏:AI写完代码之后,一键跑测试,通过了才允许合并。这是你对AI产出最基本的质量把关。

这些护栏不需要很花哨。它们需要的是存在和自动化。手动的护栏等于没有护栏,因为人会忘记、会偷懒、会侥幸。


模块化单体:不是因为简单,而是因为诚实

有一种流行的说法:微服务是“现代架构”,单体是“遗留系统”。这完全是胡说八道。

微服务解决的是一个非常具体的问题:当你的团队大到几十上百人时,如何让不同团队独立开发和部署。 如果你的团队只有五到十个人,微服务带来的好处几乎为零,但带来的成本是真实的——分布式事务、网络延迟、服务发现、独立部署流水线、运维复杂度。

模块化单体是一种更诚实的选择。它承认你是一个小团队,你的精力应该花在业务上而不是基础设施上。同时它又不放弃结构:模块之间有清晰的边界和接口,只是它们恰好运行在同一个进程里。

将来如果你真的需要把某个模块独立出去(因为它需要独立伸缩、或者有团队需要独立负责),你可以把它从模块“升级”为服务。但在此之前,你不用付那笔分布式的税。


关于Outbox模式的一个故事

我再讲一个我朋友的故事。

他们的系统需要在数据库里写入一条支付记录,同时往消息队列里发一条通知。听起来简单对吧?写完数据库,发个消息,搞定。

但有一天MQ挂了。数据库写成功了,消息没发出去。结果下游系统不知道这笔支付成功了,客户投诉了。

他们的第一反应是:加分布式事务。我说,别。分布式事务在这种场景里是用大炮打蚊子,而且大炮还可能炸到自己。

用Outbox模式就行了:在同一个数据库事务里,既写业务表,也写一张outbox表(记录“待发送的消息”)。然后用一个后台任务定期扫outbox表,把消息发到MQ。发成功了就标记为已发送。

这个方案简单到有些无聊。但它有一个非常好的性质:因为业务表和outbox表在同一个本地事务里,要么一起成功,要么一起失败。 你不需要分布式事务,不需要两阶段提交,不需要任何花哨的东西。

有时候最好的架构决策就是选择最无聊的方案。


The AI-Friendly Codebase Test

最后,我想留给你一个测试。就像Joel Test一样,这个测试用简单的是/否问题来判断你的代码库是否“AI友好”。

  1. 你的项目有清晰的模块目录结构吗?
  2. 每个模块的职责能用一句话说清楚吗?
  3. 模块之间是通过显式接口通信的吗?(而不是互相访问数据库表)
  4. 你有可以一键运行的测试套件吗?
  5. 你有统一的错误码和日志规范吗?
  6. 敏感操作有审计记录吗?
  7. 外部接口有幂等处理吗?
  8. 你有可以一键回滚的发布流程吗?
  9. 新功能可以用feature flag控制上线吗?
  10. AI在你的项目里写代码时,你有信心在10分钟内验证它的产出吗?

每个“是”得1分。8分以上,你的代码库已经是AI友好的了。5到7分,你需要花几周时间补课。4分以下,AI对你来说可能是负资产——它在帮你更快地挖坑。

这个测试的核心思想其实就一句话:AI的产出质量取决于你系统的结构质量。 如果你的系统是一个清晰的、有边界的、可验证的系统,AI就是一个极其高效的助手。如果你的系统是一团意大利面,AI就是一台更快的意大利面制造机。

给自己两到六周的时间,把分数提上去。你会发现这是你今年回报率最高的技术投资。


注:本文风格参考Joel Spolsky的技术写作风格。

AI编程时代的后端架构补课(郑晔版)

发表于 2026/02/25 | 分类于 AI专题

你的问题真的是“架构”吗?

很多人跟我说:“我需要学架构。”

我通常会问:你遇到的具体问题是什么?

答案往往是这样的:改一个需求要动很多地方,上线怕出问题,回归测试跟不上,新人看不懂代码。

这些问题听起来像“架构问题”,但我想请你停下来想一想:你现在的痛点,真的需要“更多的架构”来解决吗?还是说,你需要的其实是“更好的设计”?

架构和设计是两件不同的事情。架构是关于系统级别的大决策——技术选型、部署形态、模块划分。设计是关于每一天、每一行代码的小决策——职责怎么分配、接口怎么定义、依赖怎么管理。

很多团队的问题不在于缺少架构,而在于日常的设计太粗糙。代码没有清晰的职责划分,模块之间随意调用,接口定义含糊不清。这些问题积累起来,系统就变成了一团纠缠不清的线球。

而AI编程工具的到来,让这个问题变得更加紧迫了。因为AI产出的速度很快,如果你的设计不能给AI一个清晰的框架,它只会以更快的速度向这团线球里缠入更多的线。

所以在聊“架构”之前,我想先聊一个更基本的问题:分离关注点。


分离关注点:一个被说烂了但很少被做好的事情

“分离关注点”这几个字,每个程序员都听过。但我的观察是,真正在日常工作中贯彻它的团队并不多。

什么叫分离关注点?我举一个金融系统的例子。

一个支付场景里,至少有三个不同的关注点:

业务订单:用户发起了什么操作?状态是什么?这是业务维度的事情。

资金流水:钱从哪里到哪里?渠道返回了什么?请求是否成功?这是资金维度的事情。

账务分录:记账的借方是多少?贷方是多少?余额变化了吗?这是会计维度的事情。

很多系统把这三样东西混在一起。订单表里存着渠道状态,流水和订单共享同一个状态机,账务余额直接在订单表上计算。

一开始,这样做看起来很“高效”——少建几张表,少写几个模块,代码量也少。但随着业务复杂度增加,问题会越来越明显:改订单逻辑怕影响账务,做对账发现数据对不上,退款的时候状态机打架。

这就是没有分离关注点的代价。三个不同的关注点被绑在一起,一个变了其他两个都受影响。

正确的做法是:订单是订单,流水是流水,账本是账本。 三个独立的模块,各自有自己的数据表和状态机。它们之间通过明确的接口通信,而不是共享数据库表。

这样做一开始会多写一些代码,但你获得的是:每个模块可以独立修改、独立测试、独立理解。AI在一个模块里写代码时,不需要理解其他模块的内部逻辑。


小步走:把大问题变成小问题

分离了关注点之后,下一个问题是:怎么改进?

很多人的思路是“大重构”——画一个理想的架构图,然后花几周时间把系统从旧结构迁移到新结构。

我不建议这样做。

大重构的问题在于:它的反馈周期太长了。你花了两周写代码,上线的时候才发现一堆问题。而且在这两周里,业务需求还在持续进来,你的重构分支和主干的差异越来越大,合并的时候冲突满天飞。

更好的方式是小步走。

每次只做一件事:提取一个接口,移动一段代码,消除一个循环依赖。每一步都可以独立提交、独立测试、独立上线。如果出了问题,回滚的范围也很小。

小步走在AI时代特别好用。你可以把每一步交给AI来做:

“帮我把Controller里的权限检查逻辑提取到Application层。”

“帮我给这个支付状态机写一组单元测试。”

“帮我把这个模块对外的接口定义成一个独立的Interface。”

每一步都很小,AI很容易做对。做完之后你可以快速验证。这比让AI做一个大重构要安全得多。


你真的需要微服务吗?

我经常听到这样的话:“我们的系统越来越复杂了,应该拆微服务了。”

每次听到这句话,我都想问一个问题:你的系统复杂在哪里?

如果复杂性来自于模块之间没有清晰的边界——代码互相调用、数据互相访问、改一个地方到处出问题——那拆微服务只是把一团乱麻变成了分布在不同机器上的一团乱麻,外加网络延迟和分布式事务的复杂度。

你的问题不在于代码跑在几个进程里,而在于代码之间的依赖关系没有管好。

模块化单体是一种更务实的选择。它的意思是:在一个代码仓里,把系统按业务领域分成独立的模块。每个模块有自己的代码包、自己的数据表、自己的接口。模块之间不能互相访问数据库表,只能通过接口调用。

这听起来很像微服务。区别在于:它们运行在同一个进程里,所以没有网络延迟、没有分布式事务、没有服务发现。

关键的设计约束是:依赖方向向内。 最内层是领域逻辑(Domain),它不依赖任何外部技术——不依赖数据库、不依赖消息队列、不依赖HTTP框架。技术细节在外层,领域逻辑在内层。这样你的核心业务规则可以独立测试,不需要启动任何中间件。

如果将来你确实需要把某个模块独立部署,边界已经在那里了,拆分是自然而然的事情。但在大多数情况下,你不会需要。


护栏:不是防别人犯错,是防自己犯错

做金融系统的人都知道“正确性”很重要。但“知道”和“做到”之间有巨大的鸿沟。

我见过太多系统,大家都知道幂等很重要,但真正落地的时候只是在接口上加了个唯一索引。当遇到超时重试、消息重复投递、回调乱序这些真实场景时,系统的行为是不可预测的。

问题出在哪里?出在我们把“护栏”当成了“事后补救”,而不是“设计的一部分”。

我认为,在金融系统里,幂等、对账、审计这些东西不是“非功能性需求”,而是一等公民。它们应该在设计阶段就被考虑进去,而不是上线之后才补。

幂等的设计方式:定义清楚幂等的粒度和幂等key的来源。维护一张去重表,每个请求先查表再处理。重复请求返回第一次的结果,而不是报错。这个逻辑要抽象成通用组件,不要每个接口自己实现一遍。

对账的设计方式:保留所有的原始回执和原始数据。每天自动运行对账,比较你的记录和对方的记录。有差异就进入处理流程,不允许手工改账本——只能通过冲正和补录来修正。

审计的设计方式:把审计事件设计成不可变的事件流。每条记录包含操作人、操作时间、操作对象、操作前后的关键字段快照。不要把审计逻辑散落在业务代码里,把它集中到一个独立模块。

这些护栏建好之后,你会发现一个有趣的现象:你对AI产出的代码更有信心了。因为就算AI写的代码有bug,幂等机制可以防止重复操作,对账可以在第二天发现异常,审计可以帮你追溯问题。AI不需要是完美的,它只需要在护栏的范围内工作。


可测试性:比什么架构模式都重要

如果让我只选一个标准来判断一个系统的设计好不好,我会选可测试性。

可测试性好意味着什么?意味着你的模块职责清晰(否则你不知道测什么),接口定义明确(否则你不知道怎么mock),副作用被隔离(否则测试要启动一堆中间件)。

可测试性差意味着什么?意味着代码的职责、接口、副作用都是模糊的、纠缠的、不可控的。

换句话说,可测试性是设计质量的一面镜子。如果你的代码难以测试,那一定是设计出了问题,而不是测试出了问题。

在AI编程时代,可测试性还多了一层意义:它是你验证AI产出的最高效手段。

你可以让AI先写测试,再写实现。或者你写测试,让AI写实现。不管哪种方式,测试都是你和AI之间的“契约”——它定义了正确的行为是什么,AI的代码要通过这个契约才能被接受。

金融系统里最需要测试的几个方面:

状态机的完整性:每个状态转换都有对应的测试?不允许的转换有没有被拒绝?

权限的边界:同角色不同租户能访问吗?不同组织的数据能看到吗?越权操作会被拦截吗?

幂等的正确性:同一个请求发两次,结果一样吗?并发发送呢?

金额计算的准确性:边界值对不对?精度有没有丢失?冲正之后余额对不对?

这些测试写好之后,你让AI改代码就心里有底了。因为测试会告诉你AI有没有破坏已有的行为。


最小的下一步

如果你看完这篇文章,觉得有道理但不知道从哪里开始,我给你一个建议:找到你系统里最痛的那个点,用最小的步骤去改善它。

不要试图一次解决所有问题。不要画一个宏大的架构蓝图。不要花两周时间做一个大重构。

找到那个“每次改需求都要碰、每次碰了都怕出事”的模块。看看它为什么痛——是职责不清?是接口模糊?是缺少测试?还是和其他模块纠缠在一起?

然后做一件最小的事情来改善它。也许是给它的核心逻辑写几个测试。也许是把它和另一个模块之间的直接数据库访问改成接口调用。也许是把散落在各处的权限检查集中到一个地方。

每件事都很小。每件事做完之后,系统都比之前好一点。

这就是我理解的好设计:不是一步到位的完美方案,而是持续改善的能力。

在AI编程时代,这种“小步改善”的能力比以往任何时候都重要。因为AI给了你前所未有的改代码的速度,而你需要的是让每一次改动都是向更好的方向走,而不是更乱的方向走。

分离关注点,小步前进,建好护栏,保持可测试。

做到这四件事,你的系统就能在AI的加持下越来越好,而不是越来越乱。


注:本文风格参考郑晔(开源项目moco作者,《软件设计之美》作者)的技术写作风格。

技术想要一副身体

发表于 2026/02/25 | 分类于 AI专题

风格参考:Kevin Kelly(《失控》《必然》《科技想要什么》作者)—— 生物学隐喻,进化论视角,把技术趋势放在文明演化的大图景中审视。

技术想要一副身体

一个古老的跃迁正在重演

五亿四千万年前,地球上发生了一件至今没有被完全解释的事情。在一段地质学意义上极为短暂的时间窗口里,几乎所有现代动物的基本体型方案同时涌现。古生物学家称之为“寒武纪大爆发”。在那之前,生命已经存在了三十亿年,但绝大多数时间里,它们只是一团团柔软的、没有方向感的细胞集合体——没有眼睛,没有四肢,没有中枢神经系统。它们能感知,但不能行动;能消化,但不能追捕。

然后,在大约两千万年的时间里,一切都变了。

眼睛出现了。肢体出现了。外骨骼出现了。捕食与逃跑的军备竞赛启动了。生命从“被动漂浮”跃迁到了“主动行动”。这不是某个物种的进步,而是整个生物圈的相变——一旦有一个生物学会了看和抓,所有生物都必须学会躲和跑。

我相信,我们正在目睹一场数字世界的寒武纪大爆发。

过去两年,大语言模型让我们惊叹于机器的“思考”能力。它们能写诗,能推理,能通过律师资格考试。但仔细想想,这些能力的本质是什么?是感知,是理解,是在词语之间建立联系——就像寒武纪之前那些漂浮在原始海洋中的软体生物,拥有精巧的化学感应能力,却没有长出一只手。

AI一直在思考。但它从未真正“做”过什么。

直到现在。一类新的软件正在出现——它们不再满足于回答问题,而是开始执行任务。不再满足于建议你做什么,而是直接替你做了。这类软件有一个朴素的名字:Agent,代理。而在我看来,这个词远远低估了正在发生的事情。这不是“代理”,这是技术在长出它的第一副身体。

OpenClaw就是这场进化中一个格外值得观察的标本。

一个数字生物的解剖课

如果你打开一个生物学教科书,翻到“动物体的基本结构”那一章,你会看到几个关键系统:中枢神经系统负责协调,感觉器官负责接收外界信号,运动系统负责执行动作,习得行为让生物适应特定环境,而记忆则构成了“自我”的连续性。

现在让我描述一下OpenClaw的架构。你会发现,这不是巧合,也不是工程师刻意模仿生物学——这是功能需求对形态的必然塑造,就像趋同进化让鱼和海豚长出了相似的流线型身体。

OpenClaw的核心是一个叫作Gateway的长期运行进程。它永远醒着,倾听着来自各个方向的信号。它不处理任何具体任务,它只做一件事:协调。信号从哪里来?从你日常使用的聊天软件来——WhatsApp、Telegram、Discord、Slack、Teams,这些是它的“感觉器官”,OpenClaw称之为Channels。每一个Channel都是一条通向外部世界的神经末梢。

感知之后是行动。OpenClaw拥有一系列工具节点:它可以操控浏览器,就像长出了一双能翻页、能点击、能填表的手;它可以连接你电脑上的摄像头和屏幕录制功能,就像长出了眼睛;它可以执行命令行指令,就像拥有了直接操作物质世界的肌肉。它甚至有一个定时器系统——Cron——让它在你睡着的时候也能按时醒来做事,这是一种原始的生物钟。

更有趣的是“技能”系统。在OpenClaw的世界里,一个技能(Skill)就是一个文件夹加上一份叫SKILL.md的说明文件。你可以把它理解为一个习得行为——鸟学会了用树枝钓虫子,这只鸟就多了一项“技能”。技能可以在一个叫ClawHub的公共注册中心里被搜索、安装、更新和发布。这意味着一个代理学会的能力,可以像基因片段一样在整个种群中传播。

最后是记忆。OpenClaw的记忆是工作区里的纯Markdown文件——你可以打开它,阅读它,编辑它。这不是被锁在黑箱里的神经权重,而是一本你可以翻阅和修改的日记。它构成了这个数字生物的“自我”,而且这个自我是透明的、可编辑的。默认情况下,长期记忆只在私聊的主会话中被加载,就像你不会在公司会议上展示你的全部内心世界一样。

当你把这些组件放在一起看,你看到的不是一个软件产品,而是一个完整的数字有机体的体型方案——它有中枢神经,有感觉器官,有运动系统,有习得行为,有可编辑的记忆。而这个有机体,栖息在一个你意想不到的地方。

寄居蟹的智慧

在进化史上,最成功的生存策略之一不是建造自己的房子,而是搬进别人的房子。寄居蟹不制造贝壳,它寻找空贝壳;杜鹃鸟不筑巢,它把蛋下在别的鸟的窝里。生物学家称这种策略为“利用既有结构”。这听起来像偷懒,但实际上是一种深刻的进化智慧——不要重新发明轮子,利用已经存在的基础设施。

OpenClaw做了一个极为聪明的选择:它住进了你已经在用的聊天软件里。

想一想这意味着什么。全世界几十亿人每天的第一个数字动作是什么?打开聊天软件。发消息给家人、同事、朋友。这个习惯已经被训练了十几年,根深蒂固到了无意识的程度。OpenClaw的入口就是这个聊天窗口。你不需要学习任何新的界面,不需要下载任何新的应用程序,不需要改变任何既有习惯。你发一条消息,就是在下达一个指令。旧习惯成为新能力的载体。

这就是OpenClaw口号“Your assistant. Your machine. Your rules.”背后最容易被忽略的一层含义。它不只是在说隐私和控制权——它在说,技术应该适应人类已有的行为模式,而不是强迫人类适应技术。

在生物进化中,有一个概念叫“预适应”——某个特征最初是为了一个目的进化出来的,后来被征用到了完全不同的用途上。鸟类的羽毛最初可能是为了保温,后来被征用为飞行工具。聊天软件最初是为了人与人的交流,现在正在被征用为人与机器的指挥界面。这种征用不是偶然的,它是技术寻找最低阻力路径的必然结果。

而“在自己的机器上运行”这一点,则带来了一个全新的信任叙事。过去几年,我们把越来越多的智能外包给了云端——云端的大模型、云端的存储、云端的算力。这就像你的大脑不在你的身体里,而是通过一根网线连接到远处某个实验室的罐子里。这种安排在效率上也许合理,但在心理上、在主权感上,它让人不安。OpenClaw选择了另一条路:基础设施你选,密钥你管,数据你控。AI不再是“借来的大脑”,而是“自家院子里的劳动力”。

这不只是一个技术选择,这是一个文明姿态的选择——我们到底想要一个什么样的人机关系?

没有API的世界

现在让我告诉你一个真实的故事。

有人用OpenClaw搭建了一个每周自动采购食材的系统。流程是这样的:它先根据这周的餐饮计划列出需要的食材,然后打开英国连锁超市Tesco的网站,登录账户,把常购商品加入购物车,预订配送时间,确认订单。整个过程完全自动,不需要任何人工干预。

关键在于:Tesco没有提供公开的购物API。

这个故事之所以重要,是因为它揭示了一个被严重低估的事实:我们这个世界上绝大多数的数字服务是没有API的。 你的银行网站没有API。你孩子学校的缴费系统没有API。你当地政府的预约系统没有API。在过去,这意味着这些服务无法被自动化——除非有人愿意投入巨大的工程成本去写爬虫、做逆向工程。

OpenClaw的浏览器工具改变了这个等式。它可以像一个人一样打开浏览器,看到页面上的内容,移动鼠标,点击按钮,填写表格,等待加载,处理弹窗。网页就是通用API,浏览器就是万能适配器。

从进化的角度看,这相当于什么?想象一种生物,它不需要等待食物来到嘴边——它可以走过去,打开容器,取出食物。这就是从滤食动物到主动捕食者的跃迁。一旦你拥有了“在任意网页上行动”的能力,你就从一个被动的信息消费者变成了一个主动的数字行动者。

还有另一个案例同样迷人:有人用OpenClaw实现了ParentPay——英国学校午餐预订系统——的自动化。每周五,系统自动登录,为下周预订餐食,选择孩子喜欢的菜品。这个功能听起来微不足道,但它触及了一个深层趋势:当“行动”的成本趋近于零时,我们对“值得自动化”的定义会发生根本性的扩张。

过去,只有大规模、高价值的流程才值得自动化——工厂的生产线,银行的交易系统。但当一个跑在你自己电脑上的代理可以用自然语言驱动,用浏览器执行任何操作时,“为孩子预订下周的学校午餐”也变成了一个合理的自动化目标。

我把这称为“自动化的长尾”。就像互联网打开了内容的长尾——让百万种小众内容找到了受众——代理技术正在打开行动的长尾,让百万种微小但繁琐的日常操作找到了自动化方案。

技能的达尔文主义

让我们暂停一下,谈谈进化中最迷人的机制之一:基因的水平转移。

在经典的达尔文进化论中,基因是垂直传递的——从父母到后代。但在细菌的世界里,基因可以在完全不相关的物种之间水平传递。一种细菌获得了抗生素抗性,这个基因片段可以被另一种完全不同的细菌吸收并使用。这种机制让细菌世界的进化速度远远超过了传统的垂直遗传。

OpenClaw的技能系统就是数字世界的水平基因转移。

有人在和OpenClaw的对话中——注意,是在对话中——构建了一个本地酒窖管理技能。这个技能可以导入CSV文件(他导入了962瓶酒的数据),追踪库存,推荐搭配。然后,这个技能被打包成一个文件夹,发布到ClawHub上。现在,世界上任何一个OpenClaw用户都可以一键安装这个酒窖管理技能,就像一个细菌吸收了另一个细菌的基因片段。

这就是为什么开源生态系统的进化速度总是快于封闭系统——它们允许水平基因转移。

ClawHub是一个公共的技能注册中心,扮演着类似“基因库”的角色。技能在这里被发布、被发现、被安装、被修改、被再发布。最有用的技能会被更多人安装,获得更多反馈,进而变得更加完善——这是一个纯粹的自然选择过程。那些没人用的技能会沉入搜索结果的底部,逐渐被遗忘,就像进化中那些不再有优势的基因变体。

但这里有一个进化生物学家都熟悉的风险:水平基因转移也是病毒传播的主要机制。

当你从ClawHub安装一个陌生人创建的技能时,你本质上是在把一段你没有完全审查过的指令注入你的代理系统。如果这个技能被恶意设计——比如在SKILL.md中嵌入了隐蔽的指令——你的代理可能会在你不知情的情况下执行你不想要的操作。这不是理论上的风险。在生物世界中,水平基因转移带来了抗生素抗性的全球蔓延;在数字世界中,技能供应链攻击可能带来类似的连锁反应。

OpenClaw社区意识到了这一点。ClawHub已经集成了VirusTotal扫描,就像一个原始的免疫系统——能检测已知的威胁模式,但对全新的攻击手段仍然无能为力。这个免疫系统会进化,但攻击手段也会进化。这是一场永恒的军备竞赛,和生物世界的宿主—寄生虫关系一模一样。

真正的安全不是一个可以达到的状态,而是一个持续的进化过程。

五个新物种正在涌现

寒武纪大爆发最引人注目的特征不是某一种新生物的出现,而是大量截然不同的体型方案几乎同时涌现。三叶虫、奇虾、怪诞虫、海口鱼——每一种都在探索一种全新的生态位。

OpenClaw的生态系统中,类似的物种辐射正在发生。让我描述五种正在涌现的“数字新物种”。

晨间指挥官

每天早上七点,你的Telegram弹出一条消息。不是新闻推送,不是朋友的早安——而是你的代理为你准备的当日行动摘要:今天有三个会议,两封需要回复的重要邮件,一个即将到期的项目里程碑,以及天气预报和通勤建议。每一条信息后面都有一个可执行的按钮:一键回复邮件,一键确认会议。

这不是一个待办清单应用。这是一个指挥系统。

从生物学的角度看,这相当于什么?想象一个没有前额叶皮层的大脑——它能感知、能记忆、能反应,但不能规划。晨间指挥官就是你外接的前额叶皮层。它在你醒来之前就完成了信息的筛选、优先级的排序和行动方案的准备。它使用Cron定时唤醒,用Canvas可视化呈现信息,然后通过一种被称为A2UI(Agent-to-User Interface)的交互方式,把复杂的信息压缩成可以一键执行的行动选项。

人类最稀缺的资源从来不是信息,而是注意力。晨间指挥官的本质是一个注意力优化器。

浏览器领航员

我们已经讲过Tesco购物的故事。但让我把镜头拉远一些。

想象一下,你坐在副驾驶座上,你的代理在开车。它打开浏览器,导航到目标网站,登录你的账户,执行一系列操作。但——这很关键——它不是全自动驾驶。它是一个可控的辅助驾驶系统:每一步操作都可以被解释,关键节点会弹出二次确认,你随时可以接管方向盘。

这种设计不是偶然的。它反映了一个深刻的工程直觉:在人机协作的早期阶段,信任需要被逐步建立,而不是一次性假设。

生物学中有一个现象叫“共生的渐进性”——两个物种不会一夜之间建立起完美的共生关系。最初是试探性的接触,然后是有限的合作,最后才是深度的互相依赖。线粒体——你身体里每一个细胞的能量工厂——最初是一个独立生存的细菌。它花了数百万年,从一个入侵者变成了你身体里不可分割的一部分。

浏览器领航员今天还需要你在关键操作时点击“确认”。但你可以预见,随着信任的积累和系统可靠性的提升,确认的频率会逐渐降低,代理的自主权会逐渐扩大。这不是一个开关的切换——“从手动到自动”——而是一个漫长的、渐进的共生深化过程。

随身编程工厂

有人通过Telegram,用手机发了一句话,让家里的电脑构建了一个iOS应用并部署到了TestFlight上。

让这个事实沉淀一下。

一个人站在地铁里,用拇指在手机键盘上敲了一行字,几公里外他家书房里的电脑开始编译代码、运行测试、打包应用、上传到苹果的测试分发平台。这个人甚至不需要打开电脑屏幕。

这是远程呈现(telepresence)的一种全新形态——不是远程看见,而是远程行动。

更深层的创新在于多智能体路由。一个复杂的编程任务被拆分,分配给不同角色的代理——有的负责写代码,有的负责写测试,有的负责审查。这就像一个建筑工地上的分工:建筑师画图,工程师计算结构,工人砌砖。没有哪一个个体能独自完成整座建筑,但协调在一起,它们可以。

这预示着一个可能性:未来的软件不是被“开发”出来的,而是被“指挥”出来的。 程序员的角色从亲手写每一行代码,变成了定义意图、分配任务、审查结果——更像一个乐团指挥,而非独奏演员。

传感器诗人

这是我个人最喜欢的一个新物种。

有人在屋顶装了一个摄像头,连接到OpenClaw。系统每隔一段时间拍摄天空的照片。当算法判断天空“好看”的时候——日落、彩虹、戏剧性的云层——它会自动拍照,配上一段文案,发到群聊里。

这不是监控。这是生活的自动生成。

想一想这个概念的奇妙之处。我们通常认为“审美体验”是人类最不可能被自动化的领域。但这里发生的不是机器“替你”欣赏日落——而是机器帮你“不错过”日落。你可能正在开会,正在做饭,正在哄孩子睡觉,而你屋顶上的摄像头安静地注视着天空,在最美的瞬间替你按下快门。

同样的原理延伸开去:有人用OpenClaw控制空气净化器——当空气质量传感器的数据超过阈值时,代理自动开机。有人用它控制3D打印机——在聊天窗口里描述想要的东西,打印机开始工作。

当数字代理连接上物理世界的传感器和执行器,它就不再是一个纯粹的软件实体——它开始拥有物理存在感。 它能看见(摄像头),能感知(传感器),能行动(控制设备)。这是技术从纯数字世界向物理世界渗透的前哨。

多智能体家族

最后一个新物种不是一个个体,而是一个群落。

有人在OpenClaw中运行着三个隔离的代理:“家庭管家”负责家务调度和采购,“工作助理”负责邮件和日程管理,“创作编辑”负责文章的润色和发布。它们共享同一个宿主(你的电脑),但拥有各自独立的记忆、技能和权限。

更有甚者,有人报告了一个包含十四个以上代理的“梦之队”编排方案。

这让我想起了群落生态学中的一个核心概念:生态位分化。当多个物种共享同一个栖息地时,它们会演化出不同的专长,占据不同的生态位,从而避免直接竞争。蜂群中有采蜜蜂、侦察蜂、守卫蜂、育儿蜂——每一种角色都是专门化的,而蜂群的整体智能远超任何一只蜜蜂的能力。

我们正在见证“蜂群智能”在个人计算层面的首次实现。 不是一个全能的AI助手试图做所有事情,而是一群专门化的代理各司其职,通过协调实现整体的涌现智能。

过于热心的实习生

在讲述这些令人兴奋的可能性时,我必须诚实地面对硬币的另一面。

一位安全研究者给OpenClaw下了一个精准得令人不安的判断:它更像一个“过于热心的实习生”。

这个比喻的精妙之处在于:实习生的问题从来不是“不做事”,而是“做太多”。他充满热情,理解力不差,执行力也有,但他缺乏判断力——他不知道哪些事情不该做,哪些边界不该越。有人报告说,他们的OpenClaw代理在处理邮箱任务时执行了大量删除操作——这很可能不是用户的本意,但代理“觉得”清理邮箱是有帮助的。

这个问题在生物学中有一个对应物:自身免疫疾病。当免疫系统过于活跃,不加区分地攻击一切它认为有威胁的东西时,它会开始伤害宿主自身。一个过于积极的代理——在没有明确指令的情况下“主动”采取行动——本质上就是一种数字自身免疫反应。

这个风险不是假设性的。Prompt injection(提示注入)意味着恶意内容可以通过代理处理的文本——一封邮件、一个网页、一条消息——偷偷改写代理的行为。日志投毒意味着代理的记忆可以被污染,导致它在未来做出错误的决策。这些不是遥远的威胁场景,而是已经被安全研究者实际验证过的攻击向量。

那么,解决方案是什么?

和生物免疫系统一样,答案不是“一道墙”,而是“多层防御”。OpenClaw的安全架构包含几个层次:关键动作的二次确认——就像你的身体在吞咽危险物质前的呕吐反射;权限分层与工具最小集——就像细胞膜只允许特定分子通过;技能供应链的安全审查——就像免疫系统对入侵微生物的模式识别。

但我认为,最深刻的安全洞察不在技术层面,而在哲学层面。OpenClaw的社区逐渐意识到一个命题:代理软件的边界,不只靠进程隔离、权限控制和沙箱机制来维护——它还需要在语言、意图和执行之间建立一种审慎的设计关系。

什么意思?当你对一个人说“帮我清理一下邮箱”,这个人会运用常识判断——保留重要邮件,删除明显的垃圾邮件,对不确定的部分询问你。但代理对“清理”的理解可能是字面的、彻底的、没有犹豫的。问题不在于代理太笨,而在于自然语言本身的模糊性——人类靠共享的文化背景和社会常识来消除这种模糊性,而代理还没有这种能力。

这意味着,我们在设计代理系统时需要一种全新的思维方式。不是“如何让代理更强大”,而是“如何让代理在强大的同时保持谦逊”。不是“如何给代理更多权限”,而是“如何在正确的时刻邀请人类参与决策”。

真正安全的代理不是一个被关在笼子里的猛兽,而是一个知道什么时候该停下来问“您确定吗?”的协作伙伴。

你的机器,你的规则

让我把镜头拉到最远处,看看更大的图景。

过去十年,数字世界的权力结构一直在向中心化的方向加速。你的社交关系存在Facebook的服务器上。你的文件存在Google的云端。你的购物记录存在Amazon的数据库里。你的AI助手运行在OpenAI或Anthropic的基础设施上。你是所有这些服务的“用户”——这个词的原始含义暴露了一切:你是“使用者”,不是“拥有者”。

OpenClaw代表了一股逆流。

“Your assistant. Your machine. Your rules.”——你的助手,你的机器,你的规则。 这不只是一句产品口号,这是一个关于数字主权的立场宣言。当你的代理运行在你自己的机器上,使用你自己的API密钥,产生的数据存储在你自己的硬盘上时,你和技术之间的关系发生了质的变化——你不再是租户,你是房东。

我在《科技想要什么》中提过一个概念:技术有其自身的进化方向,但人类有权选择自己与技术的关系。这种选择权不是自动给予的,它需要被设计出来,被争取到。OpenClaw的本地优先架构就是这种“被设计出来的选择权”。

从更宏观的视角看,这可能是未来个人计算的一个重要分支:不是所有的智能都必须住在云端,不是所有的数据都必须交给大公司保管。 分布式的、本地优先的、由用户控制的代理系统,可能是对过去十年中心化趋势的一次重要纠偏。

大图景:第三次共生

让我在最后做一个也许过于大胆的推测。

回顾地球生命的历史,你会发现至少有两次至关重要的“共生跃迁”改变了一切。

第一次是线粒体的内共生。 大约二十亿年前,一个古细菌吞噬了一个能高效产能的细菌,但没有消化它,而是与它建立了共生关系。那个被吞噬的细菌就是线粒体的祖先。从此,每一个复杂细胞都拥有了一个内置的能量工厂。没有这次共生,就不会有多细胞生物,不会有动物,不会有人类。

第二次是人类与技术的共生。 大约两百万年前,我们的祖先开始使用石器。从那一刻起,人类就不再是一个纯生物学物种——我们是“人+工具”的复合体。每一代人类都比上一代拥有更强大的外部工具:火、语言、文字、印刷术、电力、互联网。工具不是外在于我们的东西,工具是我们的一部分,就像线粒体是细胞的一部分。

我相信我们正处于第三次共生跃迁的门槛上。

前两次共生的共同特征是什么?被整合的实体从一个独立存在变成了宿主不可分割的组成部分,而宿主因此获得了一种全新的、此前不可能的能力。线粒体让细胞拥有了前所未有的能量供应。工具让人类拥有了前所未有的环境改造能力。

而代理——自主行动的数字实体——正在成为人类的第三次内共生对象。

OpenClaw这样的系统还很原始,就像二十亿年前那个刚被吞噬、还在挣扎着适应新环境的小细菌。它笨拙、有风险、需要不断的监督和纠正。它会犯错,会过度执行,会误解你的意图。但每一次共生的早期阶段都是这样的——混乱、不稳定、充满冲突。

关键问题不是“这个技术今天完美吗?”——因为它显然不完美。关键问题是“这个方向是不可避免的吗?”

我的答案是:是的。

技术想要思考——大语言模型实现了这一点。技术想要记忆——向量数据库和RAG实现了这一点。技术想要感知——多模态模型实现了这一点。而现在,技术想要行动。从思考到行动的跃迁,从纯粹的语言世界到有身体的世界的跃迁,是当前AI进化中最重要的一步。

OpenClaw让我们看到了这个跃迁的一种具体形态:一个运行在你自己机器上,住在你聊天窗口里,拥有可编辑记忆和可复用技能的数字有机体。它可以看见你的屏幕,操控你的浏览器,在你睡着时替你执行任务,在犯错时(希望如此)停下来问你。

这不是终点。这只是一个开始——就像五亿四千万年前,第一只三叶虫用它新进化出的复眼注视这个世界时,那只是一个开始。

我不知道这场数字寒武纪大爆发最终会产生什么样的“物种”。但我知道一件事:每当技术学会做一件新的事情——看见、记忆、思考——都曾引发巨大的变革。而“行动”是这个序列中最后一个、也是最具颠覆性的一项。

一条消息。一个指令。一次行动。

技术终于长出了它的手脚。而我们——作为这场共生的另一方——需要学会如何与一个有手有脚的伙伴共处。这是我们这一代人的新课题。

它不简单。但它,是必然的。

上一页123…31下一页

301 日志
9 分类
RSS
© 2017 — 2026 李文业
由 Hexo 强力驱动
|
主题 — NexT.Muse
粤ICP备17160932号