dsh-density-panel:面向 DSH 的质量优先工具输出压缩

前言

在 DSH 里跑长会话时,工具返回的 JSON、diff、日志往往占去大量上下文。简单截断或抽样容易丢掉答题所需的事实;一味追求更小 token 账单也可能让模型无法再回答细节问题。下面介绍社区插件 dsh-density-panel(包名 @local/density-panel,当前资料中的版本为 0.31.0):它在能证明「不损答案」的输入类型上做结构化压缩,原文归档到磁盘,并维护按上下文窗口的账本;需要时用 density_recall 按需取回。维护者为 SpiritronPersonality,仓库 dsh-density-panel,在社区目录中归类为「记忆」相关能力;许可证为 MIT。插件在 你当前 DSH 进程的权限 下运行,安装与启用前建议自行审阅源码与许可证。

这是什么

Density 是 DSH 客户端插件:只压缩它认为可以压缩且不会丢失答案的工具输出,保留可恢复的原文档案,并为每个 context window 记一笔「省了什​​么」。设计偏保守——目标是信息密度(去噪),而不是专门压账单;token 节省是副产物。

侧边栏提供中文界面「密度」面板(示意见仓库 docs/panel.png),可观察容量压力、节省量、锚点、原生压缩触发线以及 per-window ledger。

压缩策略:做与不做

仓库 README 用表格明确了入口行为(默认 policy: quality 即下表;strict 仅 diff;aggressive 为旧版抽样策略,含表格与代码大纲等,默认不启用)。

输入类型 行为 说明
JSON / JSONL 数组 转为 CSV(值全保留) 实践中可视为无损
Unified diff 去掉未改动的上下文行 改动行与 hunk 头保留
日志 保留头、尾、每条 error 行,并加 [统计] 汇总行 抽样后仍可回答计数类问题
表格 不压缩 测试中行抽样严重损答案
散文 / 长文本 不压缩 叙事抽样即数据丢失
源代码(v30+) 不压缩 召回成本常高于收益
cairn_*、density_recall 输出 不碰 上下文中仅保留这份记忆

压缩后的占位会带标记,例如:[density #density-1a2b3c4d · 原文 4210B · 用 density_recall(marker) 取回]。完整原文写入 ~/.density/archive/<session>/。首次发生压缩后才会懒注册 density_recall 工具,空闲会话不增加 schema 负担。

安装与启用

官方 README 给出两种方式,均需把 bundle 链入 DSH profile 并 重启 DSH(宿主在启动时快照插件 bundle)。

方式一:本地 link(README 示例)

git clone https://github.com/SpiritronPersonality/dsh-density-panel.git

随后在 <profile>/package.json 中增加本地 link,例如 "@local/density-panel": "link:<path>/dsh-density-panel",并在 dsh.profile.bundles 中加入 @local/density-panel。

方式二:cordis patch 写入 bundle

# profile cordis patch(或插件自带的 cordis.patch.yml)
- insert:
    - id: density-panel
      name: '@local/density-panel'   # 或你发布的包名
      config:
        mode: balanced
        write: true
        policy: quality
        surface: false

修改配置或代码后需重启 DSH。

配置项

键 默认 含义
mode shadow shadow 仅度量;safe / balanced 开启入口路径
write false 是否改写工具结果(实际压缩开关)
policy quality quality 为上表策略;strict 仅 diff;aggressive 为旧版抽样
surface false 是否抽取每轮卡片并替换已结束轮次(默认关,会改变前缀)
protectedTools ['cairn_'] 永不压缩的工具名前缀
archiveDir ~/.density/archive 原文归档目录
ledgerDir ~/.density/windows per-window 账本目录

初次试用可保留 mode: shadow 观察度量;确认行为后再设 write: true 与合适的 mode。

可观测与典型用法

  1. 侧边栏面板:条目「密度」,展示容量、压力、节省、锚点、镜像、原生 compaction 与窗口账本(UI 目前仅中文)。
  2. HTTP:GET /density/snapshot 返回当前窗口及最近 8 个窗口的 JSON。
  3. 账本:~/.density/windows/<sessionId>.jsonl,每个 context window(同一 provider、model、context 大小与 trigger line 的 epoch)一行 JSON;重启后仍保留。
  4. 度量日志:~/.density/shadow/<sessionId>.jsonl 记录每次压缩、召回与 turn card。
  5. 召回:模型在上下文中看到 density 标记后,调用 density_recall(marker) 取回归档原文(召回体积约等于原文,宜少次使用)。

仓库 tools/ 下提供 corpus-acceptance.mjs、replay.mjs 等,用于语料验收与会话日志重放;开发测试可按 README 对每个测试文件单独执行 node。

适用场景与注意

适合:长会话中大量 JSON/diff/日志类工具输出、希望减噪又不愿牺牲可答题事实的 DSH 用户;需要对照 ledger 与面板观察压缩与原生 compaction 关系时。

务必注意:

  • 压缩是抽取式,不能概括语义,故散文与代码默认跳过。
  • 日志抽样会丢掉非 error 行;[统计] 仅恢复聚合计数。
  • Recall 成本接近原文大小,频繁取回会抵消节省。
  • 插件非 DeepSeek / 幻方官方分发;社区目录 SkillHub 插件页 与 GitHub 为公开来源,星标等元数据以站点为准。

结尾

dsh-density-panel 把「能压且不伤答案」的工具输出做成结构化摘要,原文归档 + density_recall + per-window ledger,并在中文「密度」面板与 GET /density/snapshot 上可见。进一步了解见 GitHub 仓库 与 社区目录。

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

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

Xiaoye