tencent-connect / dsh-qqbot

Listed

让 QQ Bot 接入 DeepSeek Harness(dsh)的官方插件

mainOther View source

Installation

npx @deepseek-ai/dsh plugin --profile qqbot add @tencent-connect/dsh-qqbot

This command is generated from the GitHub repository address. Inspect the upstream README and source before running it; pin a release or commit when reproducibility matters.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit c303361Synced Aug 17, 2026

This README snapshot could not be refreshed during the latest directory sync.

@tencent-connect/dsh-qqbot

基于 deepseek-harness (dsh) 的 QQ Bot IM 插件,将 QQ 消息平台作为 dsh agent 的前端协议驱动。

中文 | English

架构

QQ 用户 → QQ WebSocket → dsh-im-qqbot → ctx.agents → dsh agent loop → LLM
                                 ↑                           │
                                 └── session/event ──────────┘
                                       (assistant reply → QQ sendMarkdown)

安装

方式一:手动执行

# 安装到 profile
npx @deepseek-ai/dsh plugin --profile qqbot add @tencent-connect/dsh-qqbot

# 启动
npx @deepseek-ai/dsh --profile qqbot

首次启动时,插件检测到凭据未配置会自动进入扫码引导:终端输出二维码 → 手机 QQ 扫码绑定 → 凭据自动保存到 profile,后续启动无需再次扫码。

二维码扫码示意图

提示:建议升级至 0.4.0 以上版本扫码,支持点击链接在浏览器打开,避免部分终端二维码渲染错位的问题。

方式二:本地路径安装

# 构建
cd /path/to/dsh-qqbot
pnpm install && pnpm build

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

# 启动
export QQBOT_APPID="你的AppID" QQBOT_SECRET="你的AppSecret"
npx @deepseek-ai/dsh --profile qqbot

方式三:--patch 开发模式

export QQBOT_APPID="你的AppID" QQBOT_SECRET="你的AppSecret"
npx @deepseek-ai/dsh web --patch /path/to/dsh-qqbot/cordis.dev.yml

配置项

配置类型默认值说明
appIdstring必填QQ Bot AppID(或通过 QQBOT_APPID 环境变量)
appSecretstring必填QQ Bot AppSecret(或通过 QQBOT_SECRET 环境变量)
providerstringdeepseek-officialLLM 提供商名称
modelstringdeepseek-chat模型名称
presetstring-Agent preset id
cwdstringprocess.cwd()Agent 工作目录
requireMentionbooleantrue群聊是否需要 @bot 才触发
groupPromptstring-群聊额外 system prompt
directPromptstring-私聊额外 system prompt
textChunkLimitnumber4500单条消息最大字符数
sessionIdleTimeoutnumber1800000会话闲置超时(ms),默认 30 分钟
debugbooleanfalse调试模式

内置命令

命令说明
/new(别名 /reset /clear开始新会话(清空上下文)
/compact压缩会话历史(摘要替换旧记录,保留上下文)
/model查看或切换模型
/stop中止当前生成
/bot-ping连通性测试
/bot-version查看版本信息
/bot-status查看当前会话状态
/bot-help查看所有指令

核心模块

src/
├── index.ts                    # Cordis 插件入口(async apply)
├── config.ts                   # 配置 Schema
├── types.ts                    # 全局类型定义
├── setup.ts                    # 凭据绑定(扫码)
├── transport/                  # 传输层
│   ├── inbound.ts              # QQ 入站消息 → agent.followup()
│   ├── outbound.ts             # session/event → QQ sendMarkdown
│   ├── outbound-buffer.ts      # 流式缓冲
│   └── chunker.ts              # Markdown 文本切分
├── session/                    # 会话管理层
│   ├── session-manager.ts      # QQ peer → Agent 映射
│   └── idle-evictor.ts         # 闲置回收
├── model/                      # 模型路由层
│   ├── model-resolver.ts       # 路由解析
│   ├── prefs-store.ts          # per-peer 偏好持久化
│   └── settings-reader.ts      # settings.yaml 只读
├── shared/                     # 共享工具
│   ├── utils.ts                # 通用函数
│   ├── scope.ts                # scope/peer 提取
│   └── send-helper.ts          # 分块发送
├── commands/                   # 斜杠命令
└── typings/                    # 外部模块声明

会话路由

sessionKey: qqbot:${appId}:${scope}:${peerId},由 SHA-256 确定性派生 SessionId,重启后可恢复。

解析策略:进程内复用 → 持久化恢复 → 全新创建。

设计原则

  • 纯 Cordis 插件 — 遵循 dsh "Plugins, not loop changes" 原则
  • 声明式依赖inject = ['agents'],不直接耦合其他插件
  • 会话隔离 — 每个 QQ 私聊用户/群聊各一个独立 Agent
  • Preset 支持 — 可通过 agent-presets 服务挂载预设(工具集、prompt 等)
  • 闲置回收 — 超时自动 dispose Agent,防止内存泄漏
  • Markdown 输出 — 回复以 Markdown 格式发送,支持代码块/表格感知切分

本地开发

# 安装依赖
pnpm install

# 构建
pnpm build

# 开发模式(watch)
pnpm dev

# 用 --patch 方式调试
export QQBOT_APPID="xxx" QQBOT_SECRET="xxx"
npx @deepseek-ai/dsh web --patch /path/to/dsh-qqbot/cordis.dev.yml

License

MIT

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

DocumentationDetected

Repository information

Language
TypeScript
License
MIT
Latest release
0.4.0
Last updated
Aug 18, 2026, 3:11 PM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.