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:
/summaryis used to summarize recent chat/todois used to manage shared to-dos, can be used with “note: xxx”/mute,/unmute,/kick,/clearare 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:
/helpcommand 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/transcriptionsendpoint
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
fileand be binary - Using
file_base64will result in1214error
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:
allowUsersempty rejects all private chatsallowGroupsempty rejects all group messagesaccessTokenempty means no validation- After configuring
accessToken, the OneBot side needs to carry the same token replyOnlyWhenMentioneddefaults totrue, 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¶
- 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
- Install local directory plugin:
dsh plugin --profile web add <本目录>
- 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.
- Fill in whitelists according to business needs:
allowUsers
allowGroups
If both whitelists are empty, private chats and group messages will be rejected respectively.
- Restart DSH web service to make install/uninstall take effect:
dsh web
- 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
accessTokenis empty - Zhipu ASR has limits on duration and size
- Local TTS requires reference audio
quietHoursEnabled,ttsEnabled,checkinEnabled,welcomeEnabled,imageGenEnabledare 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.