长会话随着对话的深入,每次步骤都会重发历史记录,导致上下文成本和会话日志无限制增长。同时,Web UI 需要渲染的历史节点也越来越多,导致交互变慢。dsh-optimize 作为 DeepSeek Harness 的长会话资源管理器,通过测量上下文增长、报告负载状态、提供自动压缩选项以及优化浏览器渲染,解决这些问题。
插件定位¶
这是一个由 aoripus 维护的 DSH 插件,用于监控和优化长对话会话的资源消耗。它不改变系统提示词、工具模式或请求前缀,只负责统计、告警和辅助压缩。
安装与启用¶
使用官方命令安装插件到指定 Profile:
dsh plugin --profile <profile> add dsh-optimize
配置¶
插件的默认配置已包含在打包补丁中,通常无需修改。如需覆盖,在 Profile 的补丁层文件中编辑:
~/.dsh/profiles/<profile>/cordis.patch.yml
- id: dsh-optimize
config:
warnTokens: 120000
criticalTokens: 300000
autoCompact: false
compactAtTokens: 200000
compactCooldownMs: 300000
verbose: false
配置项说明:
warnTokens(默认 120000):触发警告的请求权重阈值。criticalTokens(默认 300000):触发严重警告的请求权重阈值。autoCompact(默认 false):是否启用自动压缩。compactAtTokens(默认 200000):达到此权重时允许运行压缩。compactCooldownMs(默认 300000):两次自动压缩之间的最小间隔。verbose(默认 false):是否记录所有请求的测量数据,而不仅仅是跨越阈值的数据。
估算逻辑为:拉丁文本约 4 字符/Token,CJK 约 1.5 字符/Token。插件取上限进行比较,因此混合语言会话倾向于更早报告。
核心功能¶
1. 上下文负载测量¶
插件在每个 agent 或 pre-step 上测量发出的请求权重,包括消息数量、字符数和估算的 Token 范围。它还会读取 Harness 自身的 contextPressure 投影以获取权威的 Token 数值。
2. 会话状态记录¶
插件在 $DSH_HOME/storages/dsh-optimize/state.json 中为每个会话维护一条记录,包含请求历史、事件、最后及最大请求权重、投影 Token 数和压缩次数。
3. 自动压缩¶
通过 ctx.agentPresets.serviceFor(agent, 'compaction') 接口调用 Harness 的压缩引擎。
* 需要注意的是,压缩功能默认关闭。
* 压缩功能需要 Agent 处于空闲状态,否则请求会被拒绝并重试。
* 它决定何时压缩,而具体的摘要内容由 Harness 引擎决定。
4. 优化主机服务¶
插件提供了 optimize 主机服务,包含以下方法:
* snapshot(id):获取指定会话的快照。
* list():列出会话列表。
* flush():刷新数据。
5. 浏览器视图优化¶
在 Web UI 中,插件默认开启“Lite rendering”(精简渲染)模式。
* 通过 CSS 设置 content-visibility: auto 和 contain-intrinsic-size,浏览器会跳过滚动视口外节点的布局和绘制。
* React 仍然会正常协调节点,但不会导致页面卡顿。
* 点击 Composer 芯片或进入设置 -> 常规可以切换此模式。
* 开关状态持久化在 localStorage 的 dsh-optimize:lite 键下。
注意事项¶
- 权限与影响:插件以当前 DSH 进程权限运行。安装前请检查源码。
- 默认行为:自动压缩默认关闭,以避免改变模型实际接收到的上下文。
- 渲染机制:Lite 渲染不会隐藏 DOM 节点,所有节点依然存在且可访问,仅优化渲染性能。
- 日志隔离:插件不写入会话事件或触碰会话日志文件。
总结¶
dsh-optimize 专注于让长会话的代价变得可见。通过精确的测量和可选的自动化控制,它帮助开发者管理资源消耗;通过浏览器端优化,它提升了长对话界面的流畅度。更多细节可查阅插件目录或源码仓库。