Claude Opus 4.8 悄悄上线一个重磅 API 能力:Mid‑Conversation System Messages!大多数用户感知不到,但对做 Agent 框架的人这是个重要更新——Anthropic 终于支持了对话中途注入 System Message(中段系统消息),让你能在会话进行中动态改写 Agent 的原始系统指令,且不破坏 Prompt Caching。
[玫瑰]以前有什么问题?
在 Opus 4.8 之前,Claude API 的 system 字段只能在对话最开头设置一次,中途无法更改。
想让 Agent 切换角色或放宽约束,只能靠 user 消息硬说,比如塞一个 文本块让模型"尽量遵守"。但因为权重低,模型经常倾向遵守原始 system 指令,导致角色切换不彻底——这是 Claude Code 等工具长期靠 workaround 凑合的痛点。
[玫瑰]Mid‑Conversation System Messages 怎么做?
现在你可以直接在跟随在 user 消息之后发送一条 role: "system" 的消息。
典型场景举例:
初始 system 设定 Agent 为"系统设计师,只写文档不写代码"→ 任务推进到实现阶段 → 中途注入 system 消息改为"开发工程师,允许写代码"→ Agent 干净切换角色。
[玫瑰]与 OpenAI 的实现差异
OpenAI: role: "system" 消息可随意穿插,但 system 角色权重不算特别高,易被后续 user 消息盖过。缓存全自动。
Anthropic(新):system 消息权重显著高于 user 消息,中段注入真正能压过初始指令。缓存需手动标记 cache_control (现已有自动缓存选项)。
[碰拳]一句话总结:
如果你在做 Claude‑based Agent 框架、多阶段工作流或角色切换逻辑,Mid‑Conversation System Messages 终于让你不用再靠 hack 式 来改 Agent 行为了——直接、有权重、缓存友好。
