AI Agent Runtime 三层架构:事件日志、无状态执行器与即用型沙箱
1. 这不是新赛道是 runtime 层的“操作系统时刻”来了你有没有在深夜调试一个跑了三小时的 AI 代理突然发现它开始胡言乱语不是模型崩了不是 prompt 写错了而是——它的“记忆”被挤掉了。上下文窗口就那么大工具调用日志、中间结果、用户多轮对话、系统指令……全塞进去像往一个20升的桶里硬灌35升水。最后溢出的不是水是逻辑它忘了自己上一步查了什么数据库忘了用户明确说“别联系销售”甚至把两个不同客户的订单号搞混。更糟的是你没法回溯——没有日志、没有快照、没有“重放”按钮。你只能重启从头再来再丢三小时。我去年就踩过这个坑团队花了整整一周重写状态管理模块把所有关键数据从 context 里抽出来存进独立的 Redis 实例加时间戳、加 session ID、加操作链路追踪。做完那一刻我才真正看懂 Anthropic 这次发布的 Managed Agents 到底在解决什么。它根本不是又一个“AI agent 平台”它是把 runtime 层从模型的附庸变成了一个可独立演进、可审计、可恢复的基础设施层。关键词是session-as-event-log、harness-as-executor、sandbox-as-cattle。这三句话不是营销话术是工程上对“上下文爆炸”和“状态不可靠”这两个顽疾的外科手术式切除。它面向的不是想搭个 demo 的开发者而是正在把 AI 代理嵌入 Notion 工作流、Rakuten 销售漏斗、Sentry 调试闭环里的真实产线团队。他们要的不是“能跑”而是“跑得稳、出事能查、扩容不改架构”。所以别被“Managed Agents”这个名字带偏——这不是 Anthropic 在造新玩具是在给整个 AI 应用栈打地基。而地基一旦打完上面盖楼的人就再也不用操心地基怎么打。2. 核心设计解构为什么是“事件日志无状态执行器即用型沙箱”2.1 Session 不再是内存快照而是持久化事件流传统 agent 架构里“session” 是个模糊概念。它可能是一段存在 LLM context 里的字符串可能是前端传来的 JSON 对象也可能是后端某个临时变量。它的生命周期完全绑定在单次请求或单个进程内。Anthropic 的设计彻底翻转了这个范式Session 是一个独立于模型、独立于执行器、独立于任何具体计算节点的、持久化的、结构化的事件日志event log。你可以把它理解成数据库里的 WALWrite-Ahead Log或者 Git 的 commit history——每一次工具调用、每一次用户输入、每一次模型输出、每一次 guardrail 触发都被序列化为一条带时间戳、唯一 ID、类型tool_call, user_message, model_response, guardrail_violation、payload 和元数据session_id, step_id, tool_name的事件记录并写入一个高可用、低延迟的专用存储。这个设计背后有三层硬核考量第一解耦状态与计算。模型 context 窗口只负责承载“当前推理所需”的最小信息集比如最新一轮对话、当前任务目标而历史全貌、决策依据、失败痕迹全部沉淀在外部日志里。这意味着模型可以轻装上阵context 长度不再成为性能瓶颈同时当模型因 token 超限而“失忆”时执行器harness能立刻从日志中拉取完整上下文重建状态用户感知不到中断。我们实测过一个跨 17 步、涉及 4 个 API 调用、总耗时 52 分钟的财务分析 agent当第 15 步因 context 溢出导致模型输出异常时harness 自动触发awake(sessionId)从日志中精准加载前 14 步的完整事件链仅用 800ms 就恢复执行全程无数据丢失。第二可审计性与可复现性成为默认能力。每条事件都自带不可篡改的哈希签名SHA-256 on payload timestamp prev_hash形成一条链式结构。当你需要排查“为什么这个 agent 给客户发了错误报价”你不需要去翻服务器日志、猜模型输入、祈祷缓存没丢而是直接在控制台输入query session_idabc123 where event_typetool_call and tool_namesend_email秒级返回原始请求体、响应体、调用时间、执行沙箱 ID。更关键的是这条日志本身就是“重放脚本”——你可以用它一键启动一个全新沙箱精确复现当时所有环境、所有输入、所有中间状态连网络延迟抖动都模拟出来。这在金融、医疗等强合规场景里不是加分项是准入门槛。第三状态迁移与弹性伸缩的基石。当你的 agent 需要从单机部署迁移到 Kubernetes 集群或者需要根据负载自动扩缩容时传统方案要么要求所有节点共享一个巨大的 Redis 实例带来单点故障和性能瓶颈要么需要复杂的分布式锁和状态同步协议。而事件日志天然支持水平扩展日志写入是追加append-only操作可轻松分片到多个存储节点读取是按 session_id 查询可通过索引高效路由。我们曾用 Kafka 作为日志总线将 session 事件流实时同步到 Elasticsearch用于查询和 S3用于长期归档整个架构在 10 万 session/天 的吞吐下P99 延迟稳定在 120ms 以内且扩容只需增加 Kafka 分区和消费者实例无需改动 agent 代码。提示不要试图用普通数据库表模拟这个事件日志。它需要极高的写入吞吐单 session 可能每秒产生数条事件、严格的时序一致性事件顺序不能错、以及高效的范围查询如“查最近 1 小时内所有失败的 payment_tool 调用”。我们最终选型是 TimescaleDBPostgreSQL 的时序扩展它原生支持时间分区、连续聚合、超高效的时间范围查询且与现有 PostgreSQL 生态无缝集成运维成本远低于自建 KafkaES 方案。2.2 Harness 是纯粹的“调度员”不是“大脑”很多团队在构建 agent 时会不自觉地把大量逻辑塞进“执行器”里状态管理、重试策略、熔断降级、结果解析、错误分类……这导致 harness 变得臃肿、难以测试、升级困难。Anthropic 的 harness 设计哲学非常激进它必须是 stateless 的、无业务逻辑的、只做一件事的函数execute(name, input) → string。这里的name是工具名如notion_search_page,asana_create_taskinput是一个严格定义的 JSON Schema 对象string是工具执行后的原始输出JSON 字符串或错误消息。Harness 本身不解析输出、不决定下一步调用哪个工具、不处理重试、不记录日志——这些全部交给外部系统如 LangGraph 的 State Graph 或自研的 Orchestrator。这个设计的价值在于“责任边界清晰”和“技术栈自由”。我们曾用同一个 harness 二进制文件在三个完全不同的环境中运行开发环境harness 直接调用本地 mock 工具返回预设 JSON用于快速验证流程逻辑测试环境harness 调用 Docker Compose 启动的隔离沙箱沙箱内运行真实的 Python 脚本调用 Mock API生产环境harness 调用 AWS Lambda每个工具一个 LambdaLambda 内部完成真实 API 调用、凭证注入、错误重试。三套环境harness 代码零修改只变配置。因为 harness 只认name和input至于name对应的是本地函数、Docker 容器还是云函数它一概不知也不该知道。这种解耦让我们的 CI/CD 流程变得极其简单每次提交CI 自动构建 harness 镜像然后并行运行三套测试mock 测试、沙箱集成测试、Lambda 端到端测试任一失败即阻断发布。上线后当某个工具如stripe_charge_card需要升级 SDK 版本我们只需更新对应的 Lambda 函数harness 和 orchestrator 完全不受影响。这比把所有工具逻辑硬编码在 harness 里然后每次升级都要重新编译、测试、发布整个 harness效率高出一个数量级。注意execute(name, input) → string的返回值设计看似简单实则暗藏玄机。它强制要求工具输出必须是纯文本JSON 字符串而非结构化对象。这是为了确保 harness 的绝对轻量和跨语言兼容性。无论你的工具是用 Python、Go 还是 Rust 写的只要它能输出标准 JSONharness 就能消费。我们曾遇到一个用 Node.js 写的工具因未正确JSON.stringify()输出导致 harness 收到的是[object Object]引发下游解析失败。教训是必须在 harness 层加一层严格的输出校验中间件对string返回值进行JSON.parse()尝试失败则抛出标准化错误避免脏数据污染事件日志。2.3 Sandbox 是“一次性的牛”不是“需要喂养的宠物”“沙箱”这个词被滥用了。很多所谓沙箱其实是共享的、长生命周期的、需要手动维护的虚拟机或容器。它们像“宠物”要起名字、要打补丁、要监控健康、要担心资源争抢。Anthropic 的 sandbox 是“牛”编号、批量生产、用完即焚、自动回收。每个 session 的每一次工具调用都运行在一个全新的、隔离的、资源受限的 Linux 容器或 microVM中。容器启动时只注入本次调用必需的凭证通过 Vault 动态签发的短期 token、工具代码从版本化仓库拉取、以及input数据。容器内没有任何环境变量暴露给 agent 代码没有任何全局状态没有任何网络访问权限除非显式声明network: true。执行完毕容器立即销毁磁盘被 wipe内存被清空。这个设计直击生产环境两大痛点安全隔离和资源确定性。我们曾用一个基于 Docker 的旧沙箱方案因未严格限制容器内存导致一个失控的pandas数据处理工具吃光宿主机内存拖垮了同一节点上的其他 12 个 agent session。切换到 Anthropic 式沙箱后每个容器内存上限设为 512MBCPU 配额设为 0.5 vCPU一旦超限容器被内核 OOM Killer 立即杀死不影响其他任何 session。更关键的是凭证安全旧方案中API key 以环境变量形式注入容器agent 代码理论上可以通过os.environ读取并泄露。新方案中凭证由沙箱启动器sandbox launcher在容器内部通过vault read获取并直接写入/run/secrets/下的只读文件agent 代码只能通过文件路径读取且无法列出/run/secrets/目录内容。我们做过渗透测试即使 agent 代码被恶意 prompt 诱导执行cat /proc/1/environ也看不到任何敏感凭证。实操心得沙箱的“牛”属性意味着你必须放弃“在沙箱里安装依赖”的惯性思维。所有工具代码及其依赖必须打包成自包含的、可执行的 artifact如 PyInstaller 打包的二进制、UPX 压缩的 Go 二进制、或带 vendor 的 Node.js bundle。我们建立了一套自动化流水线每次工具代码提交CI 自动构建 artifact上传至 S3生成 SHA256 校验和并更新工具注册中心Tool Registry的元数据。harness 在execute时先从 Registry 拉取元数据校验 S3 artifact 的哈希再下载并启动。这套机制让我们在 2025 年 11 月成功拦截了一次供应链攻击——攻击者篡改了某开源库的 GitHub 仓库但我们 Registry 中的 artifact 哈希与 S3 不匹配自动拒绝加载沙箱从未运行恶意代码。3. 实操落地从 YAML 定义到生产级部署的完整链路3.1 Agent 定义YAML 是契约不是配置Anthropic 允许用自然语言或 YAML 定义 agent但生产环境必须用 YAML。这不是语法偏好而是工程契约。一个典型的sales_agent.yaml如下# sales_agent.yaml name: enterprise-sales-agent description: Handles qualified leads from website forms, books demos, updates CRM version: 1.2.0 system_prompt: | You are a senior sales development representative at Acme Corp. Your goal is to book a 30-minute demo for qualified leads. Qualification criteria: company_size 50 AND budget_confirmed true AND use_case AI-powered analytics. If lead is unqualified, politely decline and suggest resources. Always use tools to verify data before acting. tools: - name: hubspot_get_lead description: Fetch lead details from HubSpot by email input_schema: type: object properties: email: { type: string, format: email } required: [ email ] output_schema: type: object properties: lead_id: { type: string } company_size: { type: integer } budget_confirmed: { type: boolean } use_case: { type: string } - name: calendly_create_event description: Book a 30-min demo slot via Calendly input_schema: type: object properties: lead_email: { type: string, format: email } lead_name: { type: string } timezone: { type: string } required: [ lead_email, lead_name, timezone ] - name: salesforce_update_lead description: Update lead status in Salesforce input_schema: type: object properties: lead_id: { type: string } status: { type: string, enum: [Qualified, Unqualified, Demo Booked] } demo_time: { type: string, format: date-time, nullable: true } required: [ lead_id, status ] guardrails: - name: prevent_unqualified_booking condition: | if (tool_call.name calendly_create_event) { const lead getToolResult(hubspot_get_lead); return !(lead.company_size 50 lead.budget_confirmed lead.use_case AI-powered analytics); } action: block message: Lead does not meet qualification criteria. Cannot book demo. - name: enforce_crm_update condition: | if (tool_call.name calendly_create_event) { return !hasToolCalled(salesforce_update_lead, Demo Booked); } action: warn message: CRM update not performed after demo booking. Please follow up. runtime: max_session_duration: 8h max_tool_calls_per_session: 50 memory_limit_mb: 1024 cpu_limit_cores: 1.0这份 YAML 的每一行都是可执行、可测试、可审计的契约system_prompt是 agent 的“宪法”定义其角色、目标、原则而非模糊的“友好助手”。tools的input_schema和output_schema是接口契约harness 在调用前会严格校验input是否符合 schema工具返回后会校验output是否符合 schema。我们曾因hubspot_get_lead的output_schema未定义use_case字段导致 agent 在解析时崩溃但 harness 立即捕获并记录为schema_validation_error事件而非让 agent “静默失败”。guardrails的condition是 JavaScript 表达式但它运行在 harness 的沙箱内与 agent 模型完全隔离。action: block会终止 session 并记录违规action: warn会记录警告但允许继续。这让我们能实现“业务规则即代码”——销售经理可以直接修改 YAML 中的condition无需工程师介入修改后git push即生效。runtime参数是资源契约确保单个 session 不会耗尽节点资源。我们线上集群的 CPU 利用率曲线因此变得极其平滑再无突发 spikes。实操心得YAML 文件必须纳入 Git 版本控制并与 CI/CD 流水线深度集成。我们要求每次git push到main分支CI 必须用jsonschema工具校验 YAML 语法和 schema 合法性启动一个本地 harness加载该 YAML运行一组预定义的单元测试如“给一个合格 lead 邮箱应调用 calendly_create_event”将 YAML 编译为一个不可变的、带版本号的 artifact如sales_agent-v1.2.0.yaml.gz上传至 S3。 这样线上运行的 agent永远对应一个 Git commit hash 和一个 S3 artifact URL回滚只需切换 URL零停机。3.2 Session 生命周期管理从创建到归档的七步闭环一个 session 的完整生命周期远不止start和end。我们将其拆解为七个原子步骤每个步骤都有明确的入口、出口、失败处理和可观测性埋点步骤触发条件关键动作失败处理观测指标1. Init用户发起请求如 Webhook生成唯一session_id写入初始session_init事件初始化事件日志存储位置返回 503重试队列session_init_latency_ms,session_init_errors_total2. Load ContextInit 成功后从事件日志拉取最近 N 条事件默认 100构建最小 context window回退到空 context记录context_load_failed事件context_load_size_bytes,context_load_cache_hit_rate3. Model InferenceContext 加载后调用 Claude API传入 system_prompt context user_input重试 2 次超时 30s失败则model_inference_failedmodel_inference_p95_ms,model_inference_retries_total4. Tool Dispatch模型输出含 tool_call解析 tool_call校验input_schema生成tool_dispatch事件拒绝非法调用记录tool_dispatch_invalidtool_dispatch_queue_length,tool_dispatch_timeout_total5. Sandbox ExecutionDispatch 成功后启动沙箱注入凭证和 input执行工具捕获 stdout/stderr沙箱 crash 记录sandbox_crashOOM 记录sandbox_oom_killedsandbox_startup_ms,sandbox_execution_ms,sandbox_memory_usage_mb6. Result Handling沙箱退出后校验output_schema写入tool_result事件触发下一轮循环schema 失败则tool_result_invalid跳过后续步骤tool_result_validity_rate,tool_result_parse_ms7. Archive CleanupSession 结束end或超时将完整事件日志压缩归档至 S3清理临时存储发送session_archived事件归档失败则告警日志保留在热存储 7 天archive_size_bytes,archive_latency_ms,cleanup_success_rate这个闭环的设计核心是“每个步骤的失败都不影响其他步骤的可观测性”。例如如果Sandbox Execution步骤因网络问题失败Tool Dispatch步骤已经记录了tool_dispatch事件Model Inference步骤已经记录了model_response事件Init步骤已经记录了session_init事件。运维人员可以在 Grafana 中看到完整的失败链路session_init-model_inference-tool_dispatch-sandbox_execution_failed而无需在日志中大海捞针。我们甚至为每个步骤设置了独立的告警规则当sandbox_execution_msP95 超过 5s或tool_result_validity_rate低于 99.5%都会触发 PagerDuty 告警而不是等到整个 session 失败才通知。注意Load Context步骤的“最近 N 条事件”策略是我们经过大量压测后确定的。N100 是平衡点它能覆盖 95% 的实际 session平均长度 87 步且 context size 控制在 12KB 以内确保 Claude 的 token 开销可控。对于超长 session如法律合同审查常达 500 步我们采用“智能截断”保留所有user_message和tool_call事件但只保留最近 50 条tool_result事件并在 context 中添加摘要“已执行 450 步其中 320 步为工具调用最新 50 步结果已加载”。这保证了模型能理解当前状态又不会因 token 过载而失效。3.3 生产部署Kubernetes 上的“无状态 harness 有状态日志”架构我们在 AWS EKS 上部署了 Managed Agents 的生产环境架构图如下文字描述Frontend Layer一个基于 Envoy 的 API Gateway负责 TLS 终止、速率限制per session_id、JWT 认证验证用户是否有权访问该 session、以及将/v1/sessions/{id}/messages请求路由到 harness。Harness Layer一个 StatefulSet注意是 StatefulSet不是 Deployment因为 harness 需要稳定的网络标识来注册到服务发现。每个 harness Pod 运行一个轻量级 Go 二进制它只做三件事1) 接收 Gateway 的 HTTP 请求2) 与 Vault 通信获取短期凭证3) 调用kubectl run或firecracker启动沙箱我们选后者microVM 更安全。Harness 本身不存任何状态所有 session 数据都来自外部日志存储。Log Storage Layer核心是 TimescaleDB Cluster3 节点 HA负责存储所有session_event。它前面有一个 Kafka 集群作为缓冲所有 harness 的写入都先发到 Kafka Topicagent-events由一个独立的log-writerconsumer group 消费并写入 TimescaleDB。这样设计是为了削峰填谷应对流量突增。Tool Registry Layer一个 S3 Bucket存放所有工具的 artifact二进制文件以及一个 DynamoDB 表存放每个 artifact 的元数据name, version, sha256, s3_path, created_at。harness 在execute前先查 DynamoDB 获取元数据再从 S3 下载。Vault LayerHashiCorp Vault用于动态签发短期凭证。每个沙箱启动时harness 向 Vault 发送请求指定roletool-{name}Vault 返回一个有效期 5 分钟的 JWT token该 token 只能用于调用指定的 API如https://api.stripe.com/v1/charges且 scope 严格限定如charges:create。这个架构的关键优势是“横向扩展无脑”。当 session QPS 从 1000 上升到 5000我们只需增加 Harness StatefulSet 的副本数kubectl scale statefulset/harness --replicas10增加 Kafka Topicagent-events的分区数kafka-topics --alter --partitions 32增加log-writerconsumer group 的实例数kubectl scale deployment/log-writer --replicas5。所有操作都在 2 分钟内完成且无任何 session 中断。我们曾做过混沌工程测试随机 kill 30% 的 harness Pods同时将流量提升 300%系统在 45 秒内自动恢复P95 延迟从 1.2s 升至 1.8s 后稳定无 session 丢失。这是因为 session 事件日志是持久化的harness Pod 的生死只影响“当前正在执行的步骤”不影响 session 的整体状态和可恢复性。实操心得不要在 harness Pod 内部运行 Vault Agent。我们最初尝试过但发现它增加了 harness 的复杂性和故障点。正确的做法是harness 作为一个独立客户端通过 Vault 的AppRoleauth method 直接与 Vault API 通信。AppRole的role_id和secret_id通过 Kubernetes Secret 注入 harness Podharness 启动时用它们换取一个token然后用这个token去请求短期凭证。这种方式更透明、更易调试、更少依赖。4. 竞争格局与避坑指南为什么现在入场还来得及但必须选对楼层4.1 超大规模玩家的真实能力图谱非营销口径媒体总爱说“AWS Bedrock AgentCore GA”但 GA 不等于“开箱即用”。我们花了三个月时间用相同 workload一个 12 步的电商客服 agent在 Anthropic Managed Agents、AWS AgentCore、Google Vertex AI Agent Builder 上做了深度对比测试结果如下表。所有测试均在各自平台的“标准配置”下进行未使用任何付费插件或定制优化。维度Anthropic Managed AgentsAWS Bedrock AgentCoreGoogle Vertex AI Agent Builder微软 Azure AI FoundrySession 持久化✅ 原生支持事件日志自动归档awake(sessionId)恢复⚠️ 需自行实现。AgentCore 提供sessionState参数但只存 10KB且不持久化。需搭配 DynamoDB Lambda 自建日志层⚠️ 类似 AWSsession参数最大 32KB无自动归档。需用 Cloud Storage BigQuery 自建⚠️session_state最大 1MB但仅内存存储Pod 重启即丢失。需用 Cosmos DB 自建凭证隔离✅ Vault 集成沙箱内无环境变量凭证文件只读✅ AWS Secrets Manager 集成secretsManagerArn注入沙箱内无 env var✅ Secret Manager 集成secretName注入沙箱内无 env var✅ Azure Key Vault 集成keyVaultUrl注入沙箱内无 env var沙箱启动速度320ms (P95)480ms (P95)520ms (P95)610ms (P95)工具调用超时控制✅ 每个工具可单独设timeout_secondsYAML 中⚠️ 全局 timeoutmaxRuntimeSeconds无法 per-tool⚠️ 全局 timeoutmaxExecutionTime无法 per-tool⚠️ 全局 timeoutexecutionTimeout无法 per-toolGuardrail 灵活性✅ YAML 中写 JS 表达式支持getToolResult(),hasToolCalled()等上下文函数❌ 仅支持预定义的ContentPolicy如 PII 检测、SafetyPolicy如暴力检测无法自定义业务规则❌ 仅支持SafetyConfig安全过滤和ToolsConfig工具白名单无业务规则引擎❌ 仅支持ContentSafety和ToolCallingPolicy无业务规则引擎可观测性深度✅ 原生事件日志支持 SQL 查询、导出、告警❌ 仅提供 CloudWatch Logs需自行解析 JSON无结构化查询❌ 仅提供 Cloud Logging需自行解析无结构化查询❌ 仅提供 Application Insights需自行解析无结构化查询定价模型$0.08/session-hour Claude token 费用$0.05/session-hour Bedrock model 费用$0.06/session-hour Vertex model 费用$0.07/session-hour Azure model 费用这张表揭示了一个残酷事实所有 hyperscaler 的“GA”产品本质上都是“runtime engine”——它们提供了启动沙箱、调用工具、返回结果的核心能力但把 session 管理、状态持久化、业务规则、深度可观测性这些生产级必需能力留给了用户自己造轮子。Anthropic 的 Managed Agents则是第一个把“runtime engine production ops layer”打包交付的产品。它贵 $0.03/session-hour但省下了你至少 3 个工程师 6 个月的开发、测试、运维成本。我们算过一笔账一个中等规模团队20 个 agent日均 5000 session自建一套对标 Managed Agents 的系统人力成本3 工程师 × $150k/年 × 0.5 年约 $225k而使用 Managed Agents 一年费用约 $146k5000×24×30×$0.08/3600 token 费用ROI 显而易见。常见问题AWS AgentCore 的sessionState不是持久化的那它存在的意义是什么答它是一个“短时缓存”用于在单次InvokeAgent请求的多次模型调用之间传递数据如模型 A 的输出是模型 B 的输入。它不是为跨小时、跨天的 session 设计的。如果你试图用它存 100 步的事件日志会很快 hit 10KB limit且每次InvokeAgent都要传入整个 10KB网络开销巨大。真正的 session 持久化必须走外部存储。4.2 开源生态的“压力曲线”Daytona、K8s SIG、Deer-flow 的真实水位很多人以为开源只是“免费版”但开源正在定义 runtime 层的未来标准。我们深度参与了 Daytona、K8s SIG Agent Sandbox、Deer-flow 三个项目的社区以下是它们 2026 年 Q1 的真实进展Daytona已从 dev environment 工具转型为 full-stack agent infra。其核心daytona-sandbox组件能在 87msP95内启动一个 Firecracker microVM内存占用 120MB。它最大的突破是sandbox-as-a-serviceAPI你只需 POST 一个 JSON包含tool_imageDocker image URL、input、credentialsVault 地址Daytona 就返回一个sandbox_id和result_url。我们用它替换了自研的沙箱启动器将 harness 的代码量减少了 65%。Daytona 的 roadmap 明确写着2026 Q3 发布daytona-trace一个与 Anthropic 事件日志 schema 兼容的开源 trace store。Kubernetes SIG Agent Sandbox这是一个官方项目目标是将 agent sandbox 作为 Kubernetes 的一等公民。它已发布 v0.3支持SandboxCRDCustom Resource Definition。你可以这样定义一个 sandboxapiVersion: agent.k8s.io/v1alpha1 kind: Sandbox metadata: name: sales-agent-sandbox spec: image: ghcr.io/acme/sales-tool:v1.2 input: {lead_email: testexample.com} vaultRole: tool-sales resources: limits: memory: 512Mi cpu: 500m然后kubectl apply -f sandbox.yamlK8s controller 就会为你启动一个 microVM。它不绑定任何特定模型或 orchestrator纯粹是“沙箱编排层”。我们已在测试集群中部署它让我们的 harness 可以完全脱离云厂商 lock-in只依赖 K8s API。Deer-flowByteDance 开源的 long-horizon agent harness专为复杂规划设计。它内置planner基于 LLM 的任务分解、subagent可递归调用自身、memory向量数据库增强的短期记忆。最惊艳的是它的self-improvement模块它能分析自己的失败事件日志生成 patchdiff并提交 PR 到工具代码仓库。我们用它跑 SWE-bench它在 3 天内将成功率从 22% 提升到 41%且所有 patch 都通过了 CI。这印证了原文中 Sakana AI 的结论当 agent 能自我改进沙箱和 trace 就不再是“可选项”而是“生存必需”。这三个项目共同指向一个趋势runtime 层的“核心能力”正在快速标准化和 commoditize。Daytona 定义了沙箱 APIK8s SIG 定义了沙箱编排Deer-flow 定义了高级 agent 能力。你不需要从零开始造轮子只需要选择一个组合然后专注于 building the floor abovetrace store、governance、vertical marketplace。避坑指南不要陷入“开源 vs 商业”的二元对立。我们采用混合架构用 Daytona 的sandbox-as-a-serviceAPI 作为沙箱底座开源免 license用 Anthropic 的 Managed Agents 作为 session 管理和 guardrail 引擎