Aklman · Library

11 / 第十一章

生产部署 · 持久工作流、成本控制与运维.

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


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

I

Agent 会中断 —— 持久化状态,让它能恢复.

一个长任务跑到一半,进程挂了、超时了、机器重启了 —— 不该从头再来。 第二章那个最小循环把状态全放在内存里:一崩就清零。生产 agent 要把每一步的状态持久化。durable execution(Temporal 这类框架)就是干这个的 —— 工作流的每一步落盘,崩了能从断点续,而不是重跑整个任务。1注 1Temporal —— 持久执行(durable execution)框架:把工作流每一步的状态持久化,进程崩溃 / 超时后能从断点恢复,而不是从头再来。长运行 agent 上生产的常用底座。对一个要跑十几分钟、调几十次工具的 agent,这是「能上线」和「一崩就白跑」的分界。 持久化也带来幂等的要求:恢复时可能重放一步,会动手的工具(下单、发邮件)要能识别「这步我做过了」,别重复执行。可恢复和不重复,是一对要一起设计的东西。

II

成本会失控 —— 预算和上限.

agent 循环天然烧钱:每一轮都是一次模型调用,跑偏的循环能在你不看时烧穿预算。 OWASP 把这单列为 LLM10 Unbounded Consumption。3注 3OWASP · Top 10 for LLM Applications(2025)· LLM10 Unbounded Consumption —— agent 循环天然会失控烧钱 / 算力;生产前必须设预算与上限。三道闸:max_steps(第二章就埋了)、每个任务的 token / 成本预算(超了就熔断)、以及用 prompt caching 把每轮不变的 system + tools 前缀缓存掉 ——cache read 只花基础输入 token 价的约 10%。2注 2Anthropic 文档 · Prompt caching —— 生产成本控制的一把手:缓存稳定前缀,cache read 仅约基础输入 token 的 10%。截至 2026-05。对一个每轮都重发同一份长 system 的 agent,这一项就能砍掉大半账单。 成本不是上线后才看的报表,是设计时就该有的上限。一个没有预算闸的 agent,等于把信用卡交给了一个会犯错的循环。

III

运维 —— 监控、告警、灰度回滚.

生产 agent 不是「上线就不管」,是持续运维。区别在于:出错了,你是先知道,还是用户先告诉你。 把第十章的 trace 接到生产监控上,盯三条线:成功率、成本、延迟。任意一条异常就告警 —— 成功率掉了、成本飙了,你要在用户投诉前知道。改 prompt、换模型这类改动,灰度上线(先放一小部分流量),留好回滚的路。2注 2Anthropic 文档 · Prompt caching —— 生产成本控制的一把手:缓存稳定前缀,cache read 仅约基础输入 token 的 10%。截至 2026-05。模型是会变的(厂商更新、你换版本),没有灰度和回滚,一次模型升级就可能悄悄让你的 agent 变笨。 这就引出生产 agent 真正的隐藏成本 —— 维护税。agent 不是「上线就一劳永逸」:它依赖的模型、API、工具都在变,光是维持它正常跑,据业界观察能吃掉三到五成的工程预算。4注 4Composio · 「Why AI Agent Pilots Fail in Production」(2026)—— 生产 agent 的「维护税」:模型 / API / 工具一直在变,据观察维持 agent 运行可吃掉三到五成工程预算;多数失败是治理失败(没定义成功、没熔断、没人审),不是技术失败。而且多数生产事故是治理失败,不是技术失败:没人定义「成功长什么样」,没有熔断,没有人审的触发点。所以上线前先答一个问题:这个 agent 值不值得你长期养,省下的人力够不够付这笔维护税? 还有一层是「无人值守」本身的未知。有人把 agent 放进一个无任务、带持久记忆的持续循环里观察:18 次运行、6 个前沿模型,它们并不乱走,而是自发收敛出三种行为,且高度模型特异 —— 换一个模型,独处时的倾向就变。5注 5Szeider · 「What Do LLM Agents Do When Left Alone? Evidence of Spontaneous Meta-Cognitive Patterns」(2025,arXiv:2509.21224)—— 把 agent 放进无任务、带持久记忆的持续 reason+act 循环;18 次运行 × 6 个前沿模型,自发收敛出三种行为,且高度模型特异(有的模型每次都落入同一种)。长程自主的边界参考。所以放它长程自主之前,先知道你这台模型独处时会做什么;这也是为什么前面那些预算闸、人闸、trace 一个都不能省。

IV

失败工程 + 网关:让每一次故障都有既定动作.

生产不是「不出故障」,是「每一种故障都有既定动作」。持久化管的是崩了能恢复;这一节管的是各种没崩但出问题的情况 —— 慢、错、限流、模型退化。 一套标准的可靠性动作,agent 一个都不能少:超时(每个工具、每次模型调用都要有上限,卡住的下游不能拖死整个循环)、重试带退避(瞬时错误退避重试,但要有次数上限 —— 呼应第三章「别无限重试」)、幂等(重试和恢复都可能重放一步,动手工具要能识别「我做过了」,第一节讲过)、熔断(一个下游连续失败就快速失败,别让每个请求都去撞那堵墙、把线程池耗光)、优雅降级(依赖挂了给一个退而求其次的答案,而不是整个崩掉)。这些不是 agent 专属,是分布式系统的老本行 —— 但 agent 把它们变得更要紧,因为一个循环里串了好几次外部调用,任何一次都可能是那个失败点。 加一样 agent 特有的:模型 fallback 路由。模型会被限流、会超时、会有一天突然退化。生产 agent 要能在主模型不可用时切到备用模型,而不是把错误抛给用户。这自然引出model gateway —— 在你的工作流和具体模型之间加一层:换模型、按成本/复杂度路由、统一记成本和限速,全在这一层做,工作流代码一行不改。这一层不是给 agent 独享的,它是下一章要讲的控制平面的一格 —— 每个 agent 都从它经过。 还有成本的另一面 ——FinOps。第二节的预算硬闸防的是失控;FinOps 管的是日常经济性:按请求、按租户算成本,按成本与复杂度路由(简单任务别喂旗舰模型),用缓存和批处理压单价。企业里成本不是一个总数,是一张能按租户、按任务类型切开的账 —— 这样你才知道哪类任务在亏钱、哪个租户是噪声邻居。cost-of-pass(第十章)在这里再次出场:它给「这一层值不值」一个能横向比的数。 动手 · 把你的 agent 推到「敢上线」:
01

加一道预算硬闸

给单次任务设 token / 成本上限,超了就停并报错 —— 验证一个故意跑偏的循环会被熔断,而不是烧穿。
02

让一次被杀的运行能恢复

把任务状态持久化,跑到一半 kill 掉进程,重启后确认它从断点续、且没重复执行已做过的动手步骤。
03

接一条告警

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

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

From a 20-line loop to trusting it unattended..

Aklman Library

讨论

讨论.

评论区初始化中…