dsh-summary-index:爲 DSH 壓縮摘要加索引、錨點守衛與探針,而不接管壓縮後端

前言

在 DeepSeek Harness(DSH)裏跑長會話時,上下文壓縮會把大量工具輸出收成一段摘要。壓縮後端(例如 dsh-context-zip、dsh-minimal-context)負責何時壓、怎麼寫摘要;開發者真正難的是事後:路徑、錯誤碼、提交號是否還在摘要裏、能否按事件序號回到原文。單靠 ROUGE 一類相似度並不能回答「這條任務還能不能繼續做」。

下面介紹社區工作流插件 dsh-summary-index(維護者 TLNing260310)。它在不註冊 ctx.compaction、不替換任何壓縮後端的前提下,監聽已提交的 compaction/summary 事件,建結構化索引,用確定性規則守衛錨點,並提供只讀召回工具。項目自述爲 AI 輔助完成的 alpha/demo,許可證 MIT,當前包版本 0.1.1;開發驗證使用 DSH API 0.2.1-rc.2 與 Node 24.21.0,peer 覆蓋 DSH 0.1.5 至 0.2.x。

這是什麼

dsh-summary-index 是宿主側 DSH 插件:inject: ['tools'],只增加 observer 與 sumidx_* 工具,不註冊裸的 search / read,也不插入 agent preset 的 compaction 行。

它做四件事:觀察標準 compaction/summary;從被遮蔽的原始事件中確定性提取 P0 字面量並生成帶事件號指針的存根;用守衛與探針檢查五段式、Anchors 覆蓋、指針可達性與原文可讀性;在下次 agent/pre-step 注入緊湊索引卡或隔離告警卡,並暴露 sumidx_search / sumidx_read / sumidx_probe。

索引數據落在 append-only JSONL,默認根目錄爲 DSH_HOME/dsh-summary-index/v1。

與壓縮後端的關係

DSH 的 compaction/summary 是已提交事件;session/event 只能觀察,不能回滾或改寫這次壓縮。因此本插件在錨點缺失時不會假裝壓縮沒發生,而是把存根 quarantine(拒絕進入可信索引),保留診斷,並在 pre-step 注入告警與 salvage anchors,引導模型用 sumidx_read 回查原始事件。

若要在提交前讓壓縮失敗,需要替換或包裝壓縮後端,那已超出本插件「非接管式」的設計邊界。

核心功能

五段式與錨點守衛

插件解析摘要中的五段(支持中英文標題):目標與意圖、關鍵決策、當前狀態、下一步、Anchors。代碼會從原始事件中規則提取高信號字面量,例如 UUID、URL、路徑、錯誤碼(ENOENT、HTTP 500 等)、環境變量鍵、版本號等。每個錨點攜帶 sourceSeq(DSH 原生 session event 序號),不依賴其他壓縮插件的私有段號。

探針而非相似度

不計算 ROUGE/BLEU。壓縮後運行確定性探針:pointer、index-search、event-read、source-range、replacement-pointer。sumidx_probe action=questions 可生成 recall 問題包,供 harness 或人工評估,不會自動調模型。

准入模式 guardMode

模式 行爲
enforce(默認) 五段完整;P0 字面量須在 Anchors 段;指針可解析;源掃描未截斷
compat 五段缺失僅警告;P0 可在摘要任意位置;缺字面量、斷指針、源截斷仍隔離
observe 只診斷,全部 admitted;不適合高可靠自動化

過小分片默認不建索引:summarizeMinChars 512、summarizeMinNodes 2,這是索引准入閾值,不是壓縮觸發條件。

只讀工具

  • sumidx_search:在當前會話摘要索引中詞法檢索。
  • sumidx_read:讀條目、在條目內搜索、或按允許範圍內的 seq 讀事件(不重新執行工具)。
  • sumidx_probe:status / run / questions。

安裝與啓用

包聲明 dsh.bundle.patch,dsh plugin add 會把包加入 dsh.profile.bundles 並應用 cordis.patch.yml,一般無需手改 agent preset。README 說明 npmjs 首次發佈尚待維護者配置;當前優先可用 GitHub Release 或 GitHub spec。

方式 B:GitHub Release tarball

dsh plugin --profile <profile> add `
  https://github.com/TLNing260310/dsh-summary-index/releases/download/v0.1.1/dsh-summary-index-0.1.1.tgz

方式 C:GitHub 倉庫 spec

dsh plugin --profile <profile> add github:TLNing260310/dsh-summary-index

npm 發佈後可用:

dsh plugin --profile <profile> add dsh-summary-index

安裝後重啓 DSH 會話;運行中的舊會話不會追溯注入,新裝可通過配置項 backfillLimit(默認 8)回填最近壓縮。驗證與卸載示例:

dsh --profile <profile> --dump-config
dsh plugin --profile <profile> update dsh-summary-index
dsh plugin --profile <profile> remove dsh-summary-index

Node 引擎要求 >=22.19.0(見 package.json)。

配置示例

在 profile 中插入 bundle 時可按需覆蓋默認值,例如:

- insert:
    - id: summary-index
      name: 'dsh-summary-index'
      config:
        enabled: true
        guardMode: enforce
        inject: true
        summarizeMinChars: 512
        summarizeMinNodes: 2
        injectMaxChars: 1800
        probeLimit: 24

inject: false 時關閉 pre-step 索引卡,僅保留工具化召回。完整配置鍵見倉庫 README 配置表(含 indexRoot、maxReadChars 等)。

典型用法

壓縮發生後,在 agent 中通過工具召回信息。在錯誤碼場景下搜索索引:

sumidx_search query="ENOENT" status=all limit=8

需要讀某條索引對應的原始事件片段時(seq 須在條目 shadowedSeqs 或 summarySeq 內):

sumidx_read action=event entry_id="sumidx:<id>" seq=42 offset=0 limit=12000

檢查條目與探針狀態,或重新跑探針:

sumidx_probe action=status
sumidx_probe action=run entry_id="sumidx:<id>" limit=24

被隔離條目仍寫在審計存儲中,可用 sumidx_search status=all 或 sumidx_probe action=status 查看原因碼(如 anchor-not-in-anchors-section、probe-failed 等)。

適用場景與注意

適合誰: 已使用 DSH 標準 compaction/summary、希望摘要可尋址、希望在壓縮後仍能用確定性規則檢查 P0 字面量是否被保留的工作流開發者;可與 dsh-context-zip 等只產出標準 summary 事件的後端共存。

務必知曉:

  1. 插件以當前 DSH 進程權限運行,會讀寫 DSH_HOME 下 JSONL;安裝前請閱讀源碼與 MIT 許可證,勿把本項目當作唯一的數據完整性保障。
  2. 自述爲 alpha/demo,可能存在 DSH 版本兼容與邊界行爲;Issue/PR 歡迎到 GitHub 倉庫。
  3. sumidx_read action=event 讀取會話已記錄事件,可能含敏感內容;索引 snippet 會對明顯 token/JWT 等做 [REDACTED],但仍應在可信會話中使用。
  4. 進程重啓後若 raw session 未加載,事件讀取可能不可用,索引中的 seq 仍作爲指針保留。
  5. 社區目錄 SkillHub 插件頁 與 DeepSeek / 幻方無官方從屬關係;DSH 生態是「一切皆插件」的獨立社區實踐。

結尾

dsh-summary-index 在壓縮鏈路旁加一層結構化索引與確定性守衛:不搶 compression 服務,用 sumidx_* 只讀工具與 pre-step 索引卡幫助模型在摘要之後仍能找回路徑、錯誤碼和事件序號。細節與審計說明見 GitHub 倉庫 與 README;目錄入口見 SkillHub。

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

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

小夜