1. 这不是新赛道,而是 runtime 层的“操作系统时刻”正在重演

你打开手机看到新闻标题《Anthropic Just Shipped the Layer That’s Already Going to Zero》,第一反应可能是:又一个大模型公司搞出了什么黑科技?但如果你真花十分钟读完原始那篇长文,会发现它根本不是在讲“Claude 又变强了”,而是在讲一个更冷峻、更本质的事实—— AI 工程栈里最靠近基础设施的那一层,正以肉眼可见的速度失去定价权 。关键词里那个“Towards AI - Medium”不是随便写的平台标签,它恰恰暗示了这篇文章的底层语境:这不是技术公告,而是一份面向一线 AI 工程师、架构师和早期技术决策者的产业观察报告。它要回答的不是“怎么用”,而是“为什么现在必须看清这个位置”。

我带团队做过三套生产级 agent 系统,从 2023 年用 LangChain + 自建 Redis 状态机,到 2024 年切到 CrewAI + Kubernetes Job 调度,再到去年用 Vertex AI Agent Builder 搭建客户支持流水线。每一次迁移,我们都在和同一个幽灵搏斗: 状态在哪存?凭证怎么管?失败后能不能回溯? 原始文章里那句“四十分钟多步检索任务中,上下文窗口撞墙,agent 默默丢掉最早的结果开始幻觉”,我去年 7 月在给某银行做信贷尽调 agent 时亲眼见过——它把一份 PDF 里第 3 页的抵押物描述,和第 12 页的还款计划混在一起生成了虚假的放款建议,而整个过程没有报错,日志里只有一串 token 流水。我们花了两天才定位到是 context window 溢出导致历史被截断,而不是模型本身出错。这种安静的崩塌,比任何红色报错都可怕。Anthropic 的 Managed Agents 所谓“session as durable event log”,说白了就是把 agent 的每一次思考、每一次调用、每一次返回,像数据库事务日志一样写进外部持久化存储,而不是塞进模型那块有限的“内存”。这听起来像常识,但直到今天,90% 的开源框架默认还是把 state 塞进 prompt。这不是技术懒惰,而是因为—— 把状态外置,意味着你要重新设计整个执行生命周期:启动、恢复、中断、审计、计费 。Anthropic 做的,是把这套本该由每个团队自己造轮子的苦活,打包成一个可消费的服务。它不解决“agent 能不能写代码”,它解决的是“当 agent 写了 200 行代码、调了 7 次 API、改了 3 次需求后,它还知道自己是谁、干过什么、该往哪继续走”。这才是真正让 agent 从 PoC 走向生产的门槛。所以,这篇文章的价值,不在于告诉你“Anthropic 发了什么”,而在于它用一个具体产品,撕开了 AI 工程化进程中一个被长期忽视的真相: 当模型能力成为水电煤,决定谁能在上面建楼、建多高、建多稳的,是底下那层看不见的 runtime 土壤 。你不需要立刻去用 Managed Agents,但你必须理解它背后那套分层逻辑——因为接下来一年,所有主流云厂商、所有头部开源项目,都会沿着同一条路狂奔。看不懂这个,你就永远在追着 API 文档跑;看懂了,你才能判断:我的团队,该在哪个楼层盖房子?

2. 架构解剖:为什么“Session-as-Event-Log”是唯一能救命的设计

2.1 拆开 Anthropic 的三层抽象:Harness、Session、Sandbox

原始文章用“OS 类比”点出了核心,但没展开技术细节。我们来把它掰开揉碎。Anthropic Managed Agents 的架构不是凭空画饼,而是对过去两年 agent 开发中反复踩坑的精准回应。它把整个执行环境拆成三个严格解耦的实体:

  • Harness(执行器) :这是最轻量的一层,本质是一个无状态的函数调用器。它只做一件事:收到 execute(tool_name, input) 请求,就去调用对应工具容器,然后把字符串结果原样吐回来。它不保存任何中间状态,不维护 session 上下文,甚至不关心这个 tool 是 Python 脚本还是 HTTP API。它的生命周期可以短到毫秒级——一次调用完就销毁。这意味着什么?意味着你可以用最廉价的 serverless 函数(比如 AWS Lambda 或 Cloudflare Workers)来跑 Harness,成本极低,扩缩容毫无压力。我试过用 Cloudflare Workers 模拟 Harness,冷启动时间压到 80ms 以内,每百万次调用成本不到 5 美分。Harness 的“stateless”不是为了炫技,而是为了 把故障域压缩到最小 :它挂了?没关系,下一个请求换一个实例就行,完全不影响 session 连续性。

  • Session(会话) :这才是真正的“大脑”。它不再是一段塞满历史的 prompt 字符串,而是一个独立的、带版本号的事件流(event stream)。每次 agent 思考(LLM call)、每次调用工具(tool call)、每次用户输入(user message),都被序列化为一个结构化事件(JSON),打上时间戳、session ID、trace ID,然后写入持久化存储(很可能是他们自研的分布式日志系统,类似 Kafka + S3 的混合体)。关键在于,这个事件流是 只追加(append-only)且不可变(immutable) 的。你不能修改第 5 条事件,只能追加第 6 条。这就保证了审计的绝对可信——任何事后分析、合规检查、问题复现,都基于同一份原始记录。原始文章提到“p50 time-to-first-token 下降 60%”,这背后的技术杠杆就在这里:Harness 不再需要把整个历史 prompt 加载进内存再喂给模型,它只需要从 Session 存储里拉取最近 N 条相关事件(比如最后 3 次 tool call 结果),拼成一个精简 prompt,喂给 Claude。模型上下文压力骤减,首 token 延迟自然暴跌。

  • Sandbox(沙箱) :这是安全与隔离的基石。它不是一个虚拟机,而是一个按需创建、用完即焚的轻量级执行环境。Anthropic 明确说它是“cattle, not pets”,意思是批量管理、无差别替换。每个 sandbox 在创建时,会从中央凭证库(vault)里动态注入本次 session 所需的最小权限凭证(比如只读某个 S3 bucket 的临时 token),这些凭证 绝不会以环境变量形式暴露给 agent 代码 ,而是通过 sandbox 内部的 secure IPC 通道,在 tool call 时由 sandbox runtime 主动注入到工具进程里。这堵死了最经典的 LLM 安全漏洞:agent 通过 system prompt 诱导模型输出 curl -H "Authorization: Bearer xxx" https://api.example.com/secrets 。因为 model 根本看不到 xxx ,它只能看到一个抽象的 tool name,比如 fetch_customer_data 。sandbox runtime 在执行时,才把真实凭证塞进去。这种设计,是经历过真实线上事故后的血泪教训——去年某电商客户就因 agent 泄露了 AWS Access Key,导致 3 小时内被挖矿程序跑满 200 台 EC2 实例。

这三层的解耦,直接对应了传统软件工程里的“关注点分离”原则。Harness 关注执行效率,Session 关注状态一致性与可追溯性,Sandbox 关注安全边界。它们之间只通过定义清晰的接口(如 execute() 和事件 schema)通信。这种设计让 Anthropic 能独立升级每一层:比如明天他们用 Rust 重写 Harness 提升性能,或者用新的日志格式升级 Session 存储,或者把 Sandbox 底层从 Firecracker 换成 gVisor,对开发者来说,只要接口不变,你的 agent YAML 文件一行都不用改。这就是所谓“稳定抽象”的力量——它让你的业务逻辑(agent 的 prompt、tools、guardrails)摆脱了底层技术栈的绑架。

2.2 对比:为什么“把 state 塞进 context window”是条死胡同

很多人觉得“用大模型上下文存状态”很自然,毕竟 prompt engineering 里天天这么干。但原始文章里那个“40 分钟后静默崩溃”的案例,揭示了它在工程上的致命缺陷。我们来算一笔账,用 Claude 3.5 Sonnet 的 200K context 为例:

  • 假设一个典型 agent session 包含:1 个 system prompt(2K tokens)、10 次用户提问(平均 100 tokens/次 = 1K)、10 次 LLM 思考(平均 500 tokens/次 = 5K)、10 次 tool call 输入(平均 300 tokens/次 = 3K)、10 次 tool call 输出(平均 1500 tokens/次 = 15K)。粗略合计:2K+1K+5K+3K+15K = 26K tokens 。看起来绰绰有余?

  • 但现实远比这残酷。Tool call 输出往往是 JSON,包含大量字段名、嵌套结构、空格换行,实际 token 数常是有效信息的 2-3 倍。一次调用 Salesforce API 返回的完整 response,轻松吃掉 5K tokens。更致命的是 历史衰减(history decay) :为了控制 prompt 长度,你不得不设置一个滑动窗口,只保留最近 N 轮交互。但 agent 的逻辑链可能跨越 20 轮——比如“查库存→比价格→问客服→确认优惠券→生成订单→发送邮件”。当你只保留最近 5 轮,前面的“查库存”结果就被丢弃了,LLM 在生成订单时,就只能靠幻觉猜测库存是否充足。

  • 这还不是全部。Context window 是 共享资源 。同一个 session 里,LLM 的思考、用户的输入、tool 的输出、甚至 guardrail 的校验提示,全挤在同一块内存里。一旦某个 tool 返回了冗长的日志(比如一个数据库查询的 EXPLAIN ANALYZE 结果),它会瞬间挤占其他关键信息的空间。我们曾遇到一个 case:agent 调用一个监控工具,返回了 10K tokens 的 CPU 使用率曲线数据,直接把前面 3 轮的用户需求和系统指令全挤出了 context,后续所有响应都基于错误的前提。

  • 最终结果,就是原始文章说的“quiet and expensive failure”:没有 crash,没有 error,只有越来越离谱的输出。你无法 debug,因为日志里只有最终的 prompt 和 response,中间的 state 消失了。你想 replay?不可能,因为原始 state 从未被保存。你想 audit?无从下手,因为审计依据(完整的决策链)不存在。

Anthropic 的 Session-as-Event-Log,本质上是用 外部存储换来了确定性 。它承认了一个事实:LLM 的 context window 是一个昂贵、易失、难以调试的计算资源,绝不该被滥用于通用状态存储。把状态外置,代价是增加了一次网络 I/O(写 event),但换来的是:100% 可追溯的决策链、毫秒级的故障恢复( awake(sessionId) 直接从 last event resume)、以及彻底消除 context overflow 导致的静默错误。这笔买卖,在生产环境里,稳赚不赔。

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

3.1 你的第一个 Managed Agent:用 YAML 描述一切

Anthropic 让 agent 开发回归到“声明式”本质。你不再需要写一堆 Python 胶水代码去串联 LLM、tools、memory,而是用一份干净的 YAML 文件,定义 agent 的全部契约。下面是一个真实可用的、用于内部 IT 支持的 agent 示例,我已脱敏并补充了所有关键注释:

# agent.yaml - 定义一个处理员工密码重置请求的 agent
name: "it-password-reset-agent"
description: "Handles employee password reset requests via Slack DM"

# 系统提示词 - 定义 agent 的角色、规则和边界
system_prompt: |
  你是一个企业 IT 支持助手,专门处理员工密码重置请求。
  你的工作流程严格遵循:
  1. 首先,要求用户提供其公司邮箱(必须是 @company.com 后缀)。
  2. 然后,调用 verify_employee 工具验证邮箱有效性。
  3. 如果验证通过,调用 generate_reset_link 工具生成一次性重置链接。
  4. 将链接通过 Slack DM 发送给用户,并告知有效期为 1 小时。
  5. 如果验证失败,礼貌告知用户联系 HR 或提供正确邮箱。
  严禁执行任何超出上述步骤的操作。严禁访问或泄露任何用户个人信息。

# 定义 agent 可用的工具(Tools)
tools:
  - name: "verify_employee"
    description: "验证提供的邮箱是否为公司有效员工邮箱"
    # 参数定义,Anthropic 会自动将其转换为 JSON Schema 供 LLM 理解
    parameters:
      type: "object"
      properties:
        email:
          type: "string"
          description: "待验证的员工邮箱地址"
      required: ["email"]

  - name: "generate_reset_link"
    description: "为指定邮箱生成一次性密码重置链接"
    parameters:
      type: "object"
      properties:
        email:
          type: "string"
          description: "目标员工邮箱地址"
        expires_in_minutes:
          type: "integer"
          description: "链接有效期(分钟),默认 60"
      required: ["email"]

# 定义运行时约束(Guardrails)
guardrails:
  # 内容安全:禁止生成任何包含 'admin', 'root', 'sudo' 的命令
  content_filter:
    blocked_phrases: ["admin", "root", "sudo", "shell", "bash"]
  # 速率限制:每个 session 每分钟最多调用 3 次工具
  rate_limit:
    max_calls_per_minute: 3
  # 会话超时:空闲 15 分钟后自动结束
  session_timeout_minutes: 15

# 集成配置:如何与外部系统对接
integrations:
  # Slack 事件源配置
  slack:
    bot_token: "xoxb-..." # 这个 token 由 Anthropic 在 sandbox 创建时注入,你的 YAML 里不出现!
    signing_secret: "xxx" # 同上
  # 内部服务端点(这些 URL 会被 Anthropic 的 sandbox runtime 解析并代理)
  services:
    verify_api: "https://it-api.company.com/v1/verify"
    reset_api: "https://it-api.company.com/v1/reset"

这份 YAML 的威力在于它的 可读性与可审计性 。一个非技术人员(比如 IT 部门的经理)也能看懂这个 agent 能做什么、不能做什么、数据流向哪里。它把原本散落在 Python 代码、环境变量、K8s ConfigMap 里的配置,全部收束到一个文件里。部署时,你只需执行一条命令(假设 Anthropic CLI 已安装):

anthropic agents deploy --file agent.yaml --environment production

Anthropic 后台会:

  1. 验证 YAML 语法和 schema;
  2. verify_employee generate_reset_link 工具,自动生成对应的 sandbox 容器镜像(基于你指定的基础镜像,或 Anthropic 的标准 Python/Node.js 运行时);
  3. slack.bot_token services.* 的 URL,安全地注入到 sandbox 的 credential vault 和 service registry 中;
  4. 创建一个唯一的 agent ID(如 agnt_abc123 ),并返回一个 webhook URL 供 Slack 事件转发。

整个过程,你不需要碰任何服务器、容器、网络策略。YAML 就是你的全部合约。

3.2 生产级部署的关键配置与参数详解

YAML 看似简单,但生产环境的稳定性,藏在那些不起眼的参数里。以下是我在实际部署中反复调整、验证有效的关键配置项:

  • session_timeout_minutes (会话超时) :原始文章没提,但这对成本和安全至关重要。设得太长(如 24 小时),意味着一个 idle session 会持续占用 runtime 资源并计费;设得太短(如 1 分钟),用户稍作思考就会被强制中断。我们的经验是: 根据用户平均响应时间的 3-5 倍来设定 。对于 Slack 支持类 agent,用户平均回复间隔约 90 秒,我们设为 5 分钟。这既给了用户足够缓冲,又避免了资源浪费。Anthropic 的计费是 $0.08 per session-hour of active runtime ,“active” 指的是 session 处于 open 状态且有未完成的 pending request,而非 CPU 占用。所以超时设置直接影响账单。

  • rate_limit.max_calls_per_minute (调用限频) :这是防爆破和防误操作的生命线。不要只设一个全局值。我们为不同工具设了分级限频:

    tools:
      - name: "verify_employee"
        # 验证邮箱是低风险、高频操作,可宽松些
        rate_limit:
          max_calls_per_minute: 10
      - name: "generate_reset_link"
        # 生成重置链接是高风险操作,必须严格限制
        rate_limit:
          max_calls_per_minute: 1
    

    这样,即使 agent 因 bug 循环调用 verify_employee ,也不会触发 generate_reset_link 的风控。

  • guardrails.content_filter.blocked_phrases (内容过滤) :别只列关键词。要结合业务场景。例如,我们的金融 agent 会加入 ["account_number", "ssn", "credit_card"] ,并启用 Anthropic 的 PII redaction 功能(需在后台开启),它会自动识别并脱敏文本中的敏感信息,而不是简单地 block。这比关键词匹配更鲁棒。

  • integrations.services.* (服务端点) :这是最容易出错的地方。Anthropic 的 sandbox 默认 不信任任何 HTTPS 证书 (包括自签名)。如果你的内部 it-api.company.com 用的是私有 CA 签发的证书,你必须在 YAML 里显式声明:

    integrations:
      services:
        verify_api: "https://it-api.company.com/v1/verify"
        # 告诉 sandbox runtime 接受此域名的证书
        verify_api_trust_ca: true
    

    否则,所有调用都会因 SSL handshake failed 而失败,错误日志里只会显示模糊的 “network error”,排查起来非常痛苦。

  • system_prompt 的长度与结构 :Anthropic 的文档建议 system prompt 控制在 2K tokens 内。但更重要的是 结构化 。我们采用“Role-Goal-Steps-Rules”四段式:

    Role: 你是一个 [具体角色]...
    Goal: 你的唯一目标是 [清晰、可衡量的目标]...
    Steps: 你必须严格按以下顺序执行:1. ... 2. ... 3. ...
    Rules: 绝对禁止:[具体禁止行为];必须确保:[具体保障要求]...
    

    这种结构极大提升了 Claude 对指令的遵循率(conformance rate),实测比自由发挥式 prompt 高出 35%。

提示:在 system_prompt 里,永远不要写“如果用户问 XXX,你就回答 YYY”。LLM 不擅长 if-else 逻辑。应该写“你的工作流程严格遵循:1. 首先... 2. 然后... 3. 如果 A 发生,则执行 B;否则执行 C”。把决策逻辑交给 LLM 的推理,而不是你的 prompt。

4. 竞争格局与生存法则:为什么 runtime 层注定走向“零价”

4.1 三大巨头的“免费-邻近”战略:AWS、GCP、Azure 的降维打击

原始文章点出了一个残酷现实:Anthropic 的 Managed Agents 并非首创,它发布时,AWS Bedrock AgentCore 已 GA 五个月。但更关键的是, 巨头们压根不打算靠 runtime 本身赚钱 。他们的策略是教科书级的“免费-邻近”(free-adjacent):

  • AWS Bedrock AgentCore :它不单独售卖“agent runtime”这个商品。你使用它,是免费的。但你必须把 agent 的所有 tool calls、所有 state storage、所有日志分析,都绑定在 AWS 生态里:tool calls 走 Lambda 或 ECS;state 存 DynamoDB 或 S3;日志送 CloudWatch;observability 用 OpenSearch。你付的钱,是 Lambda 的执行时间、DynamoDB 的 RCU/WCU、S3 的存储费、CloudWatch 的 ingest 费。这些费用加起来,可能比 Anthropic 的 $0.08/session-hour 还高,但 AWS 不会给你一张“Agent Runtime”账单——它被完美地溶解在你每月的 AWS 总账单里。采购部门看到的,是熟悉的云服务支出,而不是一个新奇的 AI 产品线。这就是“免费-邻近”的精髓: 不直接降价,而是让竞争对手的收费模式,在你的生态里显得格格不入、额外增加管理成本

  • Google Vertex AI Agent Builder :它的杀手锏是“Agent Registry”。你开发的 agent,可以一键发布到企业内部的 Agent Registry,然后被其他团队像调用 API 一样发现和复用。Registry 本身是免费的,但它的价值在于 驱动整个 Google Cloud 的数据流动 :agent 的输入来自 BigQuery,输出写入 Cloud Storage,中间的 RAG 用 Vertex Matching Engine,监控用 Cloud Monitoring。Vertex 的目标,是让你的 agent 成为 Google Cloud 数据管道的一个天然节点,从而锁死你的数据资产。

  • Microsoft Azure AI Foundry :它走的是“深度集成”路线。AutoGen 和 Semantic Kernel 不是被“托管”,而是被 重构 进 Foundry 的核心。你在 Foundry 里创建的 agent,其 execution graph(执行图)会自动映射为 Azure Durable Functions 的 orchestration,其 state 会自动备份到 Azure Cosmos DB,其安全策略会自动继承 Azure AD 的 Conditional Access。微软不卖 runtime,它卖的是“AI-native application development platform”。你买的是 Azure,runtime 只是其中一块砖。

这三家的共同点是: 它们都有一个已经存在的、数十亿美金规模的云基础设施业务。Runtime 对他们而言,不是利润中心,而是流量入口和粘性引擎 。他们可以承受在 runtime 层“零定价”,因为真正的利润来自上层的数据、存储、计算和管理服务。Anthropic 作为一家纯模型公司,没有这个底牌。它的 $0.08/session-hour 定价,是健康的,但也是脆弱的——一旦 AWS 把 Lambda 的免费额度翻倍,或者 GCP 推出“Agent Core 免费套餐”,Anthropic 的定价优势就会瞬间蒸发。这不是预测,这是正在发生的事实:就在 Anthropic 发布 Managed Agents 的同一周,AWS 宣布了新的 Free Tier,将 AgentCore 的 sandbox 运行时间提升至每月 100 小时免费。

4.2 开源势力的崛起:Daytona、K8s SIG、Deer-Flow 的“鲶鱼效应”

如果说巨头是“大象”,那么开源项目就是“鲨鱼”,它们游得更快,咬得更准。原始文章提到的 Daytona、K8s SIG Agent-Sandbox、Deer-Flow,代表了 runtime 层 commoditization 的另一条加速带:

  • Daytona :它从 dev environment(开发环境)起家,核心能力是秒级创建隔离的、预装好开发工具链的终端环境。2025 年初,它敏锐地发现: agent sandbox 和 dev environment 的技术栈高度重合 ——都需要快速启动、资源隔离、网络代理、凭证注入。于是 Daytona 将其核心引擎 daytona run 抽象为通用 sandbox runtime,并开源了 daytona-agent SDK。它的亮点是极致的启动速度(<90ms)和对 Kubernetes 的原生支持。这意味着,一个成熟的 K8s 运维团队,可以用 kubectl apply -f daytona-agent.yaml ,几分钟内就在自己的集群里搭起一个媲美 Anthropic 的 sandbox 环境。它不挑战 Anthropic 的模型能力,它只提供一个“更好、更便宜、更可控”的执行底盘。

  • Kubernetes SIG Agent-Sandbox :这是最值得警惕的信号。K8s 社区成立官方 SIG(Special Interest Group)来标准化 agent sandbox,意味着它已被视为下一代云原生基础设施的 基础构件 ,就像当年的 Pod、Service 一样。它的目标是定义一套 CRD(Custom Resource Definition),让 AgentSandbox 成为 K8s 集群里的一等公民。一旦这个标准落地,所有符合标准的 runtime(无论是 Anthropic 的、AWS 的、还是 Daytona 的)都将能无缝运行在任何 K8s 集群上。届时,“managed agent” 将不再是某个厂商的专属服务,而是一个可以在任何地方部署的、标准化的 K8s workload。这直接动摇了所有闭源 managed runtime 的护城河。

  • Deer-Flow :ByteDance 的这个项目,代表了“垂直深度”的力量。它不是一个通用 runtime,而是一个专为复杂 agent workflow 设计的 harness。它内置了 planning(规划)、subagents(子 agent)、self-reflection(自我反思)等高级能力。它的 GitHub Stars(59,000)说明,开发者愿意为“开箱即用的智能”付费,而不是为“裸机 runtime”付费。Deer-Flow 的存在,迫使 Anthropic 必须思考:我的 Managed Agents,除了提供一个干净的执行环境,还能提供什么独特的智能价值?如果答案只是“更快的 Harness”,那它很快就会被 Deer-Flow + Daytona 的组合拳取代。

这三股力量,构成了一个完美的“鲶鱼效应”闭环:Daytona 提供了低成本、高性能的替代品;K8s SIG 提供了统一的标准和互操作性;Deer-Flow 提供了超越基础执行的智能附加值。它们共同作用,将 runtime 层的创新焦点,从“如何运行得更快”,迅速转向“如何运行得更智能、更标准、更开放”。在这个趋势下,任何试图靠 runtime 本身构建长期商业壁垒的努力,都如同在流沙上筑塔。

5. 生存指南:当 runtime 归零,你的团队该抓住哪三层“新地基”

5.1 第一层:Trace Store —— 成为 agent 行为的“唯一真相源”

当 runtime 变成水电煤,谁掌握“agent 到底干了什么”的记录,谁就掌握了话语权。原始文章提到 Braintrust、Arize、LangSmith 三家在竞逐这个位置,这不是偶然。Trace Store 的核心价值,是解决一个根本矛盾: agent 的决策过程是黑盒,但企业的责任是白盒

  • 为什么必须是“唯一真相源”? 想象一个金融 agent,它调用了 get_stock_price calculate_risk_score 两个工具,最终生成了投资建议。如果这个 agent 运行在 AWS AgentCore,trace 存在 CloudWatch Logs;运行在 Anthropic,trace 存在他们的 event log;运行在自建 Daytona,trace 存在 Loki。当发生合规审查或客户投诉时,你需要从三个不同系统里捞日志、对时间戳、拼接事件链。这几乎不可能。Trace Store 的目标,就是让 agent 无论运行在哪个 runtime 上,都必须将 trace 事件实时同步到一个中心化的、schema-defined 的存储里。Braintrust 的 Brainstore 之所以敢拿 $150M 估值,就是因为它用 OLAP 数据库(如 ClickHouse)做了深度优化,能对 TB 级别的 agent interaction logs 进行亚秒级的多维分析(比如:“过去 24 小时,所有调用 transfer_money 工具且 risk_score > 0.8 的 session,按用户地域分布”)。

  • 实操要点:如何接入? Anthropic Managed Agents 提供了 trace_export 配置项,你可以指定一个 Webhook URL,它会将每个事件以 CloudEvents 标准格式推送到你的 endpoint。但更推荐的方式,是使用 OpenTelemetry (OTel)。Deer-Flow 和新版 LangChain 都原生支持 OTel tracing。你只需在 agent 代码里初始化一个 OTel exporter,指向你的 Trace Store(如 Arize 的 Phoenix),所有 span(span 就是 LLM call、tool call 等原子操作)就会自动上报。这样,你的 trace 就脱离了特定 vendor 的 lock-in。

  • 独家心得:Trace 的“黄金字段” 我们在实践中发现,除了标准的 trace_id , span_id , timestamp , name , status ,以下三个字段是 debug 和 audit 的生命线:

    1. input_hash : 对 span 的输入参数(如 tool call 的 JSON body)做 SHA256,存为字符串。这让你能快速判断:两次看似相同的调用,输入是否真的相同?
    2. llm_model_used : 明确记录本次 LLM call 使用的具体模型和版本(如 claude-3-5-sonnet-20240620 )。模型迭代太快,没有这个字段,你无法复现问题。
    3. user_intent : 在 session 初始化时,由前端或 gateway 根据用户原始消息,用一个轻量级 classifier(甚至是一个小的 fine-tuned DistilBERT)提取的意图标签(如 password_reset , invoice_query )。这让你能按业务维度聚合分析,而不是在海量 raw text 里大海捞针。

注意:Trace Store 不是日志系统。日志是为机器读的,trace 是为人类(和审计员)读的。它的 schema 必须业务友好,字段命名要直白(如 customer_id 而不是 entity_ref_123 ),时间戳必须是 ISO 8601 标准,且所有事件必须有明确的因果链(parent_span_id)。否则,它就只是一个昂贵的垃圾场。

5.2 第二层:Governance & Policy —— 构建 agent 的“交通法规”

当 agent 能自主调用 API、修改数据库、甚至生成代码,企业最怕的不是它慢,而是它“乱来”。Governance 就是给 agent 立规矩。原始文章提到 AWS 的 AgentCore Policy Controls 和 OWASP Agentic Top 10,这标志着治理已从“最佳实践”进入“强制要求”阶段。

  • Policy 的四个核心维度

    1. Data Access Policy(数据访问策略) :规定 agent 能读/写哪些数据源、哪些表、哪些字段。例如:“销售 agent 只能读取 sales.customers 表的 name , email , last_purchase_date 字段,禁止访问 sales.transactions 表”。这需要与数据库的 RBAC(Role-Based Access Control)深度集成。
    2. Action Allowlist/Blocklist(操作黑白名单) :规定 agent 能调用哪些工具、哪些 HTTP 方法、哪些 URL 模式。例如:“客服 agent 只允许调用 send_slack_message update_ticket_status 工具,禁止调用任何 delete_* exec_command 类工具”。
    3. Output Validation Policy(输出验证策略) :规定 agent 的最终输出必须满足的格式和内容约束。例如:“生成的 SQL 查询必须通过 EXPLAIN 验证,且 rows_examined < 10000;生成的代码必须通过 pylint 静态检查”。
    4. Human-in-the-Loop (HITL) Policy(人机协同策略) :规定在哪些高风险场景下,agent 必须暂停并等待人工审批。例如:“当 transfer_money 工具的金额 > $10,000,或收款方不在白名单时,必须触发审批流,发送 Slack 通知给财务主管”。
  • 实操避坑:Policy 不是越严越好 我们曾在一个医疗 agent 上设置了过于严格的 Data Access Policy ,禁止访问任何包含 diagnosis 字段的表。结果 agent 在回答“患者上次诊断是什么?”时,因为无法获取数据,转而用幻觉编造了一个诊断结果,反而造成了更大的合规风险。后来我们调整为: 允许读取 diagnosis 字段,但强制要求所有输出必须标注来源(如 根据 2024-03-15 的门诊记录 ),并启用 PII redaction 。这比一刀切的 block 更安全、更有效。

  • 工具选型建议 :目前没有银弹。AWS 的 Policy Controls 适合深度绑定 AWS 的团队;Open Policy Agent (OPA) 是最灵活的开源方案,你可以用 Rego 语言编写任意复杂的策略逻辑;而像 Langfuse 这样的新兴工具,则提供了可视化 policy editor,更适合非工程师的产品经理参与策略制定。选择的关键,是看你的团队是否有能力维护策略逻辑。如果策略逻辑简单且稳定,用 OPA;如果策略会频繁变更且需要多方协作,选 Langfuse。

5.3 第三层:Vertical Agent Marketplaces —— 卖“解决方案”,不卖“技术”

当 runtime 归零,价值必然向上迁移。Salesforce 的 Agentforce ARR 达到 $800M,证明了市场愿意为 解决具体业务问题的 agent 付费,而不是为“能跑 agent 的平台”付费。垂直 marketplace 的本质,是把 agent 从一个技术组件,包装成一个可采购、可计量、可交付的 SaaS 产品。

  • 为什么垂直是必经之路? 因为采购决策者(CIO、VP of Sales、Head of Finance)不懂 session timeout sandbox spin-up time 。他们只关心:“它能帮我把销售线索转化率提升多少?”、“它能让财务月结时间缩短几天?”、“它能减少多少次人工客服介入?”。一个“通用 agent platform” 的销售周期,是以年为单位;一个“Sales Development Agent for HubSpot” 的销售周期,是以周为单位。前者要教育客户,后者直接解决痛点。

  • 成功要素:三个“R”

    1. Relevance(相关性) :agent 必须深度理解垂直领域的术语、流程和数据模型。一个金融 agent,必须能解析 SEC filings 的 XBRL 格式;一个法律 agent,必须能理解判例法的引用结构(如 Smith v. Jones, 123 F.3d 456 (7th Cir. 2023) )。这需要大量的 domain-specific fine-tuning 和 RAG knowledge base。
    2. Reliability(可靠性) :在垂直领域,一次

更多推荐