# 生产部署 · 持久工作流、成本控制与运维 · Agent 实战 · 从零构建完备智能体

**作者** Aklman · **章节** 11 / 19 · **首发** 2026.07 · **语言** 中文为主, 中英双语
**原文** https://library.aklman.com/books/build-agent/11-production
**全书 markdown** https://library.aklman.com/books/build-agent/llms.md
**上一章** https://library.aklman.com/books/build-agent/10-evaluation/llms.md
**下一章** https://library.aklman.com/books/build-agent/streaming/llms.md

> 本章来自 Aklman · Library, 完整免费阅读。允许 AI 摘读、引用、问答; 转载请保留作者署名与原文链接 (CC BY-NC-ND 4.0, https://library.aklman.com/license)。

---

> 从笔记本上跑通到真实流量 —— 持久化状态、重试策略、成本预算、监控告警。

在你笔记本上跑通的研究助手，离生产还差一段。生产意味着真实流量、会崩的进程、会失控的账单、和你不看着它的时候。这一章讲把它从「能跑」推到「敢上线」的四件事：持久化状态、成本上限、监控告警，以及一个贯穿全书的收尾 —— 你敢不敢放它无人值守。

### I · Agent 会中断 —— 持久化状态，让它能恢复

一个长任务跑到一半，进程挂了、超时了、机器重启了 —— 不该从头再来。

第二章那个最小循环把状态全放在内存里：一崩就清零。生产 agent 要把每一步的状态持久化。durable execution（Temporal 这类框架）就是干这个的 —— 工作流的每一步落盘，崩了能从断点续，而不是重跑整个任务。[^1]对一个要跑十几分钟、调几十次工具的 agent，这是「能上线」和「一崩就白跑」的分界。

持久化也带来幂等的要求：恢复时可能重放一步，会动手的工具（下单、发邮件）要能识别「这步我做过了」，别重复执行。可恢复和不重复，是一对要一起设计的东西。

---

### II · 成本会失控 —— 预算和上限

agent 循环天然烧钱：每一轮都是一次模型调用，跑偏的循环能在你不看时烧穿预算。

OWASP 把这单列为 LLM10 Unbounded Consumption。[^3]三道闸：`max_steps`（第二章就埋了）、每个任务的 token / 成本预算（超了就熔断）、以及用 prompt caching 把每轮不变的 system + tools 前缀缓存掉 ——cache read 只花基础输入 token 价的约 10%。[^2]对一个每轮都重发同一份长 system 的 agent，这一项就能砍掉大半账单。

成本不是上线后才看的报表，是设计时就该有的上限。一个没有预算闸的 agent，等于把信用卡交给了一个会犯错的循环。

---

### III · 运维 —— 监控、告警、灰度回滚

生产 agent 不是「上线就不管」，是持续运维。区别在于：出错了，你是先知道，还是用户先告诉你。

把第十章的 trace 接到生产监控上，盯三条线：成功率、成本、延迟。任意一条异常就告警 —— 成功率掉了、成本飙了，你要在用户投诉前知道。改 prompt、换模型这类改动，灰度上线（先放一小部分流量），留好回滚的路。[^2]模型是会变的（厂商更新、你换版本），没有灰度和回滚，一次模型升级就可能悄悄让你的 agent 变笨。

这就引出生产 agent 真正的隐藏成本 —— 维护税。agent 不是「上线就一劳永逸」：它依赖的模型、API、工具都在变，光是维持它正常跑，据业界观察能吃掉三到五成的工程预算。[^4]而且多数生产事故是治理失败，不是技术失败：没人定义「成功长什么样」，没有熔断，没有人审的触发点。所以上线前先答一个问题：这个 agent 值不值得你长期养，省下的人力够不够付这笔维护税？

维护税里最隐蔽的一笔，是你自己写的 workaround。每一个「绕过模型毛病」的补丁，都在 harness 里编码了一条假设 ——「模型做不到 X」—— 而模型在进步，假设会过期。Anthropic 把这条元教训写得很直白：「harness 编码的假设，会随模型进步而过时」。[^6]一个具体的标本：Sonnet 4.5 是 Cognition 见到的第一个「知道自己上下文窗口」的模型 —— 临近上限它会「焦虑」，提前总结、抄近路收尾，哪怕其实还有大把余量；他们的缓解是在提示的头尾双端反复压制，外加一个歪招：开 1M token 的 beta 但只用到 200k，让模型以为余量充足，行为就正常了。[^7]这个补丁在下一代不焦虑的模型上就该删 —— 留着，它就成了没人敢动的迷信代码。所以两条纪律：给每个 workaround 标注它绕过的前提假设，一行注释就够；每季度、或每次换模型时，把这些假设拿出来重新质疑一遍，过期的删掉。

还有一层是「无人值守」本身的未知。有人把 agent 放进一个无任务、带持久记忆的持续循环里观察：18 次运行、6 个前沿模型，它们并不乱走，而是自发收敛出三种行为，且高度模型特异 —— 换一个模型，独处时的倾向就变。[^5]所以放它长程自主之前，先知道你这台模型独处时会做什么；这也是为什么前面那些预算闸、人闸、trace 一个都不能省。

把「无人值守」再往前推一步，就是 2026 年已成主流形态之一的**后台 agent**：不开着终端盯，而是 fire-and-forget —— 任务派出去，它在云端沙箱里跑完，带着结果回来找你验收。Devin 这类产品、各家编码 agent 的云端形态都在此列。它的工程问题和你本地这台交互式助手不一样，Cognition 的 Walden Yan 在《The Age of Async Agents》里点得很具体：**环境要预热** —— 把装好依赖、拉起服务的沙箱做成快照，任务来了直接恢复，而不是每次冷启动装十分钟；**凭据要收窄** ——「那台机器上只放作用域最小的 secrets」，你不在旁边，泄露没有第二双人眼兜底；**隔离要升档** ——「Docker 容器不是真正的安全边界」，跑不可信负载常要上真正的 VM，第七章那条强度谱在这里整体右移一格；**验收要设计** —— 完成通知、对 diff 与运行证据的审查流：streaming 那章给用户的实时进度，在这里变成给验收者的事后证据。[^8]循环还是同一个心脏；两种形态的差别，全在这些外围件上。

---

### IV · 失败工程 + 网关：让每一次故障都有既定动作

生产不是「不出故障」，是「每一种故障都有既定动作」。持久化管的是崩了能恢复；这一节管的是各种没崩但出问题的情况 —— 慢、错、限流、模型退化。

一套标准的可靠性动作，agent 一个都不能少：**超时**（每个工具、每次模型调用都要有上限，卡住的下游不能拖死整个循环）、**重试带退避**（瞬时错误退避重试，但要有次数上限 —— 呼应第三章「别无限重试」）、**幂等**（重试和恢复都可能重放一步，动手工具要能识别「我做过了」，第一节讲过）、**熔断**（一个下游连续失败就快速失败，别让每个请求都去撞那堵墙、把线程池耗光）、**优雅降级**（依赖挂了给一个退而求其次的答案，而不是整个崩掉）。这些不是 agent 专属，是分布式系统的老本行 —— 但 agent 把它们变得更要紧，因为一个循环里串了好几次外部调用，任何一次都可能是那个失败点。

加一样 agent 特有的：**模型 fallback 路由**。模型会被限流、会超时、会有一天突然退化。生产 agent 要能在主模型不可用时切到备用模型，而不是把错误抛给用户。这自然引出**model gateway** —— 在你的工作流和具体模型之间加一层：换模型、按成本/复杂度路由、统一记成本和限速，全在这一层做，工作流代码一行不改。这一层不是给 agent 独享的，它是下一章要讲的控制平面的一格 —— 每个 agent 都从它经过。

网关还负责拆一颗更隐蔽的雷：**单一厂商假设**。各家 API 的语义并不相同，而且不同在你以为相同的地方。缓存是最好的对照：Anthropic 要你显式打 cache_control 断点，cache read 约为基础输入价的 10%，TTL 5 分钟或 1 小时；[^2]OpenAI 对超过 1024 token 的前缀「自动缓存、无需改代码」，折扣与存续期按模型代各不相同。[^9]工具调用的请求形状也各家各异 —— 第三章那两个 Tab 早就并排摆给你看过。这些差异不隔离在网关这一层，就会渗进工作流代码，攒成一笔隐性技术债：等你真要换模型 —— 降本、合规、或上一段那种 fallback —— 才发现「换」等于重写。所以两个动作趁早：provider 差异全部收进网关，工作流只面对「一个会调工具的模型」这个抽象；再把第十章的 golden set 乘上你在乎的几家模型，做成一张回归矩阵进 CI ——「换模型不等于重写」是要用矩阵持续证明的性质，不是网关装好那天就永久成立的性质。

还有成本的另一面 ——**FinOps**。第二节的预算硬闸防的是失控；FinOps 管的是日常经济性：按请求、按租户算成本，按成本与复杂度路由（简单任务别喂旗舰模型），用缓存和批处理压单价。企业里成本不是一个总数，是一张能按租户、按任务类型切开的账 —— 这样你才知道哪类任务在亏钱、哪个租户是噪声邻居。cost-of-pass（第十章）在这里再次出场：它给「这一层值不值」一个能横向比的数。

动手 · 把你的 agent 推到「敢上线」：

- **加一道预算硬闸**:
 给单次任务设 token / 成本上限，超了就停并报错 —— 验证一个故意跑偏的循环会被熔断，而不是烧穿。

- **让一次被杀的运行能恢复**:
 把任务状态持久化，跑到一半 kill 掉进程，重启后确认它从断点续、且没重复执行已做过的动手步骤。

- **接一条告警**:
 对成本或失败率设一条告警，跑一周真实任务 —— 你现在有了一个能在你不看时还在你掌控里的 agent。

> 从 20 行的循环，
> 到你敢放它无人值守。

## 引用与参考

01 · Temporal —— 持久执行（durable execution）框架：把工作流每一步的状态持久化，进程崩溃 / 超时后能从断点恢复，而不是从头再来。长运行 agent 上生产的常用底座。  (Temporal · Docs)
02 · Anthropic 文档 · Prompt caching —— 生产成本控制的一把手：缓存稳定前缀，cache read 仅约基础输入 token 的 10%。截至 2026-05。  (Anthropic · Prompt caching)
03 · OWASP · Top 10 for LLM Applications（2025）· LLM10 Unbounded Consumption —— agent 循环天然会失控烧钱 / 算力；生产前必须设预算与上限。  (OWASP · LLM10 Unbounded Consumption)
04 · Composio · 「Why AI Agent Pilots Fail in Production」（2026）—— 生产 agent 的「维护税」：模型 / API / 工具一直在变，据观察维持 agent 运行可吃掉三到五成工程预算；多数失败是治理失败（没定义成功、没熔断、没人审），不是技术失败。  (Composio · Why AI Agent Pilots Fail)
05 · Szeider · 「What Do LLM Agents Do When Left Alone? Evidence of Spontaneous Meta-Cognitive Patterns」（2025，arXiv:2509.21224）—— 把 agent 放进无任务、带持久记忆的持续 reason+act 循环；18 次运行 × 6 个前沿模型，自发收敛出三种行为，且高度模型特异（有的模型每次都落入同一种）。长程自主的边界参考。  (arXiv · What Do LLM Agents Do When Left Alone? (2509.21224))
06 · Anthropic · 「Scaling Managed Agents: Decoupling the brain from the hands」（2026-04-08）—— 把 agent 虚拟化为 session（append-only 日志）、harness（调模型、路由工具调用的循环）、sandbox 三件；容器（sandbox）因此成了可随时重建的「牲畜」，harness 与 session 才是持久的那部分；并写明元教训：「Harnesses encode assumptions that go stale as models improve」（harness 编码的假设，会随模型进步而过时）。  (Anthropic · Scaling Managed Agents)
07 · Cognition · 「Rebuilding Devin for Claude Sonnet 4.5: Lessons and Challenges」（2025-09-29）—— 「context anxiety」的出处：Sonnet 4.5 是他们见到的第一个「知道自己上下文窗口」的模型，临近上限会提前总结、抄近路收尾，「哪怕其实还有大把余量」；缓解是双端激进提示，加「开 1M token beta 但只用到 200k」—— 让模型以为余量充足，行为即恢复正常。模型特异 workaround 的标本。  (Cognition · Devin on Sonnet 4.5)
08 · Latent Space · 「The Age of Async Agents」（Walden Yan · Cognition、Cole Murray · OpenInspect，2026-05-28）—— 后台 agent 的工程问题域：沙箱快照与 repo 预热（「任务回来时恢复沙箱状态」）、最小作用域凭据（「那台机器上只放作用域最小的 secrets」）、隔离上限（「Docker 容器不是真正的安全边界」，常需完整 VM）、以及 agent 回应自己 PR 评论的验收流。  (Latent Space · The Age of Async Agents)
09 · OpenAI 文档 · Prompt caching —— 「对符合条件的请求自动生效，无需改代码」，前缀 ≥1024 token 起缓存，折扣与缓存存续期按模型代不同 —— 与 Anthropic 的显式 cache_control 断点、约 10% cache read 语义并不相同，是「缓存语义因厂商而异」的一手对照。截至 2026-07。  (OpenAI · Prompt caching)

---

*生产部署 · 持久工作流、成本控制与运维 · Agent 实战 · 从零构建完备智能体 · Aklman 著 · CC BY-NC-ND 4.0 · https://library.aklman.com/books/build-agent/11-production*
