前言¶
在 DSH 裏接 QQ、微信、B 站等 bot,常見做法是各寫一套「賬號是誰、消息進哪個會話、Outbound 走哪條路」。插件一多,映射表、去重和限流就會重複實現,bot 起來了卻發不出去也更難查。下面介紹 Stella-Mira 維護的 mira_account:把賬號池、綁定、路由、去重和限流收在一處,bot 插件只做協議適配器;它也是 mira_qqbot 等插件聲明的硬依賴,缺了就不會加載。
這是什麼¶
mira_account 是 DSH 的賬號管理框架(npm 包名 mira_account,當前 README 配套版本 0.1.0,MIT 許可證)。分類上屬於工作流類插件:通過 ctx.provide('miraAccount', api) 向生態暴露統一 API,並註冊 8 個管理工具。
它解決的核心問題是:哪個平臺賬號、哪個 peer、由哪個 DSH 會話應答——只有這一份真相;qq / 微信 / B 站 bot 不再各自維護 session 映射。
核心功能¶
賬號池與落盤¶
數據寫在 $DSH_HOME/mira_config/mira_account/(DSH_HOME 缺省爲 ~/.dsh):
| 路徑 | 作用 |
|---|---|
accounts.json |
賬號池(不含憑據本體) |
bindings.json |
會話綁定表(損壞時可丟棄重建,不影響賬號池) |
creds/<id>.json |
憑據本體,權限 600,不回顯、不進日誌、不進工具返回 |
seen/<platform>.json |
按 message_id 去重,帶 TTL |
賬號池爲空不算配置錯誤:插件仍會加載;需要賬號的工具會返回 account/none 並提示去登記文件。框架不會自動創建賬號、自動登錄或自動探測。
會話綁定與入站路由¶
綁定關係區分 taker(應答方)與 observer(旁聽)。入站一律走 inbound(),出站一律走 send()——bot 插件不得自行維護 session 映射(契約 A/B)。
無綁定時行爲由賬號上的 inboundPolicy 決定:create 新建會話、default 投 defaultSessionId、drop 丟棄並計數。
去重與限流¶
- 去重:入站路徑推薦
verdict→ 投遞 →recordSeen;dedup.ttlMs默認 30 分鐘,dedup.maxEntries默認 5000。 - 限流:按賬號維度的令牌桶,
limits.read/limits.write支持{ perMinute, perHour, perDay },默認 0 表示不限。
健康巡檢與斷線重連¶
定時調用各平臺適配器的 adapter.status(),避免 state 永遠停在 connect 時的「假在線」。默認每 30s 一輪(health.intervalMs);error / offline 賬號按指數退避重連(reconnect.minMs × 2ⁿ,封頂 reconnect.maxMs)。
虛擬平臺 vtuber¶
vtuber 無需對外連接:登記後直接視爲 online,用於給「形象」當權限主體(peer 類型 avatar),同一形象可對應一個 taker 與多個 observer,供如 muse_vtuber 一類消費方使用。
管理工具¶
| 工具 | 說明 |
|---|---|
mira_account_list |
賬號清單(含憑據是否存在、權限是否合規) |
mira_account_status |
只讀診斷:路徑、連接態、綁定、適配器、去重表、限流餘量等 |
mira_account_bind / mira_account_unbind / mira_account_bindings |
綁定管理 |
mira_account_add / mira_account_remove / mira_account_toggle |
登記、刪除、啓停賬號行 |
沒有通過工具寫入憑據的接口——工具參數會進入會話記錄,憑據只能手填 creds/<id>.json。
與 bot 插件的關係¶
README 明確:mira_account 是 mira_qqbot / mira_bilibili / mira_wxbot 的前置依賴。只裝 bot、不裝本插件時,會因 inject: ['miraAccount'] 不滿足而不加載(工具消失)。可用 mira_account_status 自證服務在跑。
安裝與啓用¶
DeepSeek Harness 生態裏插件以 Cordis bundle 形式掛載;本倉庫的 cordis.patch.yml 插入條目 id / name 均爲 mira_account。
SkillHub 目錄頁(stella-mira/mira_account)給出的 Harness 安裝話術如下(頁面正文在「先讀取…」處截斷,完整步驟以目錄頁爲準):
請安裝 DSH 插件 Stella-Mira/mira_account。
安裝後可在 profile 裏爲該插件行配置 config(均可省略),例如臨時關閉服務:
enabled: true
autoConnect: true
health:
enabled: true
intervalMs: 30000
reconnect:
enabled: true
minMs: 5000
maxMs: 300000
limits:
read: 0
write: 0
dedup:
ttlMs: 1800000
maxEntries: 5000
enabled: false 時不註冊工具、不提供服務,但插件行仍保留,便於臨時關閉。
典型用法¶
1. 登記賬號行¶
用工具登記賬號(不含憑據),或手改 accounts.json(schemaVersion 必須爲 1):
{
"schemaVersion": 1,
"accounts": [{
"id": "qq-main",
"platform": "qq",
"label": "主號",
"enabled": true,
"state": "offline",
"error": null,
"inboundPolicy": "create",
"defaultSessionId": "",
"createdAt": "2026-10-26T15:00:00.000Z",
"lastLoginAt": null
}]
}
platform 支持 qq / wx / bilibili / vtuber(新平臺需先在 lib/store.js 的 PLATFORMS 登記)。
2. 手填憑據¶
創建 creds/qq-main.json,權限設爲 600:
{
"schemaVersion": 1,
"platform": "qq",
"kind": "token",
"fields": { "access_token": "…" },
"updatedAt": "2026-10-26T15:00:00.000Z"
}
kind 可爲 cookie / token / qrcode;fields 鍵名由平臺適配器定義。讀不到文件時錯誤碼爲 creds/missing。
3. 綁定會話與 peer¶
登記 vtuber 形象並綁定兩個會話的示例(來自 README):
mira_account_add { id: "vtuber-main", platform: "vtuber", label: "形象" }
mira_account_bind { sessionId: "會話A", accountId: "vtuber-main", kind: "avatar", peerId: "main", mode: "taker" }
mira_account_bind { sessionId: "會話B", accountId: "vtuber-main", kind: "avatar", peerId: "main", observer: true }
4. 診斷¶
加載 bot 插件前,先調用 mira_account_status 確認路徑、適配器註冊、賬號連接態與 warnings。賬號池空時 mira_account_list 返回 account/none。
適用場景與注意¶
適合誰:要在 DSH 裏穩定跑多平臺 bot、或需要統一賬號/綁定/路由的多會話工作流;準備裝 mira_qqbot、mira_bilibili、mira_wxbot 時,應先裝並配好 mira_account。
運行權限:插件與當前 DSH 進程同權限,能讀寫 DSH_HOME 下配置與憑據文件。安裝前請自行審閱 GitHub 源碼 與 MIT 許可證,勿把 token 寫進 profile 或工具參數。
單實例:README 說明存在進程鎖 $DSH_HOME/mira_config/mira_account/.lock;兩個 DSH 進程同時加載會導致 plugin/instance,同一賬號可能收到雙份回覆。
常見錯誤碼(節選):account/not-found、account/disabled、binding/conflict、platform/unsupported、delivery/failed 等,均可在 README 錯誤碼錶中對照。
SkillHub 爲社區目錄站點,與 DeepSeek / 幻方無官方從屬關係;插件星標以目錄頁展示爲準(當前線索爲 0)。
小結¶
mira_account 把多平臺 bot 共用的賬號池、綁定、taker/observer 路由、message_id 去重和令牌桶限流做成一層框架,bot 只實現適配器契約。經過上面的步驟登記賬號與憑據、必要時綁定會話,再用 mira_account_status 驗證,即可在裝 bot 插件前把底座搭穩。
- 目錄頁:https://www.skillhub.cn/plugins/Stella-Mira/mira_account
- 倉庫:https://github.com/Stella-Mira/mira_account