Back to home

belowthetree

dsh-qqbot

qqbot 连接QQ机器人插件

Stars
0
Language
TypeScript
Created
Aug 14, 2026
Updated
Aug 14, 2026

Introduction

dsh-qqbot

QQ 官方机器人插件,作为 DeepSeek Harness 的树外插件维护(不在 harness 源码树内)。

两个包:

安装

构建,然后装进你运行的 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/cordisdsh-* Service Definition 这些 peer 命中 dsh-qqbot 项目自己的 node_modulespnpm 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 的按钮,点击连接即可(没试过多连,慎重)