如何调整 OpenClaude 长会话的消息数压缩阈值并控制 1000 条硬上限【免费下载链接】openclauderuns anywhere. uses anything项目地址: https://gitcode.com/GitHub_Trending/op/openclaudeOpenClaude 在长会话里会自动压缩compact对话历史除了按 token 用量触发压缩外还内置了一个 1000 条活跃消息的安全硬上限用来兜住那种“消息很多但 token 成本很低”的长会话。如果你经常恢复resume积累了数百条小型工具结果消息的会话默认的消息数阈值200可能触发得过于频繁或不够及时同时你也想确认 1000 条硬上限是否仍然生效、如何调整甚至临时关掉它做诊断。这篇文章覆盖三件事用/config调整消息数压缩阈值、用环境变量控制 1000 条硬上限以及如何验证当前生效的配置。先了解两层机制消息数阈值与 1000 条硬上限OpenClaude 的自动压缩有两层保护见 docs/advanced-setup.md 的 Message-Count Compaction Threshold 章节消息数压缩阈值默认200条活跃消息。这是“主动保护”可以在应用内调整。安全硬上限固定默认1000条活跃消息。它是一个安全网safety net即使设置了DISABLE_COMPACT、DISABLE_AUTO_COMPACT或关闭了 auto-compact 设置硬上限到达时仍会触发压缩。默认阈值200对应实现见 src/query.ts 的注释enforce the new effective 200-message default硬上限的默认值定义在 src/utils/maxActiveMessages.tsexport const DEFAULT_MAX_ACTIVE_MESSAGES_HARD_CAP 1000调整消息数压缩阈值/config在 OpenClaude 交互式会话内输入/config在设置列表中找到Message-count compaction项可选值为off、100、200、500、1000定义见 src/utils/config.ts。选择off表示禁用这个设置项的主动保护proactive guard。注意两点边界把阈值设为off不会关闭 1000 条硬上限——内置硬上限仍然存在如果你另外配置了OPENCLAUDE_MAX_ACTIVE_MESSAGES环境变量覆盖它在该设置未配置时仍然生效。该设置保存进全局配置~/.openclaude配置目录下的 settings 文件/config会直接写入例如~/.openclaude/settings.json。控制 1000 条硬上限环境变量硬上限通过环境变量OPENCLAUDE_MAX_ACTIVE_MESSAGES_HARD_CAP覆盖在启动 OpenClaude 前导出export OPENCLAUDE_MAX_ACTIVE_MESSAGES_HARD_CAP1500 # 示例把安全网上调 openclaude取值规则来自 src/utils/maxActiveMessages.ts不设置时使用默认值1000设为0表示禁用安全网。文档明确建议只在诊断时这样做set it to0only for diagnostics设置为非法值如not-a-number或0以外的无效数值时回落到默认1000——这一点在 scripts/system-check.ts 的报告文案中有体现malformed overrides fall back to 1000。消息数阈值与硬上限如何共同生效实际生效的活跃消息上限是“消息数阈值”与“硬上限”中较小的那个见 src/utils/maxActiveMessages.ts 的resolveMaxActiveMessagesLimit两个值都大于 0 时取Math.min(阈值, 硬上限)。因此把/config阈值调到1000、硬上限保持默认1000时活跃消息上限就是1000把阈值调到500时即使硬上限放宽到1500主动保护仍在500条触发。旧版变量 OPENCLAUDE_MAX_ACTIVE_MESSAGES 的优先级如果你还在用旧的OPENCLAUDE_MAX_ACTIVE_MESSAGES环境变量规则是该变量仅在/config设置未设置或为off时生效/config中的显式数值设置优先于这个旧变量OPENCLAUDE_MAX_ACTIVE_MESSAGES_HARD_CAP仍可覆盖安全网0仅用于诊断。验证当前生效的阈值与硬上限如果你是从源码构建运行 OpenClaudeBun 环境可以直接跑系统检查命令查看生效配置bun run doctor:runtime它会输出 auto-compact 守卫的当前状态。文档示例docs/advanced-setup.md Runtime Hardening 一节给出命令输出文案来自 scripts/system-check.test.ts 中的示例结果仅作示例具体数值以你的实际配置为准Enabled; message-count threshold 200; hard cap 1000. Active at 1000 messages (default; malformed overrides fall back to 1000).如果显式设置了OPENCLAUDE_MAX_ACTIVE_MESSAGES500报告会相应变为message-count threshold 500如果设置了OPENCLAUDE_MAX_ACTIVE_MESSAGES_HARD_CAP0报告会显示Disabled by OPENCLAUDE_MAX_ACTIVE_MESSAGES_HARD_CAP0; long sessions can grow without the active-message safety cap.对于 npm 全局安装的 CLI验证路径是进入会话后再次打开/config确认Message-count compaction一栏显示你刚选择的值环境变量覆盖在启动前已导出属于进程级生效无需额外检查命令。修改压缩逻辑后的回归检查如果你是开发/维护者改动触及 auto-compact、provider 请求转换、transcript 保留或进程内 teammates 时文档给出了聚焦的长会话守卫测试命令bun test --featureUNATTENDED_RETRY src/query/autoCompactCooldown.test.ts src/utils/maxActiveMessages.test.ts src/services/api/openaiShim.test.ts这些测试覆盖“反复超过上限的回合、auto-compact 冷却阻塞、teammate 活跃消息压缩、非法硬上限覆盖、以及裁剪历史中的 tool-call/tool-result 配对”。文档明确说明这些测试不能替代数小时的手动 soak 测试但它们固定了此前导致长会话一直增长直到 Node/V8 OOM 的有界历史与转换不变量。限制与边界OPENCLAUDE_MAX_ACTIVE_MESSAGES_HARD_CAP0会取消活跃消息安全网长会话可以在没有这个上限的情况下持续增长——只在你明确知道自己在做什么诊断时这样做阈值选项目前只有off、100、200、500、1000五个离散值不支持任意数字任意数值只能通过OPENCLAUDE_MAX_ACTIVE_MESSAGES旧变量正整数非法值按未配置处理提供硬上限是安全网它可以在DISABLE_COMPACT、DISABLE_AUTO_COMPACT或 auto-compact 设置被关闭时仍然触发压缩这不是 bug是设计行为。【免费下载链接】openclauderuns anywhere. uses anything项目地址: https://gitcode.com/GitHub_Trending/op/openclaude创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考