前言¶
DSH 的理念是「一切皆插件」,但很多插件解決的是「單次調用」的問題:一次 prompt 裏的檢索、一個工具、一個界面。跨會話的東西——你的偏好、項目裏已經定過的事實、過了一夜需要回來看的進度——默認並不在它手裏。你要麼每次開會話重新交代一遍,要麼自己搭一套記憶表,再自己寫通知腳本。
下面介紹 milestone-17/dsh-bao,一個把「定時 + 通知 + 狀態 + 記憶」打包成助理層的插件。
這是什麼¶
dsh-bao(DSH 寶)是 milestone-17 維護的 DSH 插件,定位是 TRAE 寶式的個人助理:跨會話長期記憶、專屬助理 Agent 預設、每日簡報、桌面通知,以及一個工作狀態速覽面板。它在社區目錄裏歸在「記憶」分類,目前 0 星。
它不新建一套存儲棧,也不替代 DSH 原生的 schedule_*、notify_user、goals、subagents 原語,而是把這幾個原語組合成一個產品化的外層。實現基於 Harness 的公開插件 API,不碰私有實現。
核心功能¶
六個能力,全部對應 README 中寫明的實現:
- 長期記憶:
bao_remember/bao_recall/bao_forget三個工具,加上每次模型請求自動注入的「主人的長期記憶」上下文。偏好、項目事實、決策跨會話保留。 - 專屬助理預設:安裝即上架名爲「DSH 寶」的 Agent 預設(id
aibao),新建會話處可選。調度層人設自己答問、記事、查狀態,重活派給 subagent;面板有一鍵「和寶聊聊」直接開局。 - 每日簡報:每天固定本地時間(默認 09:00)把「活躍定時任務 + 最近推進的會話」彙總成一條桌面通知,可配開關。
- 助手主動通知:
bao_notify工具,模型可以以助理身份彈系統通知,比如定時彙總或需要你決策時。 - 狀態速覽:
bao_status工具,用一句話回答「最近在忙什麼 / 有哪些提醒待辦」。 - 側邊欄面板:新增「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 是把這幾個原語組合成人看的簡報、速覽和麪板。
幾點需要留意:
- 這個插件以當前
dsh進程的權限運行,能讀到你 profile 裏能看到的東西。安裝前把源碼打開過一遍,確認它訪問的路徑和路由符合預期。 - 許可證是 MIT,功能按原樣提供,沒有官方支持承諾。
- 手動掛載
cordis.patch.yml時,配置項不會自動補齊;插件自帶的 patch 行(bundle.patch指向./cordis.patch.yml)纔是它認爲的默認值。 - 更新日誌裏出現過兩次由瀏覽器端 E2E 才暴露的建會話失敗(0.2.1 缺
tool-fs-search必填配置、0.2.2 的 aibao 預設 delegation 組缺workflow-ptc)。如果你改過預設或自制 delegation 組,升級後先建一次會話驗證。 - 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 / 幻方沒有官方從屬關係。