dsh-context-summarizer:在 DSH 里一键归纳长对话上下文

前言

在 DeepSeek Harness(DSH)里做长会话开发时,上下文窗口会逐渐被历史占满:回复变慢、早期约定容易被模型「忘掉」。DSH 自带 /compact 可以手动压缩历史,但需要记命令、看终端反馈。社区插件 dsh-context-summarizer(维护者 Sun-0306,分类:记忆)把同一套压缩能力接到 Web 界面:对话框旁一键触发,左侧栏可看占用与摘要详情。下面介绍它做什么、怎么装、怎么用,以及和内置 /compact 的关系。

这是什么

按包名 dsh-context-summarizer 安装的双半插件(Host + Client):把过长的对话一键归纳成一段持久化摘要,释放上下文窗口,然后继续聊。英文名 Context Summarizer;当前 bundle 版本在 package.json 中为 0.2.0,许可证 MIT。

归纳复用的是 DSH 自带的手动压缩(与 /compact 同一操作):较早历史被压缩 → 当前会话模型写摘要 → 摘要写入会话日志、旧节点归档 → 上下文释放。不能撤销,与内置 /compact 语义相同;须在会话空闲时执行。

入口与界面

两个入口,用途一致:

位置 形态
对话框工具行左侧(+ 旁,输入框内) 圆形「归纳」按钮:一次点击直接归纳当前会话
输入框下方(与上下文计量同一行) 运行中 / 完成 / 无历史 / 失败 的即时反馈,可重试或关闭
左侧栏全局面板(与「插件」「定时任务」「上下文洞察」同级) 上下文归纳 页面:占用条、一键按钮、结果与摘要详情

对话框内的一键入口(最快)

  1. 打开任意会话,点击输入框左下角圆形图标 → 立即对当前会话执行归纳;按钮进入旋转状态,下方显示「正在归纳上下文…」。
  2. 完成后状态条显示:归纳完成 · N 条历史 · 释放 ≈X tokens,约 14 秒后自动收起(可手动关闭)。
  3. 失败时显示原因和重试;会话正在跑一轮时按钮会先禁用,等这一轮结束再试。

归纳由当前模型生成摘要,通常十几秒;完成后摘要作为会话里一条「已归纳」记录出现,可继续正常聊天。

左侧栏归纳页面

点「上下文归纳」进入整页视图:

  • 当前上下文占用:≈已用 / 窗口大小 · 百分比,占用偏高时进度条警示;
  • 一键归纳上下文:完成后显示归纳条目、释放的 tokens、归纳后占用与摘要全文,可「回到对话」;
  • 运行中的会话按钮禁用;未打开会话时为空状态。

核心能力说明

Web/Desktop 组合里,dsh-web-app 可能在 Host 根上禁用 compaction-basic,压缩能力落在 Agent preset 隔离域。插件不会只查 ctx.compaction,而按顺序解析当前 Agent 的归纳能力:

  1. 该 Agent 的 /compact 命令(优先;对话里会显示「手动归纳」行,结构化结果从 compaction/summary 日志事件读取);
  2. agentPresets.serviceFor(agent, 'compaction');
  3. agent.ctx.get('compaction');
  4. ctx.get('compaction')(SDK/headless 等根挂载)。

因此「一键」与手动 /compact 始终是同一持久化操作。缺能力时按钮仍可能显示,点击后状态条会说明原因。

Host 半注册 /dsh-ctx-summary 前缀路由(仅本机 loopback、随机令牌与 Origin/Host 校验);Client 半通过标准插槽扩展,不替换应用根。归纳是用户操作:Agent 正在跑一轮时 Host 会拒绝,模型不能借它自行压缩上下文。

安装与启用

在本机工作区构建目录后,用插件管理器安装(写入当前 DSH profile,所有会话生效):

plugin_manager install_bundle  target = <本目录的绝对路径>

或在 Web GUI 的 插件 → 添加插件 中选择本地目录。安装后刷新页面:

  • 输入框左下角出现圆形「归纳」按钮;
  • 左侧栏出现「上下文归纳」入口。

要求:Host 提供 webServer、agents、tokenMeter,并具备 preset 内或根上的 compaction、或可用的 /compact(标准 DSH Web/Desktop 组合通常满足 preset 内能力)。安装前建议自行查看 GitHub 仓库 源码与 MIT 许可证;插件以当前 DSH 进程权限运行。

兼容性面向 @deepseek-ai/dsh 0.2.1 客户端契约(四个插槽、useSessions/useSessionStatus、sessionId、ctx.locale、ctx.slots)及 Host 的 agentPresets / compaction / commands / tokenMeter / agents / webServer。

典型用法

场景 A:长会话快满、想继续聊

在对话页点击输入框左侧圆形「归纳」→ 等待状态条完成 → 查看释放 token 数 → 继续提问。

场景 B:先看占用再决定是否归纳

左侧栏打开「上下文归纳」→ 看 ≈已用 / 窗口大小 与百分比 → 点「一键归纳上下文」→ 阅读摘要全文,必要时「回到对话」。

场景 C:与命令行等价

习惯 /compact 的用户可直接用按钮或侧栏;效果与手动命令一致,摘要持久写入日志。

本地校验(Node ≥ 22,无第三方依赖):

node --check index.js
node --check client.js
node --test tests/*.test.mjs

适用场景与注意

适合:会话越来越长、回复变慢、上下文快满、或模型开始忘记早前约定的 DSH Web/Desktop 用户。

务必注意:

  • 归纳不可撤销;摘要不满意只能基于新上下文再归纳一次,不能回滚本次写入。
  • 超时上限 10 分钟;长时间卡在「正在归纳…」可看状态条是否给出可重试错误。
  • 社区目录 SkillHub 插件页 与 GitHub 为独立信息源,与 DeepSeek / 幻方无官方从属关系;星标等元数据以各站点当时展示为准。

常见问题对照:

现象 下一步
没有圆形按钮 / 侧栏入口 刷新页面;在「插件」页确认 dsh-context-summarizer 已启用
「这个会话在主机上不活跃」 先在左侧栏点开该会话
「有别的归纳正在进行,或者这一轮对话还没结束」 等回答结束或另一归纳完成
「当前环境不支持手动归纳」 当前组合无 preset/根 compaction 且无 /compact

结尾

dsh-context-summarizer 把 DSH 已有的手动压缩能力接到输入框和侧栏,长对话不必反复手敲 /compact,占用与摘要也更容易一眼看清。目录与源码:

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

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

Xiaoye