dsh-obsidian-memory:用 Obsidian 庫承載 DSH 智能體長期記憶

前言

在 DeepSeek Harness(DSH)裏跑智能體時,會話上下文會隨對話結束而清空;若把偏好、決策理由、踩坑記錄寫進自建數據庫或向量服務,往往要多維護一套存儲、密鑰和同步邏輯。下面介紹的 dsh-obsidian-memory(維護者 aoyamabf-max)把記憶落成 Obsidian 庫裏的普通 Markdown 筆記:帶 YAML frontmatter,可用 Obsidian 閱讀、編輯、鏈接與備份,卸載插件後筆記仍在庫裏。項目在 README 中標註爲 early but working,Host 側 7 個工具、8 條路由、側邊欄、BM25 召回、衰減歸檔與 GitHub 同步已在 DSH 0.2.1-rc.5 上驗證;當前 package 版本爲 0.3.2,許可證 MIT。

這是什麼

一句話:Obsidian 爲底的 DSH 長期記憶插件——側邊欄瀏覽與編輯、7 個供模型調用的工具、按 token 預算組裝的召回、BM25 排序(無 embedding)、可選 GitHub Contents API 同步。分類屬於社區目錄中的「記憶」;目錄頁見 SkillHub 插件頁,源碼與說明見 GitHub 倉庫。DSH 生態主張「一切皆插件」;SkillHub 爲獨立社區目錄,與 DeepSeek / 幻方無官方從屬關係。

核心功能

側邊欄與筆記形態

點擊左側欄腦圖標,可瀏覽記憶、按標籤篩選、按新近度或重要性排序,並在面板內就地閱讀與編輯。每條記憶是庫內一個 .md 文件,Obsidian 可原生索引;默認落在庫根目錄下的 Memories 子文件夾(可配置)。

七個智能體工具

模型可在未被顯式提醒的情況下讀寫記憶:

工具 作用
obsidian_remember 寫入新記憶筆記
obsidian_search 對標題、標籤、正文做 BM25 搜索
obsidian_context 在 token 預算內組裝召回(tiny / compact / detailed 三檔)
obsidian_read 按庫內相對路徑讀單條筆記
obsidian_update 編輯已有筆記,保留 id 與 createdAt
obsidian_forget 預覽或執行衰減與歸檔(默認預覽)
obsidian_sync 立即把變更筆記推送到 GitHub

插件還會註冊 system-prompt 片段,說明何時應寫記憶(長期偏好、決策及理由、帶完整錯誤信息的坑、本機路徑與端口等)以及何時不寫(一次性中間結果、可從代碼讀到的內容、無結論的閒聊等)。

BM25 與 token 預算

召回不依賴 embedding:離線可用,無需 API Key、向量庫或額外模型調用;對 CJK 使用 bigram 分詞以便中文查詢。obsidian_context 用三檔細節控制預覽長度與關鍵詞數量,使召回成本受 token 預算約束,而非整庫體量。

衰減與歸檔

舊、不重要、未被引用的記憶會衰減;低於閾值的可移入 Memories/.archive/,不刪除。修剪前會掃描 [[wikilink]] 目標,被引用的筆記跳過。配置項 forgettingEnabled 默認爲 false,僅預覽也可工作;設爲 true 後纔會真正寫入歸檔。

密鑰:拒絕而非脫敏

筆記若匹配內置模式或自定義黑名單中的祕密,會被跳過並給出原因,而不是脫敏後仍像完整記憶。內置模式包括 github_pat_、gh[pousr]_、AKIA、sk-、私鑰塊、常見「密碼」寫法等;自定義黑名單默認文件爲 ~/.dsh/dsh-obsidian-memory/deny.txt(一行一條字面量,# 註釋),僅在本機,不會進入源碼樹。

可選 GitHub 同步

配置 repo 爲 owner/name 後,可通過 Contents API 推送變更;另一臺機器可拉取。默認定時同步間隔 30 分鐘(syncMinutes,最小 5);syncEnabled 默認 true,但未填 repo 時等同於不同步。Token 放在 ~/.dsh/dsh-obsidian-memory/token(或通過 tokenFile 指定),不會寫入插件配置或倉庫;同步狀態在 ~/.dsh/dsh-obsidian-memory/sync-state.json,只推 sha256 有變的筆記。

安裝與啓用

插件無自有 runtime 依賴,所需 @deepseek-ai/schemastery、@deepseek-ai/cordis 與客戶端 UI 包由 DSH Host 提供。Host 版本需在 peer 範圍內:DSH >=0.2.0-rc.1 <0.3.0-0。

從 GitHub 直接安裝(將 web 換成你的 profile 名):

dsh plugin --profile web add dsh-obsidian-memory@github:aoyamabf-max/dsh-obsidian-memory

若需固定版本,可釘 tag:

dsh plugin --profile web add dsh-obsidian-memory@github:aoyamabf-max/dsh-obsidian-memory#v0.3.0

安裝後重啓 DSH:左側出現面板,工具對智能體立即可用。

Obsidian:非強制,但設計目標即配合 Obsidian。未設置 vaultPath 時,從 %APPDATA%\obsidian\obsidian.json(Windows)或 ~/.config/obsidian/obsidian.json(Linux/macOS)自動發現庫,優先當前打開的庫。

配置要點

各項均在 DSH 插件設置 UI 中展示,空配置即全部默認值。

字段 默認值 含義
vaultPath "" 庫絕對路徑;空則自動發現
folder "Memories" 相對庫根的記憶子目錄
maxNoteBytes 262144 超長筆記截斷硬上限
repo "" 同步目標 owner/name;空則不同步
branch "main" 推送分支
tokenFile "" GitHub token 文件;空則 ~/.dsh/dsh-obsidian-memory/token
denyFile "" 祕密黑名單;空則 ~/.dsh/dsh-obsidian-memory/deny.txt
syncEnabled true 是否運行定時同步
syncMinutes 30 同步間隔(分鐘,最小 5)
forgettingEnabled false 是否真正執行衰減歸檔寫入
decayFactor 0.9 每輪衰減乘數
pruneThreshold 0.15 低於此重要性可歸檔

啓用 GitHub 同步時,README 建議:建私有倉庫;創建僅對該倉庫 Contents: read and write 的 fine-grained token;寫入 token 文件後在配置裏設置 repo。

典型用法與文件佈局

智能體側主要由上述 7 個工具驅動;人工可在 Obsidian 或 DSH 側邊欄直接改筆記。單條記憶文件名形如:

<vault>/Memories/mem-YYYYMMDD-HHmmss <title>.md

歸檔目錄:

<vault>/Memories/.archive/…

以點開頭的 .archive 便於 Obsidian 默認圖與搜索忽略。更新筆記時 frontmatter 中的 importance、level、accessCount 需一併保留,否則會被靜默重置爲默認。

手動立即同步(在 agent 可用 obsidian_sync,或由定時器按 syncMinutes 執行)前,需已完成 token 與 repo 配置。

適用場景與注意

適合:已在用 Obsidian 做個人知識庫、希望 DSH 智能體記憶與人工筆記同一套文件、不想爲記憶單獨買 embedding 服務或維護向量庫、需要在多臺機器間用私有 GitHub 倉庫同步 Markdown 的開發者。

注意:

  1. 插件以當前 DSH 進程權限運行,安裝前應閱讀源碼與 MIT 許可證,確認 vault 路徑、同步與黑名單文件符合你的安全策略。
  2. BM25 對 paraphrase 弱於向量檢索,但對關鍵詞、標題與 wikilink 擴展更直接,且記憶不會爲召回發往第三方 embedding 服務。
  3. 拒絕寫入含祕密的筆記意味着該條不會進入庫或同步隊列;應用層仍應避免把 token 交給模型寫入記憶。
  4. README 提供「先 clone 再 dsh plugin add .」的手動安裝路徑,僅當你需要先審代碼時使用;日常推薦上述 add …@github:… 命令。

結尾

dsh-obsidian-memory 把 DSH 長期記憶綁在 Obsidian Markdown 上:側邊欄、BM25、token 預算召回、歸檔而非刪除、可選 GitHub 同步,並堅持「拒絕祕密、不脫敏」。若你要在 Harness 里長期沉澱可編輯、可備份的智能體記憶,可從目錄頁與 README 對照配置後安裝。

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

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

小夜