尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

OpenHands 解决上下文窗口超限:3 种方法从手动压缩到 Condenser 调优

OpenHands 解决上下文窗口超限:3 种方法从手动压缩到 Condenser 调优 OpenHands 解决上下文窗口超限3 种方法从手动压缩到 Condenser 调优【免费下载链接】OpenHands OpenHands: AI-Driven Development项目地址: https://gitcode.com/GitHub_Trending/ope/OpenHands当input length and max_tokens exceed context limit这类报错蹦出来时对话基本就卡死了——模型拒收你最新发的消息。OpenHands 对此内置了三个可调的开关手动 compact context、默认 LLM condenser、以及 condenser 参数调优。这篇文章带你逐个走完看完你就能自己调不用翻源码。先说结论上下文窗口就像聊天记录的容量你的输入 历史消息 模型预期输出三块共用一个额度满了就报错不是某一条消息的问题。前端用量条有两档阈值70% 变黄、90% 变红超过 70% 后 Compact context 按钮会自动升格为主按钮提醒你动手。默认开着 LLM 总结器enable_default_condenser: true它能把较早的对话历史压成摘要而不是逐条删除。压缩不是删对话旧历史被替换为摘要省了多少 token 会在 toast 里以 before/after 数字告诉你。参数默认值含义警告阈值70%用量条变黄Compact 按钮变主按钮危险阈值90%用量条变红随时可能报错enable_default_condensertrue是否启用 LLM 总结压缩历史condenser_max_size空不限压缩后摘要保留的 token 上限跟着做第一步点 Compact context 手动止血 ⚡最直接的招在会话的用量面板里点 Compact context 按钮。它会向POST /api/conversations/{id}/condense发请求期间按钮转圈且不可再点完成后 toast 报出节省的 token 数。按钮与状态逻辑分别见 compact-context-button.tsx 和 use-compact-context-action.ts。第二步调 condenser 参数开启自动压缩手动只是止血长期方案是让 condenser 自动接管。前端默认配置长这样// src/services/settings.ts节选 export const DEFAULT_SETTINGS: Settings { // ... 省略 15 行 enable_default_condenser: true, condenser_max_size: 240, };在设置菜单进入Condenser 页面路由/settings/condenser见 settings-nav.tsx两个参数按需改condenser.enable_default_condenser总开关关掉后历史不再被自动摘要condenser.condenser_max_size摘要保留的 token 上限留空表示不限第三步看用量条验证生效阈值常量就两行改完参数拿它对照最直观// context-meter.tsx export const CONTEXT_FILL_WARNING_PERCENT 70; export const CONTEXT_FILL_DANGER_PERCENT 90;压缩成功后用量条应明显回落toast 里出现类似12,340 → 8,210的数字。没回落就看下面这个坑。踩坑 边界情况现象agent 正在跑点 Compact 没反应原因这是设计如此——agent 处于 RUNNING/LOADING 时按钮被禁用因为压缩会和正在执行的步骤抢状态。 解法等当前步骤跑完再点别硬等。现象用量条只显示 token 数没有百分比原因有些模型比如经 OpenRouter 接入的不上报上下文窗口大小代码里contextWindow 0时按未知处理避免显示误导性的x / 0。 解法没法调改盯 token 数增长趋势涨得比平时快就手动压一次。现象把condenser_max_size清空了以为压缩关了原因空值只代表摘要不设上限压不压缩由enable_default_condenser说了算。 解法想彻底关掉把enable_default_condenser改成false。想再深一层压缩完成后的事件类型condensation-event.ts 里的CondensationEvent前端如何等待压缩结束并算出节省量use-await-context-compaction.tsPython 侧 condenser 实现在 agent-server后端仓库不在本前端仓库想写自定义 condenser从那边的 condenser 模块入手前端只认 condense 接口和事件下次再看到exceed context limit的苗头70% 黄条出现时你就该点 Compact90% 之前基本不会再撞上这个报错。想跟进阈值或 condenser 行为的更新盯 usage-panel/ 目录和设置里的 Condenser 页就行。【免费下载链接】OpenHands OpenHands: AI-Driven Development项目地址: https://gitcode.com/GitHub_Trending/ope/OpenHands创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表