dsh-curate:人工筛选、改消息、按区间压缩的 DSH 上下文工作台

前言

在 DeepSeek Harness(DSH)里跑长会话时,模型可见的上下文会不断变长:工具输出、注入的 runtime 上下文、多轮助手回复叠在一起。DSH 自带的 compaction-basic 会在达到阈值时自动压缩,适合「到了就压」的流程,但当你需要保留某段原文、先改掉错误表述再压、或按轮次决定「这段留全文、那段只留摘要」时,自动策略往往不够细。

dsh-curate 是社区插件,维护者为 111222cjyq,在 SkillHub 目录中归类为「记忆」。它提供一个人工主导的上下文整理工作台:按轮浏览会话、直接改写消息(不调用模型)、用重要/一般/次要标记压缩范围,再在确认后由模型写摘要或走官方 /compact。每次写入会话前都会做本地 JSON 备份。

这是什么

一句话:dsh-curate 是面向 DSH 的 human-in-the-loop 上下文整理插件——先让人分拣和改字,再就地压缩会话历史,而不是替用户决定什么重要。

它不替代 compaction-basic,也不改其他插件或 profile 的配置;定位是「可控压缩」:可备份、可编辑、可保留关键段落为原文。

核心功能

工作台与按轮浏览

在会话头部点「整理上下文」,右侧栏打开工作台(空间不够可用右侧栏全屏)。工作台把当前模型可见的对话按「轮」切成卡片;最后一条消息固定保留。每张卡片先显示消息预览,点「查看完整原文」可看渲染后的完整内容。系统提示不进入工作台,保持只读。

就地改消息(不调用模型)

用户消息、助手正文与思维链、工具结果、注入上下文(含摘要类 user/message 与 developer/message)均可编辑。编辑器支持源码 / 渲染双视图;助手回复可在「正文 / 思维链」间切换块。工具调用参数(tool-call.arguments)为结构化 JSON,保持只读。

编辑器内「保存修改」只进入暂存区;点底部「修改并应用到上下文」或压缩流程中的「压缩修改后的上下文」才会写入会话。用户消息改写走官方 surface replacement;助手回复等走 plugin:dsh-curate/patch 与消息投影。改写思维链时会去掉原 signature / thinkingSignature,避免 provider 因签名与文本不匹配而拒绝。

带图片/文件的消息改文字时,附件块逐字节保留;工作台内不支持增删附件。

语气标记与按区间压缩

每条可见消息头部有 [重要][一般][次要];组头三个按钮可整轮批量预设,单条可覆盖,组内不一致时组头显示「混合」。

  • 重要:该条原文保留,不进入压缩区间。
  • 一般 / 次要:参与压缩;压缩时模型为每个连续非 keep 区间各生成一条摘要(一般写常规摘要,次要写更短摘要)。
  • assistant 的 tool-call 与对应 tool/result 自动归为同一语气单元,避免调用与结果被拆开。

「最近保留 N 轮」默认将这些轮设为 keep,可手动改回一般/次要;尾部固定消息永远 keep。

工作台顶部可切换「全部内容 / 仅对话文本」(只影响查看与编辑)。另可勾选「压缩摘要只看对话文本」:开启后摘要只读用户/助手 text 块,工具输出、注入上下文、思维链不进摘要。

压缩方式

点底部「压缩上下文」后:

  1. 选对象:直接压缩上下文(忽略暂存修改,完成后清除暂存)或 压缩修改后的上下文(先应用暂存再压)。
  2. 选方式:按整理结果压缩(依语气标记,每区间一次写入)或 官方 /compact(走当前 agent 预设里的官方压缩后端,范围由官方决定,不按卡片标注)。

两种压缩在会话内均不可撤销,确认前须勾选确认框。压缩完成后工作台重新读取并显示结果;下一条模型请求只看到整理后的上下文。

原始消息仍在 append-only 会话日志中,被 surface replacement 阴影掉;每次写入前备份到本地(默认 ~/.local/share/dsh-curate/backups/<sessionId>/,可用环境变量 DSH_CURATE_BACKUP_DIR、DSH_CURATE_BACKUP_KEEP 调整)。

草稿与其它操作

语气、视图开关与暂存修改保存在本地草稿(schema v4)。「保存当前内容」只写本地草稿,不写会话。「撤销」回退最近一次语气/编辑/拆分改动,不能恢复已应用修改或已完成的压缩。

日志中会留下审计记录:plugin:dsh-curate/edit-plan、edit-applied、plan、applied、compact 等。

安装与启用

环境要求:Node.js ≥ 22;DSH 0.2.1-rc.x(插件声明 engines.dsh >= 0.2.1-rc.2,peer @deepseek-ai/dsh-session ^0.2.1-rc.2)。当前 npm 包版本为 0.5.2(MIT 许可证)。

从 GitHub 安装(lib/ 已预构建,安装时无需编译):

dsh plugin --profile web add github:111222cjyq/dsh-curate

--profile 按你的环境替换(Web GUI 默认 web)。发布到 npm 后也可:

dsh plugin --profile web add dsh-curate

安装后必须重启 dsh web 并硬刷新页面,宿主插件在启动时加载,浏览器 bundle 需刷新才会更新。

0.4.0 起消息编辑已内置,不再依赖 dsh-edit-turn;二者可共存。按整理结果压缩需要可用模型:默认优先用该会话最近一次请求的 provider/model,也可在 profile 插件配置中指定,例如:

- id: dsh-curate
  config:
    provider: deepseek-official
    model: deepseek-v4-flash

若模型不可用,按整理结果压缩会返回 503;官方 /compact 不受此处 provider/model 影响。

典型用法

  1. 打开任一会话,点头部「整理上下文」。
  2. 按需展开「查看完整原文」,在消息右上角「编辑」中修改内容,「保存修改」进暂存;全部改完后点「修改并应用到上下文」,或留到压缩时选「压缩修改后的上下文」。
  3. 给消息或整轮设「重要 / 一般 / 次要」;需要只总结对话时勾选「压缩摘要只看对话文本」。
  4. 点「压缩上下文」,选择直接压或先应用修改,再选按整理结果或官方 /compact,勾选不可撤销确认后执行。
  5. 本地草稿用「保存当前内容」;误操作语气或编辑可用「撤销」(已写入会话的修改与压缩除外)。

仅在会话空闲(无进行中的 turn/compaction)时可编辑和压缩;若会话在工作台打开后又增长,需刷新后重试。

适用场景与注意

适合谁:需要精细控制长会话上下文、在压缩前修正工具噪音或错误表述、保留关键回答原文同时压掉中间段的 DSH 用户与智能体开发者。

安全与权限:插件以当前 dsh 进程权限运行,备份含完整对话原文(目录 0700、文件 0600)。安装前应自行查看 GitHub 仓库 源码与 LICENSE。路由仅监听 loopback,并校验 Host 与 Origin。

边界:应用修改与压缩不可在会话内撤销;系统提示、最后一条消息、会拆开工具对的边界、重叠范围、超过 200 个块等情况会被拒绝压缩。不处理附件的语义压缩;数学公式在渲染模式下按普通文本处理。

DSH 生态强调「一切皆插件」;SkillHub 插件目录 为社区站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-curate 把「什么进上下文、什么被摘要」的决定权放在人手里:先整理、可改字、再压缩,且每次写入前有本地备份。若你已在用 DSH 0.2.1-rc.x 的 Web 界面,可按上文命令安装并重启后试用。

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

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

Xiaoye