FanetheDivine/dsh-plugin-om ↗★ 2
dsh-plugin-om
DSH插件,以Observational Memory方式管理上下文 适合需要优化长会话上下文、通过观察和反思自动压缩Token用量的任务。
설치
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:FanetheDivine/dsh-plugin-om配置覆盖
编辑 $DSH_HOME/profiles/ /cordis.patch.yml,删除空数组并加入,可热更新:
- id: dsh-plugin-om
config:
observeThresholdTokens: 35000
插件配置项
| 键 | 默认 | 含义 |
|---|---|---|
observeThresholdTokens | 35000 | 净压力达到该值时触发观察压缩 |
reflectThresholdTokens | 40000 | 全部 `` 块 token 合计达到该值时触发反思合并 |
compressMaxTokens | 不设置 | 压缩循环单轮生成上限,不设置时由模型适配器默认值决定 |
compressProvider | 不设置 | 压缩请求的 provider,与 compressModel 成对配置才生效,只配置其一回落会话路由,成对配置后未路由会话也会执行压缩 |
compressModel | 不设置 | 压缩请求的模型,与 compressProvider 成对配置才生效 |
compressReasoningEffort | 不设置 | 压缩请求的思考等级,需为目标模型支持的等级,不设置时用模型默认;配置值不被目标模型支持时降级为模型默认并输出 reasoning-effort-unavailable 警告(每会话一次) |
rateLimitWaitMs | 60000 | 遇 429 限流后下一次压缩请求前的等待毫秒数,0 不限流 |
tailMessageCount | 20 | 观察触发后等待新增完整消息达到该条数才执行压缩,0 表示触发当轮立即执行 |
compressSkipReasoning | true | 工具循环 getHistory 输出是否携带 `` 参考条目,true 时不携带,压缩指令同步省略对应说明 |
modelDir | 共享目录 | recall-semantic 嵌入模型目录,默认 $DSH_HOME/plugin-data/dsh-plugin-om/models/,onnx 缺失且启用语义召回时运行时自动下载 |
omEnabled | true | 是否启用自动压缩,关闭后 recall 工具不受影响 |
debug | dev | 步骤级日志开关,缺省按 NODE_ENV 非 production 判定,压缩结果与失败日志始终输出 |
recallEnabled | true | 是否注册 recall 工具 |
semanticRecallEnabled | true | 是否注册 recall-semantic 工具,关闭时不触发模型下载 |
检测到未压缩消息到达观察阈值后,插件会等待至少 tailMessageCount 后再压缩之前的消息,因此这个配置可以影响首次压缩的时机,也可以保留更多的会话信息。
合理设置 observeThresholdTokens 和 compressSkipReasoning:
- 若模型 reasoning 输出质量差且会把关键结论以 text 形式输出(例如glm和deepseek),无需携带reasoning
- 若使用 openai/responses 或 anthropic/messages API,reasoning 内容包含大量决策信息,建议携带reasoning
- 若观察阈值太小,涵盖信息不足以形成逻辑链路,应当让观察阈值覆盖多个 text/reasoning
- 若观察阈值太大摘要质量也会降低,大幅增加单次观察的耗时,且越早 OM 收益越高
想直观理解机制并估算不同参数下的 token 成本,可打开交互式机制说明与成本计算器。