你好,我是茂林,一个AI爱好者,最近一直在折腾OpenClaw/Hermes,踩过老多坑了。我把踩过的坑整理出来,帮你少走弯路。
我遇到的问题:
解决什么问题
当你用 OpenClaw 处理长任务,比如长篇小说创作、大型代码库重构,跑着跑着突然弹出 context too large 错误,任务直接中断。这是 OpenClaw 长任务最常见的问题,我给你提供五种不同层级的解决方法,从轻量到彻底解决。
原因分析
这个错误本质是:当前对话的总长度超过了你所用大模型的上下文窗口限制。模型一次性能处理的 token 数量有限,对话越长,累积的 token 越多,超出限制就会报错。
五种解决方法
方法一:最快 —— 清理当前会话,断点重启
最简单也最快速的解决方法:结束当前会话,用一句话总结已经做到哪一步,然后重启任务继续。
断点重启提示词(直接复制):
我们之前在做:<一句话描述任务,比如:给我的博客写一篇关于AI记忆的文章,已经写完了开头和痛点分析>
接下来请继续完成<具体要做的下一步>
适用场景: 任务已经接近尾声,只是偶然触发,不想做复杂配置。
方法二:内置 —— 使用 /compact 命令压缩上下文
OpenClaw 内置了上下文压缩命令,你只需要输入:
/compact
智能体会自动总结当前对话中的关键信息,把几千字压缩到几百字,释放上下文空间。
使用步骤:
- 遇到
context too large错误 - 输入
/compact回车 - 等待智能体完成压缩
- 继续你的任务
✅ 优点:内置命令,不用额外配置,一键压缩
⚠️ 注意:压缩会丢失部分细节,关键信息要提醒智能体保留
方法三:分层 —— 关键信息提前存入持久化记忆
把不常变的关键信息(项目结构、开发规范、用户偏好)提前存入 memory.md 或者用 memory 技能保存,不要让它们每次都占对话上下文空间。
操作示例:
# 存入记忆(只需做一次)
记住以下项目信息,永久保存:
我的项目放在 ~/work/api,使用 Go 1.22,sqlc 生成代码,chi 路由。
之后每次对话,这些信息自动加载,但不计入当前对话的上下文增长。
方法四:分片 —— 把大任务拆成多个小任务
如果你的任务真的很长(比如写一本小说、重构一个项目),不要一次性塞给智能体,主动拆分:
❌ 不好:一次性把 10 章小说需求全发过来
✅ 好:一章一章来,写完一章确认没问题再写下一章
每章完成后,新建会话写下一章,上下文永远不会溢出。
方法五:彻底解决 —— 换更大上下文的模型
如果你经常处理长任务,最彻底的方法就是换一个上下文窗口更大的模型:
| 模型 | 上下文窗口 | 适合场景 |
|---|---|---|
| GPT-3.5-turbo | 16K | 简单短任务 |
| GPT-4o | 128K | 中长任务 |
| GPT-4o Turbo | 200K+ | 超长任务 |
| Claude 3 Sonnet | 200K | 中长任务 |
| Claude 3 Opus | 200K+ | 超长任务 |
✅ 优点:一劳永逸,基本不用再担心溢出
❌ 缺点:API 成本会相应增加
方法选择推荐
| 情况 | 推荐方法 |
|---|---|
| 偶尔遇到一次 | 方法一(断点重启) |
| 任务还能继续 | 方法二(/compact 压缩) |
| 经常遇到 | 方法三+方法四(分层+分片) |
| 长期处理长任务 | 方法五(换大上下文模型) |
实战小贴士
- 预防大于修复:养成"做完一段小结一下"的习惯,主动帮智能体节省空间
- 不重要的细节别放上下文:日志、大段代码输出,完成后就可以压缩掉
- 多用持久化记忆:不变的信息存进去,一次保存多次使用