🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

QQ 单聊机器人 Puwenhui-Me/dsh-qq-bot

DeepSeek Harness
Puwenhui-Me28 天前有提交已提供中文文档扫描:高危

在手机 QQ 里与智能体对话,收发图文文件并保留多轮记忆

30.4/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/12 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Puwenhui-Me/dsh-qq-bot
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · platform
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/11/02·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 28 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(unknown · 2026/11/2) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
🔴 安全扫描发现高危能力自动 · 静态分析源码
v2.7.0
🔴 扫描:高危尚无人工评估

静态扫描发现安装期即执行代码,或命令参数由运行时变量拼接(参数来源无法静态判定,从严处理)。

命令参数由运行时变量拼接读写/删除本地文件
查看扫描证据(共 13 处,展示前 13 条)
  • 执行外部命令表达式求值
    src/bridge.ts:33
    private spawn(): void {
  • 写入本地文件
    src/bridge.ts:34
    mkdirSync(this.config.mediaDir, { recursive: true })
  • 执行外部命令来自配置/变量
    src/bridge.ts:35
    const child = spawn(this.config.pythonPath, [this.config.botScript], {
  • 读取本地文件
    src/index.ts:147
    const data = readFileSync(attachment.path)
  • 写入本地文件
    src/index.ts:164
    mkdirSync(join(cwd, 'uploads'), { recursive: true })
  • 写入本地文件
    src/index.ts:165
    copyFileSync(attachment.path, dest)
  • 写入本地文件
    src/index.ts:214
    mkdirSync(resolved.mediaDir, { recursive: true })
  • 写入本地文件
    src/index.ts:215
    writeFileSync(path, stored.data)
  • 写入本地文件
    src/registry.ts:87
    mkdirSync(this.cwdRoot, { recursive: true })
  • 写入本地文件
    src/registry.ts:113
    mkdirSync(this.cwdRoot, { recursive: true })
  • 读取本地文件
    src/registry.ts:178
    const raw: unknown = JSON.parse(readFileSync(this.mapPath, 'utf8'))
  • 写入本地文件
    src/registry.ts:190
    mkdirSync(dirname(this.mapPath), { recursive: true })
  • 写入本地文件
    src/registry.ts:191
    writeFileSync(this.mapPath, `${JSON.stringify(Object.fromEntries(this.sessions), null, 2)}\n`)
扫描于 2026/11/4(1 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-default-model@deepseek-ai/dsh-attachment@deepseek-ai/dsh-home-paths@deepseek-ai/dsh-llm@deepseek-ai/dsh-session
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 接入QQ单聊消息
  • 收发文本图片文件
  • 保留多轮对话记忆

QQ 单聊 (C2C) 机器人桥接插件:把 QQ 消息接入 DeepSeek Harness,支持文本/图片/文件入站、Markdown 回传、多轮记忆

README

由 DeepSeek 最新模型翻译生成
@puwenhui/dsh-qq-bot 把 QQ 单聊(C2C) 接入 DeepSeek Harness:在手机 QQ 上给机器人发 文本 / 图片 / 文件,DSH 的智能体处理后,把结果以 Markdown 推回 QQ。每个 QQ 用户对应一个持久化的智能体会话,多轮记忆跨重启保留。 工作原理 ┌── deepseek-harness (Node) ────────────────────────────────┐ │ qq-bot 插件 spawn Python(botpy) 子进程 │ │ └─ 每个 QQ 用户 = 一个 Agent(多轮记忆 / 重启 resume) │ │ ▲ NDJSON stdin/stdout 双向桥 │ └────────┼──────────────────────────────────────────────────┘ │ ┌────────▼──────────────────────────────────────────────────┐ │ Python bot.py(botpy,持有 QQ WebSocket 长连接) │ │ on_c2c_message_create → 转发给 DSH;send 指令 → 回发 QQ │ └───────────────────────────────────────────────
展开完整文档(README 剩余 1 节)
@puwenhui/dsh-qq-bot

把 QQ 单聊(C2C) 接入 DeepSeek Harness:在手机 QQ 上给机器人发 文本 / 图片 / 文件,DSH 的智能体处理后,把结果以 Markdown 推回 QQ。每个 QQ 用户对应一个持久化的智能体会话,多轮记忆跨重启保留。

工作原理

┌── deepseek-harness (Node) ────────────────────────────────┐
│ qq-bot 插件 spawn Python(botpy) 子进程 │ │ └─ 每个 QQ 用户 = 一个 Agent(多轮记忆 / 重启 resume) │ │ ▲ NDJSON stdin/stdout 双向桥 │ └────────┼──────────────────────────────────────────────────┘ │ ┌────────▼──────────────────────────────────────────────────┐ │ Python bot.py(botpy,持有 QQ WebSocket 长连接) │ │ on_c2c_message_create → 转发给 DSH;send 指令 → 回发 QQ │ └───────────────────────────────────────────────────────────┘

- 入站:文本作为 user message 进智能体;图片下载后经 attachments 服务转成 image content block;文件下载后复制到该会话的 workspace uploads/ 并以文本告知路径(智能体用文件工具读取)。
- 出站:assistant/message 的文本块按顺序回发为 QQ Markdown(msg_type=2,可用 markdown: false 降级纯文本)。
- 记忆:$DSH_HOME/qq-bot/sessions.json 持久化 openid → sessionId 映射;重启后用 agents.resume() 接回同一会话。

前置条件

1. 一个 QQ 开放平台的机器人,拿到 AppID 与 AppSecret,并开通「单聊(C2C)消息」能力。
2. 一个支持视觉理解(图片输入)的 LLM(推荐阿里云百炼 qwen3.8-max),拿到 百炼 API Key。
3. Python ≥ 3.8。

安装与部署(任意机器,从零到可用)

$DSH_HOME 默认是 ~/.dsh(Windows 为 C:\Users\<你>\.dsh)。以下以 dsh web(web profile)为例。

① 安装插件(一条命令,从 npm)

dsh plugin --profile web add @puwenhui/dsh-qq-bot

(若 dsh 不在 PATH,用仓库内调用 pnpm dsh plugin --profile web add @puwenhui/dsh-qq-bot。)

② 安装 Python 依赖

pip install -r <npm包内>/python/requirements.txt
等价于:
pip install qq-botpy aiohttp

③ 配置凭据:编辑 $DSH_HOME/.env

QQ 机器人 AppSecret
QQBOT_SECRET=你的QQ机器人AppSecret

阿里云百炼 API Key(视觉模型 qwen3.8-max 用)
BAILIAN_API_KEY=你的百炼API-Key

($DSH_HOME/.env 会在 DSH 启动时自动加载进 process.env。)

④ 配置 LLM 路由:编辑 $DSH_HOME/settings.yaml(或直接在 DSH Web「模型」页添加,等效)

llm-pi-ai:
providers:
bailian:
displayName: 百炼API apiKeyEnv: BAILIAN_API_KEY api: openai-completions baseURL: https://dashscope.aliyuncs.com/compatible-mode/v1 models:
- id: qwen3.8-max
name: qwen3.8-max
input: [text, image]

关键:input: [text, image] 声明该模型支持图片输入(视觉理解)。若用的是百炼专属部署网关,把 baseURL 换成你自己的专属地址(如 https://llm-xxx.cn-beijing.maas.aliyuncs.com/compatible-mode/v1)。

⑤ 挂载插件:编辑 $DSH_HOME/profiles/web/cordis.patch.yml

- insert:
- id: qq-bot
name: "@puwenhui/dsh-qq-bot"
config:
appid: '你的QQ机器人AppID' secretEnv: 'QQBOT_SECRET' markdown: true provider: 'bailian' model: 'qwen3.8-max'

⑥ 重启并验证

dsh web

控制台出现 qq-bot: python bridge ready 即桥接成功;用手机 QQ 私聊机器人即可对话。插件未配置(appid 或 secret 为空)时静默禁用,不影响 DSH 其余功能。

完整配置项(cordis.patch.yml 的 config)

| 字段 | 默认 | 说明 |
| appid | '' | QQ 开放平台 AppID(必填) |
| secret / secretEnv | '' | AppSecret;secret 优先于 secretEnv |
| pythonPath | python | Python 解释器 |
| botScript | 包内 python/bot.py | 桥接脚本绝对路径 |
| stateDir | $DSH_HOME/qq-bot | 会话映射持久化目录 |
| mediaDir | <stateDir>/media | 附件字节共享目录 |
| cwdRoot | <stateDir>/workspaces | QQ 会话共享工作区目录(也注册为侧边栏「QQ bot」分组) |
| workspaceTitle | QQ bot | 侧边栏分组标题 |
| provider / model | 部署默认 | 传给智能体的 provider/model(建议直接填视觉模型,如 bailian/qwen3.8-max) |
| visionProvider / visionModel | '' | 可选:按消息分流,含图时切到该视觉模型(因 DSH 历史含图后无法回退文本模型,一般建议直接全用视觉模型) |
| maxTokens | 0(不设) | 每次请求最大输出 token |
| markdown | true | 助手文本以 Markdown 回发 |
| ack | '' | 非空时收到消息先回一句确认 |

能力矩阵与已知限制

| 方向 | 能力 | 状态 |
| 入站 | 文本 | ✅ |
| 入站 | 图片(下载→attachments) | ✅(需视觉模型) |
| 入站 | 文件(下载→workspace) | ✅ |
| 出站 | Markdown / 文本 | ✅ |
| 出站 | 图片 | ⚠️ post_c2c_file 需公网 URL;本地图暂以路径文本回传 |
| 出站 | 文件 | ⚠️ QQ 开放平台 file_type=4(文件)暂未开放,暂以路径文本回传 |

频道(Guild)不支持文件发送、且 Markdown 发送需内邀,本插件当前只实现单聊(C2C)。群聊支持已完成设计评估、尚未实施,方案见 docs/group-chat-plan.md;频道、图片/文件出站增强属于后续迭代。

安全说明

npm 包内只含代码与文档,不含任何凭据。你的 QQBOT_SECRET、BAILIAN_API_KEY、AppID 都配置在各自机器的 $DSH_HOME(.env / settings.yaml / cordis.patch.yml),运行时才读取,不会随包发布。

开发

- 构建:tsc -b tsconfig.host.json && tsdown --env.DSH_BUILD_FACE host。
- 更新发布:改代码 → 重建 → npm pack → npm publish(bump version)。
- 联调可手动跑 Python 桥验证 QQ 连接(stdin 输入 NDJSON、stdout 观察事件):

QQBOT_APPID=xxx QQBOT_SECRET=yyy QQBOT_MEDIA_DIR=/tmp/qqbot-media \
python <插件目录>/python/bot.py
预览分享卡片长什么样 ↓Puwenhui-Me/dsh-qq-bot
分享 · DeepSeek Harness Hub
Puwenhui-Me/dsh-qq-bot

在手机 QQ 里与智能体对话,收发图文文件并保留多轮记忆

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部