OpenClaw 上下文控制机制:Context Window、Compaction 与 Pruning 的配置与验证
1. OpenClaw 长会话上下文溢出context_length_exceeded 报错到底怎么来的如果你用 OpenClaw 跑过稍微长一点的会话尤其是那种带一堆工具调用、还挂了几个 Skill 的场景大概率见过下面这几种报错Error: context_length_exceeded Error: maximum context length is 32768 tokens, but input is 41230 tokens Error: model crashed / model reload第一次看到的时候我也懵明明对话才几十轮怎么 token 就爆了。后来把/context detail打开一看才明白真正吃 token 的根本不是聊天记录而是工具 schema、Skill 列表、workspace 文件注入这些东西。它们平时看不见但每次请求都会重新拼进 prompt 里。OpenClaw 的 Context 控制机制核心就是三条线contextWindow 定硬上限、compaction 压缩历史、contextPruning 裁剪缓存。这篇就围绕这三条线把配置片段和验证动作都写清楚你在本地能直接复现。先说清楚 Context 是什么。OpenClaw 本质上是每次请求重新构建一个完整 prompt这个 prompt 包含System prompt系统提示词Conversation history对话历史Tool calls tool results工具调用和返回Attachments / transcripts附件、转录Compaction summaries 和 pruning artifacts压缩摘要、裁剪产物Provider 的隐藏 wrapper不可见但计入注意最后一条很多 provider 会在请求里塞一些你看不到的包装内容它们照样占 token。所以 Context ≠ memorymemory 是磁盘上的东西可以重新加载Context 是这一次请求实际发出去的全部内容。适合谁看这篇本地跑 OpenClaw、接了 LM Studio / Ollama 这类本地推理服务、或者用云端模型但会话一长就崩的人。下面所有配置都基于openclaw.json路径和字段名跟官方文档保持一致。2. TaoToken 前置准备给 OpenClaw 配一个稳定的模型入口在动 Context 配置之前得先保证模型入口是通的。我本地测试的时候模型侧用的是 TaoToken 的 API原因是它的 Base URL 和 OpenAI 兼容格式一致OpenClaw 里api: openai-completions直接就能对接不用改协议。你需要准备三样东西Base URL、API Key、Model ID。这三件套在 OpenClaw 的 provider 配置里缺一不可。Base URL 填https://taotoken.net/api注意这里不加任何 UTM 参数就是纯 API 地址。API Key 去控制台生成路径是 API Keys 管理页生成后复制出来别截图存微信直接贴进配置文件。Model ID 这块要注意OpenClaw 的models[].id必须和 provider 侧实际可用的模型名一致写错了会在请求阶段直接 404 或者 model not found。你可以先在 模型对话页 里手动发一条消息确认模型能正常返回再去配 OpenClaw。如果你打算长期跑编码类 Agent 任务会话轮次多、工具调用密集建议直接上 Coding Plan额度模型对长会话更友好不会跑一半因为配额问题中断导致 compaction 做到一半失败。配好之后OpenClaw 的 provider 段落大概长这样先别急着加 compaction我们一步步来{ models: { mode: merge, providers: { taotoken: { baseUrl: https://taotoken.net/api, apiKey: YOUR_TAOTOKEN_API_KEY, api: openai-completions, models: [ { id: YOUR_MODEL_ID, name: TaoToken Model, contextWindow: 128000, maxTokens: 4096 } ] } } } }这里contextWindow先填 128000 是假设你用的模型支持这个长度。但如果你本地是 LM Studio 或者 Ollama实际 KV Cache 只开了 8k这里填 128000 就会直接崩下一节详细说这个坑。3. openclaw.json 可复制配置contextWindow、compaction、contextPruning 三件套这一节是核心直接给可复制的配置片段。先说清楚 OpenClaw 能做什么、不能做什么避免你抱错期望。OpenClaw不能精确控制 prompt 拼接不能只保留最近 n 条消息也不能指定只发送部分历史。因为 Context 构建是在 Gateway runtime 内部完成的不是简单 config 能干预的。OpenClaw能做的是间接控制限制 contextWindow、限制 contextTokens 总预算、触发 compaction 压缩、用 contextPruning 删缓存。这四件事组合起来就能把上下文控制在安全范围内。3.1 contextWindow硬上限必须和推理服务对齐models.providers.*.models[].contextWindow这个参数本质是告诉 OpenClaw这个模型最多能吃多少 token。关键点它必须小于等于模型实际支持的最大上下文长度。本地推理最容易踩的坑就在这。比如你在 LM Studio 里加载模型时n_ctx设的是 8192但openclaw.json里contextWindow写了 128000OpenClaw 就会按 128000 去拼 prompt结果发过去直接超出后端 KV Cache模型崩溃或者 reload。所以第一步永远是确认后端实际上下文大小然后把这个值填进contextWindow。contextWindow: 8192如果你用的是云端模型比如通过 TaoToken 接入的模型就填模型官方标称的上下文长度比如 128000 或 200000。填之前去 接入文档 确认一下当前模型的上下文规格别凭记忆填。3.2 contextTokensAgent 层的软预算agents.defaults.contextTokens是 Agent 输入上下文的总预算。它和 contextWindow 的区别是contextWindow 是模型能力上限contextTokens 是你主动设的安全线。建议设成 contextWindow 的 75% 到 85%。为什么留这么多因为系统提示词、工具 schema、Skill 列表这些隐形内容也要占空间你按 100% 设实际请求一拼就超。contextTokens: 6000上面这个 6000 是配合 8192 的 contextWindow 用的留了约 27% 的缓冲。如果你 contextWindow 是 128000contextTokens 可以设 100000 左右。超过 contextTokens 会触发 compaction 或 pruning所以它本质是提前刹车不是减少内容。3.3 compaction压缩历史防止无限增长agents.defaults.compaction是主动管理机制。核心参数是reserveTokensFloor定义触发压缩的剩余空间阈值。当上下文剩余空间小于这个值时自动把旧对话总结成摘要条目释放空间。compaction: { reserveTokensFloor: 2000, memoryFlush: { enabled: true, softThresholdTokens: 12000, systemPrompt: Session context is filling up. Please archive important information to memory files., prompt: Write key information to memory/YYYY-MM-DD.md; reply with NO_REPLY if nothing to store. } }工作机制是这样的上下文增长 → 剩余空间到softThresholdTokens→ 触发 memoryFlush模型把关键信息写进 memory 文件 → 继续增长 → 剩余空间到reserveTokensFloor→ 触发 compaction压缩旧对话 → 空间释放。注意softThresholdTokens必须大于reserveTokensFloor一般高出 10000 左右。上面例子里 soft 是 12000floor 是 2000差 10000符合建议。reserveTokensFloor建议设成 contextTokens 的 15% 到 20%或者至少保留 2000 到 4000 token。设太小会导致压缩操作本身没空间执行出现压缩失败 → 崩溃的循环。3.4 contextPruning裁剪工具缓存contextPruning用来删除 tool results 或大输出缓存不影响核心对话历史。配置很简单contextPruning: { mode: cache-ttl, ttl: 30m }mode: cache-ttl表示按 TTL 过期清理ttl: 30m是 30 分钟。工具返回的大块内容比如读了一个大文件、跑了一次长命令30 分钟后就从上下文里清掉但对话历史保留。3.5 bootstrapMaxChars控制文件注入大小agents.defaults.bootstrapMaxChars默认 20000 字符控制 workspace 文件注入时的截断阈值。OpenClaw 默认会注入这些文件如果存在AGENTS.md、SOUL.md、TOOLS.md、IDENTITY.md、USER.md、HEARTBEAT.md、BOOTSTRAP.md仅首次运行。这些文件如果写得很大注入时就会吃掉大量 token。用/context命令能看到原始大小 vs 注入大小以及是否发生截断。bootstrapMaxChars: 20000如果你发现 workspace 文件注入占比很高要么精简文件内容要么调小这个值。3.6 完整配置示例把上面几块拼起来一个带三层防护的openclaw.json大概是这样{ models: { mode: merge, providers: { taotoken: { baseUrl: https://taotoken.net/api, apiKey: YOUR_TAOTOKEN_API_KEY, api: openai-completions, models: [ { id: YOUR_MODEL_ID, name: TaoToken Model, contextWindow: 128000, maxTokens: 4096 } ] } } }, agents: { defaults: { model: { primary: taotoken/YOUR_MODEL_ID }, workspace: ~/.openclaw/workspace, contextTokens: 100000, bootstrapMaxChars: 20000, compaction: { reserveTokensFloor: 16000, memoryFlush: { enabled: true, softThresholdTokens: 26000, systemPrompt: Session context is filling up. Please archive important information to memory files., prompt: Write key information to memory/YYYY-MM-DD.md; reply with NO_REPLY if nothing to store. } }, contextPruning: { mode: cache-ttl, ttl: 30m }, subagents: { maxConcurrent: 2, model: taotoken/YOUR_MODEL_ID } } }, session: { maintenance: { mode: warn, pruneAfter: 30d, maxEntries: 500 } } }注意session.maintenance.mode从enforce改成warnpruneAfter从 7d 放宽到 30d。原因是磁盘上的会话文件清理交给 compaction 处理更合理过早删文件反而丢历史。4. 验证请求与成功结果用 /context 和 /usage 确认机制生效配置写完不算完得验证。OpenClaw 提供了几个诊断命令我平时用这几个/status # 当前上下文占用 /context list # 谁在占空间 /context detail # 精细分析分解最大的工具 schema /usage tokens # 正常回复后附加每次回复的 token 使用量推荐流程是/context list找最大项然后针对性优化。4.1 观察窗口占用先跑/status看当前上下文占了多少。然后跑/context list它会列出各个来源的占用比如 system prompt、conversation、tool schemas、skills、workspace files。我第一次跑的时候发现 tool schemas 占了将近 40%比我预想的高很多。因为每个工具的 JSON schema 都要发给模型工具越多这块越大。4.2 触发压缩阈值想验证 compaction 是否生效可以故意把contextTokens设小一点比如设成 3000然后连续对话几轮观察是否触发压缩。触发时你会看到类似日志[compaction] reserve tokens below floor, starting compaction [compaction] summarized 12 messages into 1 summary entry [memoryFlush] archived key info to memory/2025-01-15.md如果没看到检查reserveTokensFloor是不是设得比实际剩余空间还小那样永远不会触发。4.3 裁剪前后行为对比验证 contextPruning可以跑一个返回大输出的工具比如读一个大文件然后等 TTL 过期上面配的是 30m测试时可以临时改成 1m再跑/context list看 tool results 那块是不是变小了。对比前后两次/context detail的输出能明显看到大输出缓存被清掉但对话历史还在。4.4 成功结果长什么样配置正确、机制生效的情况下长会话跑下来应该是这样/status显示的占用稳定在 contextTokens 以下不会无限增长触发 compaction 后占用明显下降对话能继续不再出现 context_length_exceeded 报错模型不会因为上下文超限崩溃或 reload如果这几点都满足说明三层防护都起作用了。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth配置过程中最容易撞的几个报错逐个说。5.1 401 UnauthorizedError: 401 Unauthorized这个基本就是 API Key 问题。检查apiKey字段是不是填对了有没有多余空格是不是复制的时候漏了字符。如果用的是 TaoToken去 API Keys 页 重新生成一个贴进去再试。还有一种情况是 Base URL 写错了比如多加了斜杠或者少了/v1。TaoToken 的 Base URL 是https://taotoken.net/apiOpenClaw 会自动补全路径别自己加/v1。5.2 local proxy failedError: local proxy failed这个通常出现在本地推理服务没启动或者端口不对。检查baseUrl里的端口比如http://127.0.0.1:1234/v1确认 LM Studio 或 Ollama 确实在 1234 端口监听。如果本地服务正常但 OpenClaw 还是报这个检查是不是防火墙拦了本地回环请求。5.3 reading choices 报错Error: reading choices这个一般是 provider 返回的响应格式和 OpenClaw 预期的不一致。常见原因是api字段填错了比如填了openai-completions但实际服务返回的是另一种格式。确认api字段和 provider 实际协议匹配。TaoToken 用openai-completions就行。5.4 OAuth 相关报错Error: OAuth token expired Error: OAuth flow failed如果你用的是需要 OAuth 的 providertoken 过期会报这个。重新走一遍授权流程或者换成 API Key 方式接入。5.5 上下文还是溢出如果配置都对了还是溢出按这个优先级排查先看/context detail找最大的项如果是 tool schemas 占大头减少工具数量或者禁用不用的工具如果是 workspace 文件注入占大头精简文件或调小bootstrapMaxChars确认 compaction 真的触发了看日志有没有[compaction]输出确认contextWindow和后端实际上下文一致这是最常见的坑优化优先级建议减少 Tool schemas → 控制 workspace 文件注入 → 开启 compaction → 设置合适的 contextWindow 和 contextTokens → 最后才是 pruning。6. 把 Context 控制跑通之后几个实用技巧配置跑通之后有几个我平时用的技巧。第一/context detail要养成习惯定期跑。工具 schema 的占用会随着你装新工具变化隔一段时间看一眼能提前发现膨胀。第二compaction 的reserveTokensFloor别设太小。我试过设 500结果压缩操作本身没空间执行直接崩。后来改成 contextTokens 的 15%稳定多了。第三memoryFlush 的softThresholdTokens和reserveTokensFloor的差值保持在 10000 左右。差值太小memory 还没写完就触发压缩差值太大memory 写入太早浪费空间。第四本地推理的contextWindow一定要和后端n_ctx对齐。这个坑我踩过不止一次症状是模型跑着跑着突然 reload日志里啥也没有就是上下文超了后端 KV Cache。第五如果你要长期跑 Agent 任务会话轮次多建议用 Coding Plan避免跑到一半配额不够compaction 做到一半中断反而丢历史。最后所有配置改完记得重启 OpenClaw Gatewayopenclaw.json不是热加载的。重启后先跑/status确认配置生效再开始长会话测试。

相关新闻

Codex CLI 的 Responses 与 Chat Completions 怎么选?现在已经不是二选一

Codex CLI 的 Responses 与 Chat Completions 怎么选?现在已经不是二选一

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 18:52:04 阅读更多 →
自研机器视觉框架源码:六大场景落地与模块设计全解析

自研机器视觉框架源码:六大场景落地与模块设计全解析

1. 为什么我最终选择自研一套机器视觉框架源码在设备集成这个行当里待久了,你会发现一个很扎心的事实:像AOI视觉检测、机械手定位、点胶机引导、插件机对位、激光切割机找靶、视觉螺丝机锁付这些设备,名字听着千差万别,可一旦拆到…

2026/10/18 18:51:03 阅读更多 →
goose desktop捣乱鹅完整说明:config.ini 与 Assets 目录结构拆解

goose desktop捣乱鹅完整说明:config.ini 与 Assets 目录结构拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 18:51:03 阅读更多 →

最新新闻

增量索引实战:新文档怎么做到分钟级可检索

增量索引实战:新文档怎么做到分钟级可检索

个人主页&#xff1a;> for_ever_love__ <&#xff08;欢迎各位大佬莅临&#x1f60a;&#xff09; 其他栏目: > 大模型开发从0到1 < 其他栏目: > iOS项目总结大全 < 其他栏目: > 我想学python了 < 其他栏目: > iOS UI < 文章目录增量索引实战&a…

2026/10/18 21:45:10 阅读更多 →
Python多模态情感分析实战:CCA对齐+门控融合工程实现

Python多模态情感分析实战:CCA对齐+门控融合工程实现

简介&#xff1a;本资源是一套完整的多模态融合情感分析实战项目&#xff0c;面向计算机专业本科生及人工智能初学者&#xff0c;聚焦文本、语音、图像、视频四模态数据的情感联合建模与分析&#xff0c;适用于毕业设计、期末大作业及课程设计等高要求实践场景。压缩包共20个文…

2026/10/18 21:45:10 阅读更多 →
Onyx开源企业搜索深度解析:RAG与知识管理实践

Onyx开源企业搜索深度解析:RAG与知识管理实践

1. 为什么需要 Onyx&#xff1a;企业知识检索的三个死结1.1 知识分散&#xff1a;搜索引擎覆盖不到的角落先说我见过最多的场景。一个几十人的团队&#xff0c;文档其实不少&#xff1a;Wiki 里躺着架构设计、聊天工具里埋着半年前的决策、在线文档里散落着各种会议纪要和排期表…

2026/10/18 21:45:10 阅读更多 →
国产大模型对比:文心、豆包、通义...哪家最好?基于最公允大模型排行榜细致整理

国产大模型对比:文心、豆包、通义...哪家最好?基于最公允大模型排行榜细致整理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 21:45:10 阅读更多 →
协同过滤电影推荐系统毕设:Python实现核心算法与工程避坑全解析

协同过滤电影推荐系统毕设:Python实现核心算法与工程避坑全解析

简介&#xff1a;基于协同过滤推荐算法的电影推荐系统Python毕业设计项目&#xff0c;面向计算机相关专业毕业生、课程设计及期末大作业学生&#xff0c;也适合有Python基础、希望实战推荐系统开发的进阶学习者。整包共2000个文件&#xff0c;以py源码、html页面、css样式、js脚…

2026/10/18 21:45:10 阅读更多 →
大模型工具使用与函数调用:从原理到落地的完整指南

大模型工具使用与函数调用:从原理到落地的完整指南

1. 从"能聊天"到"能干活"&#xff1a;工具使用与函数调用到底在解决什么问题大模型刚火起来那阵子&#xff0c;大家最直观的体验就是"能聊"。你问它答&#xff0c;写诗写文案写代码&#xff0c;样样都行。但真把它扔进一个实际业务里&#xff0c…

2026/10/18 21:44:10 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →