教程

Claude Mid-conversation System Messages 使用指南:长会话不再破坏 Prompt Cache

Claude Opus 4.8 新增 mid-conversation system messages,可在长会话中途追加系统级指令,不改顶层 system prompt,从而保持缓存 prefix 命中,降低 Agent 循环成本。

2026/6/63分钟 阅读ClaudeEagle

Claude Opus 4.8 新增了一个对 Agent 应用非常关键的能力:mid-conversation system messages。开发者可以在 messages 数组中途追加 role: "system",用系统级优先级更新指令,同时不破坏已有 prompt cache。


以前的问题

传统 Claude API 中,系统指令通常放在顶层 system 字段。

这对 prompt caching 很友好,因为系统提示位于稳定 prefix 前部。但问题是:如果长会话运行到一半,你需要增加新的系统级约束,就必须修改顶层 system。

一旦顶层 system 发生变化,缓存 prefix 的 hash 会改变,之前几十轮对话和工具 schema 可能全部 cache miss。


新能力:在 messages 中插入 system 角色

Opus 4.8 允许这样写:

json
{
  "model": "claude-opus-4-8",
  "system": "You are a code review assistant.",
  "messages": [
    {"role": "user", "content": "Review utils.py"},
    {"role": "assistant", "content": "..."},
    {"role": "user", "content": "Now review callers"},
    {
      "role": "system",
      "content": "From now on, every suggestion must include explicit type annotations."
    }
  ]
}

这个 system message 从当前位置开始生效。它比普通 user message 优先级更高,适合应用开发者注入 operator-level 事实和约束。


为什么它能保住 Prompt Cache?

Prompt cache 要求请求 prefix 字节级一致。Claude 的缓存顺序包括:

  1. tools
  2. system
  3. messages

如果修改顶层 system,最前面的 prefix 变了,缓存很容易失效。

mid-conversation system message 是追加在历史末尾,前面的 tools、system 和旧 messages 保持不变,因此已有 cache entry 仍然可以命中。


适合使用的场景

  • 长程代码 Agent 中途切换工程规范
  • 用户打开/关闭某种工作模式
  • 工具可用性发生变化
  • 应用检测到 token budget 降低
  • 文件系统状态变化,需要作为系统级事实注入
  • Agent loop 正在执行时,需要把用户新输入折叠进当前任务

关键判断:如果这条信息来自应用/operator,而不是最终用户,就应该考虑 system role。


优先级规则

官方说明:

  • 顶层 system 仍适合放全局稳定指令
  • mid-conversation system messages 适合后续才出现的规则
  • 后出现的 system message 会覆盖前面冲突的 system 指令
  • 它比普通 user message 具有更高优先级

因此不要把用户原话随意提升成 system。只有应用层事实、权限、模式、策略变化才应该用 system。


可用性限制

当前限制:

  • 仅 Claude Opus 4.8
  • 支持 Claude API 和 Claude Platform on AWS
  • 不支持 Amazon Bedrock、Vertex AI、Microsoft Foundry
  • 不需要 beta header
  • 符合 Zero Data Retention eligibility

实战建议

  • 稳定角色、人设、工具规则仍放顶层 system
  • 高频变化的应用状态用 mid-conversation system message
  • 不要把时间戳、随机值塞进顶层 system
  • 配合 prompt caching 降低 Agent loop 成本
  • 记录每次 system update,方便审计和排查行为变化

来源:Anthropic 官方文档 - Mid-conversation system messages | 整理:ClaudeEagle

相关文章推荐

教程Claude Cache Diagnostics 教程:定位 Prompt Cache Miss 的真正原因Claude Cache Diagnostics 解决 prompt cache miss 难排查问题。通过传入上一次 response id,API 会比较请求 fingerprint,告诉你 model/system/tools/messages 哪个部分破坏了缓存 prefix。2026/6/6教程Claude Prompt Caching 完整指南:降低长上下文成本与延迟的 API 实战Claude Prompt Caching 官方能力中文整理:适合缓存的内容、cache_control 使用方法、缓存断点策略、长文档和工具定义复用、成本/延迟收益、常见坑和生产环境落地建议。2026/5/21教程Claude Code 工作流成本优化实战:如何让并行 Agent 扇出复用提示前缀缓存详解 Claude Code v2.1.229 工作流扇出错峰执行优化:如何让共享相同提示前缀的并行子 Agent 复用提示缓存而非重复处理,附配置方法、适用场景和与 Prompt Caching 配置的联动调优建议。2026/8/13教程OpenClaw Prompt Caching 调优指南:cacheRetention、cache-ttl 修剪与心跳保温三件套详解 OpenClaw 提示缓存调优三大配置项:cacheRetention 缓存保留策略、contextPruning cache-ttl 上下文修剪、heartbeat 心跳保温,附配置合并优先级和不同场景的调优建议。2026/8/12教程Claude Sonnet 5 API 完整接入指南:模型 ID、定价与代码示例(2026)Claude Sonnet 5 完整 API 接入教程,涵盖模型 ID、定价、Python/Node.js 代码示例、流式输出、Agentic 工具调用,以及从 Sonnet 4.6 的无缝迁移步骤。2026/7/1教程Claude MCP Tunnels 指南:不用开放入站端口,也能把私有 MCP 服务接给 ClaudeMCP Tunnels 是 Anthropic 面向企业内网 MCP 服务的 beta 能力,通过 outbound-only 连接、cloudflared、proxy、inner TLS 和 OAuth,让 Claude 安全访问私有工具与数据源。2026/6/6