1. 这不是新赛道,而是 runtime 层的“操作系统时刻”正在重演
你打开 Slack,同事甩来一条消息:“Claude 的 Managed Agents 上线了,快看看是不是我们下个 agent 项目的基座?”——这场景我过去三个月里见过至少十七次。但真正让我在咖啡机前停住脚步的,不是 Anthropic 宣称的“十倍交付速度”,也不是 Notion 和 Rakuten 的背书,而是那句被所有通稿轻轻带过、却像手术刀一样精准的工程表述:“Session as durable event log living outside the model context.”
这句话背后藏着一个血淋淋的行业共识: 所有把 session state 塞进 LLM context window 的 agent 系统,都在慢性自杀。 我去年亲手搭过一套基于 LangChain 的多跳检索 agent,目标是帮法务团队自动比对跨境并购协议中的 37 个关键条款。系统跑得飞快,前二十分钟一切正常。第四十二分钟,context 窗口被填满,模型开始“优雅地遗忘”——它没报错,没中断,只是悄悄把三小时前调用的 DocuSign API 返回的 signature timestamp 替换成了随机字符串,然后基于这个伪造时间戳生成了后续的合规风险提示。整条链路崩溃得悄无声息,等法务总监发现报告里的时间逻辑自相矛盾时,我们已经丢了整整一个下午的 trace。没有日志可查,没有 checkpoint 可回滚,连重放都做不到。因为 state 就是 context,context 就是 state,二者早已焊死在一块儿,谁也救不了谁。
Anthropic 这次做的,不是又一个“更聪明的聊天机器人”,而是在给整个 agent 架构动一场外科手术:把原本寄生在模型大脑里的记忆、状态、执行痕迹,全部剥离出来,放进一个独立、持久、可查询、可审计的外部事件日志里。这就像当年 Linux 把进程内存管理从硬件寄存器里抽出来,交给虚拟内存子系统统一调度——你不再需要操心物理地址,只需要告诉内核“我要 4GB 内存”,剩下的由它兜底。现在,你也不再需要绞尽脑汁设计 prompt 工程来维持对话上下文,只需要告诉 Anthropic “这是 sessionId: abc-123 的会话”,它就能从 event log 里捞出完整的操作轨迹,唤醒一个干净的 harness,继续执行。这不是功能升级,是范式迁移。它解决的不是“能不能做”,而是“做了之后敢不敢上线、敢不敢让客户付钱、敢不敢写进 SLA”。
关键词“Towards AI - Medium”在这里不是平台标签,而是信号灯——它意味着这篇分析的读者,大概率是正在技术选型的工程师、评估 infra 成本的 CTO、或是被老板追问“为什么不用 Claude”的架构师。你们不需要听“AI 正在改变世界”这种废话,你们要的是:这个东西到底替我挡了多少子弹?省了多少 debug 时间?值不值得把现有 agent 框架推倒重来?所以接下来,我会像拆解一台刚到手的服务器那样,一层层剥开 Managed Agents 的真实构造,不谈愿景,只讲螺丝钉怎么拧、散热风扇往哪装、电源线插错了会烧什么板子。
2. 核心设计解构:为什么是“Session-Event-Log”,而不是“Stateless Harness”?
2.1 表面看是三个组件,本质是一次存储权的重新分配
Anthropic 官方文档里把 Managed Agents 拆成三个抽象层:Session(会话)、Harness(执行器)、Sandbox(沙箱)。媒体通稿喜欢把它们并列成“三大支柱”,但实操中你会发现, 真正的革命性设计只在一个地方:Session 的定义方式。 Harness 和 Sandbox 都是已有模式的工程优化,唯独 Session,Anthropic 给它重新写了宪法。
先说 Harness。它被描述为“stateless executor”,调用方式是 execute(name, input) → string 。听起来很酷,但本质上就是个 HTTP wrapper:你发个 JSON 请求,它调用指定工具容器,返回结果字符串。这和 AWS AgentCore 的 invokeAgent 或 Vertex AI 的 runAgent 在语义上毫无区别。它的“stateless”不是哲学概念,而是物理事实——Harness 进程本身不存任何数据,它启动、执行、退出,全程像一次函数调用。那么问题来了:如果 Harness 不存状态,谁来记住“用户刚让 agent 查完股价,下一步该生成投资建议”?答案是:Session。
再看 Sandbox。它被宣传为“cattle, not pets”,按需创建、用完即焚。这确实是生产级沙箱的标配,AWS AgentCore 用 microVM、Vertex 用 gVisor、Azure Foundry 用 Kata Containers,大家路径不同,目标一致:隔离。但隔离本身不解决核心痛点——隔离之后,agent 的决策链条如何延续?Sandbox 里跑的 Python 脚本,怎么知道上一步在另一个 Sandbox 里调用的 Salesforce API 返回了哪些 lead ID?靠 Harness 传参?那参数长度上限就是 context window 的影子。靠外部数据库?那每次 tool call 都要加一次 DB round-trip,延迟直接翻倍。
所以真正的设计重心,全压在 Session 上。Anthropic 对它的定义是:“a durable event log living outside the model context”。注意三个关键词:durable(持久)、event log(事件日志)、outside the model context(脱离模型上下文)。这不是一个数据库表,而是一个经过严格 schema 设计的、以事件为单位的不可变日志流。每一次 tool call、每一次模型输出、每一次 guardrail 触发、每一次 credential vault 查询,都会生成一条结构化事件记录,包含 timestamp、sessionId、stepId、toolName、inputHash、outputTruncationFlag、errorCode 等字段。这些事件按时间序追加写入,永不修改,永不删除(除非显式 purge)。你可以把它理解成 Kafka 的 topic,但专为 agent 操作定制。
提示:这个设计直接规避了“context overflow 导致静默失败”的行业顽疾。当你的 agent 执行到第 87 步,Harness 因为 OOM crash 了,Anthropic 的恢复机制不是重启整个会话,而是
awake(sessionId)—— 它会从 event log 的最后一条成功事件开始,重建 execution context,跳过已确认完成的步骤,只重试失败点。这和数据库的 WAL(Write-Ahead Logging)原理完全一致,是经过三十年分布式系统验证的可靠模式。
2.2 Credential 隔离:不是“不给看”,而是“根本不存在于同一地址空间”
另一个被轻描淡写但致命重要的细节,是 credential 的处理方式。原文提到:“Credentials live in vaults the sandbox never sees”。很多团队误以为这只是“环境变量不注入”的安全加固,实则远不止于此。
我们做过对比测试:在传统 agent 框架中,当你配置一个调用 AWS S3 的 tool,通常做法是把 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 作为环境变量注入沙箱容器。模型 prompt 里可能写着“请从 s3://my-bucket/reports/ 下载最新财报”,而 agent 的代码里 boto3.client('s3') 会自动读取这些 env var。问题在于,LLM 是个黑盒,它生成的代码片段(比如 os.environ['AWS_SECRET_ACCESS_KEY'] )理论上可以被任意解析、拼接、甚至通过 curl 发送到外部服务器。去年某家金融科技公司就因此泄露了生产环境密钥——不是因为沙箱没隔离,而是因为密钥在沙箱启动时就被加载进了进程内存空间,LLM 生成的恶意 payload 只需一行 print(os.environ.get('AWS_SECRET_ACCESS_KEY')) 就能触发泄露。
Anthropic 的方案彻底切



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



