Claude Opus 5 于 2026 年 7 月 24 日发布,很多人只注意到「默认开启思考」和「原生 100 万 Token 上下文」。但对做生产级 Agent 的团队来说,同期更新的 Managed Agents(托管 Agent)能力才是真正值钱的部分——它把托管 Agent 从「能跑起来」推向了「好运维」。这篇讲三个最实用的改动:会话种子、会话中途换工具、Webhook 事件驱动。
先看 Opus 5 的关键变化
| 变化项 | 说明 |
|---|---|
| 思考默认开启 | 不用再在请求里带 thinking 字段,模型自动推理 |
| 上下文窗口 | 原生 100 万 Token,既是默认也是上限,无更小档位 |
| effort 档位 | 从 low 到 max;max 档下不允许关闭思考,否则报错 |
| 最小可缓存长度 | 降到 512 Token(Opus 4 是 1024),短交互也能吃到缓存 |
| 最大输出 | 128k Token,适合一次性产出大段代码或文档 |
| 企业部署 | AWS Bedrock 上默认零数据保留 |
注意这条行为变更:在 effort = max 时禁用思考会直接报错,而不是静默降级。这是 Opus 4 到 Opus 5 的一个破坏性变化——旧代码如果显式关过 thinking,升级后会挂。升级前先全局搜一遍。
Step 1:用会话种子,创建即启动
过去创建托管 Agent 会话要两步:先建会话,再单独发一次调用把 Agent 循环启动起来。会话种子(session seeding)把这两步合成一步:
POST /v1/sessions
{
"model": {
"name": "claude-opus-5",
"effort": "high"
},
"initial_events": [
{
"type": "user_message",
"content": "把 data/ 目录下的 CSV 全部清洗并生成质量报告"
}
]
}
# initial_events 非空 → 同一个请求内就启动 Agent 循环
# 不再需要额外发一次「开始」调用
Step 2:会话中途增删工具,还不掉缓存
这是三个改动里最实用的一个。以前工具定义是死的:想中途从「文件读取工具」换成「数据库连接器」,只能重启会话或重发整个 tools 数组——提示词缓存直接作废,延迟和成本都上去了。
# 带上 beta 头即可启用
anthropic-beta: mid-conversation-tool-changes-2026-07-01
# 然后就能在轮次之间改工具集
{
"tools": {
"add": [ { "name": "db_query", "description": "..." } ],
"remove": [ "file_read" ]
}
}
# 关键:缓存保持温热,不用重发整个 tools 数组
可用范围包括 Claude Opus 5 与 Claude Fable 5。这个能力真正解锁的是自适应工具集——Agent 探索代码库时按发现动态换装备,而不是一开始就背着一个装满二十个工具的大包。
工具越多不是越好。塞满工具会挤占上下文、增加选错工具的概率。有了热插拔之后,正确做法是起手只带 3-5 个必要工具,按阶段增删。这比一次性全给效果更稳。
Step 3:接 Webhook,别再轮询
长时运行的 Agent 流水线最怕轮询:轮太密浪费配额,轮太稀感知滞后。这版扩展了 Webhook 支持,让外部系统能在状态变化时被动接收通知:
典型可订阅的变化:
· 记忆存储发生变更
· 运行环境状态更新
· 会话进入/离开某个阶段
接入后你的系统可以做:
记忆变更 → 触发下游工作流
环境异常 → 立刻告警,不用等下一次轮询
阶段完成 → 通知人工审核节点
Step 4:给托管 Agent 配 effort 档位
创建 Agent 时可以在 model 对象里指定 effort,按任务难度调节推理深度。Opus 5 的档位一直延伸到 max:
| 档位 | 适用场景 |
|---|---|
| low | 格式转换、分类、抽取等确定性任务 |
| medium | 常规编码、文档生成、多步但路径清晰的任务 |
| high | 跨文件重构、需要权衡多个方案的设计任务 |
| max | 关键任务;注意此档下不允许关闭思考 |
{
"model": {
"name": "claude-opus-5",
"effort": "low" // 按任务类型分档,别一律 max
}
}
常见浪费:全流水线一律 max。一条流水线里往往只有 1-2 个节点真正需要深度推理,其余都是搬运和格式化。分档之后成本能降一大截,而且低档位响应更快,整体链路反而更顺。
Step 5:把缓存红利吃满
最小可缓存长度从 1024 降到 512,看着是个小数字,但它改变了缓存策略的设计方式:
以前(1024 起):
短系统提示词根本进不了缓存,
只能刻意「凑长度」,很别扭
现在(512 起):
精简的系统提示词也能缓存,
高频短交互(分类、路由、校验)显著受益
配合工具热插拔的正确姿势:
① 稳定不变的内容放最前面(系统提示词、长期规则)
② 易变内容放后面(当前任务、临时工具)
③ 中途改工具时,前缀缓存依然命中
Step 6:串成一条生产流水线
单独看每个特性都不惊艳,组合起来才是完整的生产形态:
一条代码库分析流水线:
1. 会话种子创建 Agent
initial_events 带上「分析这个仓库的技术债」
effort = medium,起手只带 [file_read, grep]
2. Agent 发现是个 monorepo,需要跑构建
→ 热插拔加入 [bash, test_runner]
→ 缓存未失效,延迟无抖动
3. 分析进入深水区,需要权衡重构方案
→ 新建子会话,effort = high
4. 记忆存储更新(写入分析结论)
→ Webhook 推给你的系统
→ 触发人工审核 + 生成工单
5. 全程无轮询,无重启,缓存全程命中
常见问题速查
| 你遇到的现象 | 大概率原因 & 解决 |
|---|---|
| 升级后请求直接报错 | 代码里显式关了 thinking,且 effort = max,去掉该字段 |
| 会话创建了但不动 | initial_events 为空,需非空才会同请求启动循环 |
| 换工具后延迟飙升 | 没带 beta 头,退化成重发整个 tools 数组,缓存作废 |
| Webhook 收到重复事件 | 正常现象,回调必须做幂等 |
| 缓存命中率很低 | 动态内容(时间戳、随机 ID)写在了前缀里,挪到后面 |
| 成本比预期高很多 | 全链路用了 max 档,按任务类型分档重配 |