Back to home

cafeawa

dsh-qqbot

No description

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

Introduction

dsh-qqbot

开源的 DeepSeek Harness (dsh) QQ Bot IM 插件。

把 QQ 消息平台作为 dsh agent 的前端协议驱动:用户在 QQ 私聊/群聊中与 dsh agent 对话、执行工具、切换模型、管理会话/工作区,并通过 QQ 消息完成审批。

本仓库是从零重写的可开源版本,不包含腾讯内部插件代码,也不依赖 UNLICENSED@tencent-connect/qqbot-connector。 底层协议使用 MIT 许可的 @tencent-connect/qqbot-nodejs

功能

  • QQ 私聊(C2C)/群聊消息接入
  • 流式回复、Markdown 分块发送
  • 会话隔离、空闲回收、重启恢复
  • 模型路由:per-peer 偏好 / settings.yaml / 宿主默认
  • 群聊历史上下文、引用消息、文件附件下载
  • 内置命令:/bot-model/bot-reset/bot-status/bot-workspace/goal/dsh
  • 工作区隔离与跨会话切换
  • dsh 审批桥:QQ 按钮/文字审批,WebUI 同时提示
  • goal 长任务完成通知

安装

要求:Node.js >= 18,dsh 环境已可用。

# 在 dsh-qqbot 项目目录构建
corepack pnpm install
corepack pnpm build

# 安装到 dsh profile(本地路径)
dsh plugin --profile qqbot add /path/to/dsh-qqbot

# 启动
export QQBOT_APPID="你的AppID"
export QQBOT_SECRET="你的AppSecret"
dsh --profile qqbot

也可通过 cordis.patch.yml--patch 方式加载。

配置

在 profile 的 cordis.patch.yml 中:

- id: im-qqbot
  config:
    appId: __FROM_ENV__
    appSecret: __FROM_ENV__
    requireMention: true
    textChunkLimit: 4500
    sessionIdleTimeout: 1800000
    maxQueue: 20
    processingTimeoutMs: 120000
    historyLimit: 10
    access:
      c2cMode: open
      c2cAllow: []
      groupMode: open
      groupAllow: []
    debug: false

主要配置:

配置类型默认值说明
appId / appSecretstring必填QQ Bot 凭据,也可用 QQBOT_APPID / QQBOT_SECRET
provider / modelstring继承宿主默认模型路由
requireMentionbooleantrue群聊是否需要 @bot
streamingbooleantrueC2C 流式回复
sessionIdleTimeoutnumber1800000会话闲置回收时间
approvalTimeoutMsnumber300000QQ 审批等待超时
approvalNotifyTargetobject-固定审批通知目标
accessobjectopen访问控制

开发

corepack pnpm install
corepack pnpm build     # 构建 dist
corepack pnpm typecheck
corepack pnpm test      # 运行测试

架构

QQ 用户 → QQ WebSocket → @tencent-connect/qqbot-nodejs → 中间件链
                                                              ↓
                                                     handleInbound
                                                              ↓
                                                     SessionManager → dsh agent
                                                              ↓
                                              session/event → outbound → QQ Markdown

License

MIT