dsh-qqbot:DeepSeek Harness 上的 macOS QQ 機器人控制中心

前言

在 DeepSeek Harness(DSH)裏接 QQ,常見做法是自行拼 NapCat、OneBot、Koishi 和模型網關:路徑、端口、反向 WebSocket、權限與 AI 觸發分散在多處配置裏,啓停和排查成本高。社區插件 dsh-qqbot(維護者 prophetcrab)把 DSH 端定位爲「控制中心」:由 DSH 負責安裝/啓停、配置控制面、AI 網關、人設/畫像與 Web 面板;NapCat 與 Koishi 作爲外部運行時仍由插件管理,但不承擔 DSH 側的權限策略與模型編排。當前實現 僅支持 macOS / Apple Silicon,與 Linux 或 Windows 上的自建方案不在同一支持範圍內。

這是什麼

dsh-qqbot 是 DSH 的 客戶端類插件(package.json 中 dsh.client.platform 爲 web,並注入側邊欄與設置 UI)。一句話鏈路如下:

QQ ↔ NapCat ↔ OneBot 11 ↔ Koishi ↔ DSH Host ↔ 面板 / LLM

插件版本 0.5.1,許可證 MIT,依賴 DSH >=0.2.1-rc.2 <0.3.0,Node ^22.19.0 || >=24.0.0。GitHub 倉庫 prophetcrab/dsh-qqbot 當前分支爲 dshbot-mac;社區目錄頁見 SkillHub 條目(獨立站點,與 DeepSeek / 幻方無官方從屬關係)。

三端分工

理解插件前先對齊職責邊界(摘自 README 表格):

端 負責 不負責
NapCat QQ 登錄、協議、收發消息、OneBot 實現、WebUI 權限、AI、業務、面板
Koishi Session、權限、觸發、上下文、指令/插件、發送 QQ 協議、QQ 注入、模型調用
DSH(本插件) 安裝/啓停、配置控制面、AI 網關、人設/畫像、面板 QQ 協議、消息循環、權限執行

NapCat 只從內置離線包安裝(vendor/napcat/payload/NapCat.Shell-4.18.42.zip),校驗 size 與 SHA-256,不聯網下載。Koishi 使用模板項目 ~/project/qq-bot,版本 4.18.11,默認端口 5140,反向 WS 路徑 /onebot。

核心功能

下面介紹 README 中可覈對的能力,不展開未在資料中出現的「一鍵」細節以外的承諾。

Host 與 Client 插件化

Host 側每個能力是一個 host plugin,統一貢獻 registerRoute、registerTool、registerFeature、registerStatusProvider、registerClientTab、provide(service);關閉某個插件時,其路由、工具、Feature 與 Tab 一併消失。Client 側每個 Tab 是獨立 Client 插件,源碼在 client/,構建產物爲 client.js(npm run build:client),避免單文件巨石。

面板側 Client 插件目錄包括:overview、ai、messages、access、plugins、features、logs——對應總覽、AI、消息、權限、插件、特性與日誌等 Tab。

NapCat 與 Koishi 管理

NapCat 側要點:

  • QQ.app:/Applications/QQ.app
  • WebUI:127.0.0.1:6099
  • 反向 WS:ws://127.0.0.1:5140/onebot

可配置字段(空值表示走默認推導):napcatPort、napcatToken、qqPath、napcatDir、offlineVendorDir、offlineNapcatVersion。

Koishi 側可配置:projectDir(默認 ~/project/qq-bot)、koishiPort、reversePath、napcatToken、autoRestartKoishi、autoInstallDeps、autoSyncSelfId、logLines。

AI、人設、權限與消息

  • DSH 寫 配置 / 人設 / 畫像;Koishi 模板插件(如 access-control、ai/*)執行 權限、觸發與發送。
  • Koishi 側 AI 子模塊包括 gateway.ts(DSH HTTP 契約)、trigger.ts(概率/@/回覆/跟進)、context.ts(背景/圖片)等,插件間通過 ctx.qqbot.* 服務通信。
  • 運行時數據落在 ~/project/qq-bot/data/:config/(access.json、ai-settings.json、persona.json)、state/(含 koishi.db、napcat-login-qr.png 等)、assets/、logs/。

舊版平鋪的 data/*.json 可用遷移腳本一次性遷入(遷移前需停止 Koishi):

node scripts/migrate-data.mjs ~/project/qq-bot --database

安全與架構約束

  • NapCat token 不落日誌、不返回明文;外部命令使用 argv 數組,不拼 shell。
  • 離線包校驗失敗即拒絕安裝;權限策略由 Koishi access-control 執行。
  • 倉庫內 npm run check 覆蓋測試、client 構建、host/client 冒煙、架構與離線包校驗等(README 稱 host 冒煙約 41 routes / 6 tools / 5 features)。

安裝與啓用

資料中的安裝入口是項目內腳本,不是 dsh plugin add github:... 形式的目錄命令。使用前需已將插件源碼放到本地路徑(README 示例爲 ~/project/dsh-qqbot),並在該目錄執行:

cd ~/project/dsh-qqbot
node scripts/install-profile.mjs --profile desktop --install

首次加載會依次:

  1. 從 template/ 創建 ~/project/qq-bot
  2. 解壓內置 Koishi darwin-arm64 依賴(template/runtime-bundles/node_modules-darwin-arm64.tar.gz)
  3. 從 vendor/napcat 離線安裝 NapCat
  4. 寫入 OneBot 反向 WS 配置
  5. 啓動後掃碼登錄 QQ

安裝前請自行閱讀倉庫源碼與 MIT 許可證;插件以當前 DSH 進程權限運行,會寫本地項目目錄與 QQ/NapCat 相關路徑,僅在可信環境中啓用。

典型用法與開發校驗

日常運維圍繞 DSH 面板與各 Tab 完成啓停、消息查看、權限與 AI 設置;具體按鈕與 API 以 Host 註冊的路由爲準。若你參與插件開發或二次打包,README 給出的校驗命令如下:

npm test                 # 198 tests
npm run build:client
npm run smoke:host
npm run smoke:client
npm run check:architecture
npm run offline:verify
npm run check            # 全部

Client 源碼與生成物需保持同步:

npm run build:client
node scripts/build-client.mjs --check

更細的模塊與重構說明見倉庫 docs/archive/refactor-v2/ 與 docs/decisions/ 下的設計文檔(如人格/記憶、羣消息監聽閉環等)。

適用場景與注意

適合:已在 macOS(Apple Silicon)上使用 DSH,希望用統一面板管理 NapCat + Koishi + AI 網關與人設/畫像的 QQ 機器人方案,並接受離線內置 NapCat/Koishi 依賴的維護方式。

不適合或需注意:

  • 非 macOS 環境:README 明確當前分支只支持 macOS / Apple Silicon。
  • 需要自行從 GitHub 拉取或審查代碼後再安裝;不要使用資料未給出的安裝命令。
  • NapCat 涉及 QQ 協議與第三方實現,合規與賬號風險需自行評估;權限策略雖在 Koishi 執行,策略內容仍由你在面板與配置中定義。

結尾

dsh-qqbot 把 QQ 機器人鏈路上 DSH 該管的一層(安裝啓停、控制面、AI 網關、人設/畫像、Web 客戶端)收攏爲插件化 Host/Client,並與 NapCat、Koishi 的職責劃分寫死在架構裏,便於在 DSH「一切皆插件」的生態中按需開關能力。

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

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

小夜