公司动态
OpenHands 长对话突然中断?上下文超限 3 步自救指南
OpenHands 长对话突然中断上下文超限 3 步自救指南【免费下载链接】OpenHands OpenHands: AI-Driven Development项目地址: https://gitcode.com/GitHub_Trending/ope/OpenHands你正让 OpenHands 分析一份超长日志它已经连改十几个文件回复却戛然而止——报错里赫然写着上下文超出模型窗口。别慌这不是你操作的问题而是模型的短期记忆被塞爆了。OpenHands 内置了上下文压缩condenser压缩器和一键 Compact context 按钮就是专门对付这个场景的。先跑起来3 步让长对话不断档第 1 步找到用量面板。打开任意会话在用量面板里找到上下文进度条它实时显示当前占用 / 模型总窗口两个数字就像车上的油表。第 2 步确认压缩已开启。进入设置的 Condenser 分区看condenser.enabled是否为开默认开。它决定系统能不能自动给历史瘦身。第 3 步提前手动压缩。进度条到 70% 变黄时顺手点一下Compact context。服务端会把旧对话压成摘要弹个提示告诉你省了多少 token。后端配置里还有一道总开关config.template.toml中保持默认即可[agent] enable_history_truncation true # 默认开历史太长时自动修剪它到底怎么工作三层防线把上下文窗口想象成一块固定大小的白板模型每说一句话、每读一个文件都在上面写字写满了它就断片。OpenHands 给这块白板配了三层管理油表实时计量前端持续读取每轮对话的 token 用量算出占窗口的百分比。70% 是黄色警戒线90% 是红色危险线越线后 Compact context 按钮会升级成醒目的主按钮催你赶紧压缩。逻辑在 上下文用量 Hook 里。书记员自动压缩器它按新的原文保留、旧的浓缩成摘要的原则重排白板——最新几轮对话照抄早先的过程压成几行要点文件内容、代码改动这类硬事实优先留住重复的中间步骤优先牺牲。兜底服务端修剪就算你忘了点按钮agent-server 收到输入长度超限类报错时会自己截断提示词再重试而不是把错误直接甩给你。手动压缩走POST /api/conversations/{id}/condense接口封装在 会话服务 里。整条链路一句话走通正常聊天 → 用量越过 70% → 界面变黄催促 → 点压缩或自动压缩→ 白板腾出一半 → 对话继续。进阶调优3 个方向1. 调小condenser.max_size让压缩更早发生。默认阈值偏保守时长会话会在 80%~90% 区间反复横跳。把阈值调小等于让书记员勤快一点牺牲一点摘要精度换更稳的续航。2. 按任务长短选窗口大小不同的模型。上下文窗口是模型的硬指标8K 和 200K 窗口的模型能连续干活的时长差一个数量级。长任务上大窗口短问答用便宜的小窗口成本可控。3. 在阶段交接点主动压缩。 重构完成、测试跑完这种节点最划算——旧信息已经沉淀成文件改动压缩几乎不损失有效信息。注意 agent 正在跑任务时按钮是置灰的会和服务端抢状态等它停下来再点。你大概率会问压缩后前面的对话会丢吗细节变摘要结论不丢。文件改动、代码 diff、最终方案这些硬结果会被保留被概括的只是过程性对话。想留全量记录压缩前先导出会话。为什么 Compact context 按钮点不了agent 处于运行或加载状态时按钮会被禁用——压缩和活跃步骤同时发生会互相干扰。等当前任务结束或暂停再点就行。进度条到 90% 变红是不是马上要报错⚠️ 变红是预警不是判决。服务端还有自动截断兜底通常能再撑几轮但建议立刻手动压缩别赌兜底。把 condenser 开着、盯着油表在 90% 之前点一次 Compact context你的超长任务就能一路跑到收尾而不是干到一半集体失忆。【免费下载链接】OpenHands OpenHands: AI-Driven Development项目地址: https://gitcode.com/GitHub_Trending/ope/OpenHands创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考