DSH 智能体在长对话场景中常面临上下文窗口限制或 API 调用成本的问题。dsh-force-compact 通过在本地 llama.cpp 上运行 Qwen3.8‑27B,并在对话历史本身上执行压缩逻辑,在保持常驻 Prompt 小而快的同时,提供“大窗口”的体验。
核心定位¶
这是一个 DSH Cordis 插件,旨在通过“收缩历史”而非单纯依赖超大上下文窗口来维持智能体运行。它默认运行在本地环境,数据不出本机,无 API 成本。
工作机制¶
插件在 resolveCompaction 这一单一接口下提供双引擎支持,自动切换:
- 官方引擎:当
compaction服务在智能体域中可解析时优先使用,委托给compaction/basic。 - 内置引擎:作为回退方案。当官方服务不可用(如标准预设隔离了该服务)时接管。它直接操作
ctx.sessions/ctx.llm.stream/ctx.tokenMeter,复用官方的事件词汇,确保安全回放。
触发机制¶
压缩通过以下路径触发:
- 请求前守卫 (
agent/pre-step):读取会话的projectedTokens(即 UI 右下角显示的数字)。当达到autoThresholdTokens时,拒绝当前请求,转而执行压缩,保留最新的retainLatestTokens。低于阈值则放行。 - 回合结束/空闲 (
agent/status→idle):智能体静止时,通过compactNow触发压缩(需开启turnEndForceCompactionEnabled)。 - 手动命令 (
/force-compact):仅在空闲时立即压缩;若智能体忙碌,则设置本地标志,在下一模型步执行。 - 会话刷新 (
session/flush):在持久化检查点触发压缩。
所有路径最终都汇入“压缩结果写入会话”这一边界,并触发 LiveUI 状态更新。
思考控制¶
默认设置 disableThinking: true,该控制仅对压缩调用生效。
- 压缩调用:携带
reasoningEffort:'off'(或 llama.cpp 的reasoning_effort:"none"),强制关闭思考。 - 其他请求:机器的
LlmCallConfig保持不变,不受影响。 - 兼容性:如果模型不支持
off级别,插件会探测路由能力并自动降级到最低支持的级别(如low),而非直接报错。对于完全不支持推理的模型,则不添加该字段。
LiveUI 状态¶
插件通过 LiveUI 发送实时状态文本:
* [强制压缩中>>>]:压缩提交前。
* [压缩完成!]:压缩完成后。
依赖与安装¶
插件作为 DSH Cordis 插件运行,需满足以下 peer 依赖:
{
"@deepseek-ai/cordis": ">=4.0.4",
"@deepseek-ai/dsh-agent": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-compaction": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-commands": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-client-store": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-client-ui-primitives": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-client-ui-settings": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-client-locale": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-llm": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-session": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-session-projection": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-settings": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-token-meter": ">=0.2.0-rc.1",
"@deepseek-ai/schemastery": ">=3.18.4"
}
注:安装方式通常通过包管理器或 DSH 插件机制,具体需参考该插件在 package.json 中的 exports 与 files 字段(包含 index.js、src/、web/、cordis.patch.yml 等)。
适用场景¶
适合需要在本地运行大模型、对上下文窗口敏感且希望零 API 成本的场景。由于插件运行在当前 DSH 进程权限下,安装前建议检查源码与许可证。