如何防止长对话耗尽整个上下文窗口?

Reddit r/openclaw 工具

摘要

一位用户分享了一个自定义的插件SDK钩子,该钩子逐渐压缩较早的轮次,同时保留最近的轮次不压缩,以防止在长时间OpenClaw会话中上下文窗口耗尽,将重新发送的上下文减少了80%。

我一直在运行长达数小时的OpenClaw会话,上下文窗口填满是我的主要痛点。原生压缩机制启动较晚(接近阈值时),而且是全有或全无——一旦它进行总结,较早的细节就丢失了。我真正想要的是:在每一轮中*逐步*压缩,但保留最后几轮完全不压缩,这样代理就不会丢失它正在进行的线程。我最终编写了一个自定义的Plugin SDK钩子,放在before_prompt_build上,它可以将较早的轮次折叠成压缩的片段视图,同时逐字保留最后的轮次。在长时间会话中,它将重新发送的上下文减少了约80%,且没有让代理丢失对早期轮次的追踪。对于长时间运行会话的用户,有两个问题:1. 你依赖原生压缩,还是自己实现上下文管理?2. 有没有人找到合适的“保留N轮不压缩”的数字?我默认为4,但感觉这取决于工作负载。(如果有用,钩子在这里——MIT核心:https://github.com/compresh/compresh-mcp ——但我主要好奇其他人是如何处理这个问题的。)
查看原文

相似文章

不要轻信大上下文窗口

Hacker News Top

分析表明,LLM 声称的大上下文窗口具有误导性,因为有效注意力在约 10 万 token 时会下降。为开发者提供实用建议:通过使用工件(artifacts)和切换(handoffs)将会话保持在“智能区”。

你的 Openclaw 使用什么记忆?

Reddit r/openclaw

一位开发者讨论了使用 Engram 为 Hermes 代理构建自定义记忆插件,该插件将新信息与现有记忆进行协调,以避免过时和重复,并向 OpenClaw 社区询问他们记忆使用的情况。