AI Agent 运行时重构:Session-as-Event-Log 与无状态执行引擎
1. 这不是新赛道是 runtime 层的“操作系统时刻”来了你有没有在深夜调试一个跑了三小时的 AI 代理突然发现它开始胡言乱语而日志里只有一行模糊的context window exceeded或者更糟——它没报错只是悄悄把前两步调用的 API 响应给“忘了”然后基于半截记忆生成了一份完全错误的财务摘要等你发现时合同已经发出去了。这不是虚构场景这是我去年在给一家跨境支付公司做智能对账 Agent 时的真实事故。我们花了整整四天回溯、重跑、人工核对才把损失控制在可接受范围。那会儿我就在想如果状态不塞进模型上下文里如果每次工具调用都像数据库事务一样有原子性、可回滚、可审计事情会不会完全不同Anthropic 在 2026 年 4 月 8 日发布的Claude Managed Agents公共测试版表面看是一次常规功能更新但内核是一次静默的范式迁移。它没有发明“Agent”这个概念也没有重新定义 LLM 的能力边界。它干了一件更基础、更底层的事把过去散落在开发者代码、临时数据库、自建 Redis 缓存、甚至硬编码进 system prompt 里的“运行时契约”抽离、固化、产品化为一套稳定、可组合、可观察的基础设施层。关键词不是“AI Agent”而是Managed Runtime—— 一个被明确设计成“可被压缩”的中间层。这和 90 年代操作系统虚拟化硬件的逻辑一模一样。当年应用开发者不再需要关心 CPU 是 Intel 还是 AMD内存是 EDO 还是 SDRAM硬盘是 IDE 还是 SCSI他们只需要调用open()、read()、write()这几个系统调用操作系统内核负责把抽象指令翻译成具体的硬件操作。今天Managed Agents 正在做同样的事开发者只需声明execute(search_confluence, {query: Q4 refund policy})Anthropic 的 runtime 就负责处理沙箱启动、凭证注入、网络隔离、结果捕获、状态持久化——所有这些过去都是每个团队自己用 Python 脚本、Docker Compose 和一堆 YAML 配置文件拼凑出来的“技术债”。所以当新闻稿说“十倍提速”、“Notion 和 Asana 已采用”时真正该划重点的是那个被轻描淡写带过的词session-as-event-log。这不是一个营销话术这是一个架构宣言。它意味着你的 Agent 不再是一个漂浮在内存里的、随时可能因上下文溢出而崩溃的“过程”而是一个拥有完整生命周期、可追溯、可审计、可重放的“实体”。它的每一次心跳、每一次工具调用、每一次决策转折都被记录在一个独立于模型本身的、持久化的事件日志里。这个日志就是未来所有可观测性、治理、合规、甚至法律举证的唯一真相源。这才是 Anthropic 真正 shipped 的东西——不是一堆更快的 API而是一个让整个 AI 应用开发范式得以“落地生根”的土壤。2. 核心设计解构为什么是“Session-As-Event-Log”而不是别的2.1 上下文窗口从来就不是为“状态存储”而生的我们得先直面一个被长期忽视的事实LLM 的 context window其原始设计目标是支持单次、短时、聚焦的推理任务。它像一个高速缓存CPU cache追求的是极低的访问延迟而不是高容量、高可靠、高一致性的数据存储就像 RAM 和硬盘的区别。当你把 session state会话状态硬塞进 context window 里本质上是在用一块价值数万美元的 L3 缓存去干一块几百块的 SATA 硬盘该干的活。这不仅昂贵token 成本飙升而且脆弱一旦溢出数据丢失不可逆更致命的是它彻底混淆了“计算”与“存储”的边界。我去年那个失败的对账 Agent就是典型的反面教材。它的流程是1) 解析邮件附件中的 CSV2) 调用银行 API 获取交易流水3) 调用内部 ERP API 获取应收明细4) 比对差异并生成报告。每一步的结果我们都用自然语言描述后追加到 system prompt 的末尾。到第 3 步时context 已经用了 75%。到了第 4 步模型为了“省 token”开始自动压缩历史——它把“银行 API 返回了 127 笔交易其中 3 笔状态为 pending”压缩成了“银行返回了多笔交易”。于是在比对环节它直接忽略了那 3 笔 pending 交易导致最终报告漏掉了 20 万美元的潜在坏账。问题发生后我们没有任何手段去还原它当时“看到”的到底是什么。模型的内部状态对我们而言是一片无法窥探的黑箱。Managed Agents 的session-as-event-log模式正是对这一根本矛盾的外科手术式解决。它强制将“状态”从“计算上下文”中剥离出来放到一个专用的、结构化的、持久化的存储里。这个存储可以是分布式数据库、对象存储甚至是经过优化的时序数据库。它带来的直接好处是可回溯性Replayability你可以随时指定一个sessionId让 runtime 从事件日志中重建出 Agent 在任意时间点的完整上下文快照然后从那个点重新开始执行。这不再是“猜”模型当时看到了什么而是“确定”它看到了什么。可审计性Auditability每一个tool_call事件都包含精确的时间戳、调用的工具名、传入的参数、返回的原始结果未经模型加工、以及执行耗时。这构成了无可辩驳的操作证据链对于金融、医疗等强监管行业这是刚需而非锦上添花。可扩展性Scalability状态存储的容量和性能不再受限于模型的 context window 大小。你可以轻松支持持续数天、涉及数百次工具调用的复杂工作流而无需担心“爆窗”。提示不要把 event-log 想象成一个简单的文本日志文件。它是一个带有严格 schema 的结构化数据流通常包含event_id,session_id,timestamp,event_type(e.g.,tool_call_start,tool_call_success,model_output),tool_name,input_params,output_result,duration_ms等关键字段。这种结构化是后续所有分析、告警、治理功能的基础。2.2 Harness无状态的“执行引擎”为何必须“Stateless”在 Managed Agents 的架构图里“Harness”这个词非常关键。它不是一个复杂的框架而是一个极其精简的、纯粹的“执行器”。它的核心接口只有一个execute(name, input) → string。这个名字本身就揭示了它的哲学它不保存任何状态不维护任何上下文它就是一个“函数调用”的搬运工。为什么必须是 stateless因为这是实现“弹性”和“可靠性”的唯一路径。想象一下如果你的 Harness 是有状态的那么当它所在的服务器宕机、进程崩溃、或者需要进行灰度升级时正在运行的 Agent 会怎样答案是它会直接中断所有中间状态丢失用户看到的就是一个“连接已断开”的错误。这在生产环境中是不可接受的。而一个 stateless 的 Harness配合外部的 event-log就能实现近乎完美的容错。当 Harness A 崩溃时系统可以立刻在另一台机器上拉起 Harness B并通过awake(sessionId)这个 API让 B 从 event-log 中加载出最新的状态快照然后无缝地继续执行。整个过程对用户是透明的就像汽车在高速公路上换轮胎你甚至感觉不到颠簸。我在实际部署一个客服 Agent 时就深刻体会到了这一点。我们设置了严格的 SLA99.95% 的请求必须在 2 秒内返回。为了达到这个目标我们启用了多实例的 Harness 集群。某天凌晨集群中的一台节点因内核 bug 导致了 OOM内存溢出整个进程被 kill。监控系统在 120 毫秒内就检测到了异常并触发了自动扩缩容。新的 Harness 实例在 300 毫秒内完成启动并通过awake()加载了 session 状态。整个过程中没有一个用户感知到服务中断所有正在进行的对话都平滑地迁移到了新实例上。这就是 stateless 设计带来的真实价值——它把“故障”从一个需要人工介入的“事故”降级为一个由系统自动处理的“日常事件”。2.3 Sandbox从“宠物”到“牲畜”隔离的本质是成本与安全的平衡“Sandboxed execution” 是另一个被广泛提及但常被误解的概念。很多人以为 sandbox 就是“用 Docker 把代码包起来”这太浅了。真正的 sandbox其核心目标是实现资源隔离和凭证隔离而这两者都指向同一个终极目标可控的成本和绝对的安全。资源隔离Managed Agents 的 sandbox 是按需创建、用完即焚的。它不像传统 VM 那样需要预分配 CPU 和内存。当你调用execute(run_python_script, {...})时Anthropic 的 runtime 才会动态为你启动一个微 VM 或容器分配精确所需的 0.5 vCPU 和 1GB 内存并在脚本执行完毕后几秒钟内将其销毁。这意味着你只为“实际消耗的计算时间”付费而不是为“可能用到的峰值资源”付费。这直接解决了云原生时代最头疼的“资源浪费”问题。凭证隔离这是生产环境的生死线。过去很多团队为了方便会把数据库密码、API Key 直接作为环境变量注入到 Agent 的运行环境中。模型在生成代码时只要它“想”就能把这些敏感信息打印出来或者通过curl命令发送到任意地址。这已经不是理论风险而是真实发生过多次的严重安全事故。Managed Agents 的做法是在 sandbox 启动时由 runtime 的安全模块将凭证从密钥管理服务如 HashiCorp Vault中取出以只读、内存映射的方式注入到 sandbox 的特定路径例如/run/secrets/db_password并且确保这个路径对模型的代码执行环境是完全不可见的。模型只能通过 runtime 提供的、经过严格白名单校验的tool_call接口来访问数据它永远不知道凭证本身长什么样。这是一种“零信任”架构的完美实践。注意credential isolation 不是靠“不让模型看到”来实现的而是靠“模型根本没有能力去读取”来实现的。这是一种架构层面的强制约束比任何代码审查或提示词工程都更可靠。3. 实操全景从 YAML 定义到生产上线的完整链路3.1 定义你的第一个 AgentYAML 是声明式编程的新起点Managed Agents 的入门门槛远低于你想象。它没有复杂的 SDK没有需要你继承的抽象类你只需要写一个符合规范的 YAML 文件。这个 YAML就是你 Agent 的“宪法”它定义了 Agent 的一切行为边界。下面是一个为销售团队设计的“客户线索评分”Agent 的简化版 YAML 示例# sales-scoring-agent.yaml name: sales-scoring-agent description: Scores incoming 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 the provided tools to gather data. Never hallucinate. tools: - name: fetch_company_data description: Fetches company info (industry, size, location) from Clearbit API parameters: type: object properties: domain: type: string description: The companys website domain required: [domain] - name: fetch_engagement_data description: Fetches leads email open/click history from HubSpot parameters: type: object properties: email: type: string description: The leads email address required: [email] guardrails: - type: content_filter severity: block categories: [hate_speech, sexual_content] - type: tool_call_whitelist allowed_tools: [fetch_company_data, fetch_engagement_data] - type: output_length_limit max_tokens: 512 runtime_config: timeout_seconds: 120 max_tool_calls_per_session: 5这个 YAML 文件清晰地定义了Who it is(system_prompt)一个销售运营分析师角色定位决定了它的思考方式。What it can do(tools)只有两个白名单工具且每个工具的输入参数都有严格 schema。What it must not do(guardrails)内容过滤、工具调用白名单、输出长度限制三重保险。How it runs(runtime_config)超时时间、最大调用次数防止失控。实操心得别试图在system_prompt里塞进所有业务规则。规则越复杂模型越容易出错。正确的做法是把核心规则比如“年收入 1000 万且员工数 500 的公司基础分20”写成一个独立的、可测试的 Python 函数然后把这个函数封装成一个score_lead工具。这样规则的逻辑是确定的、可单元测试的而模型只负责“调度”这个工具。这是将“不确定性”的 LLM 与“确定性”的业务逻辑解耦的关键技巧。3.2 Session 生命周期管理从创建、交互到归档的全流程一个 Managed Agent 的生命始于一个create_sessionAPI 调用终于一个archive_session调用。中间的每一次交互都是一次send_message请求。创建 Session你向 Anthropic 的 API 发送一个 POST 请求携带你的 Agent 名称sales-scoring-agent和初始消息例如“请为新线索 johnacme.com 打分”。API 返回一个唯一的session_id和一个session_url。这个session_id就是你在整个生命周期中追踪这个会话的唯一钥匙。交互循环你通过send_message向该session_id发送用户消息。Runtime 接收到后会将用户消息和完整的 event-log包含之前所有的工具调用和模型输出组装成一个新的上下文。将这个上下文喂给 Claude 模型。模型输出一个tool_use块指明要调用哪个工具及参数。Runtime 拦截这个tool_use启动 sandbox执行工具并将原始结果JSON记录为一个tool_call_success事件。将工具结果反馈给模型模型生成最终的自然语言回复。将整个过程用户输入、模型思考、工具调用、模型回复作为一个完整的event记录到 event-log 中。归档与查询当会话结束比如用户说“谢谢不用了”你可以调用archive_session。归档后的 session其 event-log 会被持久化到冷存储中但依然可以通过list_sessions和get_session_eventsAPI 进行查询。你可以用 SQL-like 的语法查询所有tool_call_success事件中tool_name fetch_company_data且output_result.industry FinTech的会话用于业务分析。实操心得session_id是你的黄金钥匙务必妥善保管。我建议在你的应用数据库中为每一个用户会话建立一个外键关联到这个session_id。这样当用户投诉“你们的评分错了”你可以在 10 秒内通过get_session_events拿到完整的、不可篡改的执行日志精准定位是数据源的问题还是模型理解的问题还是业务规则的问题。这种“秒级归因”能力在客户信任建设上价值千金。3.3 生产级部署定价、监控与灾备的实战考量Managed Agents 的定价模型非常透明$0.08 per session-hour of active runtime外加标准的 Claude token 费用。这里的“active runtime”指的是 sandbox 处于运行状态的时间不包括等待用户输入的空闲时间。这与传统按 vCPU 小时计费的模式相比成本模型更加贴合 AI 应用的实际负载特征——大部分时间Agent 都在“听”而不是在“算”。然而真实的生产部署远不止于看懂价格表。你需要构建一套完整的运维体系监控告警你需要监控的核心指标有三个p50/p95 Time-to-First-Token (TTFT)这是用户体验的黄金指标。p50 800msp95 2s 是一个健康的基线。如果 p95 突然飙升到 5s说明可能是某个工具调用比如一个慢查询拖累了整体性能需要立即告警。Tool Call Failure Rate超过 1% 的失败率就需要关注。是工具本身不稳定还是模型频繁传入了非法参数这背后往往隐藏着system_prompt或toolschema 的设计缺陷。Session Abandonment Rate用户开启会话后没有发送任何消息就离开的比例。如果这个比例过高 30%说明你的 Agent 的首次响应welcome message可能不够吸引人或者用户没有立刻理解它能做什么。灾备方案虽然 Anthropic 的 SLA 很高但作为负责任的工程师你必须有 Plan B。我的建议是在你的应用层实现一个简单的 fallback 机制。当调用 Managed Agents API 超过 3 次可配置都失败时自动降级到一个本地部署的、轻量级的 LangChain Agent。这个本地 Agent 可能功能有限比如只支持fetch_company_data不支持fetch_engagement_data但它能保证核心服务不中断给用户一个“我们正在努力修复”的友好提示而不是一个冰冷的 500 错误。实操心得不要迷信“全托管”。我见过太多团队把所有鸡蛋都放在 Anthropic 这一个篮子里结果一次区域性网络抖动导致整个客服系统瘫痪。最好的架构是“主从结合”95% 的流量走 Managed Agents5% 的关键路径比如支付确认走你自己的、经过深度压测的本地 Agent。这种混合模式既享受了托管服务的便利又保留了对核心链路的绝对控制权。4. 竞争格局与未来演进为什么 runtime 层注定走向“零价”4.1 Hyperscaler 的碾压式入场AWS Bedrock AgentCore 的启示当 Anthropic 在 2026 年 4 月高调发布 Managed Agents 时一个被几乎所有媒体忽略的事实是Amazon Bedrock AgentCore 已经进入通用可用GA状态整整五个月了。根据 AWS 在 2026 年 3 月发布的官方数据AgentCore 的 SDK 下载量在五个月内突破了两百万次。这个数字背后是无数企业已经在生产环境中用它来运行自己的 Claude、Llama、甚至 Mistral Agent。AgentCore 的成功不在于它有多“酷炫”而在于它有多“顺手”和“便宜”。它不是一个独立的产品而是 AWS 云生态的天然延伸。当你在 AWS 控制台里创建一个 Agent 时你不需要额外注册一个 Anthropic 账户不需要单独设置 billing你只需要点击几下选择你的模型上传你的工具代码然后它就运行在你的 VPC 里和你的 RDS、S3、Lambda 无缝集成。最关键的是它的定价策略是“免费赠送”你为 EC2、Lambda、RDS 付的钱已经包含了 AgentCore 的运行时成本。对于一个已经在 AWS 上每年花费数百万美元的企业来说AgentCore 不是“一个新服务”而是“我已购买的云服务里刚刚多出来的一个功能按钮”。这正是 Anthropic 所面临的残酷现实。它不是在开创一个新市场而是在一个已经被巨头用“免费”和“捆绑”策略牢牢占据的战场上发起一场防御战。它的 Managed Agents本质上是一个“Claude 专属通道”目的是把你——一个 Claude 的忠实用户——牢牢锁在 Anthropic 的生态里防止你因为 AWS 提供了更便宜、更易集成的 runtime而把你的 Agent 迁移过去顺便把你的 Claude token 消费也一并带走。提示Anthropic 的定价$0.08/session-hour在小规模、POC 阶段看起来很合理。但当你的 Agent 每天处理 10 万次会话平均会话时长 3 分钟时仅 runtime 成本就高达 $4000/天。而 AWS 的 AgentCore在同等负载下成本几乎为零已被云账单覆盖。这就是“hyperscaler tax”的威力。4.2 开源力量的崛起Daytona 与 Kubernetes SIG 的挑战如果说 hyperscaler 是用“钱”和“生态”在挤压 runtime 层那么开源社区则是在用“速度”和“创新”在重塑它。2025 年初曾以 DevOps 环境管理闻名的 Daytona 公司宣布战略转型全面投入 AI Agent 基础设施。他们在 2025 年 2 月完成了 2400 万美元的 A 轮融资并发布了 Daytona Agent Runtime。其最引人注目的指标是sandbox spin-up time 90ms。这意味着从你发出execute()命令到 sandbox 真正开始执行你的 Python 脚本整个过程不到 0.1 秒。这个速度已经逼近了本地函数调用的延迟彻底消除了“沙箱启动”这个曾经的性能瓶颈。更值得关注的是Kubernetes 社区在 2025 年底正式成立了SIG-Agent并发布了首个官方项目k8s-agent-sandbox。这个项目的目标是将 Agent 的 sandbox 运行时变成 Kubernetes 集群的一个原生资源类型Custom Resource Definition, CRD。从此你不再需要学习 Anthropic 或 AWS 的私有 API你只需要写一个 YAML 文件声明你想要一个AgentSandboxKubernetes 就会自动为你调度、启动、监控、回收这个 sandbox。这标志着Agent runtime 正在从一个“厂商私有协议”回归到一个“开放的、标准化的云原生基础设施”。这种趋势与 2000 年代初 VMware 主导的虚拟化市场何其相似。当时VMware ESX 是一个封闭的、昂贵的商业产品。直到 Xen2003和 KVM2007这两个开源 hypervisor 的出现才真正引爆了云计算革命。今天Daytona 和 Kubernetes SIG就是 AI 时代的 Xen 和 KVM。它们不会一夜之间取代 Anthropic但它们正在快速构建一个“足够好、足够快、足够开放”的替代方案让 runtime 层的“护城河”变得越来越浅。4.3 价值迁移当 runtime 归零钱流向哪里当一个技术层的价格被压到接近于零时整个价值链会发生剧烈的位移。回顾历史每一次这样的“归零”都伴随着一次巨大的财富转移。2000 年代初虚拟化归零VMware 的营收依然健康但云计算的财富流向了构建在其之上的Terraform基础设施即代码、Kubernetes容器编排和SaaS 应用。2010 年代IaaS 归零AWS、Azure 的基础计算服务变得“免费”财富流向了ServerlessFaaS、托管数据库RDS, Cosmos DB和AI/ML 平台SageMaker, Vertex AI。今天AI Agent runtime 正在经历同样的归零过程。那么钱会流向哪里答案非常清晰就在三个正在激烈竞争的“上层”领域Trace Store追踪存储这是所有可观测性的基石。Braintrust 的 Brainstore、Arize 的 Phoenix、LangChain 的 LangSmith都在争夺成为 AI 应用的“中央日志库”。谁的 trace 数据格式最开放、API 最标准、分析能力最强谁就能成为下一个十年的“数据湖”。因为当 runtime 可以随意更换时你唯一不能丢的就是你积累下来的、关于“Agent 到底做了什么”的全部历史数据。Governance Policy治理与策略随着 Agent 被授权执行越来越多的关键业务操作比如批准付款、修改权限、生成法律文件企业采购部门开始问出灵魂问题“这个 Agent 被允许做什么谁批准了它它的每一次操作是否有完整的、不可篡改的审计轨迹”OWASP Agentic Top 10 的发布正是这一需求的集中体现。一个能提供细粒度策略引擎Policy-as-Code、自动化合规检查、以及与企业 IAM 系统深度集成的治理平台将成为企业级 AI 应用的标配。Vertical Agent Marketplaces垂直领域 Agent 市场最终企业为的不是“一个能运行的 Agent”而是“一个能解决具体问题的 Agent”。Salesforce 的 Agentforce 在 2026 年 Q4 达到了 8 亿美元的 ARR其核心卖点不是“它用什么 runtime”而是“它能帮你把销售线索转化率提升 27%”。未来的赢家将是那些深耕于特定行业如金融、医疗、制造并能提供开箱即用、经过行业验证、且与现有 ERP/CRM 系统深度集成的垂直 Agent 的公司。它们卖的不是技术而是可量化的业务成果。5. 常见问题与避坑指南来自一线战场的血泪经验5.1 “我的 Agent 总是调用错误的工具怎么办”这是最普遍、也最容易被误诊的问题。很多开发者的第一反应是调大模型、换更强的 prompt、增加 few-shot 示例。但根据我的经验90% 的此类问题根源不在模型而在tool schema 的设计。问题根源当你定义一个工具的parameters时如果使用了过于宽泛的类型比如type: string模型就会“自由发挥”。例如一个search_database工具如果query参数被定义为type: string模型可能会生成SELECT * FROM users WHERE name LIKE %John% AND status active这样的 SQL这显然超出了你的预期。解决方案采用强约束的 JSON Schema。将query参数改为query: type: object properties: table: type: string enum: [users, orders, products] filters: type: array items: type: object properties: field: type: string operator: type: string enum: [, !, , , LIKE] value: type: string这样模型就只能生成一个结构化的、符合你业务规则的 JSON 对象而无法生成任意 SQL。它被迫“思考”你的数据模型而不是“猜测”你的意图。实操心得在开发阶段一定要用curl或 Postman手动构造各种边界 case 的tool_call请求去测试你的 tool schema 是否真的能拦住所有非法输入。不要等到上线后被一个恶意用户用精心构造的 prompt 绕过你的防护。5.2 “Event-log 查询太慢影响了我的 BI 分析怎么优化”当你的 Agent 每天产生数百万条 event 时一个简单的SELECT * FROM events WHERE session_id xxx查询可能会让你的 BI 工具卡死。这是因为 event-log 的数据模型天生就是“宽表 高频写入”不适合 OLAP 场景。解决方案引入一个实时物化视图Materialized View。在你的数据仓库如 Snowflake、BigQuery中创建一个专门用于分析的视图它每天凌晨自动聚合前一天的数据。例如-- 创建一个物化视图统计每个 Agent 的每日成功率 CREATE MATERIALIZED VIEW agent_daily_metrics AS SELECT agent_name, DATE(event_timestamp) as event_date, COUNT(*) as total_calls, COUNT_IF(event_type tool_call_success) as success_calls, COUNT_IF(event_type tool_call_failure) as failure_calls, AVG(duration_ms) as avg_duration_ms FROM raw_events GROUP BY 1, 2;这样你的 BI 工具查询的就不再是原始的、海量的 event 表而是这个已经高度聚合、索引优化的物化视图查询速度可以从分钟级降到毫秒级。5.3 “Credential isolation 很好但我需要动态生成临时凭证怎么集成”有些场景下你的工具需要的不是静态的 API Key而是动态的、有时效性的临时凭证比如 AWS STS 的临时 Token或数据库的短期连接串。Managed Agents 的静态凭证注入机制对此无能为力。解决方案将“凭证生成”本身封装成一个generate_temp_credential工具。这个工具的逻辑是当 Agent 需要访问某个受保护资源时它先调用generate_temp_credential传入所需的服务名和权限范围该工具在 sandbox 外部由你的后端服务执行调用 AWS STS 或 HashiCorp Vault 的 API生成一个有效期为 15 分钟的临时凭证然后这个临时凭证被安全地传递给下一个需要它的工具比如query_aws_rds整个过程临时凭证的明文 never 进入 sandbox。注意这个方案的关键在于generate_temp_credential工具的输出必须是一个结构化的、只包含必要字段的 JSON 对象如{ access_key: ..., secret_key: ..., session_token: ..., expiration: ... }并且这个对象在传递给下游工具时必须通过 runtime 的安全通道而不是通过模型的文本输出。这需要你与 Anthropic 的技术支持团队深度协作确认其 API 是否支持这种“工具间安全数据传递”模式。5.4 “如何评估我的 Agent 是否真的‘准备好’上线”不要只看准确率。一个在测试集上准确率 95% 的 Agent上线后可能因为一个未预料到的边缘 case导致 100% 的失败。我推荐一个四维评估法维度评估方法合格线说明功能性使用 100 个覆盖所有业务场景的测试用例自动化运行通过率 ≥ 98%测试用例必须包含大量“脏数据”如邮箱格式错误、公司域名不存在鲁棒性对输入进行 fuzz testing随机插入乱码、超长字符串、特殊字符失败率 ≤ 2%检查 Agent 是否会崩溃还是能优雅地返回“输入无效”可观测性检查 10 个随机会话的 event-log是否包含所有关键字段100% 完整特别是tool_call_start和tool_call_success的时间戳是否匹配成本效益计算单次会话的平均 token 消耗和 runtime 成本≤ 同类人工处理成本的 1/3这是说服老板批准上线的终极指标我个人在实际操作中的体会是一个 Agent 的上线不是“开发完成”的终点而是“持续观测”的起点。我习惯在上线后的第一周每天早上花 15 分钟随机抽查 10 个会话的 event-log看看模型是否在“偷偷”做些我们没预料到的事。这种“人工巡检”往往能发现自动化测试永远覆盖不到的、微妙的、但至关重要的行为偏差。