dsh-soul:獨立記憶、圖壓縮與受控 Harness 演化

前言

在 DSH 裏跑長會話時,上下文壓縮往往會丟掉約束、決策理由和已寫入的產物;單靠模型摘要把歷史壓成一段話,約束類信息保留率往往很低。經驗若直接塞進主代理上下文,還會抬高 token 成本。DeepSeek Harness 社區插件 dsh-soul(維護者 icyaaaww,GitHub 倉庫 icyaaaww/dsh-soul)把「會話狀態」和「行爲模式改進」拆開:記憶骨架與圖壓縮默認路徑不依賴編輯模型;經驗編譯與 C1–C8 演化需顯式開啓,並走成對驗證、影子試用與回滾。下文按安裝、記憶、壓縮、演化四塊說明可覈對的事實與配置。

這是什麼

dsh-soul 2.0.0 是 DSH 工作流類插件:在八個 Harness 組件(C1–C8)上支持經驗編譯與受控演化,同時提供獨立記憶(圖骨架、每輪投影、soul_recall 回撈)以及可選的圖壓縮後端。核心約束寫在 README 裏:經驗寫入本地 SQLite 不自動進主上下文;進版本需因果門控與驗收;不修改模型權重,也不運行按關鍵詞觸發的後臺付費演化。記憶與演化各有開關。社區目錄頁:skillhub.cn/plugins/icyaaaww/dsh-soul。

核心功能

記憶骨架(默認開啓)

每輪結束,藉助已有鉤子(tools/post-execute、agent/pre-step、turn/end)把本輪編譯成圖節點寫入本地 SQLite,不調用模型。節點類型包括 constraint、decision、artifact、progress;邊類型爲 derived、supersedes、depends、supports、contradicts。

  • 投影:每輪約 600 字節卡片經 ctx.systemPrompt.context(order 940)注入,從圖重算、不寫進歷史,壓縮在結構上擦不到它。
  • 回撈:工具 soul_recall 先查圖及一跳鄰居,不足時翻會話原文;返回用 source 區分 node 與 span。
  • 整理:memory.maintenance 默認開啓,按輪次合併相同節點、邊衰減;1.17 起對替換式表述寫 valid_to 與 supersedes,舊約束退出卡片但仍可被查並標註已被取代。

可選 memory.dynamics(默認關)把卡片排序改爲複習排期;本地命令 /mem show | stats | recall | prune 等均零 LLM 調用。

圖壓縮後端(1.6)

將宿主 compaction 從 @deepseek-ai/dsh-compaction-basic 換成 dsh-soul/compaction 後,被壓掉的歷史由「骨架 + 錨點原文片段」替代模型摘要:llmStreamCall: false,壓縮變爲本地選點。卡片預算約爲跨度的 20%,下限 600、上限 3000 字節;跨度小於 1200 bytes 時宿主會拒絕「變大的 checkpoint」。需要 peer 依賴 @deepseek-ai/dsh-compaction-basic,掛載時由 DSH 包解析表加載。

經驗編譯與八個組件(演化,默認關閉)

開啓演化後,每輪免費記錄重複糾正、工具錯誤、未完成與恢復模式;支持度達閾值後,經編輯會話編譯爲 C1–C8 的普通文件改動,再走成對驗證、影子試用與回滾:

組件 存儲 作用概要
C1 system.md 主會話與探測子會話提示
C2 guardrails.md 護欄,不改宿主權限與審批
C3 memory.md 項目事實與記憶策略
C4 tools.md 工具指引
C5 subagents.md evolve_catalog / evolve_delegate 委派
C6 skills/*/SKILL.md 註冊到宿主 skills
C7 scripts/*.mjs evolve_script 純 JSON 轉換
C8 hooks/*.mjs 工具 post-execute 建議反饋

探測使用 Git worktree,驗收通過配置項 checks(須覆蓋真實產物;文件型檢查需 protectedPaths)。

安裝與啓用

環境要求:Node.js 24+、DSH 0.2.1-rc.2 起(兼容 0.2.x;README 寫明 0.2.0-rc.2 不在支持範圍)。只開記憶時不需要爲 Soul 配置 provider/model,也不要求 llm 或 skills 服務。開啓演化還需要 Git、可用模型路由,以及支持相關組件的 llm、skills 與本地 spawn。

官方 README 給出的安裝示例(路徑換成你本地的 .tgz):

dsh plugin --profile tui add "C:\path\dsh-soul-2.0.0.tgz"

記憶默認開啓,演化默認關閉。僅記憶:

- id: dsh-soul
  config:
    profile: tui
    memory:
      enabled: true
    evolution:
      enabled: false

memory.enabled 與 evolution.enabled 分別控制;舊頂層 enabled 仍可作爲演化別名,顯式 evolution.enabled 優先。若要完全停用,兩者都設爲 false。injectHarness: false 只關演化組件注入,不關記憶投影。

開啓演化時配置 provider/model 及閾值示例:

- id: dsh-soul
  config:
    evolution:
      enabled: true
    profile: tui
    provider: your-provider
    model: your-model
    validationTrials: 2
    repeatThreshold: 3
    shadowWindow: 3
    memory:
      enabled: true
      projectionBytes: 600
    checks:
      - name: project-tests
        argv: [node, --test, tests/acceptance.test.mjs]
        protectedPaths: [tests, package.json]

數據庫默認位於 DSH_HOME/dsh-soul/<profile>/evolve.sqlite(未設 DSH_HOME 時爲 ~/.dsh);不同 profile 不共享默認庫,舊 Soul 庫不自動遷移。

替換壓縮後端(profile 內 compaction 插件名):

- name: '@deepseek-ai/dsh-compaction-basic'   # 刪除
- name: 'dsh-soul/compaction'                  # 換成 graph 後端

典型用法

  1. 只用記憶:安裝插件並保持 evolution.enabled: false。長任務中依賴每輪 600 字節投影保留約束;細節用 soul_recall 或 /mem recall <關鍵詞> 按需拉取。
  2. 長會話減摘要成本:在已有 @deepseek-ai/dsh-compaction-basic 的宿主上切換爲 dsh-soul/compaction,手動 /compact 與自動壓縮均走圖選點;壓縮塊中會提示未展開片段數量,可配合 recall。
  3. 受控改 Harness:在乾淨、已提交的 Git 倉庫中開啓演化,配置 checks 與 validationTrials 等;候選版本在 worktree 探測通過後再上線,失敗可回滾。C5 委派先 evolve_catalog 再 evolve_delegate;C7 腳本僅接受 JSON in/out,超時與體積限制見 README。

C6 技能示例路徑 skills/build-check/SKILL.md,宿主註冊名 soul-build-check;C8 hook 在工具失敗時可追加建議,不替換原工具結果。

適用場景與注意

適合需要在 DSH 長會話裏穩定保留約束與決策鏈、又希望壓縮少一次模型調用的開發者;需要在真實項目上迭代 C1–C8 工作流文件且能接受 Git worktree 驗收的團隊,可再開演化。

使用前請注意:插件以當前 DSH 進程權限運行,安裝前應閱讀 倉庫源碼 與 MIT 許可證;演化探測不會自動複製被忽略的 node_modules、虛擬環境或密鑰,驗收命令須在獨立 worktree 可運行。社區目錄 skillhub.cn 與 DeepSeek / 幻方無官方從屬關係,屬社區生態「一切皆插件」的一部分。

結尾

dsh-soul 把「免費存經驗、付費進上下文、進版本須門控」和「機械圖骨架 + 可選圖壓縮」放在同一插件裏,記憶與演化可獨立開關。詳情與基準方法見倉庫 README 與 docs/SKELETON-BENCH.md 等文檔。

  • 目錄頁:https://www.skillhub.cn/plugins/icyaaaww/dsh-soul
  • GitHub:https://github.com/icyaaaww/dsh-soul
羽毛球分组比赛记分
小程序二维码

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

小夜