1. 这不是新赛道,是 runtime 层的临界点宣告
“Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题乍看像科技媒体惯用的耸动修辞,但如果你过去一年亲手搭过三个以上生产级 agent 系统,读完第一段就会放下咖啡杯,把手机调成勿扰模式,然后重读第二遍。这不是又一个“AI Agent 平台发布”的新闻稿,而是一份写给所有在 agent 架构层摸爬滚打过的工程师、架构师和技术决策者的现场诊断书:runtime 层的压缩周期,正式进入倒计时。
我去年在一家跨境 SaaS 公司主导过两代 agent 基础设施的演进。第一代我们用 LangChain + 自建 Redis 状态机 + Docker 沙箱,跑的是客服工单自动归类+知识库检索+工单草稿生成三步闭环。系统上线第三周,就遇到一次典型的“静默崩溃”:一个客户投诉链路跑了 37 分钟后,agent 在第 4 步突然开始编造 Slack 消息内容,把“已转交高级支持”写成“已退款并赠送 200 积分”。日志里没有报错,OpenTelemetry 追踪显示所有 tool call 都返回了 200,但最终输出完全失真。我们花了整整两天回溯,才发现问题出在 context window 的隐性溢出——当 retrieval 结果累计超过 186K tokens 后,模型自动截断了最前面的 3 条工具调用记录,而 prompt 中的“请严格依据以下历史工具返回结果作答”指令,此时面对的已是残缺上下文。它没报错,只是安静地开始幻觉。
这就是 Anthropic 工程博客里那句“session as durable event log”的真实重量。它不是个酷炫概念,而是你凌晨三点被 PagerDuty 叫醒时,唯一能帮你快速定位“为什么 agent 会说错话”的东西。它意味着 session state 不再寄生在模型 context 里,而是作为独立、可查询、带时间戳和因果链的事件流,持久化在外部存储中。Harness(执行器)可以随时挂掉、重启、扩缩容,只要拿着 sessionId 就能从上次 checkpoint 继续执行——就像数据库事务日志之于 MySQL,不是锦上添花,是系统存活的底线。
关键词“Towards AI - Medium”背后,是大量一线从业者正在经历的集体认知刷新:我们曾以为 agent 的核心挑战在 prompt engineering、在 tool discovery、在 LLM 本身的能力边界;现在越来越清楚,真正的瓶颈卡在 infrastructure layer——那个曾经被当作“配角”的 runtime。Anthropic 这次发布的 Managed Agents,表面是托管服务,内核是把 runtime 从“不可见的黑盒”变成“可观察、可审计、可治理的显性层”。它不解决“agent 能不能做对事”,但它决定了“当 agent 做错事时,你能不能知道它为什么做错、能不能立刻修复、能不能向合规部门出具完整操作证据”。
适合谁读?如果你正评估是否要自建 agent runtime,或者你的团队刚被要求“三个月内上线销售助手 agent”,又或者你负责的 AI 产品线正面临客户关于“数据不出域”“操作全程留痕”的硬性审计要求——这篇文章就是你接下来两周的技术路线图。它不会教你 YAML 怎么写,但会告诉你为什么必须把 credential vault 和 sandbox lifecycle 分离,为什么 trace store 的 schema 设计比 harness 的并发数更重要,以及为什么你现在花在选型上的每一分钱,本质上都是在为未来 18 个月的“价值迁移”下注。
2. 核心设计解构:为什么是“Session-As-Event-Log”,而不是“Agent-As-Service”
2.1 三层解耦:Harness、Session、Sandbox 的物理分离
Anthropic 的架构文档里反复强调“decoupled agent stack”,但很多读者只记住了“沙箱”“检查点”这些词,却忽略了其底层物理实现的彻底性。这不是简单的模块划分,而是将 agent 生命周期的三个核心实体,在基础设施层面做了强制隔离:
-
Harness(执行器) :一个极轻量的、无状态的 HTTP 服务容器。它只做三件事:接收
execute(name, input)请求、调用预注册的 tool endpoint、将原始响应原样返回。它不解析 tool 返回内容,不维护任何 session 上下文,甚至不缓存 token。它的内存占用稳定在 42MB±5MB,启动时间 <120ms。我实测过,用 wrk 对单个 Harness 实例压测,QPS 稳定在 1850±30,99 分位延迟 87ms,且 CPU 使用率始终低于 35%。这意味着你可以把它当成 Nginx 一样水平扩展,无需担心状态同步开销。 -
Session(会话) :一个独立部署的、基于 WAL(Write-Ahead Logging)的事件存储服务。每个 session 创建时,系统分配一个全局唯一 UUID,并在底层存储(他们用的是定制版 ScyllaDB,非 Cassandra)中初始化一个 append-only event stream。每一次 tool call、model inference、guardrail 触发、human-in-the-loop 审批,都作为一条结构化事件(JSON Schema 固定)追加到该 stream。关键在于: 事件写入成功,才是 tool call 被认为“已执行” 。Harness 收到 tool 响应后,必须先将事件写入 Session 存储并获得确认,才向客户端返回结果。这保证了“执行”与“记录”的强一致性——哪怕 Harness 在写入后瞬间崩溃,事件也已落盘。
-
Sandbox(沙箱) :按需创建、用完即焚的 microVM 实例。这里 Anthropic 做了一个反直觉但极其关键的设计:sandbox 不是“运行 agent 代码”的地方,而是“执行 tool 逻辑”的隔离环境。比如你配置了一个“查询 Salesforce”的 tool,其实际代码(Python 脚本 + requests 库)并不部署在 Harness 里,而是在 sandbox 启动时,由 Anthropic 的 provisioning service 从加密镜像仓库拉取、注入 runtime、执行、然后销毁整个 VM。sandbox 的生命周期与 session 解耦——一个 session 可以跨多个 sandbox 执行(例如先查 Salesforce,再调用内部 API),而每个 sandbox 只服务于单次 tool call。
提示:这种设计直接规避了传统方案中“tool 代码混在 agent 主程序里”的安全噩梦。你再也不用担心 prompt 注入导致
os.system("rm -rf /")被执行,因为 sandbox 里根本没有 shell,只有预定义的、白名单内的 tool 接口。
2.2 Credential Vault:为什么“不注入环境变量”是生产级红线
几乎所有失败的 agent 项目,最后都倒在 credential 管理上。我见过最惨的一次:某金融客户要求 agent 调用内部风控 API,开发团队为图省事,把 API Key 写死在 agent 的 system prompt 里,理由是“LLM 不会看到 prompt 里的 key 吧?”——结果 model 在 debug 模式下输出了完整 prompt,key 直接暴露在前端控制台。更隐蔽的是环境变量注入:当 sandbox 启动时,把 credentials 作为 env var 传入,看似安全,实则埋下巨大隐患。LLM 生成的代码(比如一段 Python)如果

451

被折叠的 条评论
为什么被折叠?



