DeepSeek Harness plugin

channels

Connects WeChat, QQ, DingTalk, Lark, and Telegram to DeepSeek Harness with unified configuration, private-chat and group access controls, and channel-side Agent chat and session commands.

Jump to install

Source facts

Repository
wsz987/dsh-channels
Latest update
Aug 20, 2026
Category
Notifications & Integrations
GitHub stars
0

Install

Start with a prompt that asks an agent to read the 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 read the page and repository first.

Do not install anything yet. Read this DeepSeek Harness plugin and explain what it does, which files, networks, or credentials it can access, and how to install and remove it.

Plugin page: https://deepseekplugins.org/plugins/wsz987/dsh-channels~23channels
GitHub: https://github.com/wsz987/dsh-channels/tree/main/packages/channels
Plugin: dsh-channels#channels
Author: wsz987
Install command: dsh plugin --profile web add github:wsz987/dsh-channels#path:/packages/channels

Do not run the install command until I confirm.

Check the source files

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

File explorer2 files
README.mdSource · read only

@wsz987/dsh-channels

DeepSeek Harness DSH Bundle — built-in messaging channels:

  • Weixin / 微信
  • QQ Bot
  • DingTalk / 钉钉
  • Lark / Feishu / 飞书
  • Telegram / 电报(Bot API)

Install

npx @deepseek-ai/dsh plugin --profile web add -w @wsz987/dsh-channels@latest

> The profile directory is itself a pnpm workspace, so -w (--workspace-root) > is required to add the bundle to the workspace root (otherwise pnpm fails with > ERR_PNPM_ADDING_TO_ROOT). @latest selects the stable release. Run > npm view @wsz987/dsh-channels dist-tags to inspect the current beta and > latest targets.

The bundle patch (cordis.patch.yml) references only entrypoints exported by @wsz987/dsh-channels itself. Those entrypoints delegate to the ChannelService, generic-file extension, Harness bridge, control plane, Web settings panel and the five channel adapters through the bundle's own dependency tree. Every channel can be disabled through its plugin config.

Quick start

# 1. add the bundle to a profile
npx @deepseek-ai/dsh plugin --profile web add -w @wsz987/dsh-channels@latest

# 2. confirm the merged config inserted the channel plugins
npx @deepseek-ai/dsh --profile web --dump-config

# 3. start the profile — all five channels load
npx @deepseek-ai/dsh web

Update and uninstall

# Install or switch package.json to the latest stable release
npx @deepseek-ai/dsh plugin --profile web add -w @wsz987/dsh-channels@latest

# Update within the package.json semver range
npx @deepseek-ai/dsh plugin --profile web update -w @wsz987/dsh-channels

# Remove the bundle; also remove any channels-* overrides from your profile patch
npx @deepseek-ai/dsh plugin --profile web remove -w @wsz987/dsh-channels

Disable a channel you don't use by setting its plugin enabled flag to false in your profile patch, e.g. plugins.channels-weixin.enabled = false. See apps/example/minimal-profile/ in the repository for a reference profile.

Verify your install

Use a clean profile to confirm the bundle loads end to end (never reuse a dirty profile for release validation):

# 1. add the bundle to a clean profile (auto-initializes it on first use)
npx @deepseek-ai/dsh plugin --profile release-validation add -w @wsz987/dsh-channels@latest

# 2. dump the merged config — verify the channel plugins were inserted
npx @deepseek-ai/dsh --profile release-validation --dump-config

# 3. start the profile — channels-service / -harness / -control and the five
#    adapters (plus channels-web) should all load without error
npx @deepseek-ai/dsh --profile release-validation

Dependencies

The bundle owns every Harness loader entry and its Web client face. Its npm dependencies provide the implementations behind those entries, so you only ever install @wsz987/dsh-channels:

PackageRole
@wsz987/channel-coreCross-channel contract + ChannelService (ctx.channels)
@wsz987/channel-harnessHarness bridge (SessionBinding, AgentManager, reply pipeline)
@wsz987/channel-controlConfig / credentials / auth-session control plane
@wsz987/channel-filesOptional generic-file extension (store / extract / read_channel_attachment)
@wsz987/channel-webWeb dashboard (Settings > Channels) for GUI setup
@wsz987/channel-weixin/qq/dingtalk/lark/telegramThe five channel adapters

The Web dashboard (@wsz987/channel-web) injects the Harness web client surfaces (@deepseek-ai/dsh-client-runtime, -locale, -ui-settings, -ui-primitives), which the Harness itself provides at runtime — nothing extra to install for that panel beyond a Harness version that ships them.

Selecting adapters

The individual adapter packages do not currently carry their own dsh.bundle profile patches, so installing one with plugin add is not a complete Harness setup. Install @wsz987/dsh-channels, then disable or override unwanted channels-* rows in the profile patch. See apps/example/minimal-profile/ for the complete row shapes.

Architecture

Messaging Platform
      │
      ▼
Upstream Driver
      │
      ▼
Channel Adapter (channel-weixin/qq/dingtalk/lark/telegram)
      │
      ▼
ChannelService (Cordis Service, ctx.channels)
      │
      ▼
Harness Bridge (channel-harness)
      │
      ▼
DeepSeek Harness Agent / Session
  • Adapters never touch ctx.agents.
  • The Harness bridge is the only place allowed to import Harness public APIs.
  • Replies flow from session/event back through the bridge to the adapters.

Development

pnpm --filter @wsz987/dsh-channels build
pnpm --filter @wsz987/dsh-channels typecheck
pnpm --filter @wsz987/dsh-channels test

Related

  • [Repository root](../../README.md)
  • [Architecture design](../../docs/architecture.md)

License

[MIT](../../LICENSE)