AI Agent Runtime 三层架构:Session、Harness 与 Sandbox 的工程本质
1. 这不是新赛道,是 runtime 层的“临终告别式”
上周二(4月8日,2026年),Anthropic 推出了 Claude Managed Agents 的公开测试版。新闻稿里写得漂亮:十倍提速、Notion 和 Asana 已接入、沙箱执行、会话快照、凭证由平台托管——听起来像给开发者发了一把金钥匙。技术博客里更进一步,用操作系统作类比:把 session 拆成持久化事件日志,harness 做成无状态执行器,sandbox 当作可批量调度的 cattle 而非需要精心喂养的 pets。实测数据也扎实:p50 首 token 延迟下降约 60%,p95 稳定性优于 90%。这些都不是假话,但它们不是重点。
重点在于: 这不是一次开创性发布,而是一次精准的防御性卡位 。真正值得你花三分钟读完这篇文章的原因,不是“Anthropic 又做了什么”,而是“为什么它必须现在做,以及它做完之后,你手里的项目、你正在选型的技术栈、你团队明年要招的工程师角色,全都要重新评估”。
我去年带一个金融合规问答 Agent 项目,全程用自建 runtime + LangChain + 自研状态管理。当时没想太多,觉得 context window 够大(32K),工具调用链不长,应该稳。结果第四轮多跳检索+文档解析+规则校验后,第42分钟,context 溢出。模型没报错,没抛异常,只是悄悄把最早调用的 SEC 文件解析结果从上下文里抹掉,然后基于残缺信息开始编造监管条款引用。我们直到客户反馈“引用的 CFR 条款编号根本不存在”才意识到问题。回溯?没有 event log;重放?session state 全在 prompt 里,早被截断了;修复?只能人工翻日志拼凑,耗时 6 小时。这件事让我刻进骨头里的教训是: 把 state 存在 context 里,等于把银行金库钥匙焊死在 ATM 机壳上——表面坚固,实则一锤就开 。
Anthropic 的 session-as-event-log,就是把那把钥匙取出来,放进带生物识别和审计日志的保险柜。这不是炫技,是生产环境里活下来的开发者用血换来的共识。但问题来了:这个共识,AWS 在 2025 年底就用 Bedrock AgentCore 实现了,Google Vertex AI Agent Builder 在 2026 年 1 月完成 GA,Azure AI Foundry 更早把 AutoGen 和 Semantic Kernel 深度集成进去。换句话说,当 Anthropic 在 4 月按下发布键时,市场已经跑通了三条成熟路径,且全部免费或按云资源计费(即“已采购即可用”)。所以,Managed Agents 的真实定位,不是定义新标准,而是防止自己的核心资产——Claude 模型的 token 消费——被迁移到别人的 runtime 上。这就像当年微软推 .NET Framework,表面是统一开发体验,底层逻辑是把开发者锁在 Windows 生态里。Anthropic 不卖服务器,它卖推理能力;runtime 不是它的护城河,而是它的分销渠道。渠道本身,从来就不是高毛利业务。
你可能会说:“那我用 Anthropic 的,至少能优先拿到新模型、新功能。”没错,但你要算一笔账:AWS AgentCore 支持任意 Bedrock 模型,包括 Claude Sonnet/Haiku/Opus,也支持 Llama 3、Command R+、Gemma 2。你今天用 Claude Opus 跑 agent,明天发现某个金融计算任务用 Command R+ + 特定 toolchain 效果更好,切换成本为零。而如果你深度绑定 Managed Agents 的 YAML 配置体系、其 sandbox 生命周期管理 API、其 credential vault 集成方式,再想切出去,就得重写状态同步层、重配权限策略、重构 trace 上报逻辑——这已经不是 API 替换,是架构级迁移。所以, Managed Agents 的价值不在技术先进性,而在降低短期迁移摩擦;它的风险也不在性能不足,而在长期形成隐性绑定 。这才是所有技术决策者必须看清的第一层。
2. 架构解剖:三层分离不是口号,是生存必需
Anthropic 宣称的“三层分离”——Session(状态层)、Harness(执行层)、Sandbox(隔离层)——听上去像教科书概念。但当你真在凌晨三点排查一个因 credential 泄露导致的支付失败事故时,你会明白,这三层不是设计选择,而是工程底线。下面我逐层拆解,不讲虚的,只说每层在真实生产中解决什么具体问题、为什么必须这样设计、以及你抄作业时最容易踩的坑。
2.1 Session 层:事件日志即真相,不是可选功能
Session 在 Managed Agents 里不是一个“会话 ID”,而是一个结构化的、可查询的、带时间戳和因果链的事件流。每次 tool call、每次模型输出、每次 guardrail 触发、每次错误重试,都作为一条独立事件写入持久化存储(Anthropic 未公开底层,但根据其 SLA 和审计要求,必然是跨 AZ 的强一致数据库,极大概率是 DynamoDB 或其定制变体)。关键点在于: 事件写入与模型推理解耦,且写入成功是响应返回的必要条件 。这意味着,即使 harness 进程崩溃、网络中断、甚至整个可用区宕机,只要事件已落盘,session 就可恢复。
这解决了我去年那个项目最痛的点:context 溢出后无法回溯。现在,你可以用 GET /sessions/{id}/events?from=2026-04-08T14:22:00Z&to=2026-04-08T14:25:00Z 精确拉取那三分钟内所有动作,看到模型在第 14:23:17 调用了 extract_financial_data 工具,输入是 PDF 第 12 页,输出是 JSON 数组;接着在 14:24:03,它调用 validate_regulation ,输入是上一步 JSON,但此时事件日志显示该工具返回了 {"error": "SEC rule 17a-4 not found in local cache"} —— 这个错误在旧架构里会被 prompt 截断,现在却成为可定位的根因。
提示:不要把 session event 当作 debug 日志来用。它是你的系统唯一真相源(source of truth)。所有监控告警、合规审计、客户投诉溯源,都必须基于此。我见过团队把 event 写入 Elasticsearch 做实时分析,结果因索引延迟导致告警滞后 8 秒,最终错过黄金处置窗口。正确做法是:event 写入主存(如 DynamoDB)后,通过 Kinesis Data Streams 异步分发到分析系统,主路径永远以主存为准。
2.2 Harness 层:无状态不是理想,是强制约束
Harness 是真正执行 execute(name, input) → string 的组件。它的“无状态”有两重硬性含义:第一,它不持有任何 session 数据,所有输入必须通过参数传入;第二,它不维护任何运行时内存缓存,每次调用都是全新进程或容器实例。Anthropic 用 container(极可能是 Firecracker microVM)实现这一点,而非传统 Docker,因为 microVM 提供更强的 CPU/内存隔离,启动更快(<100ms),且资源计量粒度更细。
为什么必须如此?举个真实案例:某电商客服 agent 使用自建 harness,为提升性能,工程师在内存里缓存了用户最近三次订单详情。上线后,高峰期出现诡异问题——用户 A 的订单 B 被错误关联到用户 C 的会话里,导致客服机器人向 C 推送了 A 的退货链接。根因是 harness 进程复用,缓存未按 session 隔离。在 Managed Agents 里,这种 bug 根本不可能发生,因为每次 execute 调用都启动一个全新 microVM,输入参数里明确包含 session_id 和 user_id ,输出也仅返回字符串结果,无任何副作用。
注意:Harness 的“无状态”对开发者是福音,对运维是挑战。你需要确保所有依赖(如 config、schema)都通过 immutable image 打包,而非运行时注入。我建议:用 AWS ECR 或 GCP Artifact Registry 存储 harness 镜像,tag 严格遵循
v{major}.{minor}.{patch}-{git-sha},每次部署必须指定完整 tag,禁用latest。曾有团队因误用latest,导致灰度发布时部分实例加载了未测试的 harness 版本,引发工具调用超时连锁故障。
2.3 Sandbox 层:凭证隔离是红线,不是最佳实践
这是最常被低估的一层。Managed Agents 的 sandbox 不是简单地 docker run --rm -e API_KEY=xxx 。它的 credential vault 是独立服务,sandbox 启动时,vault 生成一次性的、带 TTL(通常 5 分钟)和 scope 限制的临时凭证,通过 secure channel 注入 sandbox 内部的专用 socket 或文件描述符,且该凭证 绝不会出现在环境变量、进程参数或任何可被 ps aux 或 /proc/{pid}/environ 读取的位置 。sandbox 内的代码只能通过预定义的 SDK 方法(如 vault.get("payment_gateway") )获取凭证,且该方法在 sandbox 外部不可见。
这直接堵死了 LLM “越狱”式攻击。想象一下:一个 agent 被诱导执行 curl -X POST https://api.payment.com/charge -H "Authorization: Bearer ${API_KEY}" -d '{"amount":100}' 。如果 API_KEY 是环境变量,LLM 只需让模型输出 echo $API_KEY 就能窃取。而在 Managed Agents 里, $API_KEY 根本不存在, echo 命令只会输出空。真正的凭证只存在于 vault 的加密内存中,且只在调用 vault.get() 的瞬间解密并返回。
实操心得:别指望 sandbox 能防住所有事。它防的是“凭证泄露”,不是“逻辑错误”。我见过一个 agent 因 prompt 设计缺陷,持续调用
vault.get("db_admin")获取数据库 root 密码,然后用它执行DROP TABLE users;。sandbox 没错,vault 没错,错在 guardrail 没配置 SQL 注入检测。所以,credential isolation 必须搭配严格的 tool-level guardrail:每个 tool 调用前,必须验证输入参数是否符合白名单 schema,且对敏感操作(如DROP,DELETE,TRANSFER)强制 require human approval。这层逻辑,必须在 harness 层之外、tool 实现内部完成。
3. 实操落地:从 YAML 定义到生产上线的七步闭环
光看架构不够,你得知道怎么把它变成每天跑在生产环境里的东西。我以一个真实的“内部 IT 支持助手”项目为例,还原从零到上线的完整路径。这个 agent 需要:解析员工提交的 Jira ticket 描述,自动查询 Confluence 知识库匹配解决方案,若无匹配则创建新的 Zendesk 工单,并通知对应工程师。整个流程涉及 3 个外部系统、4 类敏感凭证、平均会话时长 12 分钟。以下是我在 Anthropic Managed Agents 上的真实部署步骤,每一步都附带参数选择依据和避坑指南。
3.1 第一步:定义 Agent YAML —— 系统提示不是作文,是接口契约
Managed Agents 支持 YAML 或自然语言定义 agent。我强烈推荐 YAML,因为它是机器可读、可版本控制、可 CI/CD 的。以下是我们 it-support-agent.yaml 的核心片段:
name: "IT-Support-Agent"
description: "Resolves common employee IT issues by searching knowledge base or escalating to Zendesk"
system_prompt: |
You are an IT support specialist at Acme Corp. Your role is to:
1. Parse the user's issue description (in Jira ticket format) and extract key entities: device_type (laptop/desktop/mobile), os_version, error_code, application_name.
2. Search Confluence for solutions matching these entities. Prioritize articles tagged 'solved' and updated < 90 days ago.
3. If a match is found with confidence > 0.85, return the solution steps verbatim.
4. If no match, or confidence < 0.85, create a Zendesk ticket with all extracted entities and full ticket description.
5. NEVER invent solutions. If unsure, escalate.
tools:
- name: "confluence_search"
description: "Search Confluence knowledge base for IT solutions. Returns top 3 matches with score."
input_schema:
type: "object"
properties:
query: {type: "string", description: "Search query using extracted entities"}
max_results: {type: "integer", default: 3}
credential_scope: "confluence_read"
- name: "zendesk_create_ticket"
description: "Create a new Zendesk support ticket with structured data."
input_schema:
type: "object"
properties:
subject: {type: "string"}
description: {type: "string"}
custom_fields:
type: "object"
properties:
device_type: {type: "string"}
os_version: {type: "string"}
error_code: {type: "string"}
credential_scope: "zendesk_write"
guardrails:
- name: "entity_extraction_validation"
type: "json_schema"
config:
schema: |
{
"type": "object",
"properties": {
"device_type": {"enum": ["laptop", "desktop", "mobile"]},
"os_version": {"pattern": "^(Windows|macOS|iOS|Android) [\\d.]+$"},
"error_code": {"type": "string", "minLength": 3}
},
"required": ["device_type", "os_version"]
}
关键点解析:
-
system_prompt不是自由发挥空间 :它必须精确描述 agent 的职责边界、决策逻辑、失败兜底行为。我们写明了“confidence > 0.85”才返回方案,否则必须 escalate,这直接决定了后续 tool 调用的触发条件。 -
input_schema是强约束 :confluence_search的query字段必须是字符串,max_results默认 3。这迫使前端(Jira webhook)在调用 agent 前,必须先做实体提取,保证输入质量。如果这里写{"type": "string"}而不加description,模型可能生成无效 query 如"fix my pc",导致搜索噪音。 -
credential_scope是最小权限 :confluence_read只允许 GET 请求,zendesk_write只允许 POST /tickets。这比在 sandbox 里塞一个全权限 API Key 安全百倍。
实操心得:YAML 的
description字段不是可选的。Anthropic 的模型会将其作为 tool 的“使用说明书”来理解。我们曾把zendesk_create_ticket的 description 写成 “Creates a ticket”,结果模型在需要更新 ticket 时,错误调用了这个 tool。改成 “Creates a NEW Zendesk ticket ONLY. Does NOT update existing tickets.” 后,问题消失。 description 是 model 的指令,不是给人看的注释 。
3.2 第二步:配置 Credential Vault —— 一次配置,永久安全
在 Anthropic 控制台的 “Security & Credentials” 页面,创建两个 vault entries:
| Vault Name | Scope | Value (Example) | Rotation Policy |
|---|---|---|---|
confluence-api-key |
confluence_read |
ckey_abc123... |
Manual (triggered by security team) |
zendesk-jwt-token |
zendesk_write |
eyJhbGciOi... |
Auto (every 7 days, via scheduled Lambda) |
关键配置项:
- Scope 绑定 :每个 vault entry 必须精确匹配 YAML 中
credential_scope。confluence_read≠confluence。 - Value 类型 :Confluence 用 API Key,Zendesk 用 JWT(因其支持细粒度权限)。避免使用 Basic Auth,因其密码易泄露。
- Rotation :JWT 自动轮转,API Key 手动轮转。手动轮转不意味着“不安全”,而是因为 Confluence API Key 一旦轮转,所有历史 ticket 的解决方案追溯会失效,需权衡。
注意:Vault entries 的名称(
confluence-api-key)在 YAML 中不可见,它只通过 scope 关联。因此,scope 名称必须全局唯一且语义清晰。我们禁止使用prod、dev等环境后缀,因为 agent 本身是环境无关的,凭证才是环境相关的。正确的做法是:confluence_read_prod和confluence_read_staging作为两个独立 scope。
3.3 第三步:部署与会话初始化 —— 会话不是请求,是生命周期
部署 agent 很简单: anthropic agents deploy --file it-support-agent.yaml 。但初始化会话(session)是关键。我们不通过 REST API 直接调用,而是用官方 SDK:
from anthropic import AnthropicAgents
client = AnthropicAgents(api_key="sk-ant-...")
# 创建会话,指定初始上下文(Jira ticket)
session = client.sessions.create(
agent_id="agnt_123...", # 从 deploy 命令返回
initial_context={
"jira_ticket_id": "IT-4567",
"jira_description": "Laptop (Windows 11 22H2) blue screens on boot with error code 0x0000007E.",
"submitter_email": "alice@acme.com"
}
)
# 启动会话,获取第一个响应
response = client.sessions.run(
session_id=session.id,
max_steps=10 # 防止无限循环
)
initial_context 是核心。它不是 prompt 的一部分,而是 session 的元数据,会随每个事件一起写入 event log。这让我们能在事后查询:“所有由 Jira ticket IT-4567 发起的会话,最终是否都创建了 Zendesk ticket?” 答案是 SELECT COUNT(*) FROM events WHERE session_id IN (SELECT id FROM sessions WHERE initial_context:jira_ticket_id = 'IT-4567') AND event_type = 'tool_call' AND tool_name = 'zendesk_create_ticket' 。
提示:
max_steps不是超时时间,而是最大 tool call 次数。我们的 agent 平均 3 步完成(search → validate → respond),设为 10 是为应对极端 case(如知识库匹配失败后需多轮澄清)。超过此值,session 会自动终止并标记为failed: max_steps_exceeded,这比让模型无限循环消耗 token 更可控。
3.4 第四步:事件日志消费 —— 从调试到商业智能
事件日志(Events)是 Managed Agents 的金矿。我们建立了一个三层消费管道:
- 实时告警层 :用 Amazon EventBridge 捕获
tool_call_failed事件,触发 Lambda 发 Slack 告警到 #it-ops-alerts 频道,包含session_id、tool_name、error_message。 - 分析层 :将所有
tool_call事件流式写入 Redshift,构建看板:各 tool 的成功率、平均延迟、top 10 失败原因。发现confluence_search在周一上午 9-10 点失败率飙升 40%,根因是 Confluence 搜索服务限流,于是我们加了指数退避重试。 - 商业层 :聚合
session_end事件,计算每个 Jira ticket 的平均 resolution time、首次响应时间、是否需人工介入。这些数据直接输入 IT 部门的 OKR:Q2 目标“将 L1 支持 ticket 的自动解决率从 65% 提升至 78%”。
实操心得:不要试图在应用层解析 event log。Anthropic 提供了
/sessions/{id}/eventsAPI,但它不适合高频查询。正确姿势是:在 session 创建时,指定一个webhook_url(如https://myapp.com/webhook/anthropic),Anthropic 会将每个事件以 POST 方式实时推送。我们用这个 webhook 触发上述三层处理,确保低延迟、高可靠。Webhook 的secret必须严格保管,用于验证请求来源,防止伪造事件。
3.5 第五步:Guardrail 配置 —— 规则不是越多越好,是恰到好处
Guardrail 是 Managed Agents 的隐形安全网。我们配置了三类:
| Guardrail Type | Configured For | Why It Matters | Real Incident Prevented |
|---|---|---|---|
| JSON Schema Validation | confluence_search input |
确保 query 不是模糊的 "help me",而是结构化实体 | 防止搜索 {"query": "why is my laptop slow?"} 返回 200+ 无关文章 |
| Output Safety Classifier | All model outputs | 检测是否生成恶意代码、PII、仇恨言论 | 拦截了一次模型试图生成 rm -rf / 的“解决方案” |
| Tool Call Rate Limiting | zendesk_create_ticket |
限制每 session 最多调用 1 次 | 防止因 prompt bug 导致一个 ticket 创建 50 个重复工单 |
关键原则: Guardrail 是最后一道防线,不是替代良好设计 。我们不依赖 output classifier 来阻止 PII 泄露,而是确保 confluence_search 的返回结果已脱敏(Confluence 插件自动移除邮箱/手机号),classifier 只做兜底。
注意:Rate limiting 的单位是 “per session”,不是 “per minute”。这意味着,即使一个恶意用户疯狂创建新 session,每个 session 仍受限制。这比全局限流更精准,也更难绕过。
3.6 第六步:监控与告警 —— 关注指标,而非日志行
我们监控的不是 “agent 是否在线”,而是业务健康度:
| Metric | Target | How We Measure | Why It Matters |
|---|---|---|---|
| Session Success Rate | ≥ 95% | COUNT(session_end WHERE status='success') / COUNT(session_start) |
衡量整体可靠性,低于 95% 触发 P1 告警 |
| Tool Call Success Rate (per tool) | ≥ 98% | Per-tool breakdown from event log | 定位薄弱环节,如 zendesk_create_ticket 若跌至 90%,说明 Zendesk API 不稳 |
| Avg. Time-to-First-Token (TTFT) | ≤ 1.2s | From session_run request to first stream chunk |
直接影响用户体验,>1.5s 用户会放弃等待 |
| Credential Vault Hit Rate | 100% | COUNT(vault_get_success) / COUNT(tool_call) |
确保 sandbox 总能获取凭证,<100% 意味着 scope 配置错误 |
所有指标通过 CloudWatch Metrics + Grafana 看板展示。告警规则基于 SLO:连续 5 分钟 Session Success Rate < 95% ,触发 PagerDuty。我们不监控 CPU 或内存,因为那是 Anthropic 的责任;我们只监控业务结果。
实操心得:TTFT 的监控必须区分 “cold start” 和 “warm start”。Cold start(首次调用)通常 2-3s,warm start(microVM 复用)应 ≤ 1.2s。我们在 Grafana 里用
histogram_quantile(0.5, sum(rate(anthropic_ttft_seconds_bucket[1h])) by (le, cold_start))分别绘制两条曲线。这样,当 warm TTFT 突然升高,我们知道是 Anthropic 的问题;当 cold TTFT 升高,可能是我们镜像太大(>500MB),需要优化。
3.7 第七步:灰度发布与回滚 —— 每次变更都是生产事件
Managed Agents 支持 version 和 alias 。我们流程如下:
- 开发新 feature(如增加 Slack 通知),更新 YAML,
anthropic agents deploy --file it-support-agent-v2.yaml --version v2.1.0 - 创建 alias
staging指向v2.1.0 - 将 5% 的 Jira webhook 流量路由到
stagingalias(通过 API Gateway 的 weighted routing) - 监控 staging 的所有指标 24 小时,确认无异常
- 将
productionalias 切换到v2.1.0 - 保留
v2.0.0至少 30 天,以便紧急回滚
回滚命令极其简单: anthropic agents alias set --alias production --version v2.0.0 。整个过程 < 30 秒,无需重启任何服务。
提示:Alias 不是标签,是路由指针。
productionalias 指向哪个 version,所有发往production的请求就用哪个。这比修改 DNS 或负载均衡器更原子、更快速。我们严禁直接在 production alias 上 deploy,所有变更必须经 staging 验证。
4. 竞争格局与未来演进:为什么 runtime 层注定归零
现在,让我们把镜头拉远,不再盯着 Anthropic 的 YAML 和 event log,而是看整个 AI infra 地图。Managed Agents 的发布,不是孤例,而是 runtime 层加速 commoditization 的一个标志性事件。理解这个趋势,比学会怎么写 YAML 更重要,因为它决定了你未来三年技术选型的方向。
4.1 三巨头已布好局:AWS、Google、Azure 的“免费即服务”策略
Anthropic 的 Managed Agents 定价是 $0.08/session-hour ,外加 Claude token 费用。这看起来合理,但对比 hyperscaler 的策略,就显得像在收“过路费”。AWS Bedrock AgentCore 的定价模型是: 你已经在用 EC2、Lambda、RDS,AgentCore 就是这些资源的自然延伸,不单独收费 。你为 microVM 付的每一分钱,都计入 EC2 账单;你为 event log 存储付的钱,计入 S3;你为 trace 分析付的钱,计入 OpenSearch。对客户而言,这不是新增成本,而是现有云支出的“功能解锁”。
Google Vertex AI Agent Builder 更激进:它把 Agent Runtime 作为 Vertex AI 的一个免费 tier。只要你开通 Vertex AI,就能用 Agent Builder,且前 100 万次 tool call 免费。它的底层是 Google 的 gVisor sandbox,启动时间 < 50ms,比 Anthropic 的 Firecracker 还快。Azure AI Foundry 则走深度集成路线:AutoGen 的 GroupChatManager 可直接部署为 Foundry 的 managed agent,无需改一行代码,且自动继承 Azure AD 的 RBAC 和 Purview 的数据分类。
表格:主流 Managed Agent Runtime 对比(截至 2026 年 4 月)
| Feature | Anthropic Managed Agents | AWS Bedrock AgentCore | Google Vertex AI Agent Builder | Azure AI Foundry |
|---|---|---|---|---|
| Pricing Model | $0.08/session-hour + tokens | Bundled with EC2/Lambda/S3 costs | Free tier (1M calls/mo) + usage-based | Bundled with Azure consumption |
| Max Session Duration | 24 hours | 8 hours | 12 hours | 24 hours |
| Sandbox Tech | Firecracker microVM | Firecracker microVM | gVisor | Hyper-V Isolation |
| Tool Call Latency (p95) | < 1.8s | < 1.5s | < 1.2s | < 1.6s |
| Credential Isolation | Vault + scoped temp tokens | IAM Roles + temporary STS tokens | Workload Identity Federation | Azure AD Managed Identities |
| Open Source Alternative | None (proprietary) | None (proprietary) | None (proprietary) | None (proprietary) |
| Key Strength | Tight Claude integration, best-in-class event log UX | Deep AWS ecosystem, policy controls GA | Blazing speed, seamless Vertex AI integration | Microsoft stack lock-in (Teams, Outlook, Power Platform) |
这张表揭示了一个残酷现实: 在纯 runtime 功能上,hyperscaler 已全面领先或持平;Anthropic 的唯一差异化,是“Claude 优先”和“开箱即用的 event log 查询界面” 。但这两个优势,正被快速侵蚀。AWS 在 3 月发布的 AgentCore Policy Controls GA 版本,加入了 event log 的 SQL 查询引擎;Vertex AI 的 April 更新,增加了 claude-3.5-opus 的一键部署模板。所以,Managed Agents 的护城河,正在以肉眼可见的速度变窄。
4.2 开源压力已形成:Daytona、K8s SIG、Deer-flow 的三重夹击
如果说 hyperscaler 是“免费即服务”,开源社区就是“免费即代码”。2025 年底至今,三个项目正重塑 runtime 的技术基线:
-
Daytona :原为 dev environment startup,2025 年初 pivot 到 AI agent infra。其核心是
daytona-sandbox,一个用 Rust 编写的轻量级 sandbox runtime,启动时间 < 90ms(实测 87ms),资源占用仅为 Firecracker 的 1/3。它不提供托管服务,只提供可嵌入的 library 和 CLI。这意味着,LangChain、LlamaIndex 的用户,可以pip install daytona-sandbox,然后在自己的 Kubernetes 集群里,用 3 行代码启动一个 sandbox:from daytona import Sandbox; sb = Sandbox(tool="confluence_search"); result = sb.execute(input)。 Daytona 的威胁不在于它多快,而在于它让 runtime 彻底去中心化,任何人都能拥有自己的“微型 AgentCore” 。 -
Kubernetes SIG Agent-Sandbox :2026 年 3 月,K8s 官方 SIG-AI 正式发布
k8s-agent-sandbox项目。它不是一个新 runtime,而是一套 CRD(Custom Resource Definitions)和 Operator,让你用kubectl apply -f agent-sandbox.yaml就能在现有 K8s 集群上部署一个符合 OCI 标准的 sandbox。它默认集成 Pod Security Policies、NetworkPolicies、and OPA/Gatekeeper,天生满足企业安全合规要求。这意味着,一个有 K8s 运维能力的团队,无需学习新平台,就能获得与 AgentCore 同等的 sandbox 能力。 -
Deer-flow :ByteDance 开源的 long-horizon agent harness,GitHub Star 59,000+。它不主打速度,而主打“规划-执行-反思”的闭环。
deer-flow的PlanExecutor可以将一个复杂目标(如“分析 Q1 销售数据并生成 PPT”)自动分解为 12 个子任务,每个子任务在一个独立 sandbox 中执行,并将结果汇总到中央 planner。它内置了 subagent 机制,一个 subagent 可以调用另一个 subagent,形成树状执行图。 Deer-flow 的意义在于,它证明了 runtime 不再是简单的 request-response,而是可编程的 workflow orchestrator 。
提示:这三个项目有一个共同点:它们都不绑定特定模型。Daytona 支持任何 HuggingFace 模型;K8s SIG 通过
model-serverCRD 抽象模型;Deer-flow 的planner可配置为 Claude、Llama 或本地模型。这彻底打破了 “runtime 为模型服务” 的旧范式,转向 “模型为 runtime 服务” 的新范式。你的技术选型,必须考虑这种解耦。
4.3 价值上移:Trace Store、Governance、Vertical Marketplaces 的崛起
当 runtime 层被压向零,价值必然向上迁移。这不是预测,而是正在发生的事实。我梳理了三个已形成明确赢家的上层领域:
4.3.1 Trace Store:谁掌握 event log,谁就掌握真相
Event log 不再是 debug 工具,而是企业的“AI 行为总账本”。三家公司在争夺这个位置:
- Braintrust / Brainstore :专为 AI logs 设计的 OLAP 数据库,支持亚秒级查询百亿级事件。其核心创新是
log2sql:你输入自然语言 “show me all sessions where confluence_search returned < 0.7 confidence”,它自动生成高效 SQL。他们用 36M Series A 买下了这个专利技术。 - Arize / Phoenix :开源 Apache 2.0 的 Phoenix 项目,已成为事实标准。它不卖数据库,卖的是 “observability layer”。你把 event log 推给 Phoenix,它自动做 anomaly detection、root cause analysis、and drift monitoring。其商业版提供 “compliance export”,一键生成 SOC2 审计报告。
- LangSmith :LangChain 的亲儿子,预装在每个
pip install langchain里。它胜在 “零配置”,但代价是 vendor lock-in。你用 LangChain,就天然用 LangSmith;想换,就得重写所有 tracing 代码。
关键洞察:Trace portability 是生死线。AWS AgentCore 的 event log 只能导出为 S3 CSV;Anthropic 的 event log 只能通过其 API 查询。而 Phoenix 支持从任何 source(包括 Anthropic、AgentCore、自建系统)摄入数据,统一 schema。 下一个十年,不是谁的 runtime 最快,而是谁的 trace store 能让你在 runtime 迁移后,依然能回答“过去三年所有 ticket 的解决率趋势” 。
4.3.2 Governance & Policy:从技术问题到采购议题
当 agent 能调用支付 API、访问 HR 数据库、生成法律合同,它就不再是“玩具”,而是“数字员工”。企业采购部门的问题来了:“这个 agent 被允许做什么?谁批准的?审计证据在哪?” AWS 在 3 月 GA 的 AgentCore Policy Controls,就是对这个问题的回应。它允许你用 YAML 定义 policy:
policy:
name: "finance-agent-policy"
rules:
- effect: "deny"
action: "tool_call"
resource: "payment_gateway"
condition: "request.context.user_role != 'finance_admin'"
- effect: "allow"
action: "tool_call"
resource: "confluence_read"
OWASP Agentic Top 10 的发布,更是将这个问题标准化。Top 10 里的 #1 “LLM01: Prompt Injection”、
更多推荐


所有评论(0)