Cross-Workspace Memory:本地加密的 DSH 跨工作區記憶

前言

在 DeepSeek Harness(DSH)裏,不同工作區、不同會話的對話往往彼此隔離。要做跨項目的上下文回顧,常見做法是複製粘貼歷史片段,或依賴雲端同步——後者在權限邊界和隱私上往往難以說清楚。維護者 YangHua-ovo 提供的 dsh-secure-memory(展示名 Cross-Workspace Memory)把目標定在「本地優先、加密存儲、逐工作區授權、逐會話關聯」,並明確拒絕官方未公開能力之外的繞過行爲。下面按能力邊界、安裝與日常用法說明如何使用該插件。

這是什麼

  • 倉庫: YangHua-ovo/dsh-secure-memory
  • 社區目錄: skillhub 插件頁
  • 分類:記憶;當前 README 對應版本 v0.0.2,許可證 MIT。
  • 定位:在 DSH 本機內索引、檢索已授權工作區(及手動導入的 DeepSeek 歷史導出)中的對話文本,通過三個只讀 Tool 把片段作爲「不可信歷史參考」交給當前會話的模型;授權與撤銷只能在解鎖後的 Settings 界面完成,Agent 不能自行擴權。

設計原則在 README 裏寫得很直接:安全優先於功能完整性,隱私優先於檢索便利性;能力不足時選擇明確拒絕,而不是繞過訪問控制。

能力邊界(使用前必讀)

已支持

能力 說明
DSH 本地工作區 通過 ctx.workspaceRegistry 讀取列表
DSH 本地會話 只讀 ctx.sessionPersistence.open(id, 'read')
DeepSeek 歷史導出 用戶在官方 App/網頁手動導出後,在本插件中導入
逐工作區授權 / 暫停 / 撤銷 本地管理界面 + 加密保險庫
逐會話工作區關聯 輸入框上方功能欄;默認關閉,新會話不繼承其他會話
檢索 BM25 + 本地字符 n-gram 向量混合檢索,範圍限於本會話關聯的工作區
AI 側 xw_memory_search、xw_memory_context、xw_memory_status 三個只讀 Tool
安全與審計 AES-256-GCM、scrypt、HMAC 審計鏈;祕密字段入庫前脫敏

明確不支持

  • 不能自動讀取 DeepSeek 雲聊天工作區(無公開 API)。
  • 不能向 DeepSeek 雲聊天頁面注入插件結果。
  • 不使用第三方 Embedding 或雲端向量庫;檢索完全在本機。
  • 手動導入的來源一律標記爲 manual snapshot,不能包裝成自動同步。

完整平臺調查見倉庫內 docs/01-platform-investigation.md。

核心功能(v0.0.2)

v0.0.2 把主操作入口遷到對話輸入框上方的 Cross-Workspace Memory 緊湊功能欄;工作區授權與本次會話關聯嚴格分離。

  1. Composer Bar:總開關、本會話要選的工作區、索引/檢索狀態、來源摘要、鎖定/解鎖、緊湊模式。開關與勾選只更新本地 React 狀態和本地 API,不提交消息、不創建會話。
  2. Workspace Selector(Settings):列出 DSH 本地工作區與手動導入源;支持臨時/長期授權、暫停、撤銷、默認檢索策略。
  3. Search Panel / Results:自然語言查詢,混合/關鍵詞/本地向量,可按工作區、時間、分類、來源過濾;結果帶相關度、可信度與來源定位(工作區 ID、會話 ID、事件序號等)。
  4. Knowledge Graph / Memory Timeline:在授權範圍內做本地共現、分類與時間啓發式(圖譜不含正文)。
  5. Security Center:禁止檢索詞、排除規則、自動鎖定、一鍵斷開、刪除保險庫等。

解鎖 token 在 DSH 頁面運行期內存複用;打開 Settings 在同一會話內可不重複輸入口令,整頁刷新或重啓後仍需解鎖(口令不持久保存)。

安裝與啓用

本倉庫是本地 DSH bundle(含 cordis.patch.yml、lib/index.js Host 入口、lib/client.js 客戶端 UI 等),README 未給出 dsh plugin add github:... 一類遠程一鍵命令。安裝方式以倉庫說明爲準:

  • 開發環境:在插件管理器中使用 install_bundle,目標爲本倉庫目錄的絕對路徑。
  • 用戶環境:通過 DSH 的插件安裝入口選擇該目錄(或先打包爲本地包再安裝)。

安裝或升級後刷新頁面。日常入口是輸入框上方的功能欄;首次創建保險庫、工作區授權、審計與刪除在 設置 → Cross-Workspace Memory。

運行環境限制:插件僅在 127.0.0.1 / localhost / [::1] 的 DSH GUI 中工作;自定義域名或遠程暴露會被拒絕。

package.json 要求 Node >= 22.12.0(用於開發與運行倉庫內測試腳本)。

典型用法

首次配置

  1. 打開 設置 → Cross-Workspace Memory。
  2. 創建本地保險庫:口令至少 12 個字符。口令丟失不可恢復。
  3. 在「工作區」對需要檢索的 DSH 本地工作區點擊 授權並索引。
    - 「僅授權」只授予權限、不立即讀會話,之後可手動「同步索引」。
    - 臨時授權到期會自動刪除該工作區索引。
  4. 回到當前對話,在輸入框上方功能欄打開本會話開關,勾選本次要用的工作區。
    - 已授權但未勾選的工作區不參與檢索。
    - 新會話默認關閉、空選擇。
  5. 正常對話;模型只能通過上述三個 Tool 在當前會話關聯的有效授權範圍內檢索。欄內會顯示檢索狀態與來源摘要。

導入 DeepSeek 官方歷史

官方側:設置 → 數據管理 → 導出所有歷史對話(JSON/Markdown,單文件 ≤ 8 MB)。
插件側:Settings →「工作區」底部「手動導入」。導入後來源標記爲手動快照,不是實時雲端連接。

數據目錄與生命週期

數據位於:

%DSH_HOME%/secure-memory/profiles/<profile>/

主要文件包括加密狀態 vault.enc 與獨立審計 audit.enc。撤銷授權會刪除該工作區全部記憶與索引;暫停則保留密文但拒絕檢索;「一鍵斷開」與「刪除保險庫」按 README 描述清空授權、索引與密鑰。插件不自動備份、不上傳外網。

安全設計要點(摘要)

README 列舉了十二條要點,實施時需一起理解,而不是隻盯加密算法:

  • 默認拒絕:無授權、暫停、過期、鎖定或審計異常時拒絕檢索。
  • 權限先於檢索:先構造有效授權集合,再取候選;禁止先全量檢索再過濾。
  • 逐會話最小範圍:AI Tool 只用當前會話顯式關聯的工作區;不能因「已授權」自動擴展到所有會話。
  • 最小收集:只索引 user/message 與 assistant/message 文本;不索引系統提示、推理、工具參數/結果、圖片附件等。
  • 提示詞注入隔離:歷史內容轉義與風險檢測,高風險內容不進入 AI 上下文。

威脅模型與數據流見 docs/02-security-architecture.md。

適用場景與注意

適合:在單機 DSH 上做多工作區、多會話知識回顧;需要可審計、可撤銷的本地記憶,且接受「手動導出 DeepSeek 雲歷史」而非自動雲同步的開發者。

務必注意:

  1. 插件以當前 DSH 進程與用戶權限運行;安裝前應自行審閱源碼與 MIT 許可證,社區目錄(skillhub)與 DeepSeek / 幻方無官方從屬關係。
  2. 插件本身不發起外網請求;但當 AI 使用記憶時,所選片段會進入當前對話並由 DSH 發給當前模型服務商——這是使用記憶的必要傳輸,未授權內容不應進入。
  3. README 未提供 git clone 後的替代安裝魔法命令;請按 DSH 本地 bundle 流程安裝,不要使用本文未出現在資料中的配置項或版本號。

倉庫內測試:npm test(README 記載 v0.0.2 爲 20/20 通過);npm run benchmark 爲本地檢索基準。

結尾

Cross-Workspace Memory 把跨工作區記憶收束在「本地加密 + 逐工作區授權 + 逐會話範圍 + 只讀 Tool」這一條鏈上,用明確的不支持清單劃清與 DeepSeek 雲端的邊界。若要查看元數據與文檔索引,可打開 GitHub 倉庫 或 skillhub 目錄頁。

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

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

小夜