AI技术投降派
生产级AI Agent难以落地源于过度依赖框架黑箱,开发者必须回归朴素软件工程并自主掌控提示词与状态管理。
AI-assisted summary of 为什么你的 AI Agent 到不了生产级?25k 星开源方法论说透了 — original source. Check the original for full context.
Source published:
Detailed notes
## Background 该内容由 Bilibili UP 主“AI技术投降派”于 2026 年 8 月 20 日发布。视频围绕 HumanLayer 创始人 Dex Horthy 提出的开源方法论《12-Factor Agents(十二因素智能体)》展开,旨在解答为什么许多基于开源框架搭建的 AI Agent 难以交付给生产级客户,并系统性拆解如何用朴素的软件工程原则构建可靠的生产级 AI 软件。
## TL;DR 很多开发者在用开源框架构建 AI Agent 时,常在达到 70%~80% 完成度后陷入“死亡谷”,面临输出不稳定、上下文爆满及调试困难等生产瓶颈。演讲者指出 Agent 的本质其实是一个由“大模型决策-确定性代码执行-结果追加上下文”组成的简单循环,顶级开发者大多选择抛弃封装黑箱的复杂框架并自己实现。通过“掌控三件套”、“结构与生命周期”、“将人类当工具调用”以及“规模化五原则”(如将 Agent 做成无状态规约器),开发者能够将 AI 带来的不确定性纳入严密的传统工程控制之下,从而打造出真正具备抗造性的生产线系统。
## Atmosphere & style 整个分享充满了一种冷静、务实且反骨的“工程师清醒感”。叙述摒弃了对 AI 技术的盲目崇拜与浮躁炒作,语气接地气且充满警醒,直击开发者给黑箱 Prompt“擦屁股”的切肤之痛。在揭示框架局限性与拆解十二条原则时,逻辑严密而干脆利落,将前端与云原生的成熟哲学融会贯通,给人一种剥离技术神话、重返朴素工程本质的踏实与通透感。
## Key takeaways - [00:00](https://www.bilibili.com/video/BV1dEMS6QExa?t=0s) 针对 AI Agent 在演示阶段表现亮眼、部署到生产环境即陷入失控的行业困境,开源项目《12-Factor Agents》梳理了一套指导生产级交付的工程原则。 - [01:02](https://www.bilibili.com/video/BV1dEMS6QExa?t=62s) 《12-Factor Agents》致敬了 2011 年 Heroku 提出的《12-Factor App》,由 HumanLayer 创始人 Dex Horthy 发起。 - [02:34](https://www.bilibili.com/video/BV1dEMS6QExa?t=154s) Agent 开发普遍存在“八成死亡谷”现象:框架能帮助开发者快速搭建 80% 的功能,但要突破剩余 20% 的生产级天花板,往往需要反向工程框架内部流程甚至推倒重来。 - [03:52](https://www.bilibili.com/video/BV1dEMS6QExa?t=232s) 调查显示绝大多数真正做出顶级 Agent 产品的团队根本不使用开源 Agent 框架,而是自研底层代码。 - [03:52](https://www.bilibili.com/video/BV1dEMS6QExa?t=232s) 好的 Agent 本质上主要就是软件,依靠的是朴素的软件工程而非玄学 Prompt 或 Agent 框架。 - [05:13](https://www.bilibili.com/video/BV1dEMS6QExa?t=313s) Agent 的本质是一个极简的执行循环:大模型决策输出工具调用 -> 确定性代码执行 -> 执行结果追加回上下文。 - [06:28](https://www.bilibili.com/video/BV1dEMS6QExa?t=388s) “掌控三件套”(原则 1-3):开发者必须精准实现自然语言到工具调用的转换,并显式掌控提示词(Prompts)与上下文窗口(Context Window),放弃控制权等于放弃质量。 - [07:49](https://www.bilibili.com/video/BV1dEMS6QExa?t=469s) “结构与生命周期”(原则 4-6):将工具调用视为结构化输出,统一管理 Agent 执行状态与业务状态,并为长时运行任务提供简单的启动、暂停与恢复接口。 - [09:00](https://www.bilibili.com/video/BV1dEMS6QExa?t=540s) “把人类当作工具调用”(原则 7):面对高风险操作时,将询问人类(Human-in-the-loop)设计为标准的工具调用,平衡系统的自动化能力与安全性。 - [10:30](https://www.bilibili.com/video/BV1dEMS6QExa?t=630s) “规模化五原则”(原则 8-12):掌控控制流重试逻辑、提炼压缩错误回传至上下文、保持 Agent 小而专注、支持随处触发多渠道交互,以及将 Agent 架构设计为无状态规约器(Stateless Reducer)。 - [12:23](https://www.bilibili.com/video/BV1dEMS6QExa?t=743s) 原则 12 借鉴 React/Redux 思想,将 Agent 打造为无状态规约器,自身不持有内部状态,从而大幅提升系统的可测试性与扩展能力。 - [12:23](https://www.bilibili.com/video/BV1dEMS6QExa?t=743s) 生产级 AI 软件的研发应当提取小而模块化的概念融入已有成熟系统,底层大模型虽在增强,但朴素的工程纪律才是解决软件复杂度的关键。
## Detailed walkthrough ### [00:00](https://www.bilibili.com/video/BV1dEMS6QExa?t=0s) AI Agent 难以迈向生产级的困境与《12-Factor Agents》的诞生
开发者在构建 AI Agent 时普遍存在一种痛点:使用现成的 Agent 框架搭建演示(Demo)时效果惊艳,全场赞叹,但一旦真正部署给生产客户使用,系统便开始失控。典型症状包括输出不稳定、工具调用(Tool Calling)频繁出错、上下文窗口(Context Window)莫名其妙被塞爆,开发者往往需要花费比写业务代码多得多的时间去调优提示词(Prompt),最终沦为给大模型这个“黑箱”擦屁股。这并非个别现象,而是困扰全行业的瓶颈。
为了解决这一难题,GitHub 上出现了一个获得 2.5 万颗星(25k Stars)的开源项目——**12-Factor Agents(十二因素智能体)**。该项目致力于总结出一套工程化原则,指导开发者构建出真正能交付给生产环境客户的 AI 软件。
* **致敬经典:** 该方法论直接致敬了 2011 年 Heroku 工程师 Adam Wiggins 撰写的经典文档《12-Factor App(十二因素应用)》。当年《12-Factor App》用 12 条原则定义了现代云原生应用,为一整代开发者提供了共同语言;如今《12-Factor Agents》则针对 LLM 应用,尝试回答“什么样的 AI Agent 才算真正达到生产级”。 * **作者背景:** 该项目作者 Dex Horthy 曾 在 Replicated 工作 7 年,帮助大量团队将产品改造为跑在 Kubernetes 上的云原生架构,拥有扎实的容器编排、产品及市场经验。2023 年,他创立了拿到 Y Combinator (YC) 投资的初创公司 HumanLayer。
---
[02:34](https://www.bilibili.com/video/BV1dEMS6QExa?t=154s) Agent 开发的“八成死亡谷”与核心洞察
在对超过 100 位尝试将产品 Agent 化的创业者进行调研后,Dex Horthy 总结出了一个极具代表性的“Agent 开发死亡谷”模式。绝大多数团队的开发路径都会经历相同的七个步骤:
1. 决定做一个 AI Agent; 2. 做产品设计,明确要解决的问题; 3. 为了赶进度,随手抓一个现成的 Agent 开源框架; 4. 极快地将产品做到 70%~80% 的完成度; 5. 发现这 80% 的完成度对于直接面向客户的生产级功能而言远远不够; 6. 意识到要想突破剩下 20% 的天花板,必须反向工程(Reverse Engineer)框架内部的 Prompt 流程与状态管理; 7. 最终忍无可忍,选择推倒重来。
> "框架能帮你快速起跑,却把你困在八成的天花板下面。"
Dex 发现,无论是 YC 内部还是外部,真正做出了顶级 Agent 产品的创始人,绝大多数**根本不用开源 Agent 框架**,而是选择自己动手从底层写一套。这直接暴露了现成框架在生产环境中的乏力。
由此,Dex 抛出了一个极其反直觉的断言:市面上绝大多数标榜为 AI Agent 的产品,本质上**并不那么 Agentic**。它们的主体依然是确定性(Deterministic)的代码,仅仅是在少数关键节点点缀了大模型调用。
同时,好的 Agent 绝非“给一段 Prompt、给一袋工具,就让大模型自己死循环直到完成目标”。**好的 Agent,说到底主要就是软件。** 构建可靠的 AI 应用,靠的不玄学的 Prompt,也不是少一点动画的框架,而是最朴素的软件工程。
---
[05:13](https://www.bilibili.com/video/BV1dEMS6QExa?t=313s) Agent 的本质:一个极简的执行循环
Dex Horthy 给 Agent 下了一个非常清醒且剥离神话色彩的定义:**Agent 的本质就是一个循环(Loop)。** 这个循环由三个固定步骤组成:
1. **大模型决策:** LLM 根据当前的上下文,决定下一步做什么,并输出结构化的工具调用(Tool Call)。 2. **确定性代码执行:** 由一段确定性的传统代码,真正去执行该工具调用。 3. **结果追加上下文:** 将工具执行的真实结果追加(Append)回 LLM 的上下文窗口中。
上述三步不断重复,直到 LLM 判断任务完成。
然而,这个看似优雅的循环在实际运行中极易崩溃——它会犯错、跑偏、塞爆上下文、或在不该停的时候停止。为了将这个不靠谱的“玩具循环”工程化为抗造的生产级系统,12-Factor Agents 将其拆解为十二条工程原则。
---
[06:28](https://www.bilibili.com/video/BV1dEMS6QExa?t=388s) 掌控三件套(原则 1 - 3)
第一组原则围绕一个核心概念——**“控”**。开发者放弃对系统的控制权,就等于放弃产品质量。
* **原则 1:自然语言转工具调用(Natural Language to Tool Calls)** Agent 的入口是用户的自然语言(人话),但后端系统需要结构化指令。系统必须拥有一套稳定可靠的机制,将非结构化文本精确翻译为结构化工具调用。 * **原则 2:掌控你的提示词(Own Your Prompts)** 直接针对封装 Prompt 的黑箱框架。当框架把 Prompt 隐藏起来时,开发者在需要精调时根本触碰不到。开发者必须能完全看见并自由修改每一个 Prompt。 * **原则 3:掌控你的上下文窗口(Own Your Context Window)** 上下文窗口是 LLM 的内存/短期记忆,也是最被低估的一环。哪些信息塞入、哪些清理、何时进行压缩(Compression),必须由开发者主动显式管理,决不能甩手交给框架去黑盒处理。
---
[07:49](https://www.bilibili.com/video/BV1dEMS6QExa?t=469s) 结构与生命周期(原则 4 - 6)
第二组原则关注 Agent 系统的架构逻辑与状态生命周期管理:
* **原则 4:工具就是结构化输出(Tools are Structured Outputs)** 不要把 Tool Call 想得过于神秘,其本质就是让大模型输出符合特定 Schema 的结构化数据。明确这一点后,开发者便可以用同一套工程范式统一处理工具、执行结果及报错。 * **原则 5:统一执行状态与业务状态(Unify Execution and Business State)** Agent 运行产生的执行状态(如执行到哪一步、调用了哪些工具)不应单独搞一套 Agent 专属数据库,而应与业务数据放在同一个存储层统一管理,避免系统出现多头管理、顾此失彼的情况。 * **原则 6:用简单的接口实现启动、暂停与恢复(Start, Pause, and Resume with Simple Interfaces)** Agent 往往属于长时运行任务(Long-running Tasks),不能无休止地占用系统资源。系统必须具备随时将 Agent 挂起、持久化当前状态并在满足条件后恢复运行的能力。这是 Agent 迈向生产线的关键。
---
[09:00](https://www.bilibili.com/video/BV1dEMS6QExa?t=540s) 把人类当作工具调用(原则 7)
**原则 7:用工具调用来联系人类(Contact Humans via Tool Calls)** 是整个十二条原则中最具特色的一条,也是 Dex 创立 HumanLayer 的核心出发点。
Agent 在执行删库、发送邮件、资金支付等高风险操作时,完全自主执行极易酿成灾难,但每一步都由人工盯盘又失去了自动化的价值。Dex 提出了一个极其巧妙的解法:**将“询问人类”本身设计成一种标准的 Tool Call。**
``` [Agent 遇到高风险操作] │ ▼ [触发 Contact-Human Tool Call] │ ▼ [通过 Slack / 短信 / 邮件 发送审批请求] │ ▼ [人类点击批准/拒绝] ───► [Agent 接收回调并继续运行循环] ```
> "我们能给软件的最有用的功能,往往也是最危险的功能。尤其是在由大模型驱动的这种非确定性系统里,这个矛盾更加尖锐。所以把人放进循环(Human-in-the-loop)里,这不是退步;想让强大的能力安全落地,这是唯一的办法。"
Dex 提到,他最初想做一个能自动清理数据库的 Agent,但绝对不能让 AI 无监督地执行 `DROP TABLE`。加入人类审批环节后,不仅保障了安全,更打通了高风险场景的落地路径。
---
[10:30](https://www.bilibili.com/video/BV1dEMS6QExa?t=630s) 规模化五原则(原则 8 - 12)
最后一组原则旨在保证 Agent 在真实复杂生产环境中的健壮性与可扩展性:
* **原则 8:掌控你的控制流(Own Your Control Flow)** 循环的重试策略、放弃条件、分叉逻辑等控制流决策权,必须掌握在开发者手中,不能盲目依赖框架的默认配置。 * **原则 9:把错误压缩进上下文窗口(Compact Errors into Context Window)** 工具报错时,如果把长串的原始 Traceback 堆进上下文,会瞬间塞爆窗口。开发人员必须对错误进行提炼和结构化压缩,仅把有价值的信息喂给 LLM,帮助其进行错误自我纠正。 * **原则 10:小而专注的 Agent(Small, Focused Agents)** 避免幻想构建无所不能的超级 Agent(Super Agent)。应将复杂任务拆解,遵循 UNIX 哲学与微服务架构思想,让每个小 Agent 专精于单一任务。 * **原则 11:随处触发,与用户相会(Trigger Anywhere, Meet Users Where They Are)** Agent 不应只局限于网页上的 Chat 窗口,而应能被 Cron 定时任务、Webhook、Slack 消息等任意事件触发,并主动前往用户所在的渠道(如邮件、社群等)进行交互。 * **原则 12:把你的 Agent 做成一个无状态的规约器(Make Your Agent a Stateless Reducer)** 这是最深刻的一条架构原则。Agent 本身应当是一个纯函数(Pure Function),其自身不持有内部状态。所有的状态均序列化存储于外部。每一次循环,Agent 都是拿着当前状态(State)和本轮输入(Action),计算出下一个状态。
``` State(t+1) = AgentReducer(State(t), Input(t)) ```
这种设计理念直接借鉴了前端架构 React 和 Redux 的核心思想。将 Agent 做成无状态规约器后,系统将具备极高的可测试性、可恢复性与横向扩展能力,是工程上最优雅、最易维护的形态。
---
[12:23](https://www.bilibili.com/video/BV1dEMS6QExa?t=743s) 工程师的清醒宣言
《12-Factor Agents》真正的价值,在于它不卖任何新框架,甚至劝诫开发者不要过度依赖框架。Dex Horthy 指出,将高质量 AI 软件交付给客户的最快方式,**绝不是押注某个框架然后推倒重来,而是从 Agent 开发中提取出那些小而模块化的概念,融入到已有的成熟产品架构中**。
AI 的爆发并未免除工程师做好传统软件工程的责任。正如十年前的《12-Factor App》梳理了云原生应用思路一样,《12-Factor Agents》在 Agent 狂热的浪潮中提供了一份冷静的工程师宣言:**哪怕底层大模型依然在以指数级变强,这些工程原则依然成立——因为它们解决的从来不是模型的智商问题,而是软件本身的复杂度问题。** 最顶尖的 AI 产品,底层支撑的依然是最朴素的工程纪律。
<ElicitationsGroup message="想要深入探索生产级 Agent 的构建细节?可以从以下方向继续讨论:">
<Elicitation label="深入分析原则 12:如何将 Redux 的 Stateless Reducer 思想应用于 Agent 状态机设计" query="请详细拆解 12-Factor Agents 中的原则 12,结合代码结构说明如何将 React/Redux 的 Stateless Reducer 思想应用到 Agent 状态管理中。"/>
<Elicitation label="探讨原则 7 实现:设计一套基于 HumanLayer 的 Slack/邮件人工审批流" query="请针对原则 7(把人类当工具调用),设计一个用 Human-in-the-loop 实现高风险操作(如发邮件或删除数据)的完整架构与工作流。"/>
<Elicitation label="对比开源 Agent 框架:LangChain/LlamaIndex 与 12-Factor 原则的冲突与融合" query="对比 LangChain 或 CrewAI 等主流开源框架,分析它们在实际生产中容易触碰的“八成死亡谷”痛点,以及如何基于 12-Factor 原则进行解耦改造。"/>
</ElicitationsGroup>
## Notable quotes > [02:34](https://www.bilibili.com/video/BV1dEMS6QExa?t=154s) 框架能帮你快速起跑,却把你困在八成的天花板下面。 — Dex Horthy
> [03:52](https://www.bilibili.com/video/BV1dEMS6QExa?t=232s) 好的 Agent,说到底主要就是软件。 — Dex Horthy
> [05:13](https://www.bilibili.com/video/BV1dEMS6QExa?t=313s) Agent 的本质就是一个循环(Loop)。 — Dex Horthy
> [09:00](https://www.bilibili.com/video/BV1dEMS6QExa?t=540s) 将“询问人类”本身设计成一种标准的 Tool Call。 — Dex Horthy
> [09:00](https://www.bilibili.com/video/BV1dEMS6QExa?t=540s) 我们能给软件的最有用的功能,往往也是最危险的功能。尤其是在由大模型驱动的这种非确定性系统里,这个矛盾更加尖锐。所以把人放进循环(Human-in-the-loop)里,这不是退步;想让强大的能力安全落地,这是唯一的办法。 — Dex Horthy
> [10:30](https://www.bilibili.com/video/BV1dEMS6QExa?t=630s) 把你的 Agent 做成一个无状态的规约器 — Dex Horthy
> [12:23](https://www.bilibili.com/video/BV1dEMS6QExa?t=743s) 哪怕底层大模型依然在以指数级变强,这些工程原则依然成立——因为它们解决的从来不是模型的智商问题,而是软件本身的复杂度问题。 — Dex Horthy
## Mentioned 12-Factor Agents, 12-Factor App, Heroku, Adam Wiggins, Dex Horthy, Replicated, HumanLayer, Y Combinator (YC), Kubernetes, Slack, React, Redux, UNIX
[Source](https://www.bilibili.com/video/BV1dEMS6QExa)