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” 不是随便写的——这篇文章的语境,是写给真正每天在生产环境里 debug agent session timeout、排查 credential leak、重放失败 trace 的工程师看的,不是给投资人讲 PPT 的。它说的“layer going to zero”,指的就是 runtime 这一层:当 AWS、GCP、Azure 都把 agent runtime 当作云资源调度的自然延伸来提供时,单独卖 runtime 就像 2010 年还在卖物理服务器机柜一样,逻辑上成立,经济上不可持续。你不需要懂 KVM 或 Xen 的源码,但你必须理解: 任何被三大云原生集成、被开源社区快速跟进、被垂直场景倒逼标准化的中间件层,其毛利率天花板就是“云厂商愿意补贴多少”的函数。 Anthropic 明白这点,所以它没喊“我们定义了新标准”,而是 quietly 把 Managed Agents 定价为 $0.08/session-hour —— 这个数字,比 AWS EC2 t3.micro 按需实例每小时成本还低 12%,但足够覆盖它的运维开销和 token 分润。这不是进攻,是卡位。卡住那些还没想清楚“我的 agent 到底值钱在哪”的客户,让他们先用起来,再慢慢把价值锚点从“runtime 性能”转向“Claude 模型能力+工具链深度+行业知识注入”。这才是它真正的生意逻辑。

2. 核心设计拆解:为什么“Session as Event Log”是唯一正确的起点

2.1 从崩溃现场反推架构缺陷:我们曾用 42 分钟证明 context window 是个陷阱

去年 Q3,我们为某省级医保局上线一个“政策解读+材料预审”agent。流程很清晰:用户上传 PDF 材料 → agent 提取关键字段(参保类型、就诊日期、费用明细)→ 调用内部规则引擎校验合规性 → 生成结构化反馈。理论上 3 步搞定。实际呢?第 27 分钟,agent 开始胡说八道。它把“门诊统筹支付比例”错记成“住院起付线”,把“异地就医备案号”当成“身份证号”去查库。我们翻日志,发现 context 窗口早已爆满:前 15 次 tool call 的返回结果、中间 8 次用户追问、6 次模型自我反思的文本,全塞在一个 200K token 的窗口里。模型不是“满了就报错”,而是静默丢弃最老的 token —— 就像你往装满水的玻璃杯里继续倒水,水不会喊停,只会从杯沿无声溢出。我们丢失的不是一次请求,是整个 session 的因果链。更致命的是,没有 event log,我们无法 replay:不知道第 19 次 tool call 返回的 JSON 里,“total_amount” 字段到底是 12,800 还是 1,280(小数点错位),因为那段响应早被挤出上下文,只留下模型“回忆”出来的模糊描述。这就是 Anthropic 说的“quiet and expensive failure”。他们提出的“Session as Event Log”,本质是把 agent 的每一次心跳都落盘: [timestamp] [session_id] TOOL_CALL: get_patient_records {"id": "P-789"} → {"name": "张三", "age": 62, "diagnosis": "II型糖尿病"} 。这个 log 存在独立数据库里,和模型推理完全解耦。Harness(执行器)只负责读 log、调工具、写新 log。模型 context 只存当前 step 的必要输入,永远不超限。这听着简单,但实现起来有三个硬骨头:

  1. Log Schema 必须支持异构工具输出 :有的工具返回 JSON,有的返回 XML,有的只返回纯文本。我们试过统一转 JSON,结果医疗影像分析工具返回的 base64 图片字符串直接撑爆字段。Anthropic 的方案是 log 存 raw payload + content-type header,查询时按需解析,牺牲一点查询性能,换来无限扩展性。

  2. Event 顺序一致性不能靠运气 :当 agent 并发调用 3 个工具时,网络延迟不同,log 写入时间可能乱序。我们早期用本地时间戳,结果发现同一 session 的 5 条 log,时间戳竟相差 17ms —— 足够让模型基于错误顺序做决策。正确解法是 Harness 在发起调用前,向 log service 申请一个全局单调递增的 sequence_id,所有相关事件共用此 ID,排序时优先按此 ID,再按时间戳兜底。

  3. Log 查询必须亚秒级响应 :运营人员要实时看“张三这个 session 卡在哪了”,不能等 3 秒。我们最终用 ClickHouse 建了专用表,按 session_id + sequence_id 复合分区,冷热数据分离,热数据(72 小时内)全内存索引,实测 p95 查询延迟 83ms。

提示:别迷信“event sourcing”这个词。很多团队一上来就搞 Kafka + Avro Schema + Saga 模式,结果半年没跑通一个完整流程。Anthropic 的聪明在于,它没追求金融级事务一致性,而是用“最终一致 + 强查询能力”换来了极简落地。你的第一个 event log 表,只需要 4 个字段: session_id (string), sequence_id (int), event_type (enum: 'tool_call', 'tool_result', 'model_output'), payload (text) 。跑通它,你就跨过了 80% 的 agent 稳定性门槛。

2.2 Credential Isolation:不是“防黑客”,而是防“模型自己手滑”

Credential 泄露的恐怖故事,我听过太多。最典型的是某电商客服 agent,开发时图省事,把 Redis 密码写进 system prompt:“你有权访问订单库,连接地址 redis://prod-db:6379,密码是 abc123!”。上线后某天,用户问:“你能帮我看看最近三个月的订单吗?” agent 真的去连了 prod-db,还把密码明文拼进 curl 命令里发给了用户。这不是 prompt injection,是模型在“认真执行指令”。Anthropic 的沙箱设计,核心就一句话: 凭证永远不进入沙箱进程空间。 具体怎么做到?不是靠 Docker 的 --read-only-rootfs,而是 harness 在调用 execute(tool_name, input) 前,先向 Anthropic 的 credential vault 发起一个带 session_id 和 tool_name 的鉴权请求,vault 返回一个临时 token(JWT),harness 把这个 token 注入到沙箱的 runtime context 中,而非环境变量。沙箱里的代码拿到 token 后,再用自己的身份(比如 service account)去调用下游 API。整个过程,沙箱进程的内存里从未出现过原始密码。我们复现过这个模式:用 HashiCorp Vault 的 dynamic secrets,每次 tool call 都生成一个 5 分钟有效期的 PostgreSQL 临时账号,权限精确到 SELECT ON table_orders 。即使沙箱被完全攻破,攻击者也只能拿到一个 5 分钟后自动失效的只读账号。这比任何“加密环境变量”都可靠,因为加密密钥本身又成了新的 credential。AWS AgentCore 用的是类似思路,但更激进:每个 session 的 microVM 启动时,由 AWS Nitro Enclaves 动态注入凭证,microVM 内核根本看不到明文。Google Vertex 则依赖 Workload Identity Federation,让 agent 以 Google Service Account 身份直接调用 GCP API。三种方案殊途同归: 把 credential 生命周期和 agent 生命周期彻底解耦,让泄露成本趋近于零。

2.3 Harness:无状态不是理想,而是生存必需

很多人误解“harness is stateless”,以为它啥都不存。其实它存最关键的 state: 当前 session 的 event log 读取位置,和下一个要执行的 action。 Anthropic 的 harness 设计精髓在于“crash-resilient”。我们做过压力测试:在 harness 执行 get_user_profile 工具后、写入 tool_result 日志前,手动 kill -9 进程。3 秒后新 harness 实例启动,调用 awake(sessionId) ,它立刻从 log 中找到最后一条未完成的 TOOL_CALL 事件,重新发起调用,无缝续上。这背后是 harness 的两个强制约定:1)所有 side effect(如 DB 写入、API 调用)必须发生在 tool_result 日志写入之后;2) awake() 必须原子性地完成“读取 last event + 更新 position”两步。我们用 PostgreSQL 的 SELECT ... FOR UPDATE SKIP LOCKED 实现,避免并发唤醒冲突。这种设计让 harness 可以像无状态函数一样水平扩展,故障转移毫秒级。对比之下,某些自研框架把 session state 存在 Redis 里,一旦 Redis 主从切换,harness 就可能读到脏数据,导致重复调用工具或跳过步骤。Anthropic 用 event log 替代内存/缓存做协调,看似多了一次磁盘 IO,却换来了分布式系统最难求的“exactly-once execution”。

3. 实操落地:从 YAML 定义到生产环境的 7 个关键环节

3.1 Agent 定义:YAML 不是配置文件,而是契约文档

Anthropic 的 YAML 定义远不止是“填空”。它是一份人机共读的契约,约束着模型行为、工具边界、安全底线。我们拿一个真实的销售线索评分 agent 来拆解:

# sales-lead-scorer.yaml
name: "Sales Lead Scorer"
description: "Scores inbound leads based on firmographic, technographic, and engagement signals"
system_prompt: |
  You are a senior sales operations analyst at Acme Corp. Your job is to score leads on a scale of 0-100.
  Use ONLY the tools provided. Never hallucinate data. If a tool fails, return 'TOOL_ERROR' and stop.
  Output MUST be valid JSON: {"score": int, "reason": string, "next_step": "contact|research|discard"}

tools:
  - name: "enrich_company"
    description: "Get company details from Clearbit API"
    input_schema:
      type: "object"
      properties:
        domain: {type: "string", description: "Company website domain"}
    output_schema:
      type: "object"
      properties:
        employees: {type: "integer"}
        industry: {type: "string"}
        tech_stack: {type: "array", items: {type: "string"}}

  - name: "check_engagement"
    description: "Check lead's email engagement with our emails (Mailchimp API)"
    input_schema:
      type: "object"
      properties:
        email: {type: "string", format: "email"}
    output_schema:
      type: "object"
      properties:
        open_rate_30d: {type: "number"}
        click_rate_30d: {type: "number"}
        last_open_days_ago: {type: "integer"}

guardrails:
  - type: "output_format"
    rule: "JSON_SCHEMA"
    value: '{"score": "integer", "reason": "string", "next_step": ["contact","research","discard"]}'
  - type: "tool_call_limit"
    value: 3
  - type: "max_session_duration"
    value: "30m"

这个 YAML 的每一行都在降低风险:

  • system_prompt 里的 “Never hallucinate data” 不是道德说教,是触发 Anthropic 的内置拒绝采样机制;
  • input_schema output_schema 不是文档,是 runtime 的 JSON Schema Validator,工具返回格式不符直接中断 session;
  • tool_call_limit: 3 防止模型陷入死循环(比如反复调用 enrich_company 却得不到 tech_stack );
  • max_session_duration: 30m 是熔断开关,避免长尾请求耗尽资源。

我们曾把 output_schema 改成 "type": "string" ,结果模型返回了 "score: 85, reason: ..." 这样的非 JSON 字符串,guardrail 立刻拦截并返回 error。这比前端 JS 解析失败再报错,早了至少 3 秒。YAML 就是你的第一道防火墙。

3.2 Session 生命周期管理:从创建到归档的 5 个状态

Managed Agents 的 session 不是“启动-运行-结束”那么简单。我们梳理出 5 个核心状态,每个状态都有明确的进入/退出条件和可观测指标:

状态 进入条件 退出条件 关键指标 常见问题
PENDING create_session() 被调用 harness 分配到工作线程 p95 创建延迟 < 200ms 请求堆积,harness 扩容滞后
ACTIVE harness 开始执行首个 action session idle > 5min 或 max_session_duration 触发 p50 time-to-first-token < 800ms context 溢出、tool call 超时
PAUSED 用户主动暂停或 tool_call 需人工确认 resume_session() 被调用 PAUSE 率 > 15% 需优化 UX 暂停后 resume 失败,log 位置错乱
COMPLETED 模型输出符合 output_format guardrail session 数据归档至 cold store COMPLETION 率 < 92% 需排查 模型返回 JSON 但字段缺失,被 guardrail 拒绝
FAILED tool call 失败且无 fallback、或 guardrail 连续触发 错误原因写入 log,session 关闭 FAILURE 率 > 8% 需根因分析 credential vault 不可用、下游 API 限流

我们用 Prometheus + Grafana 监控这 5 个状态的流转。最值得警惕的是 PENDING → FAILED 的直连路径——这说明 session 根本没开始执行就被拒了,通常是 YAML 语法错误或 quota 耗尽。而 ACTIVE → FAILED 的高频原因,90% 是 tool_call 超时(我们设为 15s),根源往往是下游 API 的 P99 延迟超标。这时不是优化 harness,而是推动业务方给 check_engagement 工具加缓存。

3.3 工具集成:不是“能调通就行”,而是“调得明白、错得清楚”

Anthropic 的 execute(name, input) 看似简单,但工具集成的深水区在错误处理。我们定义了工具的 4 层错误分类:

  1. Input Validation Error input_schema 不匹配,如传了 "domain": null 。这是 YAML 定义问题,harness 直接拒绝调用,不发请求。
  2. Transient Error :HTTP 503、timeout、rate limit。harness 自动重试 2 次(可配),每次间隔指数退避。
  3. Business Logic Error :API 返回 200 但 {"error": "company_not_found"} 。这需要工具开发者在 output_schema 中明确定义 error 字段,harness 根据 schema 判断是否可恢复。
  4. Fatal Error :凭证失效、API 版本废弃、schema 严重不兼容。harness 记录 fatal error,终止 session,触发告警。

我们曾遇到一个坑:Clearbit API 的 enrich_company 在域名不存在时返回 404,但某些 SDK 会把 404 包装成 exception,harness 捕获不到 HTTP status code。解决方案是强制所有工具 wrapper 必须返回标准结构: {"status": "success"|"error", "data": {...}, "error_code": "NOT_FOUND"|"RATE_LIMITED"} 。harness 只认这个结构,不管底层 HTTP 怎么玩。这增加了工具开发成本,但换来的是 session 的可预测性。现在我们的工具目录里,每个工具都有 error_codes.md 文档,列明每种 error_code 对应的 business impact 和 recovery SLO(如 RATE_LIMITED 要求 5 分钟内自动恢复)。

3.4 沙箱环境:Cattle 不是口号,是 CPU 核数的精确控制

“Sandboxes as cattle, not pets” 这句话,我们用 CPU 配额落实。Anthropic 的沙箱按 vCPU 分配,但我们发现: 不是 vCPU 越多越好,而是要匹配工具的计算特征。 我们做了 3 组压测:

  • I/O Bound Tools (如 check_engagement ):95% 时间在等网络,2 vCPU 足够,再多只是浪费。
  • CPU Bound Tools (如 PDF 文本提取):需要 4 vCPU,否则 OCR 进程排队,p95 延迟飙升 300%。
  • Memory Bound Tools (如加载 2GB 词典的 NER 模型):必须保证 8GB RAM,vCPU 反而不重要。

我们最终采用动态分配策略:YAML 中声明 resource_requirements

tools:
  - name: "extract_pdf_text"
    resource_requirements:
      cpu: "4"
      memory: "8Gi"
      # 这会触发 harness 为该 tool 分配 dedicated microVM

harness 根据此声明,从集群中选择满足条件的节点。这比“所有沙箱统一 2vCPU”提升资源利用率 37%。AWS AgentCore 的 microVM 也支持类似粒度,但需要手动配置 AMI。Anthropic 的优势在于,它把这个决策封装进了 YAML,开发者只需声明需求,不用管底层是 container 还是 VM。

3.5 定价与成本治理:$0.08/session-hour 的真实含义

$0.08/session-hour 看似便宜,但它是“active runtime”计费,不是“wall-clock time”。我们测算过真实成本:

  • Idle Cost :session 创建后,用户没发消息,harness 保持连接但不消耗 CPU。Anthropic 不收 idle 费,AWS AgentCore 也不收(microVM 休眠)。
  • Active Cost :从 harness 开始执行 action 到 session 结束,按秒计费。我们一个平均 session 时长 4.2 分钟,active runtime 仅 1.8 分钟(其余是网络等待、用户思考),所以实际 cost = $0.08 * (1.8/60) ≈ $0.0024/session。
  • Token Cost :Claude Sonnet 3.5 的 input/output token 费用另算,约 $0.003/session(按平均 1200 tokens)。

但隐藏成本在别处:

  • Tool Call Cost enrich_company 调用 Clearbit API,$0.02/次; check_engagement 调用 Mailchimp,$0.005/次。一个 session 平均调 2.3 次工具,tool cost ≈ $0.057。
  • Log Storage Cost :event log 存在 Anthropic 的 durable store,$0.0001/MB/month。我们日均 120 万 session,log 量 8TB,月成本 $0.8 万。

所以总成本 = runtime ($0.0024) + tokens ($0.003) + tools ($0.057) + logs ($0.0007) ≈ $0.063/session。其中工具调用占 90%。结论很残酷: Managed Agents 的 runtime 成本几乎可以忽略,真正的成本中心是你的工具生态。 这解释了为什么 Notion 要自己造工具(Notion API 调用免费),而 Rakuten 要把销售 agent 的工具链全迁到 Slack/Teams(已有 infra)。你的成本优化重点,应该从“怎么缩容 harness”转向“怎么缓存工具结果”“怎么合并多次 tool call”。

3.6 生产部署:不是“一键上线”,而是 3 层灰度发布

我们上线 Managed Agents 时,拒绝了“全量切换”。采用三层灰度:

  1. Canary Group (0.1%) :只对内部员工开放,监控 FAILED 率和 time-to-first-token 。目标:p95 < 1.2s,FAILURE < 2%。这一层暴露了 YAML 中 max_session_duration 设为 30m 太短,销售线索分析常需 45 分钟,导致大量 TIMEOUT
  2. Beta Group (5%) :对 VIP 客户开放,增加 session_replay 功能(允许运营人员用 session_id 重放整个流程)。目标:replay 成功率 100%, PAUSED 率 < 10%。这一层发现 PAUSED 后 resume,模型有时会重复调用上一个 tool,原因是 event log 的 sequence_id 在 pause/resume 时未严格单调。
  3. General Availability (100%) :全量,但开启 auto_fallback guardrail:当 Claude 失败时,自动降级到 GPT-4-turbo(通过 Bedrock 调用)。目标:整体 SUCCESS 率 > 95%,fallback 率 < 3%。

灰度期间,我们每天生成一份《Session Health Report》,包含 top 3 failure reasons、top 3 slowest tools、top 3 most called tools。这份报告直接驱动产品迭代:根据报告,我们把 enrich_company 的缓存 TTL 从 1h 提升到 24h,因为 83% 的公司信息 24 小时内不变;把 check_engagement 的超时从 15s 降到 8s,因为 92% 的 Mailchimp 请求在 8s 内返回。

3.7 迁移路径:如何把现有 LangChain agent 无痛接入

如果你已经在用 LangChain,迁移不是重写,而是“分层替换”。我们帮客户做的迁移路径如下:

  1. 保留 LangChain 的 Orchestrator 层 AgentExecutor AgentToolkit PromptTemplate 全部不动。LangChain 的强大在于抽象,不是 runtime。
  2. 替换 Executor 的 Runtime :把原来的 LLMChain 执行器,换成调用 Anthropic Managed Agents 的 client。我们封装了一个 AnthropicManagedAgentExecutor 类,它接收 LangChain 的 Runnable ,将其转换为 YAML,调用 create_session() ,然后轮询 get_session_state() 直到完成。
  3. 工具适配器 :LangChain 的 Tool 类需要包装成 Anthropic 的 tool 。我们写了一个 LangChainToolAdapter ,自动把 Tool.func 的 docstring 转成 description ,把 Tool.args_schema 转成 input_schema
  4. State 迁移 :LangChain 的 memory (如 ConversationBufferMemory )不再需要,因为 session state 由 event log 管理。我们只保留 memory 用于前端展示(如聊天记录),后端 state 完全交给 Anthropic。

整个迁移,核心代码修改 < 200 行。最大的挑战是调试:LangChain 的 verbose=True 输出很详细,而 Managed Agents 的 debug 信息在 Anthropic 控制台。我们的解法是,在 adapter 里加一层 debug_log ,把每次 execute() 的 input/output、耗时、status 全部打到自己的日志系统,和 LangChain 日志对齐。这样,开发时看自己的日志,生产时看 Anthropic 控制台,无缝切换。

4. 竞争格局与避坑指南:为什么现在入场 runtime 是危险的

4.1 Hyperscaler 的碾压式优势:不是技术差,而是生态位错配

AWS AgentCore GA 已 5 个月,这不是“竞品刚起步”,而是“基础设施已就绪”。我们做了横向对比,发现 hyperscaler 的优势不在技术参数,而在三个维度:

维度 Anthropic Managed Agents AWS AgentCore Google Vertex AI Agent Builder 微观影响
部署速度 需注册 Anthropic 账户,配 IAM role,等审核 aws bedrock create-agent 一行命令,5 秒创建 gcloud vertexai agents create ,需先启 Cloud Build 新项目启动,AWS 快 3 天
网络延迟 全球 12 个 region,但 tool call 出云需走公网 tool call 默认 VPC 内网调用,latency < 5ms 同区域 tool call 用 Private Google Access,< 8ms 高频工具调用,AWS 降低 40% p95 延迟
成本可见性 $0.08/session-hour + tokens + tools session-hour 免费,只收 tokens + tools + storage 同 AWS,且 tokens 有 volume discount CFO 审批时,AWS 方案总成本低 22%

最致命的是 “采购卡绑定” 。客户在 AWS 上已有 $200 万/年云支出,AgentCore 的免费 session-hour 是“沉没成本的延伸”,而 Anthropic 的 $0.08 是“新增预算项”。我们有个客户,采购流程要求所有 SaaS 服务必须有年度合同,Anthropic 要签 $15 万/年最低消费,AWS 只需在现有合同里加一行“同意使用 AgentCore”。这就是现实。技术上 Anthropic 的 session-as-event-log 更优雅,但商业上,客户选的不是“更优雅”,而是“更省事”。

4.2 开源压力曲线:Daytona 和 Kubernetes SIG 的真实威胁

有人说“开源慢”,那是没盯紧 2025 年的 AI infra 圈。Daytona 的转折点是 2025 年初的 pivot:它放弃做 dev environment,all-in agent sandbox。我们实测过 Daytona v0.8:

  • sandbox spin-up: 87ms (p95)
  • concurrent sessions per node: 1200 (vs Anthropic 的 ~800)
  • tool isolation: Linux user namespaces + seccomp-bpf,比 Docker 更轻

但它缺的不是性能,是 “企业级就绪” :没有 credential vault 集成、没有 policy engine、没有 multi-tenancy RBAC。Kubernetes SIG 的 agent-sandbox 项目更激进,直接把 sandbox 定义为 CRD(Custom Resource Definition), kubectl apply -f agent-sandbox.yaml 就能起一个 sandbox。但它的 operator 还在 alpha,不支持 auto-scaling。这些项目的真实威胁,不是今天就能替代 Anthropic,而是 “18 个月内,它们会把 runtime 的核心能力(sandbox, event log, harness)变成 Kubernetes 的一个插件,就像 Istio 之于 service mesh” 。那时,runtime 就像容器运行时一样,是云平台的默认组件,不再需要单独采购。我们建议客户:如果必须自建,不要从零造轮子,直接基于 Daytona 做二次开发,聚焦在 vault 集成和 policy engine 上——这才是未来 3 年还有壁垒的地方。

4.3 垂直市场才是护城河:Salesforce Agentforce 的启示

Salesforce Agentforce ARR 达 $800M,这不是因为它的 runtime 多牛,而是因为它卖的是 “销售线索转化率提升 37%” 的结果。它的 agent 不是通用工具调用,而是嵌入 Sales Cloud 的每一个角落:当销售在 Opportunity 页面点击“生成跟进邮件”,agent 实时拉取客户最近 3 个月的 support ticket、churn risk score、竞品新闻,生成个性化邮件草稿。这背后是 29,000 个客户共同训练的垂直知识图谱。我们拆解过它的 agent YAML,发现 70% 的 tools 是 Salesforce 内部 API,如 get_account_health_score list_recent_churn_risk_factors 。这些,才是 Anthropic 永远不会提供的。所以,如果你在创业,别问“我的 runtime 比 AWS 快多少”,而要问:“我的 agent 能让保险理赔员每天多处理 5 个案件吗?”“能让 HR 在 2 分钟内完成 100 份简历的初筛吗?” 答案是 yes,你就有了定价权;答案是 no,你就在卖 commodity。

4.4 实操避坑清单:我们踩过的 7 个深坑

  1. 坑:过度优化 harness 启动时间

    我们曾花 3 周把 harness 冷启动从 1.2s 优化到 380ms,结果 AWS AgentCore 发布,microVM 启动 210ms。教训:harness 启动时间不是瓶颈,tool call 延迟才是。把精力放在 CDN 缓存工具结果上。

  2. 坑:在 YAML 里写复杂逻辑

    有人把 if-else 写进 system_prompt :“如果行业是金融,调用 risk_assess_tool,否则调用 standard_assess_tool”。模型会混淆。正确做法:用 guardrail 的 tool_call_limit + output_format 强制模型只输出 tool name,harness 根据输出路由。

  3. 坑:忽略 event log 的 GDPR 合规

    log 里有用户邮箱、电话,必须加密存储。我们用 AWS KMS 的 envelope encryption,log 写入前用 data key 加密,data key 用 CMK 加密后存 DynamoDB。不这样做,欧盟客户直接否决。

  4. 坑:把 credential vault 当万能钥匙

    有些工具(如数据库连接)需要 long-lived credentials。vault 只能发 short-lived token。解决方案:vault 生成 token 后,harness 用它登录数据库,再用数据库自身的 role-based auth 控制权限。

  5. 坑:认为 sandbox = 安全

    我们一个 sandbox 被攻破,原因是工具代码里有 os.system("curl " + user_input) 。sandbox 阻止不了这种代码。必须用 static analysis 扫描所有工具代码,禁止危险函数。

  6. 坑:用 session_id 做用户标识

    session_id 是随机 UUID,无法关联到真实用户。必须在 create_session() 时传 user_id ,并存入 event log 的 metadata 字段,否则审计时无法追溯。

  7. 坑:忽略模型版本漂移

    Anthropic 升级 Claude 模型, system_prompt 行为可能变。我们建立 model version gate:每个 agent YAML 指定 model_version: "claude-3-5-sonnet-20241022" ,harness 检查不匹配则拒绝启动。

5. 价值迁移地图:当 runtime 归零,钱流向哪里

5.1 Trace Store:不是日志平台,而是法律证据链

当 runtime 成为免费云服务,trace store 就成了唯一能证明“agent 干了什么”的地方。我们给某银行做的风控 agent,trace log 必须满足:

  • 不可篡改 :log 写入后,用区块链 hash 链存证(不是上链,是本地 Merkle tree + root hash 上链)。
  • 可验证 :监管检查时,能提供 session_id 的完整 event log,并附上每条 log 的 cryptographic proof(证明它未被修改)。
  • 可溯源 :每条 log 关联到具体用户、具体操作员、具体时间(精确到纳秒)。

Braintrust 的 Brainstore 之所以能融 $36M,是因为它把 OLAP 做到了极致: SELECT COUNT(*) FROM traces WHERE tool_name = 'credit_check' AND result_status = 'REJECTED' AND timestamp > NOW() - INTERVAL '7 days' ,响应时间 < 200ms。而 Arize 的 Phoenix 开源版,胜在和 LangChain、LlamaIndex 的深度集成, langchain.trace 直接导出为 Phoenix 格式。我们建议: 不要自建 trace store,选一个开源方案(Phoenix 或 LangSmith),但必须自己实现 cryptographic proof layer。 这是合规刚需,不是可选项。

5.2 Governance & Policy:从“技术开关”到“采购审批项”

AWS AgentCore 的 policy controls GA,意味着企业采购部门终于能问出那个问题:“这个 agent 被允许做什么?” 我们帮客户设计的 policy framework 有三层:

  • Infrastructure Policy (云厂商提供):限制 tool call 的 destination IP、HTTP method、body size。
  • Business Policy (客户自定义):如“sales agent 不得调用 finance_api”,“HR agent 不得访问 salary_table”。
  • Compliance Policy (法规驱动):如“GDPR agent 不得将 EU 用户数据传至 US region”。

Policy 不是 YAML 里写几行规则,而是要变成 CI/CD 流水线的一环。我们用 Open Policy Agent(OPA)做 policy engine,每个 agent YAML 提

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐