dsh-qqbot-bridge:用 QQ 單聊遠程控制 DSH 工作區會話

前言

DeepSeek Harness(DSH)把智能體開發收進本地 WebUI:工作區、會話、模型與權限都在同一進程裏管理。實際開發時,人往往不在瀏覽器前——例如在通勤、臨時用手機回一條消息,或希望把「審批一次 shell 操作」從桌面挪到即時通訊裏完成。自建 Webhook 或第三方 IM 橋接通常還要處理鑑權、消息格式和與 DSH 會話狀態的同步,維護成本不低。

下面介紹社區插件 dsh-qqbot-bridge(維護者 Jiangsubei,分類:客戶端)。它走 QQ 開放平臺官方 Bot API v2,用 QQ 單聊(C2C) 遠程驅動 DSH 裏已有的工作區與會話,不做羣聊與頻道。插件與 WebUI 同進程運行,列表與新建會話與側邊欄實時對齊。

這是什麼

dsh-qqbot-bridge 是 DSH 的 QQ 官方機器人橋接插件:身份依賴 openid 與好友關係,不自研鑑權層。你在 QQ 裏選工作區、選會話或直接發消息,等價於在 WebUI 裏操作對應會話;Agent 的流式正文、Markdown、文件收發,以及審批與提問卡片,按 README 描述轉發到 QQ 側處理。

生態上,DSH 強調「一切皆插件」;插件目錄站 skillhub.cn 爲社區收錄,與 DeepSeek / 幻方無官方從屬關係。源碼與說明見 GitHub:Jiangsubei/dsh-qqbot-bridge,npm 包名 dsh-qqbot-bridge(資料中版本 0.1.3),許可證 MIT。

核心功能

會話與工作區

  • 遠程控制已有會話:/切換 選工作區、/會話 選會話,驅動 DSH 裏已存在的會話;WebUI 可見的工作區與會話,QQ 側可列出並接管。
  • 全工作區覆蓋:與 WebUI 側邊欄同一套可見性規則(例如隱藏已歸檔、隱藏 subagent 子會話等,以 README 爲準)。
  • 首次直髮引導:安裝後不做任何選擇、直接發一條消息 → 在默認工作區 $DSH_HOME/workspace/default 自動建會話並處理該消息(不會落到用戶主目錄)。
  • 與 WebUI 同進程、狀態實時同步:插件建的會話會出現在 WebUI 對應工作區分組裏。
  • 接管策略:優先複用 live agent;遇排他鎖衝突立即如實回執,不搶鎖、不降級。

消息與媒體

  • 整回合正文流式輸出:每個 step 的正文單獨一條,不拼接、不丟步;可通過配置關閉流式、改用普通 Markdown 消息。
  • Markdown 渲染:標題、表格、代碼塊、行內代碼、圖片等按 QQ 原生 Markdown 渲染。
  • 文件與圖片:Agent 可調用 send_file / send_image 發回;入站附件自動落盤並注入會話(默認目錄與大小上限見配置表)。

審批、提問與命令

  • 審批與提問可遠程作答:approval/request、user-questions/request 轉發到 QQ,回覆即可決策;超時 300 秒 fail-closed(按拒絕或未作答處理)。
  • 命令系統:9 箇中文命令加翻頁子命令,回執純文本;列表 10 條/頁、跨頁連續編號。
  • WebUI 設置卡片:連接 / 行爲 / 文件 / 命令四個分區;AppID/Secret 支持從 DSH 憑據庫讀取。

明確不做(README 原文):羣聊 / 頻道 / 頻道私信、記憶與人格、主動回覆、表情回應、會話歸檔與刪除、自研鑑權。機器人是被動回覆模型:須由用戶側先發起單聊。

安裝與啓用

前置條件

  1. 已安裝 DeepSeek Harness:npm install -g @deepseek-ai/dsh。
  2. Node.js ≥ 20 與 pnpm。
  3. QQ 開放平臺機器人(AppID / AppSecret),以及能與該機器人單聊的 QQ 號。

插件聲明依賴:dsh ≥ 0.2.0(見 package.json)。

安裝插件

推薦安裝到 DSH 的 web profile(無需編譯,秒級安裝):

dsh plugin --profile web add dsh-qqbot-bridge

或安裝到全局默認環境:

dsh plugin add dsh-qqbot-bridge

本地開發若從源碼 link,需先 pnpm install 與 pnpm build,再 dsh plugin --profile web add link:.;改 src/ 後必須重新 build,DSH 加載的是 dist/。

配置憑據

推薦寫入 DSH 憑據庫(與 DSH 其他密鑰同一處,不落 settings.yaml):

# ~/.dsh/.credentials.yaml
refs:
  QQ_BOT_APP_ID: "<你的 AppID>"
  QQ_BOT_SECRET: "<你的 AppSecret>"

也可在 WebUI 設置卡片填寫 app_id / app_secret。解析優先級:環境變量 QQ_BOT_APP_ID / QQ_BOT_SECRET → .credentials.yaml 的 refs → 插件配置(前者優先)。

啓動

dsh --profile web

WebUI 默認在 127.0.0.1:3080。啓動後從 QQ 給機器人發一條消息即可建立使用鏈路。

典型用法

第一次發消息

  1. 直接發消息:不選工作區與會話,插件自動新建會話(回執只報工作區名),該條消息即會話的第一個 prompt。
  2. 選工作區:/切換 列出工作區 → /切換 <序號或名字> 選中(會清空當前控制目標)。
  3. 選會話:/會話 列出當前工作區會話 → /會話 <序號> 接管;之後普通消息在該會話中發送。

一個 openid 同時只有一個控制目標;換會話用 /會話,換工作區用 /切換。

常用命令(節選)

命令 說明
/狀態 目標標題、工作區、模型、思考強度、權限檔位、忙閒、上下文用量等
/新建 [路徑] 在當前選中工作區新建會話;受 allow_create_session 約束
/模型 [名稱]、/思考 [強度]、/權限 [檔位] 查看或切換
/壓縮 壓縮當前會話歷史(等價 DSH /compact)
/停止 中斷當前正在生成的回覆
/幫助 命令清單

列表超過一頁時,頁腳會提示 /下一頁、/上一頁(跨頁連續編號)。

審批:回覆 y(或 README 列出的同義詞)允許本次;n 拒絕;/取消 取消;超時 300 秒按拒絕。

提問:選擇題回覆序號(多選用逗號);可回覆自定義文本;/跳過、/取消;超時 300 秒視爲未作答。

審批與提問只接管當前正被遠程受控的會話;非受控會話仍由 WebUI 處理。

主要配置項

可在 WebUI 設置卡片調整,字段以 README 爲準:

參數 說明 默認值
default_workspace 默認工作區;留空則 $DSH_HOME/workspace/default ''
stream_enabled 是否走 QQ 流式消息 true
stream_throttle_ms 流式分片節流(毫秒) 1000
allow_create_session 是否允許 QQ 側新建會話(含直髮自動建會話) true
media_dir 入站附件目錄(相對 $DSH_HOME 或絕對路徑) qqbot/media
media_max_bytes 單文件落盤上限 209715200(200 MB)
reply_max_chars 命令回執最大字符數 1500
list_page_size 列表分頁大小 10

適用場景與注意

適合誰:已在用 DSH WebUI 管理多工作區、多會話,且希望用手機 QQ 單聊做輕量遠程操控、看流式回覆、收文件、回審批/提問的開發者。不適合需要羣聊、頻道或插件主動推送的場景。

安全與權限:插件與當前 dsh 進程同權,可觸達該進程能訪問的工作區與會話;安裝前請閱讀源碼與 MIT 許可證,自行評估 AppSecret 與憑據存放方式。QQ 側僅能控制你賬號綁定的 openid 會話,但仍等同「遠程桌面級」操作 DSH,勿把機器人開放給不可信聯繫人。

範圍邊界:僅單聊 C2C;不支持羣聊/頻道;不做會話歸檔與刪除等 WebUI 部分能力在 QQ 側的復刻。

結尾

dsh-qqbot-bridge 把 DSH 已有工作區與會話接到 QQ 官方 Bot API v2 單聊通道上:選工作區、選會話、流式 Markdown、文件與審批/提問遠程作答,並與 WebUI 同進程同步。若你需要在 QQ 裏管 DSH 而不是另搭一套 IM 橋,可按上文命令安裝並配置憑據後,用 dsh --profile web 啓動驗證。

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

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

小夜