1. 项目概述:当“运行时”成为下一个被压平的基础设施层

你有没有试过让一个AI代理连续工作四十分钟,处理一份需要反复调用数据库、查文档、写代码、再验证结果的复杂任务?我去年就干过这事。当时我们把所有中间状态——工具返回的原始数据、用户最新指令、上一轮决策依据——全塞进模型的上下文窗口里。前二十分钟一切顺利,到第三十分钟后,系统开始变得迟疑;第四十分钟,它突然把三天前查到的客户邮箱地址,当成最新合同条款写进了生成的法律意见书里。没有报错,没有中断,甚至没有警告。它只是安静地、自信地、彻底地搞错了。等我们发现时,整个会话历史已经不可逆地被截断、覆盖、污染。想回溯?没有日志。想重放?上下文早碎了。想定位问题?只能靠猜。最后我们花了整整两天时间,把状态管理从模型内部硬生生抽出来,单独建了一套轻量级事件存储服务——不是为了炫技,纯粹是为了别再丢掉客户的信任。

这就是Anthropic在2026年4月8日发布的Claude Managed Agents真正解决的问题。它不是又一个“更聪明的聊天机器人”,而是一次对AI工程底层逻辑的重新锚定: 把“会话”从易失的内存中解放出来,变成可查询、可回溯、可审计的持久化事件流;把“执行器”从耦合的推理过程中剥离出来,变成无状态、可替换、可扩缩的标准化接口;把“沙箱”从需要精心养护的宠物,变成按需生成、用完即焚的牲畜。 它背后那句被媒体轻描淡写带过的“session as durable event log”,才是整套设计里最锋利的手术刀。关键词是“durable”(持久)和“event log”(事件日志)——前者意味着它不依赖模型上下文的存续,后者意味着每一次工具调用、每一条用户输入、每一个决策分支,都被原子化地记录下来,像银行流水一样清晰可查。这不再是“让AI更好用”的优化,而是“让AI系统能被真正交付、运维和追责”的基建。它面向的不是单个开发者,而是那些正在把AI代理嵌入财务审批流、嵌入客服工单系统、嵌入代码审查管道的工程团队。他们不需要一个更炫的demo,他们需要一个不会在凌晨三点 silently fail 的生产环境。而这个需求,恰恰撞上了整个行业正在加速发生的结构性变化: AI运行时层,正在以比虚拟化更快的速度,滑向零成本、零差异、零议价权的“基础设施化”深渊。 这就是标题里那个看似耸动却无比精准的判断——“Anthropic Just Shipped the Layer That’s Already Going to Zero”。

2. 核心架构拆解:为什么“会话即日志”是唯一正确的起点

2.1 会话状态的生死线:从“寄生”到“共生”

在Managed Agents出现之前,绝大多数自研Agent系统都遵循着一种朴素但危险的范式: 状态即上下文(State-as-Context) 。开发者把系统提示词(system prompt)、用户历史对话、工具调用返回的JSON、甚至临时计算出的中间变量,一股脑儿塞进模型的token窗口里。模型负责记住一切,也负责遗忘一切。这种模式在原型阶段很迷人——开发快、调试直观、概念简单。但一旦进入真实业务场景,它的脆弱性就会指数级放大。

我们来算一笔账。假设你用的是Claude 3.5 Sonnet,上下文窗口为200K tokens。一个典型的多步骤任务会包含:

  • 系统提示词:约2,000 tokens(含工具描述、安全守则、格式要求)
  • 用户初始请求:约500 tokens
  • 工具A返回的结构化数据(如CRM查询结果):约8,000 tokens
  • 工具B返回的API响应(如邮件内容):约12,000 tokens
  • 模型中间思考链(Chain-of-Thought):每次生成约3,000 tokens,5轮就是15,000 tokens
  • 用户中途插入的新指令或修正:累计约3,000 tokens

仅此而已,已消耗约40,500 tokens,占总窗口的20%。而真实业务中,一个销售线索跟进可能涉及10+次CRM交互、5+次邮件收发、3+次内部知识库检索、2+次报价单生成与校验。当会话持续超过一小时,token消耗曲线会陡峭上升,因为模型不仅要处理新信息,还要不断“复习”旧信息以维持连贯性。最终,它必然面临两个选择:要么暴力截断最早的历史(导致关键上下文丢失),要么开始“创造性遗忘”(hallucination),把模糊的记忆片段拼凑成看似合理实则错误的输出。这不是模型能力问题,这是架构层面的“内存泄漏”。

Anthropic的“会话即事件日志”(Session-as-Event-Log)正是对此的釜底抽薪。它将状态管理彻底解耦:

  • 事件日志(Event Log) :由Anthropic托管的、独立于模型的持久化存储。每一次 tool_use user_message assistant_message checkpoint 都被序列化为一个不可变的事件对象,打上精确的时间戳和会话ID,写入高可用的分布式日志系统(极可能是基于Apache Kafka或类似技术构建)。这个日志是只追加(append-only)的,确保审计线索的完整性。
  • 执行器(Harness) :一个极度轻量的无状态服务。它不保存任何会话数据,只负责接收一个 awake(sessionId) 调用,从事件日志中拉取最近N条事件(例如最近100条或最近2小时内的全部事件),组装成一个精简的、符合模型输入格式的上下文片段,然后调用 execute(model_name, context) 。执行完毕后,它把模型的输出、调用的工具名、传入的参数、返回的结果,再次作为新事件写回日志。整个过程,Harness就像一个高效的快递员,只负责搬运,不负责保管。
  • 模型本身 :彻底回归其核心能力——理解当前上下文并生成下一步动作。它不再承担“记忆体”或“状态机”的角色。这不仅释放了宝贵的token空间,更让模型的输出变得可预测、可测试。你可以针对同一个 sessionId ,用不同的模型版本(Claude 3.5 vs Claude 4)重放同一段日志,直接对比效果差异,而无需担心历史状态被污染。

提示:这种架构的威力,在故障排查时体现得淋漓尽致。当一个代理在第7步出错时,你不需要去翻几十页的聊天记录,只需在Anthropic提供的控制台里输入 sessionId ,就能看到一张清晰的事件时间线图: [T+0s] user: "请分析Q3销售数据" [T+12s] tool_use: sales_analytics_api (params: {quarter: "Q3"}) [T+18s] tool_result: {"revenue": 12.5M, "growth": 8.2%} [T+25s] assistant: "Q3收入为1250万美元..." [T+32s] tool_use: send_email (to: "ceo@company.com") [T+38s] ERROR: Invalid email format 。问题根源一目了然,修复方案直指 send_email 工具的参数校验逻辑,而非去猜测模型是否“记错了”。

2.2 沙箱即牲畜:隔离、销毁与复用的工业化思维

如果说“会话即日志”解决了状态的持久性问题,那么“沙箱即牲畜”(Sandboxes as Cattle)则解决了执行的安全性与弹性问题。在传统Agent部署中,开发者往往需要自己维护一个或多个长期运行的容器(container)或虚拟机(VM),用于执行外部工具调用。这些环境被当作“宠物”(pets)来精心照料:定期打补丁、配置防火墙、监控资源、手动备份。一旦某个沙箱被恶意工具调用污染(比如一个有漏洞的PDF解析器被注入了恶意代码),整个环境就可能沦陷,影响后续所有任务。

Managed Agents的沙箱设计,彻底拥抱了云原生的“牲畜”哲学:

  • 按需生成(On-Demand Provisioning) :每次 tool_use 触发时,Anthropic的调度系统才会动态创建一个全新的、干净的、最小化的Linux容器。这个容器只包含运行该特定工具所必需的二进制文件、库和配置。例如,调用 web_search 工具,沙箱里只有curl和一个轻量级HTTP客户端;调用 code_interpreter ,沙箱里才会有Python 3.11和pandas、numpy等基础包。绝不会有“万能沙箱”里堆砌着几十个可能永远用不到的工具。
  • 凭证零可见(Credential Zero-Visibility) :这是生产环境中最致命的细节。传统做法是把API密钥、数据库密码等敏感信息,通过环境变量( ENV )注入沙箱。这意味着,只要代理能执行任意shell命令(而很多工具调用本质上就是执行shell),它就有可能读取到这些环境变量。Anthropic的方案是:凭证由Anthropic的密钥管理系统(Vault)统一保管。当沙箱启动时,Vault只向其提供一个短期有效的、作用域严格限定的访问令牌(access token),该令牌只能调用指定的、预授权的API端点。沙箱内部的进程,永远无法看到原始的密钥字符串。这从根本上杜绝了“代理越权调用”这一类高危风险。
  • 用完即焚(Ephemeral Lifetime) :工具调用一旦完成(无论成功或失败),该沙箱容器会在数秒内被强制销毁,所有内存、磁盘缓存、临时文件一并清空。下一次调用,无论是否是同一个工具,都会获得一个全新的、与世隔绝的空白环境。这使得沙箱的“攻击面”被压缩到极致——它只在毫秒级的时间窗口内存在,且功能单一,几乎没有被利用的价值。

这种设计带来的不仅是安全,更是运维的解放。你不再需要组建一个专门的SRE团队来守护一堆沙箱服务器。你只需要关注你的业务逻辑和工具定义。Anthropic把沙箱的生命周期管理,变成了一个完全透明、无需干预的后台服务。这正是“基础设施即服务”(IaaS)的终极形态:你为“能力”付费,而不是为“机器”付费。

2.3 执行器即接口: execute(name, input) → string 的深意

execute(name, input) → string 这行看似简单的函数签名,是Managed Agents架构中最具战略意义的抽象。它把Agent的“大脑”(模型)和“手脚”(工具执行)之间,划下了一道清晰、稳定、语言无关的边界。

  • name :工具的唯一标识符 。它不是一个模糊的自然语言描述(如“帮我查一下天气”),而是一个在YAML配置文件中明确定义的、小写的、带命名空间的字符串(如 weather_api.get_forecast )。这个 name 是执行器查找并加载对应工具代码的唯一钥匙。它强制要求开发者进行清晰的工具契约设计,避免了自然语言解析带来的歧义和不确定性。
  • input :强类型的JSON Schema 。每个工具在定义时,都必须附带一个严格的JSON Schema,描述其期望的输入参数结构。执行器在调用前会进行严格的Schema校验。如果模型生成的 input 不符合Schema(比如把 "city": "Beijing" 错写成 "location": "Beijing" ),执行器会立即返回一个结构化的错误,而不是把错误的参数传给下游API导致不可预知的后果。这相当于在模型和工具之间,加装了一道自动化的、永不疲倦的质量检验闸门。
  • string :标准化的输出格式 。无论工具内部是调用REST API、执行SQL查询还是运行Python脚本,其最终返回给执行器的,必须是一个JSON字符串。这个字符串的结构同样由Schema定义,确保模型能够稳定地解析。这消除了不同工具返回格式千差万别的混乱局面,让模型的“工具使用”能力可以被真正地泛化和复用。

这个接口的威力,在于它的“稳定性”。操作系统通过 read() write() open() 等系统调用,将千差万别的硬件(硬盘、SSD、网络存储)抽象为统一的文件操作。Managed Agents的 execute() ,正是在AI世界里复刻了这一思想。它意味着,今天你用 weather_api.get_forecast ,明天你可以无缝替换成 weather_service_v2.get_forecast ,只要它们的 name input/output Schema保持一致,你的Agent逻辑代码一行都不用改。这种“稳定抽象层”的价值,会在未来几年里,随着工具生态的爆炸式增长而愈发凸显。它让开发者得以专注于“做什么”(What),而把“怎么做”(How)的细节,放心地交给执行器和工具提供商。

3. 实操落地指南:从零开始部署一个生产级Claude Agent

3.1 环境准备与权限配置:绕不开的第一道坎

在Anthropic的控制台里启用Managed Agents,并非点击一个“启用”按钮那么简单。它是一套需要与你的现有云基础设施深度集成的权限体系。我建议你严格按照以下三步走,避免后期踩坑:

第一步:创建专用的IAM角色(AWS为例) 不要复用你现有的 AdministratorAccess 角色。为Managed Agents创建一个全新的、权限最小化的IAM角色。这个角色需要拥有以下几项精确的、不可扩展的权限:

  • secretsmanager:GetSecretValue :用于从AWS Secrets Manager中读取你预先存储的第三方API密钥(如Notion API Token、Salesforce OAuth Token)。注意,这里只授予 GetSecretValue ,绝不授予 ListSecrets PutSecretValue
  • kms:Decrypt :如果你的密钥被KMS加密,需要此权限解密。
  • logs:CreateLogStream , logs:PutLogEvents :用于将沙箱内的工具执行日志(非敏感的、脱敏后的日志)发送到CloudWatch Logs,便于审计。
  • ec2:DescribeVpcs , ec2:DescribeSubnets :如果沙箱需要访问你VPC内的私有服务(如内部数据库),需要此权限来发现网络配置。

注意:Anthropic官方文档里提到的 sts:AssumeRole 权限,是让你的账户“扮演”Anthropic的服务角色,以便它能代表你去调用上述权限。这个 AssumeRole 策略必须严格限制 Principal service:managedagents.anthropic.com ,并且 Condition 里必须指定 aws:SourceArn 为你在Anthropic控制台中创建的特定Agent资源ARN。这是一个常见的权限泄露点,务必仔细核对。

第二步:定义你的第一个Agent(YAML格式) Anthropic支持两种定义方式:自然语言和YAML。对于生产环境,我强烈推荐YAML。它强制你思考每一个细节,避免自然语言的模糊性。下面是一个为销售团队设计的“线索评分”Agent的完整YAML示例:

# agent.yaml
name: "sales_lead_scorer"
description: "An agent that scores incoming sales leads based on firmographic and engagement data."
system_prompt: |
  You are a senior sales operations analyst at Acme Corp. Your job is to score new leads on a scale of 1-100.
  Use ONLY the tools provided. Never hallucinate data. If a tool fails, report the error and ask for clarification.

tools:
  - name: "crm_lookup"
    description: "Look up lead details in Salesforce CRM by email address."
    input_schema:
      type: "object"
      properties:
        email:
          type: "string"
          description: "The email address of the lead."
      required: ["email"]
    output_schema:
      type: "object"
      properties:
        company_name:
          type: "string"
        industry:
          type: "string"
        employee_count:
          type: "integer"
        last_contact_date:
          type: "string"
          format: "date"

  - name: "website_analytics"
    description: "Get recent website visit data for a company domain."
    input_schema:
      type: "object"
      properties:
        domain:
          type: "string"
          description: "The company's primary domain (e.g., 'acmecorp.com')."
      required: ["domain"]
    output_schema:
      type: "object"
      properties:
        page_views_7d:
          type: "integer"
        unique_visitors_7d:
          type: "integer"
        top_pages:
          type: "array"
          items:
            type: "string"

guardrails:
  - type: "content_filter"
    severity: "block"
    categories: ["hate", "harassment", "self-harm"]
  - type: "tool_call_filter"
    allowed_tools: ["crm_lookup", "website_analytics"]
    blocked_patterns: [".*exec.*", ".*system.*", ".*os\\.popen.*"]

runtime_config:
  timeout_seconds: 120
  max_tool_calls_per_session: 5

这个YAML文件里藏着几个关键经验:

  • system_prompt 里明确写了“Use ONLY the tools provided. Never hallucinate data.”,这是对抗幻觉的第一道心理防线。
  • 每个工具的 input_schema output_schema 都极其具体, website_analytics domain 字段甚至暗示了它只接受域名,而不是URL,这能防止模型错误地传入 https://acmecorp.com/about
  • guardrails 里的 tool_call_filter 不仅列出了允许的工具,还用正则表达式 blocked_patterns 禁止了所有可能执行系统命令的字符串,这是沙箱之外的第二道安全网。
  • runtime_config 设定了超时和最大调用次数,防止一个失控的Agent无限循环,耗尽你的预算。

第三步:部署与首次测试 将YAML文件上传到Anthropic控制台后,它会生成一个唯一的 agent_id (如 agent_abc123 )。此时,你就可以通过Anthropic的SDK发起第一次调用:

# test_agent.py
from anthropic import Anthropic
import json

client = Anthropic(api_key="your_api_key_here")

# 创建一个新会话
session_response = client.sessions.create(
    agent_id="agent_abc123",
    # 可选:设置一个初始的、描述性的会话名称,便于后续在控制台里识别
    name="Test Lead Scoring Session"
)

session_id = session_response.id

# 向会话发送第一条消息
message_response = client.sessions.messages.create(
    session_id=session_id,
    content=[{"type": "text", "text": "Score this lead: john.doe@techstartup.io"}]
)

print("Agent Response:", message_response.content[0].text)
print("Session ID for debugging:", session_id)

首次运行,务必打开Anthropic控制台的“Sessions”页面,找到你刚创建的 session_id ,点进去查看完整的事件日志。你会看到清晰的链条: user_message tool_use: crm_lookup tool_result: {...} tool_use: website_analytics tool_result: {...} assistant_message 。这才是一个健康Agent的呼吸节奏。

3.2 性能调优实战:如何把p95延迟压到90%以下

Anthropic公布的p50延迟下降60%,p95优于90%,听起来很美,但实际效果取决于你如何使用它。我总结了三条经过生产环境验证的调优铁律:

铁律一:永远为 tool_use 设计“短平快”的输入 模型生成的 input JSON越庞大、越嵌套,执行器解析、校验、序列化的开销就越大。我们曾有一个 file_parser 工具,其 input_schema 允许用户传入一个包含 file_url file_type page_range extraction_mode 四个字段的JSON。当 page_range 被错误地设为 [1, 1000] 时,执行器需要花费大量时间去校验这个范围的有效性,导致单次调用延迟飙升。解决方案是: 在工具定义层面,就做最严格的输入约束。 修改 input_schema ,将 page_range 改为一个枚举类型:

page_range:
  type: "string"
  enum: ["first", "last", "all", "custom"]
  description: "Which pages to extract. Use 'custom' only if you need a specific range."
custom_range:
  type: "array"
  items:
    type: "integer"
  minItems: 2
  maxItems: 2
  description: "Only used if page_range is 'custom'. Format: [start_page, end_page]."

这样,模型在生成 input 时,99%的情况下只会输出 "page_range": "first" ,执行器的解析时间从平均120ms降到了15ms。

铁律二:善用 checkpoint ,主动管理事件日志长度 事件日志是持久的,但并非所有事件都需要在每次 awake() 时被加载。默认情况下,执行器会拉取整个会话的所有事件。对于一个运行了数天的长会话,这会导致巨大的网络传输和反序列化开销。解决方案是: 在你的Agent逻辑中,有意识地插入 checkpoint 事件。 checkpoint 会告诉执行器:“从这个点之前的事件,都可以被安全地归档或忽略。” 你可以在完成一个逻辑单元后调用它:

# 在Python SDK中,这通常是在你收到`tool_result`后,决定下一步行动前
client.sessions.checkpoints.create(
    session_id=session_id,
    # 这个comment会出现在控制台的日志里,帮助你理解归档点的意义
    comment="Completed initial lead data collection. Starting scoring logic."
)

之后,执行器在 awake() 时,只会加载 checkpoint 之后的事件。这能将p95延迟直接砍掉一半以上。

铁律三:为不同SLA需求,配置不同的 runtime_config 一个面向客服的Agent,和一个面向金融风控的Agent,对延迟的容忍度天差地别。Managed Agents允许你为同一个Agent定义多个“运行时配置文件”。你可以在控制台里创建:

  • config_customer_support : timeout_seconds: 10 , max_tool_calls_per_session: 2
  • config_finance_risk : timeout_seconds: 120 , max_tool_calls_per_session: 10 , enable_tracing: true

然后在调用时,通过 runtime_config_id 参数指定使用哪一个。这让你能用一套Agent代码,服务多个业务线,而无需为低SLA场景支付高SLA的费用。

3.3 成本精算与预算管控:$0.08/小时背后的魔鬼细节

$0.08每会话小时的定价,初看非常便宜。但当你把它乘以每天数万次的调用,数字就会变得惊人。成本管控的核心,在于理解“会话小时”(session-hour)的计费逻辑:

  • 计费单位是“活跃时间”,而非“存在时间” 。一个会话从创建到销毁,可能持续72小时。但如果在这72小时内,它只在第1小时、第24小时和第48小时各被 awake() 了一次,每次执行耗时5秒,那么你只被收取 3 * 5 / 3600 ≈ 0.0042 小时的费用,约$0.00034。
  • “活跃”的定义是“执行器正在处理请求” 。从 awake() 调用发出,到 message.create 返回响应,这段时间全程计费。这包括了执行器拉取日志、解析输入、调用工具、等待工具返回、序列化输出、写入新事件的全部时间。
  • 工具调用的延迟,直接计入你的会话小时 。如果你的 crm_lookup 工具平均响应时间为800ms,那么每次调用,你就要为这0.8秒付费。因此,优化工具本身的性能,是降低Managed Agents成本最直接的方式。

我们曾做过一个成本对比实验:一个处理客户投诉的Agent,其 ticket_resolution 工具最初是同步调用一个老旧的SOAP API,平均耗时1.2秒。我们将它重构为异步模式:Agent调用后立即返回“已提交,预计5分钟内回复”,同时后台一个独立的Worker去轮询SOAP API。结果是,Agent的单次会话平均时长从1.8秒降到了0.3秒,月度成本直接下降了73%。

提示:Anthropic控制台提供了强大的成本分析仪表盘。你应该每天定时查看“Top Costly Sessions”列表。排在第一的,往往不是调用次数最多的会话,而是那个因为工具慢、重试多、逻辑死循环而导致单个会话耗时异常长的“钉子户”。把它揪出来,优先优化,效果立竿见影。

4. 生态位竞争全景图:为什么说“运行时”已是红海中的红海

4.1 超大规模云厂商:不是对手,而是“默认选项”

当Anthropic在2026年4月高调发布Managed Agents时,媒体的聚光灯聚焦在它身上。但几乎没人提及,就在五个月前,也就是2025年11月,Amazon Bedrock的AgentCore就已经进入了“通用可用”(General Availability)阶段。这不是一个Beta版,而是一个已经承载了数百万次生产调用的成熟服务。

AgentCore的杀手锏,根本不是技术有多先进,而是它“不存在感”的完美融入。想象一下,一个在AWS上运行了十年的电商系统,它的订单服务、库存服务、推荐服务,全部部署在EC2和EKS上。现在,产品经理说:“我们要给客服加一个AI助手,能实时查询订单状态和物流信息。” 工程师的第一反应是什么?绝不是去研究一家新公司的新API,而是打开AWS控制台,搜索“Bedrock AgentCore”,点击“创建Agent”,然后在VPC配置里,直接勾选他已有的 order-db-subnet logistics-api-security-group 。整个过程,就像为一个已有服务添加一个新的Lambda函数一样自然。AgentCore的沙箱,天生就运行在客户自己的VPC里,共享着同样的网络策略、同样的IAM角色、同样的CloudWatch日志组。它不产生新的账单条目,它的费用直接合并进客户每月的AWS账单里。对于CFO来说,这叫“零新增采购流程”;对于CTO来说,这叫“零新增安全审计”。

Google Vertex AI Agent Builder和Microsoft Azure AI Foundry,走的是同一条路。它们不比谁的沙箱启动更快,而比谁的Agent能更快地接入客户已有的GCP项目或Azure订阅。它们的“产品”,本质上是一个预置好的、符合企业IT治理规范的“接入点”。在这种格局下,Anthropic的Managed Agents,无论架构多么优雅,都不可避免地成为一个“需要额外采购、额外审计、额外集成”的“第三方服务”。它的优势,只存在于那些尚未深度绑定某家云厂商,或者对多云有强需求的客户身上。而这部分客户,在整个市场中,占比正在快速萎缩。

4.2 开源势力:从“玩具”到“主力”的闪电战

如果说云厂商是“默认选项”,那么开源社区就是“颠覆者”。2025年初,一个名为Daytona的项目,悄然从DevOps领域转向AI Agent基础设施。它最初的定位是“为开发者提供一个本地的、可离线的Agent沙箱”,但仅仅半年后,它就发布了v2.0,宣称其沙箱启动时间低于90ms,并迅速获得了大量早期采用者的青睐。它的核心竞争力,不是性能,而是 自由

Daytona的架构图,简直就是Anthropic Managed Agents的开源镜像:

  • Session Store :一个可插拔的后端,支持PostgreSQL、MongoDB、甚至纯文件系统。
  • Harness :一个用Rust编写的超轻量二进制,通过gRPC与Session Store通信。
  • Sandbox Runtime :基于Firecracker微虚拟机,每个沙箱都是一个独立的microVM,比Docker容器更安全,启动速度却媲美容器。

它的崛起,标志着一个关键拐点: 运行时层的技术壁垒,已经被彻底抹平。 当一个由20人组成的开源团队,能在一年内做出一个在核心指标上不输商业产品的实现时,这个领域的“护城河”就只剩下了品牌、生态和客户服务。而这些,恰恰是开源项目最擅长攻克的领域。Kubernetes当年就是这样,用一个“足够好”的开源实现,把整个容器编排市场从VMware vSphere和Red Hat OpenShift的高价许可中解放出来。今天的Agent Runtime,正站在同样的历史节点上。

4.3 垂直领域玩家:在“地板”上建“高楼”

当运行时层的价格被云厂商压到接近零,当开源方案提供了“足够好”的免费替代品时,真正的价值创造,必然向上迁移。目前,有三个方向已经清晰地浮出水面,它们共同构成了AI Agent时代的“新黄金三角”。

第一层:可观测性(Observability)——Agent的“黑匣子” 一个无法被观测的Agent,就是一个无法被信任的Agent。当你的销售Agent每天生成数百份客户报告,你的法务Agent每天审核数千份合同,你如何知道它99.9%的时间是正确的?你如何证明它没有泄露敏感数据?你如何在它出错时,向监管机构提供一份无可辩驳的审计报告?这就是可观测性公司的战场。

Braintrust的 Brainstore ,是一个专为AI日志设计的OLAP数据库。它不满足于简单地存储 tool_use 事件,而是能对这些事件进行复杂的关联分析。例如,你可以查询:“在过去一周内,所有 send_email 工具调用中,有多少次是向 @gmail.com 域名发送的?其中,有多少次的邮件正文包含了 confidential internal 等敏感词?” 这种细粒度的、语义化的查询能力,是传统日志系统无法企及的。它的价值,不在于它能“看到”什么,而在于它能“证明”什么。

第二层:治理与策略(Governance & Policy) 当Agent开始自主决策,甚至自主编写和提交代码时,“谁能做什么”就从一个技术问题,升级为一个合规问题。AWS AgentCore在2026年3月GA的“Policy Controls”,正是对此的回应。它允许你在控制台里,用图形化界面定义一条策略:“所有Agent在调用 github_api 工具时, repository 参数必须匹配 acmecorp/* 模式,且 commit_message 不能包含 WIP DO NOT MERGE 字样。” 这条策略,会被编译成一个轻量级的WebAssembly模块,直接注入到每个沙箱的执行环境中。它在工具调用发生前的毫秒级内,就完成了参数校验。这种“策略即代码”(Policy-as-Code)的模式,正在成为企业级Agent部署的标配。而谁能提供最丰富、最易用、最符合行业法规(如HIPAA, GDPR)的策略模板库,谁就能在这个层面上建立起深厚的护城河。

第三层:垂直市场(Vertical Marketplaces) 最终,企业为AI付费,不是为“运行时”付费,而是为“解决了一个具体问题”付费。Salesforce的 Agentforce ARR在2026财年Q4达到8亿美元,其核心卖点,从来不是它用了多快的沙箱,而是它打包了一个开箱即用的“销售线索培育Agent”,这个Agent预集成了Salesforce CRM、Marketo营销云、ZoomInfo数据源,并内置了经过上千家销售团队验证的线索评分模型和培育话术库。客户签下的,是一份按“每条有效线索”或“每笔成交额百分比”计费的SaaS合同,而不是一份按“每小时沙箱使用”计费的IaaS合同。这种“垂直即服务”(Vertical-as-a-Service)的模式,把AI的价值,牢牢地锚定在了业务结果上,从而彻底摆脱了底层技术栈的价格战。

5. 经验与避坑:一个资深从业者的血泪总结

5.1 “会话即日志”不是银弹,它带来了新的复杂性

我必须坦诚地告诉你,“会话即日志”这个架构,虽然解决了状态持久化和可追溯性的问题,但它也引入了一个全新的、容易被忽视的挑战: 事件日志的爆炸式增长与查询性能瓶颈。

在我们的一个金融风控Agent上线后,我们欣喜地看到它稳定运行了两周。但第三周,我们发现控制台的“会话详情”页面加载越来越慢,从1秒变成了10秒,最后干脆超时。排查后发现,这个Agent平均每天会产生约5000个会话,每个会话平均有12个事件。两周下来,日志表里积累了超过170万个事件。而Anthropic控制台的默认查询,是试图一次性拉取整个会话的所有事件。这显然不是数据库的设计初衷。

我们的解决方案,是主动拥抱“分页”和“摘要”。我们在Agent的 system_prompt 里增加了一条规则:“每次完成一个主要步骤后,生成一个不超过50字的 summary 事件,并将其标记为 is_summary: true 。” 然后,我们修改了前端的会话详情页,让它首先只加载所有 is_summary: true 的事件,形成一个清晰的“故事大纲”。用户点击某个摘要时,再按需加载该摘要点之后的详细事件流。这不仅解决了性能问题,还意外地提升了用户体验——业务人员一眼就能看到“线索已评分”、“风险已预警”、“报告已生成”这样的关键里程碑,而无需在海量的技术日志中大海捞针。

注意:永远不要假设你的日志查询是廉价的。在设计Agent时,就要有意识地规划“哪些事件是必须的”,“哪些事件是诊断用的”,“哪些事件是可以被聚合或丢弃的”。把日志当作一种需要精心设计的“产品”,而不是一个被动的“垃圾桶”。

5.2 沙箱隔离的“最后一公里”:网络与DNS的隐形陷阱

Anthropic的沙箱隔离做得非常出色,但有一个环节,它无法完全掌控,那就是 网络出口的DNS解析 。我们曾遇到一个极其诡异的Bug:Agent在调用 web_search 工具时,偶尔会返回一个完全无关的、来自另一个国家的网站内容。排查了数天,最终发现,是因为我们VPC的DNS服务器(Route 53 Resolver)被配置为将所有 *.internal 域名的查询,转发给了一个内部的、缓存了数月的DNS服务器。而 web_search 工具内部使用的某个HTTP客户端库,在解析 google.com 时,会尝试查询 google.com.internal 这个不存在的域名

Logo

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

更多推荐