dsh-bao:給 DeepSeek Harness 加一個有長期記憶的助理插件

前言

DSH 的理念是「一切皆插件」,但很多插件解決的是「單次調用」的問題:一次 prompt 裏的檢索、一個工具、一個界面。跨會話的東西——你的偏好、項目裏已經定過的事實、過了一夜需要回來看的進度——默認並不在它手裏。你要麼每次開會話重新交代一遍,要麼自己搭一套記憶表,再自己寫通知腳本。

下面介紹 milestone-17/dsh-bao,一個把「定時 + 通知 + 狀態 + 記憶」打包成助理層的插件。

這是什麼

dsh-bao(DSH 寶)是 milestone-17 維護的 DSH 插件,定位是 TRAE 寶式的個人助理:跨會話長期記憶、專屬助理 Agent 預設、每日簡報、桌面通知,以及一個工作狀態速覽面板。它在社區目錄裏歸在「記憶」分類,目前 0 星。

它不新建一套存儲棧,也不替代 DSH 原生的 schedule_*、notify_user、goals、subagents 原語,而是把這幾個原語組合成一個產品化的外層。實現基於 Harness 的公開插件 API,不碰私有實現。

核心功能

六個能力,全部對應 README 中寫明的實現:

  1. 長期記憶:bao_remember / bao_recall / bao_forget 三個工具,加上每次模型請求自動注入的「主人的長期記憶」上下文。偏好、項目事實、決策跨會話保留。
  2. 專屬助理預設:安裝即上架名爲「DSH 寶」的 Agent 預設(id aibao),新建會話處可選。調度層人設自己答問、記事、查狀態,重活派給 subagent;面板有一鍵「和寶聊聊」直接開局。
  3. 每日簡報:每天固定本地時間(默認 09:00)把「活躍定時任務 + 最近推進的會話」彙總成一條桌面通知,可配開關。
  4. 助手主動通知:bao_notify 工具,模型可以以助理身份彈系統通知,比如定時彙總或需要你決策時。
  5. 狀態速覽:bao_status 工具,用一句話回答「最近在忙什麼 / 有哪些提醒待辦」。
  6. 側邊欄面板:新增「DSH 寶」面板,一屏看到長期記憶、定時任務、最近會話、簡報開關,30 秒自動刷新。

工作原理

記憶存儲在 $DSH_HOME/bao/memory.json,寫盤走臨時文件加 rename 的原子寫,進程內寫鏈串行化,零依賴。

記憶注入註冊爲 system-prompt 的動態 runtime context(interpolate: false),每次模型請求前重新求值。剛記下的筆記下一步請求就能看到。這裏有個取捨:選 context 而不是 section,是爲了與 complete: true 的預設人設共存——complete section 會替換全部 section,context 則永遠渲染。

通知按順序嘗試三條通道,第一個成功者生效:Electron 原生通知(Desktop 殼內,帶應用身份與圖標)、Windows 原生 toast(toast.ps1,WinRT API,經 Windows PowerShell 5.1,純 Node Host 也可用)、都不可用時靜默返回 none。macOS / Linux 走 Electron 通道;純 Node Host 暫無額外通道。

面板數據路由 GET/POST /bao/api/overview 返回速覽 JSON,只讀:讀 schedule 服務的目錄和 sessionTitle 的會話行,不寫狀態、不激活會話。路由帶信任圍欄,只接受 loopback(localhost / [::1] / 127/8)或 trustedHosts 命中的 Host,拒絕 cross-site 請求,Origin 必須是監聽器自身。

代碼結構很簡單:Host 半邊是純 ESM(index.js + memory.js + delivery.js + toast.ps1),Client 半邊是單個 client.js(經 window.__ModuleLoader__.load 工廠,React 來自瀏覽器模塊表),無構建步驟、零運行時依賴。語法檢查:

node --check index.js && node --check memory.js && node --check delivery.js && node --check client.js

安裝與啓用

插件市場命令(推薦):

dsh plugin --profile <name> add dsh-bao

走 Discover 頁安裝:倉庫自帶一份插件市場索引(官方 format 1),把下面任一地址加進 DSH 的插件市場索引設置:

https://raw.githubusercontent.com/milestone-17/dsh-bao/master/market-index.json
https://ghproxy.net/https://raw.githubusercontent.com/milestone-17/dsh-bao/master/market-index.json

第二個地址經 ghproxy.net 鏡像,國內網絡可用。之後在 Discover 頁搜索「DSH 寶」一鍵安裝,安裝走 GitHub 並 pin 到發佈 commit。

本地目錄安裝:在 DSH 會話裏讓助理執行 plugin_manager 的 install_bundle,target 填該目錄的絕對路徑;或者在 Plugins 設置頁直接選本地目錄。

不用 bundle 通道的手動掛載:把下面一行加進 profile 的 cordis.patch.yml:

- insert:
    - id: aibao
      name: 'dsh-bao'
      config:
        digestTime: '09:30'

注意手動掛載時 digestTime 這樣的配置要自己寫全,升級也不會幫你補。

配置

配置寫在插件行(Loader patch)的 config 裏,端口和開關如下。這裏摘錄常用的幾項,完整列表見倉庫 README:

- insert:
    - id: aibao
      name: 'dsh-bao'
      config:
        digestEnabled: true
        digestTime: '09:00'
        notifyTool: true
        statusTool: true
        memoryTools: true
        memoryInject: true
        memoryInjectLimit: 30
        memoryNoteMaxChars: 200
        sound: true
        appUserModelId: 'com.deepseek.dsh'
        routePath: '/bao/api'
鍵 默認 說明
enabled true 總開關;關閉後工具、路由、簡報全部不註冊
digestEnabled true 每日簡報開關
digestTime "09:00" 簡報觸發的本地時間,HH:mm(進程時區)
notifyTool true 是否註冊 bao_notify
statusTool true 是否註冊 bao_status
memoryTools true 是否註冊三個記憶工具
memoryInject true 是否每次請求注入長期記憶
memoryInjectLimit 30 注入上下文裏最多引用幾條筆記
memoryNoteMaxChars 200 單條筆記注入時的最大字符數
sessionWindowCount 5 速覽裏最多列出幾個最近會話
sessionWindowMs 93600000 「最近」的時間窗,默認 26 小時
maxLineLength 90 單行摘要最大字符數
sound true 系統通知是否帶聲音
appUserModelId "com.deepseek.dsh" Windows toast 的應用身份
routePath "/bao/api" 面板數據路由前綴(loopback 圍欄內)

典型用法

記一件事,下次開會話還能用。在會話裏讓助理調用 bao_remember 記下你的偏好或項目決策,例如「這個項目用 pnpm 不要 yarn」。下次新開對話,注入的長期記憶裏就會帶這條筆記,不用再重新交代。讀取用 bao_recall,記錯了用 bao_forget。

每天早上看一眼進度。配好 digestEnabled: true 並把 digestTime 設成你要的時間,到點收到一條桌面通知,內容是活躍定時任務加最近推進的會話。不需要自己寫 cron 腳本去翻會話列表。

需要判斷時讓助理來找你。bao_notify 讓模型主動彈通知,bao_status 讓你一句話問清「最近在忙什麼、有哪些提醒待辦」。兩者都不需要離開當前會話。

對比重活讓 subagent 跑。用「DSH 寶」預設開會話,調度層自己處理問答和記事,重活派給 subagent;面板上的「和寶聊聊」可以直接開局。

適用場景與注意

適合個人開發者或者小團隊:你希望 assistant 跨會話記住偏好和項目事實,希望通過桌面通知而不是翻聊天記錄來跟進進度,同時願意接受「助理調度 + subagent 執行」這個分工。已經有成型的記憶或調度系統、只想爲單個會話加點工具的人,不需要這個插件,DSH 內置的 schedule_*、notify_user、goals、subagents 原語已經夠用;dsh-bao 是把這幾個原語組合成人看的簡報、速覽和麪板。

幾點需要留意:

  1. 這個插件以當前 dsh 進程的權限運行,能讀到你 profile 裏能看到的東西。安裝前把源碼打開過一遍,確認它訪問的路徑和路由符合預期。
  2. 許可證是 MIT,功能按原樣提供,沒有官方支持承諾。
  3. 手動掛載 cordis.patch.yml 時,配置項不會自動補齊;插件自帶的 patch 行(bundle.patch 指向 ./cordis.patch.yml)纔是它認爲的默認值。
  4. 更新日誌裏出現過兩次由瀏覽器端 E2E 才暴露的建會話失敗(0.2.1 缺 tool-fs-search 必填配置、0.2.2 的 aibao 預設 delegation 組缺 workflow-ptc)。如果你改過預設或自制 delegation 組,升級後先建一次會話驗證。
  5. macOS / Linux 桌面通知目前只有 Electron 通道,純 Node Host 上火牆內靜默返回 none,不會報錯也不會打斷會話。

結尾

dsh-bao 的價值不在單個功能,而在把記憶、簡報、通知、面板這四件散落的東西接成一條「助理主動找你」的鏈路,同時不接管 DSH 原有的調度原語。源碼體量小、零運行時依賴,讀一遍的成本不高。

  • 社區目錄頁:https://www.skillhub.cn/plugins/milestone-17/dsh-bao
  • 倉庫:https://github.com/milestone-17/dsh-bao

注:社區目錄是獨立站點,與 DeepSeek / 幻方沒有官方從屬關係。

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

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

小夜