1. 这不是新赛道,而是 runtime 层的“操作系统时刻”正在重演
你打开手机看到新闻标题《Anthropic Just Shipped the Layer That’s Already Going to Zero》,第一反应可能是:又一个大模型公司搞出了什么黑科技?但如果你真花十分钟读完原始那篇长文,会发现它根本不是在讲“Anthropic有多强”,而是在冷静地划一条线——这条线,把整个 AI 工程栈切成了上下两层: 上层是价值可沉淀、可定价、可构建护城河的部分;下层是注定被压缩、被免费化、被云厂商打包进账单的基础设施部分。 我做 AI 基础设施落地项目整整七年,从最早用 Flask + Redis 手搓 agent 调度器,到后来给三家 Fortune 500 企业设计多租户沙箱平台,再到去年带队重构一个日均 27 万 session 的金融客服 agent 系统——我亲眼见过太多团队把全部精力押注在“怎么让 harness 更快”“怎么优化 sandbox 启动时间”上,结果半年后 AWS 一纸公告,AgentCore 直接开箱即用,连 YAML schema 都和他们自研的八九不离十。这不是技术失败,是战略误判。Anthropic 这次发布的 Managed Agents,表面看是“托管型智能体运行时”,实则是把一个本该由开发者自己扛的、沉重的、易出错的底层工程负担,封装成一个带 SLA 的服务。它解决的不是“能不能跑 agent”,而是“要不要为 agent 的生命周期管理、状态持久化、凭证隔离、可观测性这些脏活累活付工资”。关键词里那个 “Towards AI - Medium” 不是随便写的——这篇文章的语境,是写给真正每天在生产环境里调试 session_id 丢失、 tool_call 超时、 context overflow 导致幻觉的工程师看的。它不教你怎么调 prompt,不讲 LLM 多神奇,它只问一句:当你的 agent 在客户会议中第 37 次因为上下文被截断而把“张总下周二签约”记成“李总下周四解约”,你靠重写 system prompt 能解决吗?不能。你得换架构。而 Anthropic 现在卖的,就是这个架构的现成品。它适合谁?适合所有已经跑通了 agent 逻辑、验证了业务价值、正卡在“如何稳定、安全、可审计地规模化”的团队。不适合谁?适合还在纠结“该用 LangGraph 还是 CrewAI”的初创团队——你们连第一个真实用户都没拿到,就去选 runtime,纯属提前透支技术债。
2. 核心设计拆解:为什么“Session as Event Log”不是营销话术,而是救命稻草
2.1 从“上下文即数据库”到“事件日志即真相”的范式迁移
我们先说一个绝大多数人没意识到的残酷事实: 过去两年里,90% 以上失败的长流程 agent 项目,死因不是模型能力不够,而是状态管理崩了。 我不是夸张。去年 Q3,我帮一家保险科技公司重构其核保 agent,他们原来的方案是把整个核保流程(查保单、验身份、调征信、比对条款、生成报告)全塞进一个 200K token 的 context window 里。系统上线两周后,客服反馈:“客户说昨天提交的材料,今天 agent 说‘未收到’”。我们翻日志,发现是第 4 步 tool call 返回的 JSON 结构稍有变化,导致第 5 步 parser 报错,模型自动 fallback 到“我需要更多信息”,然后把前面所有步骤的结果都从 context 里挤掉了——不是删掉,是“滑出视野”,就像地铁进站时被挤到车门边的人,你还在那儿,但司机看不见你。这就是 context overflow 的真实面貌:它不报错,不 crash,它只是悄悄地、不可逆地让你的 agent “失忆”。Anthropic 提出的 “Session as Event Log”,本质是把“状态”从 volatile(易失)的内存(context)搬到了 durable(持久)的存储(event log)。具体怎么实现?不是玄学。它背后是一套非常务实的工程契约:
- Session ID 是唯一真理源 :每个 session 创建时,Anthropic 生成一个全局唯一、不可篡改的
session_id(比如sess_abc123xyz789),这个 ID 绑定到一个独立的、带 TTL 的数据库记录里。 - 每一步操作都是原子事件 :
tool_call("get_policy", {"policy_no": "P12345"})→ 触发一次 DB insert,存入{ "type": "tool_call", "name": "get_policy", "input": {...}, "timestamp": 1744567890, "session_id": "sess_abc123xyz789" };tool_result("get_policy", {"status": "active", "expiry": "2026-12-01"})→ 再一次 insert,存入{ "type": "tool_result", "name": "get_policy", "output": {...}, ... }。 - Harness 是无状态的“快递员” :它只做一件事:根据当前
session_id,从 event log 里拉取最近 N 条事件(比如最后 50 条),拼成 context,喂给 Claude 模型;模型输出tool_call后,它再把这次调用记录下来。Harness 本身不存任何 state,crash 了?没关系,awake(sessionId)接口会自动从 event log 里恢复最新状态,重新拼 context,继续干活。
这听起来简单,但解决了三个致命问题。第一, 可追溯性 :销售总监问“为什么昨天下午 3 点那个客户投诉说 agent 把保费算错了?”,你不用翻三天前的 debug 日志,直接查 session_id ,就能看到完整的、按时间戳排序的操作链,哪一步输入错、哪一步返回异常、哪一步模型理解偏差,一目了然。第二, 可重放性 :开发说“我本地复现不了”,你把 session_id 给他,他调 awake() 就能 100% 复现线上环境,不用猜“当时 context 里到底有什么”。第三, 可扩展性 :你想加一个“人工审核”环节?很简单,在 tool_result 事件后,插入一个 {"type": "human_review_required", "reason": "high_risk_claim"} 事件,下一个 harness 实例拉到这个事件,就知道该停住,发工单给审核员。这一切,都不需要动 model 的 prompt,不改变 harness 的代码,只在 event log 这一层做文章。这才是“稳定抽象”的力量——它让业务逻辑的迭代,和底层执行引擎的升级,彻底解耦。
2.2 Credential Isolation:不是“更安全”,而是“不可能泄露”
再来看另一个被严重低估的设计点: Credential Isolation(凭证隔离) 。很多团队听到“沙箱”第一反应是“哦,用 Docker 隔离一下”,然后把 API Key 通过 --env 参数传进去。这是灾难的开始。我亲眼见过一个电商 agent 因为一个低级错误,把 SHOPIFY_API_KEY 当作普通字符串,被模型在 tool_call 的 input 字段里原样 echo 出来,结果被下游日志系统捕获,再被一个配置错误的 ELK pipeline 同步到公开的 Kibana 看板上——半小时内,Key 泄露,黑客刷单,损失 23 万美元。Anthropic 的做法极其粗暴有效: 沙箱启动时,凭证根本不在沙箱进程的内存或文件系统里存在过。 它是怎么做到的?原理其实很像现代操作系统的“seccomp-bpf”机制。当你在 YAML 里声明 tools: [shopify_api] ,Anthropic 的调度层会在沙箱启动前,预先在自己的可信执行环境(TEE)里加载并验证 shopify_api 的凭证(比如从 HashiCorp Vault 拉取),然后为这个沙箱生成一个唯一的、短期有效的、作用域精确到 GET /admin/api/2024-04/products 的 JWT Token。当 agent 在沙箱里调用 shopify_api.get_products() 时,harness 拦截这个调用,用那个 JWT 去 Anthropic 自己的 gateway 发起真正的请求,再把结果返回给沙箱。沙箱里的代码,永远只看到 {"products": [...]} ,它甚至不知道 shopify_api 这个工具背后连的是哪个域名、用的什么认证方式。这带来的好处是颠覆性的。首先, 零信任落地 :你不需要相信 agent 的代码是干净的,因为最敏感的凭证,它连“看见”的机会都没有。其次, 权限最小化 :你可以为每个 tool、每个 session、甚至每个 tool_call 动态生成不同权限的 token,比如“只读订单”、“可创建退货单但不可删除”、“仅限今天下午 2-4 点有效”。最后, 审计合规

2万+

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



