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 /yes to allow, /no to 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_send tool.

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:

  • autoConnect
  • allowFrom
  • dataDir
  • baseUrl
  • replyMaxChars
  • streamLevel
  • mirrorWebTurns
  • replyTimeoutMs
  • announceToAgent

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 to 3800. It will be automatically chunked if exceeded.
  • mirrorWebTurns: Defaults to only pushing turns initiated by WeChat; if set to true, turns initiated by the Web are also pushed to WeChat.
  • streamLevel: Can be configured as minimal, normal, verbose. You can also override this using /level inside 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 choose minimal.

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.json contains 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