用 dsh-qqbot 把 DeepSeek Harness 接到 QQ 私聊和羣聊

前言

DeepSeek Harness(命令是 dsh)把自己的架構概括成一句話:一切皆插件。模型、工具、會話、沙箱,甚至 Agent 循環本身,都可以替換。官方倉庫目前仍處於 developer preview,兼容性破壞變更是預期內的事。開箱後常見入口是 Web UI 和 headless 一次性任務;如果你希望同一套 Agent 出現在 QQ 裏——私聊能接着聊、羣裏被 @ 纔開口——就需要一條 IM 通道,而不是改 Agent 循環。

dsh-qqbot 做的就是這件事。倉庫由 tencent-connect 維護,定位是把 QQ 消息平臺當成 dsh Agent 的前端協議驅動:QQ 進來的消息進入 ctx.agents,模型回覆再以 Markdown 發回 QQ。社區插件目錄把它歸在「工具與能力」,收錄日期是 2026-08-15。需要說明:這個目錄是獨立站點,和 DeepSeek / 幻方沒有官方從屬關係,不能當成官方應用商店。倉庫自己寫的「官方插件」,指的是騰訊 QQ Bot 側接入 dsh 的插件,不是目錄站點的官方背書。

本文按插件目錄頁、GitHub 倉庫 README、package.json 以及 DeepSeek Harness 官方倉庫覈對後整理:它是什麼、裝到哪個 profile、掃碼之後怎麼聊。

這是什麼

dsh-qqbot 的 npm 包名是 @tencent-connect/dsh-qqbot,當前 package.json 版本爲 0.4.0,主要語言是 TypeScript,許可證 MIT(Copyright 2026 Tencent Connect)。GitHub 倉庫 tencent-connect/dsh-qqbot 創建於 2026-08-14;寫作時(2026-08-17)GitHub API 顯示 53 星,社區目錄頁當時展示爲 26 星,星標以 GitHub 一手數據爲準。

它解決的問題很具體:讓已經初始化好的 dsh 環境,通過 QQ Bot 收發消息。README 裏的數據流可以看成:

QQ 用戶 → QQ WebSocket → dsh-im-qqbot → ctx.agents → dsh agent loop → LLM
                                 ↑                           │
                                 └── session/event ──────────┘
                                       (assistant reply → QQ sendMarkdown)

也就是說,QQ 不是另寫一套機器人邏輯,而是給現有 dsh Agent 加一條 IM 前端。插件聲明自己是純 Cordis 插件,遵循 dsh 的 “Plugins, not loop changes”:依賴寫成 inject = ['agents'],不直接耦合其他插件。

核心功能

私聊、羣聊各走獨立會話

每個 QQ 私聊用戶、每個羣各對應一個獨立 Agent。會話鍵是 qqbot:${appId}:${scope}:${peerId},SessionId 由 SHA-256 確定性派生,進程重啓後可以按同一套規則恢復。解析順序是:進程內複用 → 持久化恢復 → 全新創建。閒置超時默認 30 分鐘(sessionIdleTimeout,1800000 ms),超時後自動 dispose Agent,避免會話一直佔着內存。

羣聊默認要 @ 纔回復

requireMention 默認是 true:羣裏沒有 @ 機器人,插件不會把普通閒聊送進 Agent。私聊和羣聊還可以分別加 directPromptgroupPrompt,用來補一段額外的 system prompt。源碼裏的配置 Schema 還提供了訪問控制:私聊 / 羣聊可設爲 openallowlistdisabled,並支持 openid 白名單。README 配置表沒有列出這一項,需要精細權限時以倉庫源碼爲準。

回覆走 Markdown,並按 QQ 長度切開

出站不是純文本直出,而是 sendMarkdown。單條消息默認最多 4500 字符(textChunkLimit),源碼註釋寫明 QQ 限制大約 5000 字符。切分會感知代碼塊和表格,避免把 Markdown 結構從中間截斷。

聊天裏可以管會話和模型

README 列出的斜槓命令如下:

命令 說明
/bot-reset 重置當前會話(清除上下文)
/bot-model 查看或切換模型
/bot-status 查看當前會話狀態
/bot-help 查看所有指令

源碼裏還可以看到 /bot-new(新開會話)、/bot-clear(與 reset 同類)、/bot-ping/bot-version 等註冊項;對外說明以 README 這四條爲準。默認 LLM 提供商是 deepseek-official,默認模型是 deepseek-chat,也可以改 providermodel,或通過 preset 掛上 agent-presets 裏的預設(工具集、prompt 等)。

安裝與啓用

開始前,先按 DeepSeek Harness 官方指引完成 dsh 初始化和模型配置。官方倉庫當前的開發者預覽啓動方式是:

npx @deepseek-ai/dsh web

社區目錄頁給出的安裝命令是:

dsh plugin add github:tencent-connect/dsh-qqbot

如需可復現安裝,目錄頁建議固定 commit 哈希:

dsh plugin add github:tencent-connect/dsh-qqbot#<commit>

<commit> 換成倉庫裏實際的提交哈希。插件以當前 dsh 進程的權限運行,安裝時可能執行代碼;裝之前應檢查源代碼倉庫和許可證。

倉庫 README 推薦的日常用法是單獨建一個 qqbot profile,並安裝 npm 包(當前版本 0.4.0)。README 提示:建議升級到 0.4.0 以上再掃碼,支持點擊鏈接在瀏覽器打開,避免部分終端二維碼渲染錯位。

# 安裝到 profile
npx @deepseek-ai/dsh plugin --profile qqbot add @tencent-connect/dsh-qqbot

# 啓動
npx @deepseek-ai/dsh --profile qqbot

首次啓動時,如果憑據還沒配,插件會進入掃碼引導:終端輸出二維碼 → 手機 QQ 掃碼綁定 → 憑據寫入該 profile。之後再啓動不必重複掃碼。

本地改源碼、或不走掃碼、直接用環境變量時,README 給的是路徑安裝:

cd /path/to/dsh-qqbot
pnpm install && pnpm build

npx @deepseek-ai/dsh plugin --profile qqbot add /path/to/dsh-qqbot

export QQBOT_APPID="你的AppID" QQBOT_SECRET="你的AppSecret"
npx @deepseek-ai/dsh --profile qqbot

開發調試還可以用 --patch

export QQBOT_APPID="你的AppID" QQBOT_SECRET="你的AppSecret"
npx @deepseek-ai/dsh web --patch /path/to/dsh-qqbot/cordis.dev.yml

appIdappSecret 是必填項,也可以只走環境變量 QQBOT_APPIDQQBOT_SECRET。不要把密鑰寫進公開倉庫。

從 GitHub 源碼安裝時,dsh 官方文檔還提醒過:git 依賴拉取的是源碼而不是構建產物,pnpm ≥10 可能要求在 profile 的 pnpm-workspace.yaml 裏爲該包打開 allowBuilds 後再執行一次 add。若第一次 add 失敗,按終端提示處理,不要跳過授權檢查。

典型用法

綁定完成後,直接在 QQ 裏給機器人發消息即可。下面幾步都可以按倉庫說明覆現。

1. 私聊裏跑通一輪對話

啓動 qqbot profile 並完成掃碼後,向機器人發一句普通問題。消息會經 WebSocket 進入插件,再調用 agent.followup()。回覆以 Markdown 發回;超過 textChunkLimit 會被切開。默認模型是 deepseek-chat

2. 羣裏只在被 @ 時說話

把機器人拉進羣后,默認不會對每條羣消息作答。需要 @ 機器人,或把 requireMention 改成 false(羣很吵時不建議關)。羣聊還可以單獨寫 groupPrompt,例如限制語氣、禁止代發敏感操作。

3. 用斜槓命令管理當前會話

在對應私聊或羣裏發送:

/bot-help
/bot-status
/bot-model
/bot-reset

/bot-help 列出指令;/bot-status 看當前會話;/bot-model 查看或切換模型;聊偏了用 /bot-reset 清上下文。這些命令作用在當前 peer 的會話上,不會把其他用戶或羣的記憶清掉。

4. 按 README 改常用配置

README 配置表裏和日常使用最相關的幾項:

配置 默認值 說明
appId 必填 QQ Bot AppID,或環境變量 QQBOT_APPID
appSecret 必填 QQ Bot AppSecret,或環境變量 QQBOT_SECRET
provider deepseek-official LLM 提供商名稱
model deepseek-chat 模型名稱
preset - Agent preset id
cwd process.cwd() Agent 工作目錄
requireMention true 羣聊是否需要 @bot 才觸發
textChunkLimit 4500 單條消息最大字符數
sessionIdleTimeout 1800000 會話閒置超時(毫秒)
debug false 調試模式

cwd 決定 Agent 在磁盤上的工作目錄。dsh 的工具默認跟當前進程權限走,把機器人接到 QQ 之後,等於把這套權限暴露給能發消息的人,白名單和 requireMention 值得先想清楚。

適用場景與注意事項

適合已經在用 dsh、希望把同一套 Agent 接到 QQ 的人:個人助手放在私聊、小團隊在羣裏 @ 機器人查代碼或跑任務、自己寫 preset 後再從 QQ 觸發。不適合把它理解成「裝完就能代替官方 QQ 客服後臺」——它是 IM 通道插件,模型、工具、沙箱仍然來自你當前的 dsh profile。

使用前注意這幾件事:

  1. 權限與源碼。 插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。裝之前閱讀 tencent-connect/dsh-qqbot 源碼和 MIT 許可證;生產環境用目錄頁那種 github:owner/repo#commit 固定提交。
  2. 憑據。 AppID / AppSecret 或掃碼寫入的憑據等同於機器人身份,不要提交到 git,也不要在多人共享的機器上用未加訪問控制的開放模式。
  3. 預覽版兼容性。 DeepSeek Harness 官方 README 寫明當前是 developer preview,會有破壞性變更。插件的 peer 依賴指向 @deepseek-ai/cordis >=4.0.1 以及 @deepseek-ai/dsh-agent / dsh-llm / dsh-session>=0.1.0-rc.6。dsh 升級後若加載失敗,先對一下這幾項版本。
  4. 羣聊打擾。 默認 @ 門控是爲了少插話。關掉 requireMention 前,先確認羣規模和訪問控制。
  5. 目錄與倉庫不是同一件事。 安裝命令以目錄頁原文爲準;具體掃碼流程、配置項和命令以 GitHub README 爲準。兩者衝突時,配置與用法以倉庫一手文檔更接近實現。

小結

dsh-qqbot 把 QQ 變成 dsh Agent 的一條前端:私聊和羣聊隔離會話,重啓可按同一 sessionKey 恢復,羣默認要 @ 才響應,回覆按 Markdown 切分發送。目錄頁安裝命令是 dsh plugin add github:tencent-connect/dsh-qqbot;實際跑起來,倉庫更完整的路徑是裝進 qqbot profile,啓動後掃碼綁定。

目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-qqbot/

GitHub:https://github.com/tencent-connect/dsh-qqbot

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

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

小夜