dsh-qq:把 QQ(NapCat / OneBot11)接到 DeepSeek Harness

前言

在 DeepSeek Harness(DSH)里做智能体,常见做法是浏览器或桌面会话里对话。若你希望同一套 Harness 在手机上用 QQ 私聊也能收发——文字、图片、表情、语音,并且回复只回到发起那一侧(QQ 来的回 QQ,桌面来的留在桌面),就需要一条从 QQ 生态到 DSH 的桥,而不是再搭一套 IM 机器人框架或消息队列。

dsh-qq 由维护者 wyinthe 发布,在 SkillHub 社区目录中归类为客户端插件。它只做桥接:通过 NapCat 的 OneBot11 WebSocket 把私聊进出接到指定 DSH 会话。本文介绍其定位、能力与安装用法;事实以仓库 README 与 package.json 为准。

这是什么

一句话:它是桥,不是机器人。

数据路径可以理解为:

QQ 客户端 ──> NapCat(WSL) ──OneBot11 WS──> dsh-qq ──> DSH 会话
                                              │
                            回话按来源分流 ◀───┘
                     (QQ 发起的才回 QQ;桌面发起的留在桌面)

仓库为纯 ESM、零依赖的单文件实现(index.js),当前版本 0.2.1,许可证 MIT,要求 Node.js >= 20,对 DSH 的 peer 依赖为 @deepseek-ai/dsh >= 0.2.0。维护者自述在单机单人自用场景下已验证文字、图片、表情、语音(收)通路;发语音条尚未实现。

DSH 生态理念是「一切皆插件」;SkillHub 目录页 与 GitHub 仓库为社区资源,与 DeepSeek / 幻方无官方从属关系,不宜当作官方应用商店条目理解。

核心功能

下面按「有什么 / 没有什么」说明,避免预期错位。

私聊与接入

  • 支持 OneBot11 / NapCat 下的私聊双向文字。
  • 一个号只接白名单内用户的私聊:owners 不填则谁都不接。
  • 会话绑定:可接到指定会话,或首次使用时自建。
  • 回话跟着来源走:仅 QQ 发起的那一轮才回 QQ,避免桌面说一句、手机跟着震。

媒体与标记

方向 能力
收图 落盘后把路径交给 AI,由模型侧 read_image 打开;插件不做识别
收表情 / 商城表情包 记成文本标记
发图 / 发表情 / 发表情包 通过输出标记(见下文「典型用法」)
收语音 需自备转写脚本(earScript),DSH 侧看到转写与语气维度文本
发语音条 未做;文档指向 ffmpeg + silk-wasm 外挂方案

明确不做(README 表格)

  • 群聊投递:groupMessages 默认关闭,仅记日志。
  • 自带 ASR、表情图库、记忆与上下文压缩管理。

设计上的第三条原则:能力靠标记不靠魔法——要发图就写 [[img:路径]],不猜测用户意图。

安装与启用

安装前请自行阅读 GitHub 源码 与许可证;插件在当前 dsh 进程权限下运行,白名单与 NapCat token 等配置涉及账号安全,不宜在未审代码的情况下直接用于生产账号。

1、准备 NapCat

在 NapCat 中开启 WebSocket 服务端(细节见仓库 docs/配置.md),记下端口与 token。

2、安装插件

官方 README 给出的命令为(使用 Git 仓库直装,--profile web):

dsh plugin --profile web add https://github.com/wyinthe/dsh-qq

3、配置四类信息

地址、token、白名单(owners)、工作目录等,可参考带注释样例 examples/cordis.patch.yml,并配合 cordis.patch.yml 挂载声明使用。

4、重启 DSH 并验证

重启后,在 QQ 上向该号发一句私聊;预期为 QQ 侧收到回复,且桌面会话不会重复收到同一条回流。

典型用法

QQ 进来的内容在 DSH 里长什么样

你发 DSH 看到
文字 原文
语音 [语音] 转写文本 + [语气] 等(需配 earScript)
图片 [用户发了图片,已存到本机,可以直接用 read_image 打开:<路径>]
表情 [QQ表情 id=178]
表情包 [表情包「名字」emoji_id=… package_id=…]

AI 输出如何发到 QQ

写入内容 发出结果
[[img:D:/pics/a.png]] 图片(自动转 base64://,适配 NapCat 在 WSL 下无法直接读 Windows 盘符的情况)
[[face:178]] QQ 表情
[[mface:emoji_id/package_id/名字]] 商城表情包
纯文字 文字(超过 maxChars 自动切段)

收发标记、行为细节与已知限制见仓库 docs/用法.md;连接、白名单、语音转写约定见 docs/配置.md;按症状排查见 docs/排错.md。

适用场景与注意

适合谁

  • 已在用 DSH,且愿意自建 NapCat(常见 WSL 部署)与 OneBot11 WS 的开发者。
  • 需要单人私聊、来源分流,并愿意用显式标记控制发图发情的场景。
  • 接受语音转写、发语音条需自行扩展(脚本或 ffmpeg 方案),而非插件内置。

使用注意

  • 默认不接群聊;多人群、多账号需在上层扩展,README 写明当前优先私聊是因为可独立跑通。
  • 图片理解依赖模型与 read_image,不是插件内置能力。
  • 社区目录显示该仓库 GitHub 1 stars(截至目录收录信息);版本与能力以 CHANGELOG 与 README「状态」一节为准。

结尾

dsh-qq 把 QQ 私聊通过 NapCat / OneBot11 接到 DeepSeek Harness:白名单、会话绑定、按来源回流,并用 [[img:]] / [[face:]] 等标记约束出站能力。若你要在 DSH 上接 QQ 而非另起一套机器人框架,可从 README 的 60 秒步骤与 examples/cordis.patch.yml 动手验证。

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

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

小夜