Howardzhangdqs/dsh-recap1

dsh-recap

DSH recap plugin: distills every model request (turn:step) of a session into one sentence, appended incrementally with a cache-friendly prompt (history sentences first, new delta last). Side-effect-free for the agent loop.

包名
dsh-recap
版本
0.1.0
许可证
MIT
最近更新
2026年8月17日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Howardzhangdqs/dsh-recap

配置

挂载行配置(cordis.yml,部署级)

默认说明
triggerstep-end触发时机:step-end(每个请求结束时触发,句子随请求生成)/ turn-end(turn 结束后经防抖合并成批)/ manual(仅手动)
debounceMs1500触发后的防抖窗口
textBlockLimit4096Δ 内单条消息文本的截断上限(字节,UTF-8 安全)
toolResultLimit2048工具结果的截断上限
toolArgsLimit1024工具调用参数的截断上限
historyMaxSentences400提示词携带的最大历史句数(超出时折叠最旧的句子)
storeMaxEntries500每个会话的落盘条数上限(超出时压缩存储文件)
maxPending200待总结 Δ 的数量上限(超出时合并最旧的条目,即背压保护)
requestTimeoutMs60000单次总结调用的超时时间
retryBackoffMs30000限流退避基数:生成请求遇到 RATE_LIMIT(如 zai 的 429/1305「访问量过大」)时,该条 Δ 会原样重新排到队首等待重试——不记录失败条目,回顾链不会留下永久缺口。等待时长按指数增长(连续限流时每次翻倍,上限为基数的 32 倍);等待期间,对应位置的行内状态标识(chip)会显示「限流等待中,Ns 后重试…」
maxTokens120单句输出的 token 上限
toolsEnabledfalse是否注册模型工具(默认关闭:工具 schema 会随会话请求发送)
storeDir~/.dsh/recap/sessions存储目录覆盖

⚠️ 截断与提示词结构相关的参数是缓存前缀的组成部分——回顾链生成途中修改这些参数会使前缀缓存失效(一次性代价)。

用户设置(设置页 recap 分区,实时生效)

默认说明
enabledtrue总开关(关闭时暂停生成,Δ 继续积累)
interval1总结粒度:每 N 个请求的新增数据合并总结为一句(1 表示每个请求一句)。调大后句子标识为 [T](对应所覆盖的请求区间);调小后,下一个请求立即恢复细粒度总结
provider + model未设置总结专用路由(两者必须成对设置);未设置时先跟随会话路由,再退到宿主默认模型
effortoffoff(关闭思考)→ low(低思考)→ follow(跟随适配器默认)三级阶梯:路由拒绝当前档位时自动降档,并按路由记住生效档位;模型没有 effort 词表时最终省略该字段

「关闭思考」(off)真正生效的条件

effort: off 是否显式发送「禁用思考」,由路由的适配器与模型声明决定,不在本插件:

  • DeepSeek 官方路由:适配器内置映射,offthinking: {type: "disabled"},开箱即用。
  • pi-ai 路由(zai 等):模型的 effort 档位来自 settings 文档(llm-pi-ai.providers..models[].reasoningEfforts),且未声明的档位一律视为不支持
    • 条目完全没有 reasoningEfforts、又不在 pi-ai 内置目录中的模型,会被视为非思考模型——请求中不写入 thinking 字段(是否思考取决于服务端默认行为);

    • 要显式关闭思考,需在模型条目中声明 off 档;YAML 空值写法(off: 留空)表示「支持关闭:发送时省略参数」,zai 格式会序列化为 thinking: {type: "disabled"}。注意:只声明 off 一个档位会被校验拒绝,必须同时声明至少一个思考档位:

      reasoningEfforts:
        off:        # 空值 = 支持关闭:发送时省略参数(zai 格式 → thinking: {type: disabled})
        low: low
        high: high
      
    • 路由不支持 off 时(档位表未声明),本插件的降档阶梯会静默退到 low 或省略该字段——此时「关闭」并未真正生效,但不会报错;排查时请先检查该模型的 reasoningEfforts 声明。

挂载行配置(cordis.yml,部署级)

默认说明
triggerstep-end触发时机:step-end(每个请求结束时触发,句子随请求生成)/ turn-end(turn 结束后经防抖合并成批)/ manual(仅手动)
debounceMs1500触发后的防抖窗口
textBlockLimit4096Δ 内单条消息文本的截断上限(字节,UTF-8 安全)
toolResultLimit2048工具结果的截断上限
toolArgsLimit1024工具调用参数的截断上限
historyMaxSentences400提示词携带的最大历史句数(超出时折叠最旧的句子)
storeMaxEntries500每个会话的落盘条数上限(超出时压缩存储文件)
maxPending200待总结 Δ 的数量上限(超出时合并最旧的条目,即背压保护)
requestTimeoutMs60000单次总结调用的超时时间
retryBackoffMs30000限流退避基数:生成请求遇到 RATE_LIMIT(如 zai 的 429/1305「访问量过大」)时,该条 Δ 会原样重新排到队首等待重试——不记录失败条目,回顾链不会留下永久缺口。等待时长按指数增长(连续限流时每次翻倍,上限为基数的 32 倍);等待期间,对应位置的行内状态标识(chip)会显示「限流等待中,Ns 后重试…」
maxTokens120单句输出的 token 上限
toolsEnabledfalse是否注册模型工具(默认关闭:工具 schema 会随会话请求发送)
storeDir~/.dsh/recap/sessions存储目录覆盖

⚠️ 截断与提示词结构相关的参数是缓存前缀的组成部分——回顾链生成途中修改这些参数会使前缀缓存失效(一次性代价)。