OpenHands 上下文超限自救指南:历史截断与压缩器怎么配才好用
OpenHands 上下文超限自救指南历史截断与压缩器怎么配才好用【免费下载链接】OpenHands OpenHands: AI-Driven Development项目地址: https://gitcode.com/GitHub_Trending/ope/OpenHandsOpenHands 与 Claude 3.7 这类长任务模型配合时最容易翻车的不是能力而是上下文窗口历史消息越堆越多直到某轮请求直接报错、会话中断。这篇文章从两条真实报错入手讲清楚 OpenHands 上下文限制的触发条件给出三步完成历史截断配置的方法再深入截断与压缩器condenser的底层工作方式最后提供拆分长任务和自定义压缩策略的扩展路径。一条报错背后的两条触发路径长对话跑着跑着突然停住控制台里通常是下面两种错误之一input length and max_tokens exceed context limit—— 本轮输入 预期输出的令牌总量超过窗口上限多发生在贴入长文档或模型回包很长的那一轮Conversation history longer than LLM context window limit—— 累积的历史消息本身已经装不下属于持续对话的必然结果。前一种偏单轮太重后一种偏历史太厚但根子都是上下文预算不够。OpenHands 为此在异常体系里单独定义了第二种错误并默认建议启用历史截断相关定义位于 exceptions.py截断开关等 Agent 参数则集中在 agent_config.py。三步启用历史截断确认开关打开。enable_history_truncation默认即为 true无需显式配置若你在配置里手动改过把它改回来即可。检查压缩器。同一处配置里的condenser决定截断时怎么删默认值NoOpCondenserConfig表示不做智能压缩、直接裁剪[agent] enable_history_truncation true condenser NoOpCondenserConfig观察是否生效。触发截断时后端会记录一条 Trimming prompt to meet context window limitations 的日志会话随后自动重试继续而不是把异常抛给你。整个改动不超过三行配置。真正值得花时间的是理解它背后发生了什么。截断机制深挖什么时候删、删什么核心逻辑在 agent_controller.py 中Agent 主循环捕获到上面那条输入超窗错误字符串后走错误模式匹配调用内部截断流程重新组装提示词再把请求发回去。也就是说超窗不是一次性失败而是删一删、再试一次的自恢复路径。删什么由压缩器决定模块位于 memory/condenser/接口定义在 abstract_condenser.py。默认策略遵循近优先原则最近几轮交互整段保留当前任务上下文不受影响早期对话交给压缩器处理可按策略摘要或丢弃历史中的代码块可以借助语法结构做更细粒度的取舍。可以把整个过程理解为一个带自动恢复的状态环注意最后一条分支如果关闭了enable_history_truncation超窗就直接抛出异常终止会话没有任何挽救机会。把超长任务拆出去截断是止损手段不是万能解。更稳妥的做法是从源头控制每段对话的体量用 microagents/tasks/ 下的任务定义把大目标拆成子任务每个子任务独立成会话通过 microagent.py 的任务委派机制让子 Agent 只拿到与本子任务相关的上下文拆分后各会话的历史互不干扰截断触发频率会明显下降摘要质量也更好。自定义压缩器与效果调优默认的 NoOp 压缩器只是删想要摘要式压缩可以自己实现。实现 abstract_condenser.py 里定义的压缩接口即可比如为 Claude 3.7 的窗口特征定制保留规则class ClaudeOptimizedCondenser(AbstractCondenser): def compress(self, history): return compressed_history # 近轮原样保留早期轮次摘要化验证效果建议跑 evaluation/benchmarks/ 里的基准脚本重点盯两个指标截断触发次数、拆分后的任务完成率。同时配合 config.template.toml 中各模型的max_tokens做平衡——输出上限留得越多留给历史的空间就越小。小结OpenHands 对上下文超限的处理链路是异常分类 → 开关判定 → 压缩器裁剪 → 自动重试默认配置已能兜住大多数场景。后续版本计划在压缩前引入对话趋势预测提前调整策略而不是等报错再救火值得持续关注 Development.md 的更新。【免费下载链接】OpenHands OpenHands: AI-Driven Development项目地址: https://gitcode.com/GitHub_Trending/ope/OpenHands创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

最新新闻

日新闻

周新闻

月新闻