dsh-shake:DeepSeek Harness 手动上下文减重插件

前言

DeepSeek Harness(DSH)采用插件化架构,这为扩展功能提供了便利。但在实际使用中,随着对话轮次的增加,历史记录中冗长的工具输出、大型代码块或 XML 结构会迅速占用上下文窗口,导致 Token 消耗过高。

dsh-shake 是一个第三方 Host 插件,用于手动减少上下文使用。它通过将旧工具输出和大型代码/XML 块替换为短占位符来释放空间,并支持通过 shake_read 工具在需要时恢复原始文本。

核心功能

该插件主要提供以下能力:
* 占位符替换:自动识别并替换符合条件的历史文本为短占位符。
* 上下文保护:默认保护最近 4000 tokens 的历史记录,防止过早清理关键上下文。
* 内容恢复:通过 shake_read 工具读取被替换的原始文本片段。
* 灵活配置:可自定义清理阈值(如代码块最小长度)。

安装与启用

在安装前,请确保环境已初始化 DSH Web Profile。

  1. 确认 DSH 版本:
    dsh --version
  1. 安装插件:
    dsh plugin --profile web add dsh-shake@latest --ignore-scripts
  1. 检查配置输出,确认包含 dsh-shake。
  2. 重启 Web 服务使配置生效:
    dsh web

使用方法

插件的使用分为“调度清理”和“恢复文本”两个步骤。

调度清理

  1. 等待当前会话处于空闲状态。
  2. 在 Web 界面的消息输入框发送:
    /shake
  1. 系统确认后,清理请求已保存。此时不会立即调用模型,也不会立即减少上下文。
  2. 发送下一条正常消息。DSH 会在发送给模型请求之前,执行清理操作并替换 eligible 文本。

取消清理

如果需要取消当前待处理的清理请求:

/shake cancel

注意:取消只能针对未执行的请求,已执行的替换无法撤销。

清理范围

插件默认从最新的历史记录向前回溯,保护最近 4000 tokens。超过此边界的消息会被完整保留。

在此边界内,只有满足以下条件的内容才会被替换:

  • 工具结果:单个结果的总文本量需达到 1000 tokens 以上。
  • 助手回复:单个 fenced 代码块或 XML 块需达到 400 tokens 以上。

以下内容不会被清理:
* 用户、系统及开发者消息。
* 错误工具结果。
* 包含图片、思考(thinking)或非文本块的消息。
* 普通长段落文本。

配置参数

默认配置已能满足大部分需求。如需调整,在对应 Profile 的 cordis.patch.yml 中添加配置覆盖(不要添加第二个插件实例):

- id: dsh-shake
  config:
    protectedTokens: 4000          # 保护的最近历史 token 数
    toolTextMinTokens: 1000        # 工具结果清理的最小 token 数
    assistantBlockMinTokens: 400   # 代码块清理的最小 token 数
    readDefaultLimit: 2048         # shake_read 默认读取页大小(Unicode code points)
    readMaxLimit: 4096             # shake_read 最大读取页大小

重启 DSH 后配置生效。

读取原始文本

被替换的文本会保留一个包含 ref 的占位符。模型可以通过调用 shake_read 工具来获取原始内容。

工具参数:
* ref: 从占位符中复制的完整引用字符串。
* offset: 当前页的起始偏移量,从 0 开始。
* limit: 每页读取的字符数,最大不超过配置的 readMaxLimit。

响应字段:
* text: 当前页的文本内容。
* offset: 当前偏移量。
* totalLength: 片段总长度。
* nextOffset: 下一页的起始偏移量。
* done: 布尔值,表示是否读取完成。

注意:
* shake_read 只能读取实际被移除的片段。
* 偏移量和长度以 Unicode code points 计数,而非字节或 UTF-16 长度。
* 文件路径等非 ref 格式参数不被接受。

注意事项

  • 第三方插件:dsh-shake 由社区维护,非 DeepSeek 官方产品。
  • 无摘要生成:插件不生成摘要,也不删除原始日志,仅做占位符替换。
  • 执行时机:/shake 仅调度清理,实际替换发生在下一个模型请求前。
  • 权限限制:插件以当前 DSH 进程权限运行,建议安装前检查源码与许可证。

总结

dsh-shake 提供了一种灵活、可控的方式来管理长对话的上下文大小。对于需要保留特定长代码片段或工具日志,但又希望压缩历史记录的开发者来说,这是一个实用的工具。更多细节可参考 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜