claude-code-api-compaction

Use when implementing server-side tolerance for Claude Code context-management fields in an Anthropic gateway, including context_management edits, cache_edits blocks, cache references, prompt cache co

SKILL.md

GitHub

Claude Code 网关上下文管理兼容

目标

根据本 skill,让大模型请求网关能接受 Claude Code 发来的上下文管理字段。外部网关可以不实现真实 prompt cache 或 API 侧清理,但必须容忍这些字段,避免因为扩展字段导致 /v1/messages 失败。

详细字段见 references/compaction-wire-format.md。

需要容忍的字段

位置 字段 最小处理
request body context_management 可忽略或转发
user content cache_edits 可忽略
tool_result cache_reference 可忽略
text/system/tool cache_control 可忽略
request body betas 包含 context-management-* 可记录/透传

context_management

Claude Code 可能发送:

{
  "context_management": {
    "edits": [
      { "type": "clear_thinking_20251015", "keep": "all" },
      {
        "type": "clear_tool_uses_20250919",
        "trigger": { "type": "input_tokens", "value": 180000 },
        "clear_at_least": { "type": "input_tokens", "value": 140000 },
        "clear_tool_inputs": ["Bash", "Glob", "Grep", "FileRead"]
      }
    ]
  }
}

如果你的上游不支持这些策略,忽略即可;不要 400。

cache_edits

Claude Code 可能在 user message content 中插入:

{
  "type": "cache_edits",
  "edits": [{ "type": "delete", "cache_reference": "toolu_1" }]
}

不支持缓存删除时忽略该 block,并继续处理同一 user message 中的 text 或 tool_result。

Compact 请求

压缩摘要通常走 stream:false,工具为空,模型可能是 Haiku/小模型。网关只需要把它当普通非流式 /v1/messages 请求处理。

实现建议

  • cache 字段属于性能优化,不应成为兼容阻断点。
  • 如果实现真实缓存,cache key 至少应考虑 system、messages、tools、model、betas。
  • 如果不实现真实缓存,仍应返回正常 usage;cache token 字段可为 0。