前言¶
在 DeepSeek Harness (DSH) 的插件化架构中,当工具(如网页抓取)返回过大的结果时,往往会直接消耗掉对话上下文窗口,导致任务中断。dsh-result-cap 作为一个模型推理类插件,解决的是单条工具结果的长度控制问题。它不管理整体上下文窗口,而是对单次工具返回进行确定性截断。
什么是 dsh-result-cap¶
这是一个由 jwilson411 维护的插件,核心是对工具结果进行确定性 UTF-8 字节限制。它保留结果的前 N 个字节,同时返回完整原始内容的 SHA256 哈希值,确保截断后的结果能被识别为非完整内容。
核心功能¶
该插件提供以下功能:
- 确定性截断:按 UTF-8 字节对结果进行截断,保留前 N 个字节。
- 明确标记:返回
truncated布尔标志和omitted_bytes(被丢弃的字节数)。 - 完整哈希:返回完整原始内容的 SHA256 哈希值,而非截断后内容的哈希。
- 配置与优先级:支持配置
maxBytes(默认 8192),支持通过环境变量DSH_RESULT_CAP_MAX_BYTES设置。配置优先级为:配置文件 > 环境变量 > 默认值。 - 直接调用:支持直接使用
capResult函数进行单元测试。 - 类型限制:当前版本仅限制字符串类型(
text字段),不处理 Buffer 或图片。
安装与启用¶
安装插件需要 @deepseek-ai/dsh-tools 依赖。
- 安装:
dsh plugin --profile default add github:jwilson411/dsh-result-cap
- 配置:
- id: result-cap
config:
maxBytes: 32000
典型用法¶
在代码中可以直接使用 capResult 函数进行测试:
import { capResult } from 'dsh-result-cap'
capResult('short enough', 8192)
// → 'short enough' (未截断)
capResult('x'.repeat(20000), 8192)
// → { text: 'xxxx…', truncated: true, omitted_bytes: 11808, sha256: '…' }
适用场景与注意¶
- 适用场景:当工具返回的内容远超上下文窗口时,作为最后一道防线,只保留头部内容并标记截断,防止整个任务因单条结果过大而中断。
- 注意:
- 它不是 Headroom、压缩模型、语义压缩或总结器,只是简单的字节切片。
- 当前版本 v1 仅支持字符串类型,不支持 Buffer 或图片。
- 配置时,
id-targeted patch会替换整个config块,不能合并。 - 不静默截断,必须返回
truncated: true标志。 - 配置参数必须为整数且至少为 1。无效值(如浮点数、负数、布尔值或未知键)会被拒绝,抛出
InvalidResultCapConfigError(代码RESULT_CAP_CONFIG)。
结尾¶
dsh-result-cap 提供了可控的字节截断能力,配合 SHA256 哈希值,解决了工具结果溢出上下文的问题。更多细节可查阅 GitHub 仓库 或 技能中心目录。