Introduction¶
During DSH development, many operations ultimately involve message interaction: viewing sessions, switching workspaces, handling tool approvals, sending files, and checking connection status. If these actions only occur on the Web, context switching during development becomes frequent.
bwhite55/dsh-wechat-pro is an in-process WeChat ClawBot channel plugin for DeepSeek Harness (DSH). Its goal is to bridge DSH with WeChat, allowing you to continue interacting with real DSH sessions within WeChat. Its positioning can be summarized as: turning DSH into a “Lobster” inside WeChat.
What is This¶
dsh-wechat-pro is maintained by bwhite55, is licensed under MIT, and has a version number of 0.1.0.
It is a DSH in-process WeChat ClawBot channel plugin. Core capabilities include:
- WeChat QR code connection, automatic credential renewal within 24h with expiration reminders.
- Sessions in WeChat share real DSH sessions with the Web, allowing cross-device continuity, which is a Codex-style attachment.
- Switching workspaces, working paths, models, and thinking intensity within WeChat.
- Executing native harness commands within WeChat, such as
/plan,/permission,/compact,/goal,/feedback,/export. - Forwarding high-risk tool call approvals to WeChat; reply
/yesto allow,/noto reject. - Real-time pushing of process events like thinking and tool calls; long final responses are automatically chunked.
- Support for file receiving and sending between WeChat and the computer.
- Agents can push messages to WeChat via the
weixin_sendtool.
The runtime environment requires Node >=22, and peerDependencies require @deepseek-ai/cordis ^4.0.1 and other DSH-related packages.
Core Features¶
QR Code Connection and Renewal¶
The plugin connects via WeChat ClawBot pairing. Once connected, credentials can auto-renew with reminders.
If dsh web is running in a hidden window and the QR code isn’t visible in the terminal, you can obtain the QR code link via the status interface:
http://127.0.0.1:3080/api/dsh-wechat-pro/status
The qrLink in the response is the current login QR code link. To force a re-scan, you can call:
POST /api/dsh-wechat-pro/connect
Session Sharing¶
Sessions created or switched in WeChat are real DSH sessions, not a separate set of shadow sessions maintained.
Common operations include:
/new <name>: Create and switch to a new session in the current workspace./attach <index|sessionID>: Attach to an existing Web session to achieve cross-device continuity.
This allows establishing context on one end and continuing the same session on the WeChat end.
Workspace Switching¶
WeChat supports two types of workspace operations:
/workspace: Switch between registered workspaces, usually by replying with a number./workdir <path>: Switch to any working path, automatically registering it as a workspace.
This is suitable for switching back and forth between different project directories without restarting or switching Web pages.
Model and Thinking Intensity¶
WeChat supports switching models and thinking intensity per session:
/model: Switch model, effective for the next round./thinking: Switch thinking intensity, effective for the next round.
Output level can also be switched using /level [level], with options minimal, normal, verbose.
Native Harness Commands¶
Native harness commands can be executed directly in WeChat, for example:
/plan
/permission
/compact
/goal
/feedback
/export
These commands are not additional wrapped shortcuts, but are executed directly within the DSH session.
Tool Approval Forwarding to WeChat¶
When DSH triggers a high-risk tool call, the approval prompt is forwarded to WeChat.
In WeChat, reply:
/yes
To indicate allowance.
Reply:
/no
To indicate rejection.
If there are multiple pending approvals, you can reply:
Allow <4-digit-code>
To precisely select a specific approval.
Streaming Output and Long Text Chunking¶
Process events like thinking and tool calls can be pushed to WeChat in real-time. If the final response is long, it will be automatically chunked.
WeChat has a character limit of approximately 2048 per single message. The plugin’s replyMaxChars defaults to 3800, and it will be sent in chunks if exceeded.
There is also a fallback strategy for long replies: maxReplyChunks defaults to 8. If the number of chunks exceeds the budget, it falls back to “first chunk + complete content saved to file for sending” to avoid losing complete content.
Media Transfer¶
The computer side can send files to WeChat:
/send <path> [description]
Images, files, videos, and voice messages received on the WeChat side will be automatically downloaded, decrypted, and saved to disk.
Additionally, agents can use the weixin_send tool to push messages to WeChat at any time during a task.
Installation and Activation¶
First install the plugin, then start Web:
dsh plugin --profile web add github:bwhite55/dsh-wechat-pro
dsh web
After starting, add the ClawBot/Lobster in WeChat, scan the QR code to pair, and you can start the conversation.
If running dsh web in a hidden window, you can get the QR code via the status interface:
http://127.0.0.1:3080/api/dsh-wechat-pro/status
You can also force a re-scan:
POST /api/dsh-wechat-pro/connect
Typical Usage¶
The following commands are from the plugin documentation and can be used directly in WeChat.
View help, status, and connection remaining time:
/help
/status
/time
Switch workspace:
/workspace
Reply with a number as prompted to select the target workspace.
Switch any working path:
/workdir <path>
Create and switch to a new session:
/new <name>
Attach to an existing Web session:
/attach <index|sessionID>
Switch model:
/model
Switch thinking intensity:
/thinking
Switch output level:
/level minimal
/level normal
/level verbose
Send computer files to WeChat:
/send <path> [description]
Handle high-risk approvals:
/yes
/no
Allow <4-digit-code>
Execute native harness commands:
/plan
/permission
/compact
/goal
/feedback
/export
Configuration Options¶
The plugin provides configuration options and also supports DSH_WXBOT_* environment variables.
Common configuration options include:
autoConnectallowFromdataDirbaseUrlreplyMaxCharsstreamLevelmirrorWebTurnsreplyTimeoutMsannounceToAgent
A few key points:
allowFrom: Used to control which WeChat users are allowed to connect. It is recommended to whitelist only your own WeChat ID.replyMaxChars: Defaults to3800. It will be automatically chunked if exceeded.mirrorWebTurns: Defaults to only pushing turns initiated by WeChat; if set totrue, turns initiated by the Web are also pushed to WeChat.streamLevel: Can be configured asminimal,normal,verbose. You can also override this using/levelinside WeChat. The documentation mentions inconsistent descriptions for default values here; the default value is not confirmed. If you care more about sending quotas, it is recommended to chooseminimal.
Sending Limits and Quota Risks¶
Tencent iLink has quota limits on reply sending for single inbound messages.
If too many process messages are sent, especially pushing one for every tool call under normal or verbose, it may trigger:
sendMessage ret=-2 prepare failed
Subsequent sends may be rejected. Therefore, if you are unsure about the quota status, prioritize minimal to only receive the final response and error messages.
When sending fails, key messages will automatically retry once and be logged to:
dataDir/logs/wechat-pro.log
Data and Security¶
Before using it, it is recommended to clarify what data will be saved locally:
- Credential file
weixin-auth.jsoncontains the bot token, which serves as the credential for sending and receiving messages as that WeChat identity. Do not share it externally. - Contact registry, media, and logs are saved in the corresponding directory under
dataDir. - Sending failure logs are located at
dataDir/logs/wechat-pro.log. - Control route
/api/dsh-wechat-pro/*only listens on the loopback address; LAN exposure will be rejected.
The plugin runs with the permissions of the current dsh process. You should check the source code and license before installing.
It is recommended to keep DSH’s own permissions at workspace-write and use allowFrom to whitelist only your own WeChat ID.
Local Testing¶
The plugin supports mock iLink local testing and automated testing, including channel smoke tests, harness integration, and real model e2e.
First install dependencies and build:
pnpm install
pnpm run build
You can run mock iLink:
node tests/test-mock-ilink.mjs --port 8899
You can also run channel smoke tests:
node tests/channel-smoke.mjs
If running a real model e2e test, you need to set DEEPSEEK_API_KEY and it will consume a small quota.
Conclusion¶
The value of dsh-wechat-pro lies in bridging DSH’s capabilities—such as sessions, workspace switching, model switching, tool approvals, and file transfer—into WeChat, while maintaining the sharing of real DSH sessions with the Web. It is suitable for developers who need to continuously use DSH via a messaging entry point.
Directory: https://www.skillhub.cn/plugins/bwhite55/dsh-wechat-pro
GitHub: https://github.com/bwhite55/dsh-wechat-pro