前言¶
在 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。
可觀測與典型用法¶
- 側邊欄面板:條目「密度」,展示容量、壓力、節省、錨點、鏡像、原生 compaction 與窗口賬本(UI 目前僅中文)。
- HTTP:
GET /density/snapshot返回當前窗口及最近 8 個窗口的 JSON。 - 賬本:
~/.density/windows/<sessionId>.jsonl,每個 context window(同一 provider、model、context 大小與 trigger line 的 epoch)一行 JSON;重啓後仍保留。 - 度量日誌:
~/.density/shadow/<sessionId>.jsonl記錄每次壓縮、召回與 turn card。 - 召回:模型在上下文中看到 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 倉庫 與 社區目錄。