dsh-thread: DeepSeek Harness 的會話記憶插件

前言

DeepSeek Harness (DSH) 採用「一切皆插件」的理念。在開發基於大模型的編碼智能體時,會話記憶的持久化與上下文傳遞是核心難點。dsh-thread 插件旨在爲 DSH 提供深度的會話記憶解決方案,它通過無損捕獲事件流、結構化注入狀態以及本地化存儲,解決智能體在長時間運行中上下文丟失或記憶碎片化的問題。

是什麼

zhaoyuntao-wl/dsh-plugin-thread 是 Thread 生態與 DeepSeek Harness 的深度集成插件。它利用 DSH 原生的通道實現端到端的會話記憶管理。插件通過嵌入式 SQLite 數據庫存儲事件流,提供確定性檢索(基於 BM25)和結構化的狀態注入,幫助編碼智能體在多輪交互中保持上下文連貫性。

核心功能

該插件主要提供以下能力:

  • 無損捕獲:訂閱 session/event,將完整的事件流追加到嵌入式 SQLite 數據庫中,確保數據不丟失且可冪等。
  • 結構化交付與三重觸發:通過首輪錨點(項目身份、行爲契約、狀態卡片)、壓縮後的重錨點以及每輪邊界的狀態增量,將記憶注入模型上下文。這種設計遵循確定性日誌原則,避免每輪都產生大量噪聲。
  • 原生查詢工具:註冊 query_session_memory 工具,支持文件系統風格的導航命令(ls、cd、cat、grep)進行檢索。默認使用 BM25 算法進行確定性檢索,不依賴嵌入模型。
  • 行爲契約技能:註冊 thread 技能並注入錨點,確保模型知道它擁有記憶能力。
  • 顯式決策與偏好通道:通過 /thread-reg dec 記錄決策(支持 --supersedes 進行鏈式演化),通過 /thread-reg fdb 記錄偏好或教訓(自動識別“don’t”等否定句式)。
  • 收尾沉積與收件箱:利用收尾詞將進行中的目標沉積爲待辦事項。/thread-cfm 命令提供統一的待辦與候選列表視圖,支持 do(完成/提升)和 cnl(取消)操作。
  • 資源清理:通過 /thread-rev 命令撤銷註冊,刪除決策、偏好或資產記錄,同時處理目標狀態機的自愈。
  • 會話隔離:支持 /thread-iso 和 /thread-uniso 切換會話上下文,並通過 /thread-pub 發佈隔離期間產生的記憶行。
  • 可選主動壓縮:設置 THREAD_AUTO_COMPACT=1 後,插件會在令牌壓力閾值觸發時靜默執行壓縮並重錨點。

安裝與啓用

在 DSH 項目中,插件必須被引用在配置文件的 bundles 中才能生效。

  1. 安裝插件
    dsh plugin add dsh-thread
  1. 配置 Profile
    在 ~/.dsh/profiles/<your-profile>/package.json 中添加 dsh-thread 到 bundles:
    {
      "name": "dsh-profile-my",
      "private": true,
      "dsh": {
        "profile": {
          "bundles": [
            "@deepseek-ai/dsh-base",
            "@deepseek-ai/dsh-headless",
            "dsh-thread"
          ]
        }
      }
    }
  1. 依賴與版本
    插件會自動解析 @thread-memory/core 依賴。運行前請確保 DSH 版本爲 0.1.5-rc.1,且 SDK peers 被鎖定在 ^0.1.5-rc.1。

  2. pnpm 10 兼容性
    如果在 pnpm 10 環境下插件啓動失敗並報錯 “Could not locate the bindings file”,需要在 Profile 目錄下重新構建 better-sqlite3:

    cd ~/.dsh/profiles/<your-profile>
    pnpm rebuild better-sqlite3

配置項

插件支持通過環境變量或配置調整行爲:

配置項 默認值 說明
budgetLines 200 狀態卡片的行數預算
feedbackRows 50 工具守衛所參考的反饋行數
busyRetries / busyRetryDelayMs 20 / 100 SQLite 忙碌重試策略
compactPressureTokens 0 主動壓縮的令牌閾值(設爲 0 表示關閉,需配合 THREAD_AUTO_COMPACT=1 使用)

命令與用法

插件註冊了以 /thread- 開頭的命令,支持命令補全和直接執行。

註冊資源

# 查看列表
/thread-reg <ast\|dec\|fdb\|gol>

# 註冊資產
/thread-reg ast <text>
# 註冊決策(支持 --supersedes <id> 進行演化)
/thread-reg dec <text>
# 註冊偏好/教訓
/thread-reg fdb <text>
# 註冊目標
/thread-reg gol <text>

撤銷與清理

# 撤銷註冊(刪除結構化行)
/thread-rev <ast\|dec\|fdb\|gol> <ids\|all>

# 撤銷目標(放棄目標並自愈 Todo)
/thread-rev gol <ids\|all>

會話管理

# 進入隔離會話
/thread-iso

# 退出隔離會話
/thread-uniso

# 發佈隔離期間產生的行
/thread-pub <ast\|dec\|fdb\|gol> <ids\|all>

狀態確認

# 查看待辦與候選列表
/thread-cfm
# do: 完成或提升候選
# cnl: 取消
# cnl all: 清空所有

技術細節與注意事項

  • 本地優先與無守護進程:插件完全在進程內運行,使用嵌入式 SQLite 存儲,無需後臺服務或雲依賴。離線會話行爲與在線一致。
  • 檢索機制:默認不依賴嵌入模型,使用 BM25 算法結合 jieba 分詞進行檢索,並支持引用回溯。
  • 誠實邊界:
    • 候選項不會自動生成,自然語言提取偏好/決策功能默認關閉,依賴顯式命令。
    • 目標完成檢測較爲保守(≥4 非ASCII 或 ≥8 純 ASCII 重疊),短英文目標可能被漏判,建議使用 /thread-rev gol 顯式放棄。
    • 決策不會自動過期,需使用 --supersedes 標記過時決策。
  • 開發探針:包內包含 batch0-probe 模塊,用於開發時的契約測試。僅在設置 THREAD_B0_PROBE=1 時生效,生產環境默認爲惰性狀態。

總結

dsh-thread 爲 DeepSeek Harness 提供了一套完整的會話記憶方案。它通過確定性日誌、結構化注入和本地化存儲,幫助編碼智能體在複雜的交互場景中保持記憶的準確性與連貫性。插件遵循 MIT 許可證,由社區維護。

  • 目錄頁: https://www.skillhub.cn/plugins/zhaoyuntao-wl/dsh-plugin-thread
  • 源碼: https://github.com/zhaoyuntao-wl/dsh-plugin-thread
羽毛球分组比赛记分
小程序二维码

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

小夜