1. 这不是新赛道,是 runtime 层的“操作系统时刻”来了
我第一次在生产环境里跑一个需要连续调用 7 次外部 API、中间穿插 3 轮人工审核确认、最后生成 PDF 并邮件分发的客服工单处理 agent 时,是在 2025 年初。当时我们没用任何托管服务,全靠自己搭——用 LangGraph 写状态机,Redis 存 session,Docker Compose 起隔离容器,Vault 管凭证,Prometheus + Grafana 监控延迟。上线第三天凌晨两点,一个客户投诉说“流程卡在第二步,等了 40 分钟没反应”。我连上日志系统,发现 agent 在第 38 分钟时 context 窗口爆了:它把前 22 分钟的所有工具返回、用户输入、系统提示全塞进 prompt,最后 16 分钟的 token 全被截断。模型没报错,它只是开始“合理编造”——把 Slack 的审批消息当成 Jira 的 ticket ID,把财务系统的返回值当成客服电话号码,然后一本正经地给客户发了一串乱码。更糟的是,我们根本没法重放这个 session:没有完整事件流,没有 checkpoint,只有零散的 log 行和一个被截断的 final prompt。那次故障没造成直接损失,但团队花了整整两天重建状态、手动补数据、写脚本回填历史。从那以后,我桌上贴了张便签:“State outside context — or you’ll pay in midnight debugging.”
这就是 Anthropic 在 2026 年 4 月 8 日发布的 Claude Managed Agents 真正解决的问题。它不是又一个“让 AI 更聪明”的模型更新,而是一个 明确宣告 runtime 层进入工业化阶段的信号弹 。关键词不是“agent”,而是“managed”——托管、可运维、可审计、可计费、可迁移。它把过去一年里所有团队在自建 agent 基础设施时踩过的坑,打包成一套有 SLA、有定价、有文档、有支持的托管服务。你不用再纠结“要不要自己写 sandbox 隔离层”,不用再半夜爬起来修 Redis 内存泄漏导致的 session 丢失,不用再为“凭证该不该传进 container”和安全团队吵三轮会。Anthropic 把 session 当作一个持久化事件日志(event log),把执行器(harness)做成无状态函数,把沙箱当成按需启停的 cattle(牲畜),而不是需要精心喂养的 pets(宠物)。这背后是一整套工程范式的迁移:从“模型即一切”转向“模型只是 runtime 上的一个可插拔组件”。
这个转变对谁最痛?不是大厂,不是云厂商,而是那些靠卖 agent 框架、sandbox SDK、甚至“agent 运维咨询”吃饭的初创公司。它们的 PPT 里还写着“我们提供最轻量、最灵活、最可控的 agent 执行层”,而现实是:AWS AgentCore 已经 GA 五个月,Vertex AI Agent Builder 的 registry 已接入 Apigee 网关,Azure AI Foundry 把 AutoGen 和 Semantic Kernel 深度缝进了自己的平台。当 runtime 层变成云厂商账单上一行不起眼的“$0.08/session-hour”,当开发者打开控制台就能一键部署一个带 policy 控制、trace 可查、credential 自动注入的 agent,那些曾经需要写 2000 行代码才能实现的功能,现在点三下鼠标就完成了。这不是技术优劣之争,是基础设施成熟度的代际差。就像当年 Docker 出来后,还在手写 init.d 脚本管理进程的运维工程师突然发现,自己最核心的技能树正在被重新定义。
2. 核心设计拆解:为什么是“Session-as-Event-Log”,而不是“Context-as-Storage”
2.1 旧范式的致命缺陷:把大脑当硬盘用
先说清楚问题出在哪。几乎所有早期 agent 架构(包括我们自己最初搭的)都默认把 LLM 的 context window 当作唯一的、临时的、不可靠的“状态存储”。你让它查数据库、调 API、读文件、记用户偏好,所有结果都一股脑塞进 prompt,靠模型自己“记住”并引用。这在单轮问答或短流程里没问题,但一旦流程变长、步骤变多、数据变杂,三个硬伤立刻暴露:
-
容量天花板不可逾越 :Claude 3.5 Sonnet 的 context 是 200K tokens,听着很大,但实际一算很紧。一个典型企业级 agent 流程:系统提示(3K)+ 历史对话(每轮平均 1.2K × 10 轮 = 12K)+ 工具调用返回(API response 平均 8K × 5 次 = 40K)+ 用户上传附件(PDF 解析后文本 50K)= 已超 105K。剩下不到 100K 要留给模型思考、生成、纠错。而真实业务中,一个销售线索跟进可能涉及 CRM、邮件、会议系统、报价单生成、合同库检索,10 步是常态。我们那个工单 agent 就是卡在第 38 分钟——context 满了,模型自动丢弃最早几轮的 tool result,后续所有决策都基于残缺信息。
-
状态不可追溯、不可重放 :没有统一事件日志,你就无法回答“它刚才到底做了什么?”“哪一步开始出错的?”“如果重试,该从哪恢复?”log 文件里只有零散的 timestamp + “calling tool X” + “got response Y”,但缺少因果链:是哪个用户输入触发了这次调用?调用参数是谁构造的?返回值是否被后续步骤正确解析?这种模糊性让 debug 成为概率游戏。我们那次故障,最终靠翻 3 个不同服务的日志、比对时间戳、手动拼接才还原出错误路径,耗时 8 小时。
-
安全与合规裸奔 :把 credential、token、敏感字段直接塞进 prompt,等于让模型“看”到一切。哪怕你加了 guardrail 提示词,LLM 依然可能在 debug 模式下输出完整 curl 命令,或者在 error message 里泄露 API key。我们曾在一个测试环境里,因模型调试输出意外打印了 AWS IAM role ARN,被安全团队直接叫停项目两周。这不是理论风险,是已发生的事故。
提示:别信“guardrail 提示词能防住一切”。LLM 是概率引擎,不是确定性程序。当你把 credential 放进 context,就等于把钥匙交给一个醉汉保管——他大部分时间靠谱,但没人敢赌他永不犯错。
2.2 Anthropic 的解法:把 state 拆出来,让 harness 真正“无状态”
Managed Agents 的核心创新,就是用工程手段强行打破“model-context-state”三位一体的耦合。它把整个 agent 生命周期拆成三个独立、可替换、有明确定义边界的抽象层:
-
Session(会话) :一个持久化、不可变、结构化的事件日志(event log)。每次 tool call、user input、model output、error、checkpoint 都作为一条带 timestamp、session_id、event_type、payload 的记录写入。这个 log 存在 Anthropic 的托管存储里,生命周期可达数天甚至数周(取决于配置),且完全独立于 model 的 context window。你可以随时 query 它,用 SQL-like 语法过滤、聚合、分析。比如
SELECT * FROM session_events WHERE session_id = 'abc123' AND event_type IN ('tool_call', 'tool_result') ORDER BY timestamp,瞬间拿到完整执行轨迹。 -
Harness(执行器) :一个极简的、无状态的函数。它只做一件事:接收
execute(name, input)请求,调用对应工具(container),等待返回,把结果和元数据写入 session log,然后退出。它不保存任何中间状态,不缓存任何数据,不维护任何 connection pool。这意味着它可以 crash、重启、扩缩容,完全不影响 session continuity。你调用awake(sessionId),它就从 log 里读取最新 checkpoint,加载必要上下文(比如最近 3 轮交互、当前待处理的 tool result),然后继续执行。Harness 的代码量可以压到几百行,因为它只负责“调度”,不负责“记忆”。 -
Sandbox(沙箱) :一个按需创建、用完即焚的隔离环境。每个 tool call 都在独立 microVM 或 container 中运行,credential 由 Anthropic 的 vault 注入,且只在 sandbox 启动时注入,绝不会以环境变量形式暴露给 agent 代码。sandbox 的 filesystem、network、CPU、memory 全部隔离,且生命周期严格绑定于单次 tool


1510

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



