belowthetree
dsh-qqbot
qqbot 连接QQ机器人插件
- Stars
- 0
- Language
- TypeScript
- Created
- Aug 14, 2026
- Updated
- Aug 14, 2026
Introduction
dsh-qqbot
QQ 官方机器人插件,作为 DeepSeek Harness 的树外插件维护(不在 harness 源码树内)。
两个包:
packages/qqbot— host 端:/qqbot on|off命令 + 绑定会话 + WebSocket 网关。packages/ui-qqbot— 客户端:会话头部的连接开关。
安装
构建,然后装进你运行的 profile:
pnpm install
pnpm run build
pnpm dsh plugin --profile <name> add -w link:E:/Project/dsh-qqbot/packages/qqbot link:E:/Project/dsh-qqbot/packages/ui-qqbot
或者手动进入 profile 目录执行等价的 pnpm 命令:
cd "$env:DSH_HOME/profiles/<name>" # DSH_HOME 未设置时是 ~/.dsh/profiles/<name>
pnpm add -w link:E:/Project/dsh-qqbot/packages/qqbot link:E:/Project/dsh-qqbot/packages/ui-qqbot
注意:
- 必须带
-w:profile 目录自带pnpm-workspace.yaml,不带-w时 pnpm 报ERR_PNPM_ADDING_TO_ROOT直接失败。 - 链接子包目录,不是 workspace 根:
link:E:/Project/dsh-qqbot会按根 package.json 的 name 装成dsh-qqbot-workspace,与 patch 里的包名对不上,启动时报Cannot find package '@deepseek-ai/dsh-qqbot'。 - 用
link:而不是裸路径:裸路径是file:语义(快照副本),改源码不生效;link:直接指向源码目录,重新pnpm run build后即时生效,无需重新 add。 - 两个包都没有
dsh.bundle声明,不会进入 profile 的 bundles 层,这符合预期——由下面的 patch 行按包名挂载。
在 profile 自己的 cordis.patch.yml($DSH_HOME/profiles/<name>/cordis.patch.yml)挂载:
- insert:
- id: qqbot
name: '@deepseek-ai/dsh-qqbot'
config:
appId: 'xxxxxx'
appSecret: '<secret>'
- id: ui-qqbot
name: '@deepseek-ai/dsh-client-ui-qqbot'
不要放进 $DSH_HOME/cordis.patch.yml(home 层):它作用于所有 profile,而只有装过这两个包的 profile 才能解析——其他 profile(如 headless)会直接启动失败。
peer 依赖解析
link: 安装的 symlink 目标在 harness 之外,Node 从真实路径(realpath)向上解析依赖,所以 @deepseek-ai/cordis、dsh-* Service Definition 这些 peer 命中 dsh-qqbot 项目自己的 node_modules(pnpm install 装的最新 registry 版),不是 profile 的 node_modules 或 $DSH_HOME/profiles/node_modules 回退。这带来两个后果:
- 插件与 harness 各持一份
@deepseek-ai/cordis(双实例)。当前启动与挂载正常,但若插件代码对ctx做跨实例判断(instanceof等)会失效。 - peer 版本按
^取最新(例如dsh-session@0.1.0-rc.6),可能比正在运行的 harness(rc.5)新。运行时服务走 harness 注入的 ctx,一般兼容;harness 升级或插件用到新 API 时需对齐 peer 版本。
版本耦合说明
ui-qqbot 的浏览器 bundle 必须用 harness 的客户端加载协议构建:tsdown 配置里硬编码了 PLATFORM_MODULES(模块表 external 列表,含 @deepseek-ai/dsh-client-runtime/client 的 store 豁免)。如果 harness 更新了这份平台模块列表或 __ModuleLoader__ 协议,这里的 packages/ui-qqbot/tsdown.config.ts 需要同步更新,否则浏览器端加载会失败。
使用
安装后输入框下方会有个连接 QQ 的按钮,点击连接即可(没试过多连,慎重)
