DeepSeek Harness (DSH) 目前處於開發者預覽階段,其“一切皆插件”的架構讓開發者可以靈活擴展功能。在實際開發中,Agent 需要記憶上下文以完成多輪任務,但傳統的日誌記錄會泄露敏感信息,如密碼或原始工具調用參數。dsh-focal 是一個插件,旨在解決這一矛盾:它提供任務隔離的本地記憶,並僅將活躍任務的上下文注入模型請求,同時確保所有存儲的數據經過隱私過濾。
插件定位¶
這是一個隱私優先的任務記憶和自適應本地桌面觀察插件,由 Haoran2099 維護。它基於論文 FOCAL 實現,將 Agent 會話過濾爲任務隔離的記憶,並僅在需要時提供有限的上下文快照。
核心功能¶
dsh-focal 在本地對會話記錄進行過濾和整理,主要包含以下能力:
- 會話觀察與過濾:插件觀察已提交的會話/事件記錄。它使用一個小的、確定性的相似性過濾器,將直接用戶消息路由到任務隔離的記憶中。
- 選擇性記錄:只記錄工具名稱、成功/失敗狀態以及路徑參數,從不記錄助手 token 流、原始工具參數或原始工具結果內容。
- 隱私保護:存儲的文本經過去標記,常見憑據和電子郵件地址會被撤銷。絕對路徑會被處理(僅保留文件名,不寫入工作區絕對路徑),且絕對路徑外的路徑也會被縮減爲 basename。
- 上下文注入:當啓用
injectContext時,插件會提供一個活躍任務的運行時上下文快照和反注入策略部分,並將其加入下一次模型請求。 - 數據存儲:每個會話在
$DSH_HOME/focal-dsh/v1下存儲一個有界的 JSON 文檔。 - 命令與工具:
- 人類命令:
/focal status、/focal tasks、/focal forget task-1、/focal forget all。 - 模型工具:
focal_status、focal_recall。
- 人類命令:
安裝與啓用¶
安裝前請確保已安裝 DeepSeek Harness v0.1.0-rc.6,並確保環境滿足 Node.js 版本要求(^22.19.0 || >=24.0.0)。
使用官方命令添加插件:
dsh plugin --profile web add github:Haoran2099/focal-dsh#v0.1.1
dsh --profile web --dump-config
dsh --profile web
如果需要在無頭 CLI 運行中使用,請使用 --profile headless。
安裝後,可以通過覆蓋插件配置文件中的 cordis.patch.yml 行來調整行爲。該配置支持以下項:
- id: focal-memory
config:
captureUserText: false
captureToolPaths: true
injectContext: true
maxTasks: 32
maxObservationsPerTask: 40
maxContextObservations: 8
maxContextChars: 4000
captureUserText: false:將存儲的請求文本替換爲通用標記。injectContext: false:保持收集和顯式回憶可用,但不再自動添加到模型請求中。
典型用法¶
安裝並運行 DSH 後,可以通過以下命令與記憶系統交互:
- 查看當前狀態:
/focal status - 列出所有任務記憶:
/focal tasks - 刪除特定任務記憶:
/focal forget task-1 - 清空所有任務記憶:
/focal forget all
模型可以通過調用只讀工具 focal_status 和 focal_recall 來讀取記憶,但刪除操作必須通過人類命令執行。
適用場景與注意¶
該插件適合需要在 DeepSeek Harness 中實現持久化任務記憶,且對數據隱私有嚴格要求的開發者。
注意事項:
1. 不可信數據:記憶數據被顯式標記爲不可信數據,不應將其視爲指令。
2. 防禦深度:過濾是防禦深度措施,不能保證識別所有敏感值。請勿在提示詞或工具參數中放置憑據。
3. 本地運行:插件無網絡請求,無遙測,所有存儲均本地化。
4. 兼容性:DeepSeek Harness 目前處於開發者預覽階段,存在破壞性變更的可能。該插件目前僅支持 Host 模式,暫無 Web UI 擴展。
短結尾¶
dsh-focal 通過在本地對 Agent 會話進行隱私過濾和任務隔離,爲 DeepSeek Harness 提供了可控的記憶能力。它不記錄敏感的原始數據,僅將必要的上下文注入模型,適合追求數據安全的開發者使用。