Claude Code补丁可自定义模型窗口与压缩
速览
这是一个针对Claude Code的逆向工程补丁,允许用户通过二进制字符串替换来自由定义模型ID后缀的context窗口(如[258k]),并通过环境变量添加任意自定义模型。支持按模型设置自动压缩窗口和专用压缩模型,升级后需重新应用补丁。脚本免费分享但非官方,需自行承担风险。
AI 深度解读
背景
Claude Code 是 Anthropic 提供的命令行 AI 编程助手,官方版本对模型选择、上下文窗口大小(context window size)等有较多限制:例如只能使用固定的几个模型(sonnet、opus、haiku、fable),上下文窗口大小由官方预设(默认约 200k token,官方近期推出了 1M token 支持,但不可由用户自定义)。社区用户往往需要更灵活的配置——比如按不同模型分配不同长度的 context window、添加自定义模型、以及为“自动压缩(auto-compact)”功能指定不同的触发窗口和专用模型。LINUX DO 社区的一位用户(未具名)逆向工程了 Claude Code 官方二进制(native binary),通过等长字符串替换的方式实现了一个 patch 脚本,允许用户完全自定义模型、context window 大小等参数,并提供了 macOS 上的 ad-hoc codesign 支持(确保修补后的二进制可运行)。该脚本免费分享,仅供个人使用,不涉及商业 API 导流或售卖账号。
核心内容
该 patch 脚本(patch-claude.txt,约 54.2 KB)直接修改 Claude Code 原生二进制文件(macOS arm64 版本),主要提供以下功能:
-
自定义 context window 大小(模型 ID 后缀机制)
用户可在模型 ID 后添加后缀[258k]、[500k]、[1m]、[2.5m]等(支持 N×1000 或 N×1e6 格式),来指定该模型使用的 context window 大小。例如,如果通过cliproxyapi(Claude 内部代理 API)或其他工具为模型gpt-5.6-sol添加一个别名为gpt-5.6-sol[258k],修补后的 Claude Code 就能自动识别该后缀,并将该模型的 context window 设为 258k tokens。后缀中的数字会被解析为实际 token 数。 -
自定义模型数量无限制
使用环境变量ANTHROPIC_CUSTOM_MODEL_OPTION可添加任意多个自定义模型,格式为"id|Label;id2|Label2"。例如:ANTHROPIC_CUSTOM_MODEL_OPTION="gpt-5|MyGPT5;grok|GrokModel"。这些模型会出现在 Claude Code 的/model命令选项中,供用户选择。模型 ID 可以是任意字符串,不再限于官方固定的 sonnet、opus、haiku、fable。 -
Agent 模型接受任意字符串
原本 Claude Code Agent 模式仅接受有限官方模型名,patch 后允许输入任意字符串作为模型。 -
按模型设置自动压缩窗口(auto-compact)
通过环境变量CLAUDE_CODE_AUTO_COMPACT_WINDOWS可定义各模型对应的自动压缩触发窗口大小。格式如:gpt-5.6=240k;grok=450k;*=200k。其中*表示对所有未指定的模型使用默认值。当会话上下文接近该窗口大小时,Claude Code 会自动进行压缩(compact)。 -
专用压缩模型
通过环境变量CLAUDE_CODE_COMPACT_MODEL可指定一个专用模型用于压缩操作(例如glm-5.2[1m]),若不设置,则使用当前主会话的模型。 -
官方 1M context 开关
环境变量CLAUDE_CODE_DISABLE_1M_CONTEXT=1可以关闭官方自带的 1M context 支持,避免与自定义的[1m]后缀冲突。自定义后缀仍由本 patch 独立解析。
使用方法:
- 安装 patch 脚本后,执行
patch-claude apply对当前 Claude Code 二进制进行修补(需在claude update之后重新打补丁)。 - 可查看状态:
patch-claude status - 模拟运行(dry-run):
patch-claude dry-run - 恢复原始二进制:
patch-claude restore - 补丁失败时,会在
~/.local/share/claude/patch-claude-last-error.md写入错误报告。
相关环境变量配置:可写入 ~/.claude/settings.json 的 env 字段,或直接在 shell 中设置。
注意事项:
- 该脚本是对 Claude Code 二进制文件的逆向修改,非官方支持。每次 Claude Code 官方更新(
claude update)后需重新 apply 补丁。 - 仅自测于 macOS arm64 原生架构;其他平台(Linux、Windows、Intel Mac)需自行承担风险。
- 脚本完全免费,个人维护,不涉及任何商业 API 或账号。
关键要点
- 通过二进制等长字符串替换实现,macOS 需用 ad-hoc codesign 重新签名。
- 模型 context window 大小通过在模型 ID 后添加
[Nk]/[Nm]后缀实现,N支持 1000 进制或 1e6 进制。 - 自定义模型无数量上限,通过
ANTHROPIC_CUSTOM_MODEL_OPTION环境变量设置,支持任意 ID 和标签。 - Agent 模型不再受限于官方列表,任何字符串均可接受。
- 自动压缩窗口可针对每个模型独立设定,支持通配符
*。 - 压缩专用模型可单独指定,不指定则复用主会话模型。
- 官方 1M context 可通过
CLAUDE_CODE_DISABLE_1M_CONTEXT关闭,避免与自定义混淆。 - 每次
claude update后需重新 apply 补丁;补丁结构变动可能导致失效,需查看 status 或错误报告。 - 失效时错误报告写入
~/.local/share/claude/patch-claude-last-error.md。 - 脚本纯社区分享,无密钥,免费,不涉及商业行为。
意义与影响
该 patch 脚本填补了 Claude Code 官方版本在模型、context window 灵活性上的空白,满足了高级用户(如开发者、AI 研究员、多模型对比用户)对精细控制的需求。通过环境变量即可实现数百个自定义模型的快速切换和窗口大小定制,大幅提升了 Claude Code 作为 AI 助手的可扩展性与实用性。同时,它展示了社区逆向工程和二进制修补在开源生态中的价值——在不依赖官方 API 变动的条件下,通过简单的字符串替换和 ad-hoc 签名,即可为用户提供官方尚未支持的高级功能。不过,该方法非官方、不保证稳定性,且每次官方更新均需手动维护,存在兼容性风险。长远看,该脚本也可能促使 Anthropic 官方考虑开放更多模型与 context 配置选项,从而更好地满足专业用户需求。
