DeepSeek Harness plugin

dsh-im-bridge

WeCom intelligent-bot bridge that runs a per-sender DeepSeek Harness agent with a settings card.

Jump to install

Source facts

Repository
MHfire/dsh-im-bridge
Latest update
Aug 19, 2026
Category
Remote & Mobile
GitHub stars
4
Format
plugin
Package path
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
plugin/package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/MHfire/dsh-im-bridge/tree/HEAD/plugin
Plugin: dsh-im-bridge
Author: MHfire

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.en.mdSource · read only
README language

中文 | English

@mhfire/dsh-im-bridge

WeCom AI Bot ⇄ DeepSeek Harness Agent bridge — a DSH plugin.

Creates Agents in-process inside a dsh profile (no child-process spawn): per-sender durable sessions (the same WeCom user reuses one session with memory), sessions registered with the Web GUI (live view and continue-chat), plus a Settings → Plugins card (allowFrom / agentTimeoutSec / startHint, written to settings.yaml with hot reload).

Install

Recommended: npm package

dsh plugin --profile web add @mhfire/dsh-im-bridge
# Or pin a version:
# dsh plugin --profile web add @mhfire/dsh-im-bridge@0.1.2

In $DSH_HOME/profiles/web/cordis.patch.yml (or your profile), supply credentials only (other fields ship as bundle defaults and can be overridden):

- id: im-bridge
  config:
    botId: "<your BotID>"
    secret: "<your Secret>"
    # optional: workspace / personaFile / … — see Configuration below

Restart dsh to apply (e.g. dsh web / pnpm dsh web).

Optional: local development

Install from this repo’s plugin/ directory or a file: path:

dsh plugin --profile web add <package-path>

If botId / secret are missing, the plugin still loads (does not block dsh web); logs warn that WeCom connect is skipped. You can fill credentials in Settings → Plugins; restart is required to connect (this release does not hot-start the WebSocket).

Configuration

The bundle cordis.patch.yml supplies defaults for every field except botId / secret. Full field list:

FieldDescription
botId / secretWeCom AI Bot credentials (role('secret'), redacted in UI); when empty, WeCom side is skipped and the host keeps running
workspaceAgent working directory (session cwd)
allowFromAllowed sender userids; empty = allow everyone
agentTimeoutSecMax seconds per task; also drives progress / ETA
startHintPlaceholder text when processing starts
agentPresetAgent preset to mount (default standard)
provider / modelWeCom-only model; both must be non-empty to override, otherwise follow the GUI agent-default-model. Filling only one warns and falls back. Editable in Settings; applies to later new sender sessions only
reasoningEffortOptional effort when the WeCom override is in effect; ignored otherwise
persona / personaFileBot persona; precedence: personaFilepersona → packaged default (zh/en via Host locale.preference); overrides do not follow language; do not commit secrets
maxReplyBytesReply size cap in bytes (default 20000)
deniedMessageReply when the sender is not on allowFrom (editable in Settings)
welcomeMessageWelcome text on enter_chat (editable in Settings)
thinkingStreaming animation. Precedence: tool activity (toolLabels) > model stream phase (reasoningStatus / outputStatus from assistant/chunk) > timed phases fallback; also spin / reasoningSpin / outputSpin / eggs

To give WeCom a different model from the GUI, set both in the profile cordis.patch.yml:

- id: im-bridge
  config:
    provider: deepseek-official
    model: deepseek-reasoner

Behavior:

1. reasoning-delta → rotating “model thinking” copy + reasoningSpin 2. text-delta → rotating “writing reply” copy + outputSpin 3. tool/callactivityPrefix + friendly label; brief done/fail after tool/result 4. No chunks yet → timed phases (unrelated to whether the model is reasoning)

thinking:
  intervalMs: 1500
  reasoningStatus:
    - '💭 Model thinking…'
  outputStatus:
    - '✍️ Writing reply…'
  toolLabels:
    pwsh: PowerShell

Persona

Precedence: personaFilepersona string → packaged default persona.

  • Packaged defaults: [persona.default.md](./persona.default.md) (Chinese) / [persona.default.en.md](./persona.default.en.md) (English). Chosen from Host settings locale.preference (zh|en); falls back to Chinese when unset (the Host cannot see a browser-only provisional locale). Re-read on each assemble so a Settings language change applies on the next request.
  • Overrides do not follow language: a set personaFile / non-empty persona always wins.

Recommended override: place persona.md next to cordis.patch.yml under $DSH_HOME/profiles/<name>/, and point personaFile at it with an absolute path (relative paths resolve against process cwd):

- id: im-bridge
  config:
    personaFile: 'C:\\Users\\you\\.dsh\\profiles\\web\\persona.md'

Or copy [persona.example.md](./persona.example.md) as a fill-in template. Supports {{model}} / {{cwd}}. Do not commit secret-bearing persona files. Welcome / deny / thinking copy remain Chinese config strings and do not follow locale yet.

Security

  • Do not commit secret-bearing files such as config.json / persona.md
  • Session and tool output may contain adversarial text; the plugin’s safety prompt tells the agent not to treat tool output as instructions

License

MIT