Preface

The plugin mechanism of DSH allows external capabilities to be attached alongside agent sessions. A specific scenario is: you already have a running DSH agent, but you want it to work in QQ group chats and private chats. Existing approaches usually require handling OneBot messages, session isolation, whitelists, context injection, and reply splitting manually.

Below introduces cheesehaqi/dsh-qq-onebot-bridge. It drives QQ messages directly into DSH agent sessions and automatically sends agent replies back to QQ.

What is this

dsh-qq-onebot-bridge is a standalone bundle for bidirectional bridging between QQ and DeepSeek Harness. The confirmed repository address in the documentation is:

https://github.com/cheesehaqi/dsh-qq-onebot-bridge

The license is:

MIT

It is based on OneBot v11 reverse WebSocket. QQ group chat or private message messages enter DSH agent sessions, and agent replies are automatically segmented and sent back to QQ.

Messages, Sessions, and Memory

Session Grouping

The plugin isolates contexts by session:

  • Group chats: One session per group, or one session per person per group
  • Private chats: Independent session per user, preventing different users from interfering with each other’s context

Session commands include:

/new
/status

/new is used to reset the current session, /status is used to view session status.

Persistent Memory

Recent conversations are saved to disk at:

cwd/qq-memory/

After the host restarts, this memory is automatically injected into the new session. If you need to clear the current session memory, you can use:

/new

Private Chat Image Recognition and Quote Parsing

Images or animated stickers in private chats are automatically downloaded to:

cwd/qq-images/

The agent can use the tool to view:

describe_image

In group chats, when @mentioning the bot and quoting text, images, or voice messages, the plugin automatically expands the quoted content. Quoted images are saved to:

cwd/qq-replies/

Quoted voice messages are automatically transcribed.

Reminders, Group Management, and Interaction

Scheduled Reminders

Supports setting reminders in natural language, for example:

30 minutes from now remind me to drink water
Remind me to have a meeting at 9 AM tomorrow

Reminders persist across host restarts. View pending list:

/reminders

Group Management

Common group management commands include:

/summary
/todo
/mute
/unmute
/kick
/clear

Among them:

  • /summary is used to summarize recent chat
  • /todo is used to manage shared to-dos, can be used with “note: xxx”
  • /mute, /unmute, /kick, /clear are admin commands
  • Kicking requires double confirmation

Group voting can be initiated with the following format:

Vote: Question? Option A Option B

Other members reply with letters to vote.

Interactive Features

The plugin also contains the following interactive capabilities:

  • /help command menu
  • Poke reaction cute responses
  • Voice reading
  • Daily check-in
  • Automatic welcome for new members joining the group
  • Emoji system

The emoji system supports:

[face:name]

It also supports session tools:

qq_face_list
qq_face_send

Practical Utilities

Common diagnostic and export commands:

/health
/export

/health is used for running diagnostics, /export is used to export chat history as Markdown. The plugin also supports automatically saving private chat files locally.

Voice, Image, and Image Generation

Voice to Text STT

Triggers:

  • Group chat: @mention the bot and quote a voice message
  • Private chat: Send voice message directly

Supported endpoints include:

  • Zhipu GLM-ASR-2512
  • OpenAI compatible /audio/transcriptions endpoint

The related interface is:

/audio/transcriptions

Notes:

  • Zhipu GLM-ASR-2512 limits to wav/mp3, no more than 30 seconds, no more than 25MB
  • Longer voice can use SiliconFlow or other endpoints
  • The multipart field for Zhipu interface must be file and be binary
  • Using file_base64 will result in 1214 error

Voice Reply TTS

Supports three synthesis schemes:

  • Azure Xiaoxiao
  • OpenAI compatible service
  • Local GPT-SoVITS voice cloning

Local TTS requires configuring the reference audio path:

ttsLocalRefAudio

Example requirements are 3-10 seconds wav.

Image Generation

Image generation command:

/draw <prompt>

Requires @mentioning the bot in group chats. Supported backends:

  • OpenAI compatible interface
  • Local Stable Diffusion WebUI

Security, Defaults, and Runtime Notes

Security Configuration

Security-related configuration items include:

allowUsers
allowGroups
accessToken
replyOnlyWhenMentioned

Rules:

  • allowUsers empty rejects all private chats
  • allowGroups empty rejects all group messages
  • accessToken empty means no validation
  • After configuring accessToken, the OneBot side needs to carry the same token
  • replyOnlyWhenMentioned defaults to true, only replies in group chats when @mentioned

Disabled by Default

The following switches are disabled by default:

quietHoursEnabled
ttsEnabled
checkinEnabled
welcomeEnabled
imageGenEnabled

quietHoursEnabled is used to enable quiet hours on weekdays. Weekends are automatically exempted, and scheduled reminders and voting draws are not affected.

Persona Decoupling

The plugin itself does not contain any persona or memory content. Persona and group rules can be injected into sessions via dsh-mnemon files:

USER.md
MEMORY.md

Installation and Enabling

  1. First confirm dependency hierarchy. The confirmed peerDependencies requirements in the documentation are:
@deepseek-ai/cordis ^4.0.1
@deepseek-ai/dsh-* ^0.1.0-rc.6
  1. Install local directory plugin:
dsh plugin --profile web add <本目录>
  1. Configure reverse WebSocket address in NapCat or other OneBot implementations:
ws://127.0.0.1:6700/

If the plugin is configured with accessToken, the OneBot side needs to fill in the same token.

  1. Fill in whitelists according to business needs:
allowUsers
allowGroups

If both whitelists are empty, private chats and group messages will be rejected respectively.

  1. Restart DSH web service to make install/uninstall take effect:
dsh web
  1. Uninstall plugin:
dsh plugin --profile web remove dsh-qq-onebot-bridge

Typical Usage

Session Status

/new
/status

/new resets the current session, /status views the session status.

Scheduled Reminders

Remind me to drink water in 30 minutes
Remind me to have a meeting at 9 AM tomorrow
/reminders

Group Management

/summary
/todo
note: xxx
Vote: Question? Option A Option B
/mute
/unmute
/kick
/clear

Among them, /kick requires double confirmation.

Voice to Text

Group chat:

@mention the bot and quote a voice message

Private chat:

Send voice message directly

Image Generation

Private or group chat:

/draw <prompt>

Requires @mentioning the bot in group chats.

Diagnostics and Export

/health
/export

Applicable Scenarios and Notes

Suitable for developers who already have a DSH agent and need to integrate QQ group chats or private chats. This plugin is suitable for message entry, session isolation, group management, speech-to-text, image quoting, and basic automated reminders.

Notes before use:

  • The plugin runs with the permissions of the current DSH process
  • Source code and license should be checked before installation
  • Empty whitelists will reject corresponding messages
  • No OneBot token validation when accessToken is empty
  • Zhipu ASR has limits on duration and size
  • Local TTS requires reference audio
  • quietHoursEnabled, ttsEnabled, checkinEnabled, welcomeEnabled, imageGenEnabled are disabled by default
  • DSH community directory is a separate site, not equivalent to the official app store

Conclusion

The value of dsh-qq-onebot-bridge lies in connecting QQ messages, session isolation, reminders, group management, voice, and image capabilities to DSH agent sessions, reducing the need to maintain bridging logic on the OneBot side repeatedly.

Repository address:

https://github.com/cheesehaqi/dsh-qq-onebot-bridge

Directory page URL not confirmed in documentation. If you need to view the directory page, you can search for the plugin name in the independent community directory.