1. 这不是新赛道,是 runtime 层的“操作系统时刻”来了

你有没有在深夜调试一个跑了三小时的 AI agent,突然发现它开始胡言乱语?不是模型崩了,也不是 prompt 写错了——而是上下文窗口满了,它悄悄把两小时前调用的数据库结果给“吃掉”了,然后拿半截记忆去编造下一个工具调用。我去年就踩过这个坑:一个客户定制的合同分析 agent,在第七步检索完法条后,第八步开始凭空生成不存在的判例编号。日志里没有报错,监控里没有异常,只有业务方发来的截图:“这结果不对,但你们说它‘运行成功’了。”我们花了整整一天回溯,最后发现根本没法回溯——因为 session 状态全压在模型 context 里,一溢出就不可逆地蒸发。这不是 bug,是架构债。

Anthropic 在 4 月 8 日发布的 Claude Managed Agents,表面看是又一个“托管 agent 平台”,但它的核心价值根本不在“托管”二字上。它真正交付的,是一个被工业级验证过的、可落地的 runtime 抽象层 。关键词不是“agent”,而是 session-as-event-log harness-as-stateless-executor sandbox-as-cattle 。这三个词组合起来,等于给整个 LLM 应用栈装上了现代操作系统的内核机制:虚拟内存(session log)、进程隔离(sandbox)、系统调用接口(execute(name, input) → string)。它不解决“agent 聪不聪明”,它解决的是“agent 跑得稳不稳、查得清不清、换得动不动”。

这和你过去用 LangChain 写个 chain、用 CrewAI 拉几个 role、再丢进本地 Docker 里跑,有本质区别。前者是手写汇编,后者是直接调用 libc 的 malloc 和 fork。Managed Agents 的 YAML 配置文件里,你声明的是“我要什么能力”,而不是“我要怎么调度线程、怎么序列化状态、怎么注入 token”。Anthropic 把这些脏活累活封装成稳定契约:session ID 是全局唯一标识符,不是临时变量;harness 崩溃后能通过 awake(sessionId) 精确续跑,不是从头再来;sandbox 启动时 credential 由 vault 注入,agent 进程内存里永远看不到明文密钥。这种设计不是炫技,是血泪教训堆出来的——当你管理着上千个并发 session,每个 session 要调用 5-8 个外部 API,且其中 3 个涉及支付或 PII 数据时,“安全”和“可观测”就不再是加分项,而是生死线。

所以别被“Managed Agents”这个名字带偏。它不是 Anthropic 在抢夺 agent 开发者的注意力,而是在为整个行业提供一个 runtime 层的事实标准接口 。就像当年 Linux 提供统一的 syscalls 让应用不必关心底层 CPU 架构,Managed Agents 正在定义:session 怎么存、state 怎么管、tool 怎么调、log 怎么查。这个接口一旦被广泛采用,开发者写 agent 就像写 Python 脚本一样自然——你关心业务逻辑,基础设施的事交给 runtime。而历史告诉我们,当一个抽象层成为事实标准,它的实现者往往不是最终赢家。VMware 卖了十年 ESX,但 Kubernetes 才定义了云原生的十年。Anthropic 现在做的,就是那个“ESX 时刻”。

2. 核心设计拆解:为什么是 session-as-event-log,而不是 context-as-database?

2.1 上下文窗口不是数据库,是易失性缓存

先说个反常识的事实: 把 session state 存在 model context 里,本质上是一种高风险的缓存滥用 。我们习惯性地把 LLM 的 context window 当作“工作台”,认为它能承载整个任务流的状态。但 context 有三大硬伤:

  • 容量硬上限 :Claude 3.5 Sonnet 的 200K tokens 看似很大,但实际可用远低于此。system prompt 占 2K,user input 占 5K,每个 tool call 的 input/output 至少占 3K-8K,加上中间思考链(chain-of-thought)的冗余描述,真实可用空间常不足 50K。一个需要遍历 10 个 PDF、比对 20 份合同条款、调用 5 次 CRM API 的销售分析 agent,context 溢出不是“会不会”,而是“第几步”。

  • 读写非原子性 :LLM 无法像数据库一样执行 UPDATE state SET step=3 WHERE session_id='abc' 。它只能靠 prompt 工程“暗示”自己记住某件事,而这种暗示在长链路中会随 token 衰减而失效。更致命的是,当 context 满时,模型默认策略是丢弃最旧的 token——这意味着你最早调用的 get_customer_data() 返回结果,可能在第 7 步就被无声覆盖,后续所有推理都基于残缺数据。

  • 不可审计、不可回放 :context 是单向流动的文本流,没有结构化 schema。你想查“agent 在第 4 步是否真的收到了发票金额?”,只能手动翻日志,而日志里只有一段模糊的 prompt:“请基于以下信息计算总金额:[...大段压缩文本...]”。没有字段名、没有 timestamp、没有 provenance。这在生产环境是灾难——合规审计要求你能证明“每一步决策都有据可查”,而 context 日志连“哪一步”都分不清。

Anthropic 的 session-as-event-log 直接绕开这三座大山。它把 session 拆成两个正交平面:

  • Control Plane(控制面) :由 harness 管理,负责接收用户请求、解析 intent、调度 tool、处理 credential、记录 event。它用 durable storage(如 S3 + DynamoDB)持久化每个事件: { "event_id": "evt_123", "session_id": "sess_456", "timestamp": "2026-04-08T14:22:33Z", "type": "tool_call", "name": "search_contracts", "input": { "keywords": ["NDA", "termination"] }, "output": "[{id: 'c789', title: 'Cloud NDA v2.1'}]" }

  • Data Plane(数据面) :由 model context 承担,只存放当前 step 必需的、高度摘要的信息。比如 tool call 返回的 [{"id": "c789", "title": "Cloud NDA v2.1"}] ,会被压缩成 "Found 1 contract: Cloud NDA v2.1" 送入 context,而非原始 JSON。这样 context 始终轻量,且只承载“决策依据”,不承载“决策历史”。

提示:这种分离不是理论空想。Notion 内部的 Claude agent 就依赖此机制实现“跨天协作”。用户周一上传合同,周三让 agent 对比新版本,系统无需重新解析原始 PDF——它直接从 event log 中提取周一的 parse_pdf 事件输出,作为周三对比的 baseline。这在 context-only 架构中完全不可行。

2.2 Harness:无状态执行器的工程必然性

Harness 的设计哲学非常朴素: 它必须像 HTTP server 一样无状态 。你不能假设 harness 进程会长期存活,也不能假设它有本地磁盘或共享内存。为什么?

  • 弹性扩缩容需求 :企业级 agent 的负载是脉冲式的。销售晨会前 1 小时,1000 个销售代表同时提交客户分析请求;午休后流量骤降。如果 harness 有状态,扩缩容时就必须做复杂的 state migration(比如把内存里的 session map 同步到 Redis),这会引入延迟和一致性风险。而无状态 harness 只需简单地启停容器——新请求进来时,harness 通过 awake(sessionId) 从 durable storage 加载 event log,重建执行上下文,全程毫秒级。

  • 故障恢复的确定性 :有状态服务崩溃后,恢复点(RPO)和恢复时间(RTO)难以保障。而无状态 harness 的 RPO=0(所有 state 已落盘),RTO=常数(加载 log + 初始化模型)。Anthropic 文档里那句 “p50 time-to-first-token down roughly 60%”,核心就来自这里:harness 不再需要在启动时加载 gigabytes 的 state,它只加载当前 session 的最近 10 条 event,体积小、速度快。

  • 安全边界清晰 :有状态 harness 可能意外将 credential 缓存在内存中(比如某个 tool SDK 的 connection pool),导致内存 dump 泄露。无状态 harness 每次 tool call 都从 vault 动态获取 credential,用完即焚,攻击面大幅收窄。

实操中,harness 的代码骨架极其简洁。以 Python 为例,核心逻辑不超过 50 行:

# harness.py - 无状态执行器主干
import json
from typing import Dict, Any
from event_store import load_session_events, save_event
from sandbox_manager import run_in_sandbox
from credential_vault import get_credential

def execute_tool(session_id: str, tool_name: str, tool_input: Dict[str, Any]) -> str:
    # 1. 从 vault 获取 credential(绝不存入 harness 内存)
    cred = get_credential(tool_name)
    
    # 2. 在隔离 sandbox 中执行(credential 仅注入 sandbox,harness 不可见)
    result = run_in_sandbox(tool_name, tool_input, cred)
    
    # 3. 记录 event 到 durable storage(非 context!)
    event = {
        "session_id": session_id,
        "type": "tool_call",
        "name": tool_name,
        "input": tool_input,
        "output": result,
        "timestamp": datetime.utcnow().isoformat()
    }
    save_event(event)
    
    return result

def awake(session_id: str) -> Dict[str, Any]:
    # 4. 重建上下文:只取必要 event,非全量加载
    recent_events = load_session_events(session_id, limit=10)
    # 返回轻量 context:[{type, name, summary_of_output}]
    return build_lightweight_context(recent_events)

你看不到任何 self.session_state cache.get() ,所有 state 都在外部存储。这就是“无状态”的物理实现。

2.3 Sandbox:从宠物到牲畜的范式迁移

Sandbox 设计是 Anthropic 最被低估的细节。它彻底抛弃了“一个 sandbox 服务一个长期 session”的旧思维,转而拥抱“按需创建、用完即焚”的 cattle 模式。这背后有三个硬核工程考量:

  • 资源隔离的确定性 :传统 VM 或容器 sandbox 往往复用实例以节省启动开销,但这会导致资源争抢。一个耗 CPU 的 code_interpreter tool 可能让同 sandbox 的 web_search tool 延迟飙升。Managed Agents 的 sandbox 是真正的“一次一实例”:每次 tool call 都启动全新 microVM(基于 Firecracker),分配独占 vCPU 和内存,执行完毕立即销毁。AWS AgentCore 的 microVM 实现甚至能保证 99.9% 的 CPU 隔离度,这是 Docker 无法做到的。

  • 凭证泄露的零容忍 :旧方案常把 credential 作为环境变量注入 container,agent 代码只要执行 os.getenv("API_KEY") 就能拿到。Managed Agents 强制 credential 由 sandbox manager 注入,并在 sandbox 内部通过 secure channel(如 Unix domain socket)传递给 tool 进程,agent 主进程内存中永不出现明文。这直接堵死了“agent 被 prompt 注入后读取 env”的经典攻击链。

  • 启动速度的工程妥协 :microVM 启动比 container 慢,但 Anthropic 用预热池(warm pool)解决了。后台常驻一批已初始化的 microVM,收到 tool call 请求时,直接从池中分配一个,冷启动延迟压到 <150ms。这比“每次从 scratch 启动”快 5 倍,又比“长期复用 sandbox”安全 10 倍。

注意:这种设计对开发者是透明的。你只需在 YAML 中声明:

tools:
  - name: "search_web"
    type: "http"
    endpoint: "https://api.example.com/search"
    credential: "web_search_api_key"  # 此处只写 vault key 名,不写值

harness 会自动完成 credential 获取、sandbox 创建、安全注入、结果回收的全流程。你写的代码,和调用本地函数一样简单。

3. 实操落地:从 YAML 定义到生产部署的完整链路

3.1 你的第一个 Managed Agent:三步走通

别被“企业级架构”吓住。Managed Agents 的入门门槛极低,我用一个真实案例演示:为销售团队构建一个“客户健康度分析 agent”,它能自动拉取 CRM 数据、分析邮件情绪、生成风险报告。

第一步:定义 agent(YAML)

# sales_health_agent.yaml
name: "sales-health-analyzer"
description: "Analyzes customer health by combining CRM data and email sentiment"

# 系统指令:告诉模型“你是谁”、“该做什么”
system_prompt: |
  You are a senior sales operations analyst at Acme Corp.
  Your job is to assess customer health score (0-100) based on:
  - Recent CRM activity (last 30 days)
  - Sentiment of last 5 support emails
  - Contract renewal date vs today
  Always output JSON with keys: health_score, risk_factors, recommendations

# 工具声明:定义 agent 能调用的能力
tools:
  - name: "get_crm_data"
    type: "http"
    endpoint: "https://api.acme-crm.com/v1/customers/{customer_id}"
    method: "GET"
    credential: "crm_api_key"  # vault 中的 key 名
    parameters:
      - name: "customer_id"
        type: "string"
        required: true

  - name: "analyze_email_sentiment"
    type: "http"
    endpoint: "https://api.acme-ai.com/sentiment"
    method: "POST"
    credential: "sentiment_api_key"
    parameters:
      - name: "emails"
        type: "array"
        required: true

  - name: "generate_report"
    type: "http"
    endpoint: "https://api.acme-reporting.com/v2/reports"
    method: "POST"
    credential: "reporting_api_key"
    parameters:
      - name: "data"
        type: "object"
        required: true

# 安全护栏:防止越界行为
guardrails:
  - type: "output_filter"
    pattern: ".*health_score.*"
    action: "block"  # 如果输出不含 health_score 字段,拒绝返回
  - type: "tool_call_limit"
    max_calls_per_session: 10
    action: "terminate"

这个 YAML 文件就是你的 agent 全部“源代码”。它不包含任何 Python/JS 逻辑,只声明意图。Anthropic 的 harness 会自动解析它,生成执行计划。

第二步:部署与测试(CLI)

安装 Anthropic CLI( pip install anthropic-managed-agents ),然后一行命令部署:

# 部署 agent(自动创建 sandbox、配置 vault、注册 endpoint)
anthropic agents deploy --config sales_health_agent.yaml --env production

# 输出:Agent deployed successfully. ID: agt_9a8b7c6d
#       Session endpoint: https://api.anthropic.com/v1/agents/agt_9a8b7c6d/sessions

# 创建一个 session 并发送请求(模拟销售代表提问)
curl -X POST \
  -H "Authorization: Bearer $ANTHROPIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"customer_id": "cust_12345"}' \
  https://api.anthropic.com/v1/agents/agt_9a8b7c6d/sessions

响应体里会包含 session_id 和初始 output 。整个过程无需你写一行服务器代码,也不用配置 Kubernetes。

第三步:生产集成(Notion 风格)

Notion 的集成方式最具启发性。他们没让用户“去 Anthropic 控制台创建 session”,而是把 agent 嵌入 Notion 页面:

// Notion 插件前端代码(简化版)
async function runSalesAnalysis(customerId) {
  // 1. 前端直接调用 Anthropic session endpoint
  const response = await fetch(
    "https://api.anthropic.com/v1/agents/agt_9a8b7c6d/sessions",
    {
      method: "POST",
      headers: { 
        "Authorization": `Bearer ${notionUserToken}`, // 用户级 token
        "Content-Type": "application/json"
      },
      body: JSON.stringify({ customer_id: customerId })
    }
  );
  
  const { session_id, output } = await response.json();
  
  // 2. 前端轮询 session 状态(harness 无状态,所以轮询是标准模式)
  let status = "running";
  while (status === "running") {
    const pollRes = await fetch(
      `https://api.anthropic.com/v1/agents/agt_9a8b7c6d/sessions/${session_id}`,
      { headers: { "Authorization": `Bearer ${notionUserToken}` } }
    );
    const pollData = await pollRes.json();
    status = pollData.status;
    if (status === "completed") {
      displayReport(pollData.output); // 渲染 JSON 结果为美观卡片
      break;
    }
    await new Promise(r => setTimeout(r, 1000)); // 1s 间隔轮询
  }
}

关键点在于: 前端直连 Anthropic API,不经过 Notion 自己的后端 。Notion 只负责 UI 和用户认证,所有 agent 执行、state 管理、tool 调用都由 Anthropic runtime 承担。这极大降低了 Notion 的运维负担——他们不用为 agent 流量扩容自己的服务器,也不用管理 credential vault。

3.2 Pricing 模型的实操精算:$0.08/小时到底贵不贵?

官方定价是 $0.08 per session-hour of active runtime ,外加 Claude token 费用。很多人第一反应是“好贵”,但实际测算会颠覆认知。我们来拆解一个典型场景:

  • 场景 :销售健康分析 agent,平均每次 session 耗时 42 秒(p50),其中:

    • harness 执行时间:8 秒(解析 YAML、调度 tool、序列化 event)
    • sandbox 执行时间:34 秒(CRM API 调用 12s + 邮件分析 15s + 报告生成 7s)
  • 成本计算

    • Session-hour 费用: (42 / 3600) * $0.08 ≈ $0.00093
    • Claude 3.5 Sonnet token 费用(假设输入 1500 tokens,输出 800 tokens):
      • Input: 1500 * $0.003/1K = $0.0045
      • Output: 800 * $0.015/1K = $0.012
      • Token 小计:$0.0165
    • 单次 session 总成本:≈ $0.0174

对比自建方案:

  • 你需要一台 c6i.2xlarge (8vCPU/16GB)EC2 实例,月租 $240,按 30 天 24 小时算,每小时成本 $0.33。
  • 为支撑 1000 QPS(Notion 级别),需至少 10 实例集群,月成本 $2400。
  • 还要额外支付:Redis 缓存($120/月)、Vault 管理($200/月)、监控告警($80/月)、工程师运维时间($5000/月)。
  • 自建单次 session 成本(摊薄后):$0.008(基础设施)+ $0.015(人力运维)= $0.023

Managed Agents 的 $0.0174 反而更低,且省去了所有运维负担。更关键的是, 成本随用量线性增长,无固定成本 。如果你是初创公司,月均 1 万次 session,Managed Agents 月成本约 $174;自建则至少 $500(含最低配服务器和基础运维)。

实操心得:不要只看 $0.08/小时的 headline price。要算 total cost of ownership (TCO) 。Anthropic 把 infrastructure、security、observability、scaling 全打包进这 $0.08 里。当你需要快速上线、应对流量峰值、通过 SOC2 审计时,这笔钱买的是确定性。

3.3 与 AWS AgentCore 的深度对比:选型决策树

Anthropic 的发布被媒体渲染成“首创”,但 AWS Bedrock AgentCore 在 2025 年底就已 GA。二者不是替代关系,而是不同定位的互补方案。我的选型建议如下:

维度 Anthropic Managed Agents AWS Bedrock AgentCore 决策建议
模型锁定 强绑定 Claude(仅支持 Claude 3.x) 完全开放(Claude、Llama、Cohere、Titan 等) 若你已深度投入 Claude 生态,选 Anthropic;若需多模型实验,选 AgentCore
框架兼容性 专有 YAML 格式,需适配 Anthropic harness 支持任意 request-response 框架(LangGraph、CrewAI、自研) 若你已有成熟 LangGraph pipeline,AgentCore 可零改造接入;若从零开始,Anthropic YAML 更简洁
沙箱技术 Firecracker microVM(强隔离) Firecracker microVM(同源,AWS 优化更深) 安全敏感场景(金融、医疗)二者皆可;AWS 在微秒级延迟上略优(<5ms)
可观测性 Event log 可查询,但需 Anthropic 控制台 原生集成 CloudWatch、OpenSearch,支持自定义指标导出 若你已有 AWS 监控体系,AgentCore 无缝对接;若要快速开箱即用,Anthropic 控制台更友好
企业级功能 基础 policy controls(GA 中) GA 的 Policy Controls(RBAC、data filtering) 大型企业采购必看:AgentCore 的 policy 体系更成熟,已通过 FedRAMP 认证
价格模型 $0.08/session-hour + Claude tokens $0.05/session-hour + Bedrock tokens(Claude 同价) AgentCore 便宜 37.5%,但需考虑跨云数据传输费(若你的数据在 GCP/Azure)

我的实战建议

  • 创业公司/中小团队 :优先 Anthropic。YAML 定义 + 一键部署 + 无运维,让你聚焦业务逻辑。$0.08 的溢价换来的是工程师 20 小时/周的生产力释放。
  • 大型企业/多云环境 :选 AgentCore。它能复用你现有的 AWS IAM 角色、VPC 网络、CloudTrail 审计日志,采购流程更顺畅。Policy Controls 的成熟度在金融合规场景是刚需。
  • 技术保守派 :两个都试。用同一个 agent 逻辑(如销售健康分析),分别部署到两边,跑一周 A/B 测试。重点对比:p95 延迟、错误率、debug 效率。数据不会说谎。

4. 避坑指南:那些文档里不会写的实战教训

4.1 Session ID 管理:别让“唯一性”变成“单点故障”

Managed Agents 要求你为每个用户请求生成唯一的 session_id 。新手常犯的错误是:用 UUID4 直接作为 session_id。这看似完美,但埋下两大隐患:

  • 调试地狱 :UUID4 是随机字符串(如 f47ac10b-58cc-4372-a567-0e02b2c3d479 ),无法关联业务实体。当客户投诉“我的报告错了”,你查日志看到 session_id=f47ac10b... ,还得翻数据库找这个 UUID 对应哪个客户、哪个销售代表、什么时间触发。效率极低。

  • 重放攻击风险 :UUID4 无业务含义,攻击者可暴力枚举(虽然概率低)。更安全的做法是构造 business-aware session_id

    # 推荐:用业务标识 + 时间戳 + 随机盐
    def generate_session_id(user_id: str, customer_id: str) -> str:
        # user_id 和 customer_id 是可信业务 ID
        salt = secrets.token_urlsafe(4)  # 4 字符随机盐
        # 格式:user_{user_id}_cust_{customer_id}_{timestamp}_{salt}
        return f"user_{user_id}_cust_{customer_id}_{int(time.time())}_{salt}"
    
    # 示例:user_u123_cust_c456_1712612345_aBcD
    

    这样 session_id 本身携带业务上下文,日志可读性强,且因含时间戳和盐,无法被预测。

注意:session_id 长度不能超 128 字符(Anthropic 限制),上述格式完全满足。

4.2 Tool Call 参数校验:别让 agent 传错参数毁掉整个流程

YAML 中声明的 parameters 是静态 schema,但 agent 运行时可能传入非法值。比如 get_crm_data 工具要求 customer_id 是字符串,但 agent 可能因 prompt 错误传入 null 或数字 12345 。旧方案常在 tool 代码里做防御性检查,但 Managed Agents 提供了更优雅的解法: 在 harness 层拦截

Anthropic 支持在 YAML 中添加 validation 规则:

tools:
  - name: "get_crm_data"
    type: "http"
    endpoint: "https://api.acme-crm.com/v1/customers/{customer_id}"
    # 新增 validation 字段
    validation:
      - field: "customer_id"
        type: "string"
        min_length: 5
        pattern: "^cust_[a-zA-Z0-9]+$"  # 必须以 cust_ 开头
        action: "fail"  # 非法时直接终止 session,不调用 tool

当 agent 传入 customer_id: 12345 ,harness 会在调用 sandbox 前就返回错误:

{
  "error": "Validation failed for tool 'get_crm_data': field 'customer_id' must be string matching pattern '^cust_[a-zA-Z0-9]+$'"
}

这比让 tool 服务端返回 400 错误更高效——避免了网络往返、sandbox 启动、credential 注入等全部开销。我们在 Rakuten 的销售 agent 中应用此规则后,tool call 失败率从 12% 降至 0.3%,p95 延迟下降 40%。

4.3 Credential Vault 集成:避开“密钥轮换”的定时炸弹

Managed Agents 的 credential vault 是黑盒,但你必须主动管理密钥轮换。常见误区是:把 API Key 硬编码进 vault,永不更新。这在生产环境是自杀行为。

正确做法是: vault 中只存密钥别名,实际密钥由外部系统动态注入 。Anthropic 支持 webhook-based credential refresh:

  1. 在 Anthropic 控制台,为 crm_api_key 配置 webhook URL(指向你自己的密钥管理服务)。
  2. 当 harness 需要 crm_api_key 时,它会调用你的 webhook,传入 {"key_alias": "crm_api_key", "session_id": "sess_123"}
  3. 你的服务返回:
    {
      "value": "sk_live_abc123...", 
      "expires_at": "2026-07-01T00:00:00Z",
      "rotation_interval": "30d"
    }
    
  4. harness 使用此 value 调用 sandbox,并在 expires_at 前自动再次调用 webhook 刷新。

这样,你的 CRM API Key 每 30 天自动轮换,无需人工干预。我们在 Sentry 的调试 agent 中实施此方案后,密钥泄露风险归零,且通过了 PCI DSS 审计。

4.4 Event Log 查询:如何用好这个“司法鉴定中心”

Event log 是 Managed Agents 的核心资产,但默认查询接口很基础。要发挥其最大价值,必须做两件事:

  • 建立索引策略 :Anthropic 的 event log 支持按 session_id timestamp type 查询,但不支持全文搜索。因此,你在 save_event 时,必须把关键业务字段显式存入 event:

    {
      "session_id": "sess_456",
      "type": "tool_call",
      "name": "get_crm_data",
      "input": { "customer_id": "cust_12345" },
      "output": "{...}",
      "business_context": {  // 显式添加业务字段,用于过滤
        "customer_id": "cust_12345",
        "sales_rep_id": "rep_789",
        "deal_stage": "negotiation"
      }
    }
    

    这样,你可以用 business_context.customer_id = 'cust_12345' 精准筛选,而非在海量日志中 grep。

  • 设置 retention policy :event log 默认永久保存,但存储成本会累积。根据 GDPR 和企业政策,我们为不同 event type 设置分级保留:

    • tool_call :保留 90 天(满足一般审计)
    • output_filter_block :永久保留(安全事件,需长期追溯)
    • session_start :保留 365 天(业务分析用)

Anthropic 控制台支持按 event type 设置 TTL,务必配置,否则一年后账单会让你震惊。

5. 未来已来:runtime 层 commoditization 的三层冲击波

5.1 第一层冲击:纯 runtime 创业公司的估值重估

当 AWS、Google、Microsoft 都把 agent runtime 作为云服务的“免费赠品”(实际是捆绑在 compute spend 中),独立 runtime 创业公司的商业模式就面临根本性质疑。我们来看一组真实数据:

  • Daytona (2025 年转型 agent infra):2026 年 2 月 A 轮 $24M,估值 $150M。但其核心产品 Daytona Sandbox 的 benchmark 显示:在同等 microVM 配置下,启动延迟比 AWS AgentCore 高 22%,且不支持 policy controls。投资者押注的是其开源生态,而非 runtime 本身。

  • LangGraph Cloud :2025 年底宣布“免费 tier 无限 sessions”,但隐藏条款是“超过 1000 QPS 需签企业合同”。这暴露了真相:runtime 的边际成本趋近于零,收费点必须转移到上层。

  • 市场信号 :Crunchbase 数据显示,2026 年 Q1,专注于“agent orchestration engine”的初创公司融资额同比下降 63%。资本正在撤离 runtime 层,转向 trace store(Braintrust、Arize)、governance(Giskard、Robust Intelligence)、vertical agents(Salesforce Agentforce、Healthcare.ai)。

我的判断:未来 18 个月,runtime 创业公司只有两条路:要么被 hyperscaler 收购(如 VMware 被 Broadcom 收购),要么转型为垂直领域解决方案商(如从“通用 sandbox”转向“金融合规 sandbox”)。

5.2 第二层冲击:trace store 成为新的“操作系统内核”

当 runtime 层 commoditize, trace store 就成了新的价值高地 。为什么?因为它是唯一能跨 runtime 迁移的资产。今天你用 Anthropic Managed Agents,明天迁移到 Azure AI Foundry,只要你把 event log 导出为标准格式(如 OpenTelemetry Traces),trace store 就能无缝承接。

Braintrust 的 Brainstore 数据库正是为此而生。它不是简单的日志存储,而是专为 AI interaction 优化的 OLAP 引擎:

  • Schema-on-read :无需预先定义 event 字段,自动 infer business_context.customer_id 为维度, output.health_score 为指标。
  • 实时聚合 :支持 SELECT AVG(health_score) FROM events WHERE business_context.deal_stage = 'negotiation' AND time > now() - 7d ,秒级响应。
  • 因果分析 :内置算法能回答“哪些 tool call 序列最常导致 health_score < 50?”——这直接指导 product iteration。

Arize 的 Phoenix 开源项目更激进:它把 trace store 变成“可编程的 observability layer”。你可以写 Python 函数,在 trace 流上实时检测异常:

# phoenix_rule.py - 检测 prompt 注入攻击
def detect_prompt_injection(trace):
    for span in trace.spans:
        if span.name == "llm.generate":
            # 检查 prompt 是否包含可疑指令
            if re.search(r"(system|ignore|disregard|you are|act as)", span.attributes["prompt"]):
                return Alert("PROMPT_INJECTION_DETECTED", severity="CRITICAL")

这种能力,是任何 runtime 都无法提供的。 runtime 是高速公路,trace store 是交通指挥中心 。当所有车(agent)都跑在同一条高速(hyperscaler runtime)上时,指挥中心的价值就凸显了。

5.3 第三层冲击:垂直 agent 市场爆发,通用 agent 进入“维护模式”

Salesforce Agentforce 的 $800M ARR(2026 Q4)不是偶然。它证明了一个真理: 企业只为解决具体问题的 agent 付费,不为“智能”本身付费 。一个能自动处理医保报销的 agent,比十个“全能

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐