Skip to content

第 19 章:一个 Agent 系统怎样才算真的能长期活着

本章目标:把全书从“能跑起来”收束到“能长期维护”,讲清部署、测试、评估、观测与工程纪律为什么不是附属问题,而是 Agent 系统能不能活下去的硬条件。
本章对应总纲:docs/ebook-outline.md 中“第 19 章正文写作提纲(2026-03-31 归档)”。


19.1 为什么“能演示”离“能活着”还差得非常远

很多 Agent 系统一开始都很会演示:

  • 跑一遍挺顺
  • 样例任务能成
  • 看起来很聪明
  • 页面也挺像产品

但这离“能长期活着”还差得非常远。

前面的持久化、交互承载层、平台化、多 Agent 编排,讲的是系统不同局部能力怎么成立;这一章要往上提一层,只讲另一件事:当这些局部拼成一个真实产品后,你靠什么让它持续可部署、可验证、可观测、可维护。

因为真正的工程问题不是:

  • 它能不能在你面前成功一次

而是:

  • 它能不能持续部署
  • 它能不能稳定升级
  • 它失败时你能不能知道为什么
  • 它表现变差时你能不能测出来
  • 它上线半年后团队还敢不敢继续改

所以一个 Agent 系统从 demo 走向产品,真正要补的不是一点 UI,而是一整圈工程闭环。


19.2 部署:不是把代码放上去,而是把边界带上去

部署最容易被低估。

很多人觉得部署就是:

  • 打包
  • 发版
  • 跑起来

这太浅了。

对 Agent 系统来说,部署同时还在决定:

  • 运行在哪个环境
  • 能访问哪些资源
  • 拥有什么模型与外部能力
  • 用什么凭证
  • 遵守什么权限策略
  • 出问题时怎么回滚

也就是说,部署不是“搬家”,而是把整个运行边界一起搬上去。

如果这层没设计清楚,线上和线下很快就会变成两套完全不同的系统。


19.3 测试:为什么 Agent 不能只靠“我试了一下挺好”

Agent 系统测试难,这是真的。

但难不代表可以不测。

因为如果你只靠主观体验判断,很快就会出现这些问题:

  • 某次看起来聪明,下一次却跑偏
  • 小改动让工具调用质量悄悄变差
  • 权限边界被破坏了却没立刻暴露
  • 上下文压缩后丢了关键约束
  • 多 Agent 编排开始重复劳动但没人发现

所以 Agent 测试不能只看“最终回答像不像”,还要拆层去测:

  • 工具是否正确被选中
  • 参数是否稳定生成
  • 风险动作是否正确停机
  • 编排结果是否真正收敛
  • 失败路径是否能被接住

也就是说,Agent 测试要覆盖的不是单一答案,而是系统行为。


19.4 评估:不是看模型聪不聪明,而是看系统表现稳不稳

测试和评估不能混成一个东西。

测试更偏

  • 已知约束是否被满足
  • 固定行为有没有被破坏
  • 回归有没有出现

评估更偏

  • 在一组代表性任务上,系统整体表现如何
  • 成功率、成本、耗时、稳定性是否在可接受范围内
  • 某次改动是否让系统整体变好还是变差

所以评估本质上是在回答:

这套系统现在到底比之前更有用,还是只是看起来更复杂?

如果没有评估,你每次优化都很可能只是在凭感觉开车。


19.5 观测:没有可见性,就没有维护能力

一个真实运行中的 Agent 系统,最怕的不是报错,而是:

  • 悄悄变慢
  • 悄悄变贵
  • 悄悄开始选错工具
  • 悄悄开始在某些任务上失败
  • 悄悄把上下文拖爆

如果这些事情没有观测面,你根本不会知道系统是在进步还是在腐烂。

所以观测至少要回答几件事:

  • 当前任务成功率如何
  • 常见失败发生在哪一层
  • 哪类工具调用最常出问题
  • 哪个阶段最耗时
  • 哪些路径最常触发确认或失败停机
  • 多 Agent 编排里哪一段最容易失控

没有这些可见性,维护基本就是猜。


19.6 为什么 Agent 系统特别需要把“失败”当一等公民

普通软件也会失败。

但 Agent 系统的失败更麻烦,因为它的失败经常不是单点报错,而是:

  • 理解错目标
  • 选错工具
  • 参数轻微偏掉
  • 在不该继续时继续了
  • 在该问人时没问
  • 多 Agent 汇总失真

这种失败如果不被结构化记录和分析,团队就只会得到一种很没用的反馈:

  • “有时候不太对。”

这等于没说。

所以一个能长期活着的 Agent 系统,必须把失败分类、留痕、回放、复盘。

不是为了开会,而是为了让系统下一次少错一点。


19.7 工程纪律:为什么很多 Agent 系统最后不是死于模型,而是死于松散

讲到底,很多系统最后并不是被模型能力卡死,而是被工程松散拖死。

典型味道包括:

  • 没有明确默认边界
  • 线上配置没人说得清
  • 新扩展乱接
  • 回归靠运气发现
  • 失败没有复盘机制
  • 成功标准没人统一定义

这类系统即使短期看起来很灵活,长期也很难活。

因为你每改一次,都是在给未来埋雷。

所以工程纪律在 Agent 系统里不是保守主义,而是系统持续进化的前提。


19.8 用 Claude Code 看一个现实中的“长期活着”样本

Claude Code 这个案例很适合拿来做最后收束,因为你能看到它并不只是“能调用模型和工具”。

从当前仓库就能看见几条很具体的工程闭环线索:

  • 根级 package.jsondocs:devdocs:builddocs:preview 固定成最小运行脚本,说明最基本的开发、构建、预览路径是被标准化的
  • .github/workflows/deploy-docs.yml 明确把 pnpm installpnpm docs:build、上传产物、Pages 部署串成一条可重复执行的交付链,这就是最朴素的“能部署”
  • 这个工作流还显式写了 needs: buildconcurrency.group: pages,说明执行顺序和并发边界不是靠默契,而是靠工作流模型固化
  • .vitepress/config.ts 单独维护站点导航、搜索、编辑链接、最后更新时间和 srcExclude,说明线上呈现行为不是靠人工记忆,而是靠配置稳定复现
  • examples/settings/README.mdexamples/settings/settings-strict.json 又把权限、审批、Hook 管理、沙箱约束做成可复用样板,说明治理边界也需要能被复制、审查和下发

它其实已经在很多地方体现了一个系统想长期活着需要的东西:

  • 权限边界明确
  • 风险动作有确认
  • 任务和计划有独立追踪
  • 扩展点有分层
  • 子 Agent 有边界
  • 记忆、上下文、状态被尽量拆开
  • 最小部署链路和配置壳层可以重复执行

如果再往设计思路里压一层,你会看到几条更硬的工程规则:

  • 能重复执行的流程,要先标准化成脚本或工作流,别依赖人工记忆
  • 并发和执行顺序要显式建模,别靠“大家都知道先干嘛”
  • 治理边界要跟交付链一起走,别让线上线下变成两套人格
  • 文档站这种看似简单的系统,也要有最小工程闭环,因为能稳定发布本身就是长期维护的起点

这些东西单看都不算炫技。

但合在一起,你就能看见:真正成熟的 Agent 系统,拼的不是某一轮回答多惊艳,而是长期运行时有没有结构支撑。


19.9 一个实用的判断标准:你的 Agent 系统现在到底活在哪个阶段

可以很粗暴地分成三档:

第一档:能演示

  • 跑通几个样例
  • 主要靠人盯着
  • 没有稳定评估和观测

第二档:能上线

  • 有基本权限边界
  • 有可重复部署路径
  • 有最小测试和失败处理

第三档:能长期维护

  • 有持续评估
  • 有失败分类与回放
  • 有关键指标观测
  • 有稳定扩展面和工程纪律

这三档差别非常大。

很多系统以为自己已经在第三档,其实还停在第一档半。


19.10 最后的标准,不是更聪明,而是更稳、更可控、更可演进

整本书讲到这里,可以把标准压成一句不好听但很实用的话:

一个 Agent 系统的终极成熟度,不看它偶尔多惊艳,而看它能不能长期稳定地在边界内做对事。

所以最终真正重要的,不是:

  • 某次 demo 多像魔法
  • 某个模型多会写字
  • 某个界面多像产品发布会

而是:

  • 它能不能被部署
  • 它能不能被测试
  • 它能不能被评估
  • 它能不能被观测
  • 它能不能被长期维护和持续演进

如果这些都没有,再聪明也只是短命系统。


19.11 本章小结

这一章真正想讲清的是:一个 Agent 系统能不能长期活着,靠的不是某次演示成功,也不是某个局部能力做得漂亮,而是部署、测试、评估、观测和工程纪律这整圈工程闭环能不能成立。

持久化当然重要,但持久化只解决“状态别丢”;真正决定系统能不能长期维护的,是你有没有把整个运行与治理过程工程化。

你现在应该记住六件事:

  1. 能演示,远不等于能长期活着。
  2. 部署是在携带整套运行边界,而不只是发布代码。
  3. Agent 测试要测系统行为,不只是测最终回答。
  4. 评估解决“整体表现是否真的变好”,观测解决“运行中到底发生了什么”。
  5. 失败必须被当成一等公民来记录、分类和复盘。
  6. 很多 Agent 系统最后死于工程松散,而不是死于模型不够强。

到这里,这本书的主线其实已经完整了:从 Agent 是什么,到它怎样运行、怎样接能力、怎样被治理、怎样走向平台、怎样长期活着,再到最后怎样被收束成一套判断框架。