DeepSeek Harness plugin

dsh-feishu-bridge-minyang2

Bidirectional bridge: chat with your DeepSeek Harness agent from Feishu (Lark) — long-connection bot, per-user sessions, approval/question forwarding

Jump to install

Source facts

Repository
minyang2020/dsh-feishu-bridge
Latest update
Aug 16, 2026
Category
Workflow & Automation
GitHub stars
0
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
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/minyang2020/dsh-feishu-bridge
Plugin: dsh-feishu-bridge-minyang2
Author: minyang2020

Check the source files

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

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

feishu-dsh-bridge

> English | 中文

![CI](https://github.com/minyang2020/dsh-feishu-bridge/actions/workflows/ci.yml)

A bidirectional bridge that lets you chat with your DeepSeek Harness agent from Feishu (Lark).

Messages sent to the bot (private chat, or @-mention in a group) enter the locally running DSH (dsh web) over a long connection (WebSocket — no public port, no public URL needed). The agent's replies, approval requests, and questions come right back into the Feishu conversation.

Feishu DM / @mention ──> Feishu long connection (WSClient) ──> session.prompt ──> DSH agent session
Feishu group / DM <── im.message.reply/create <── mux WS (session/event) <── DSH agent

Features

  • Per-user private chat: each Feishu user is bound to its own DSH session with continuous context
  • Group @-mention mode: the bot only responds when mentioned; replies land in the group
  • Streaming output: agent replies stream into a cardkit typewriter card (falls back to plain replies when the cardkit permission is missing)
  • Approval forwarding: when the agent requests a permission, the confirmation appears in Feishu — reply 「同意/拒绝」(approve/reject)
  • Question forwarding: when the agent asks, answer by number/option
  • Auto-reconnect for both the Feishu long connection and the DSH event stream
  • Zero public-network dependency: the long connection is initiated from your machine

Two consumption modes, one codebase:

ModeHow to run
Standalone sidecarnpm install + npm start (a separate process next to dsh web)
dsh bundle plugindsh plugin --profile <name> add feishu-dsh-bridge (spawned and managed by the host)

Requirements

  • Node.js >= 22 (verified on v24)
  • A running DSH: dsh web (or any DSH host exposing /api via the client-connection plugin, default http://127.0.0.1:3200)
  • A Feishu self-built app (App ID / App Secret)

Quick start

git clone https://github.com/minyang2020/dsh-feishu-bridge.git
cd dsh-feishu-bridge
npm install
cp .env.example .env       # fill in your Feishu App ID / App Secret
npm start

Configuration (.env):

FEISHU_APP_ID=cli_xxxxxxxxxxxxxxxx
FEISHU_APP_SECRET=your_app_secret
DSH_BASE_URL=http://127.0.0.1:3200   # DSH backend address
DSH_SESSION_CWD=D:\workspace        # working directory of agent sessions

Install as a dsh bundle plugin

dsh plugin --profile <name> add feishu-dsh-bridge

then configure in the profile's cordis.patch.yml:

- id: feishu-dsh-bridge
  config:
    appId: cli_xxxxxxxxxxxxxxxx
    appSecret: your_app_secret
    dshBaseUrl: http://127.0.0.1:3200
    sessionCwd: D:\workspace

Feishu Open Platform setup (once, ~10 minutes)

1. Open Feishu Open Platform → create an enterprise self-built app. 2. In 「Credentials & Basic Info」, copy App ID / App Secret into .env. 3. Add the Bot capability (「添加应用能力」→「机器人」). 4. In 「Permission Management」, enable: - im:message.p2p_msg:readonly — read user messages sent to the bot - im:message.group_msg:readonly — read group messages - im:message:send_as_bot — send messages as the app - cardkit:card:write — streaming cards (optional; replies fall back to plain messages when missing) 5. In 「Events & Callbacks」→ event subscription, choose receive events via long connection (WebSocket, no public URL needed) and add the event im.message.receive_v1. 6. In 「Version Management & Release」, create a version and publish it. Permission/event changes only take effect after publishing. 7. Usage: - Private chat: search the app name in Feishu and start a conversation. - Group chat: add the bot to the group via group settings; afterwards it responds only to @mentions.

> Permission/event changes require a published version; if the long connection cannot be established, check steps 5 and 6.

Usage notes

  • /stop — cancel the current task of the session
  • Bindings persist in state/mapping.json (delete the file to reset)
  • Streaming (on by default): set STREAMING=false to disable; STREAM_UPDATE_INTERVAL_MS controls the card refresh throttle (default 500ms)
  • Non-streaming replies are chunked by REPLY_CHUNK_CHARS (default 3500); the first chunk is sent as a thread reply
  • Image/file/rich-text messages are not supported yet (a hint is returned)

Self-test scripts

ScriptPurposeNeeds Feishu credentials
npm testUnit tests + syntax checks (no network)no
npm run smoke:dshDSH RPC + event stream (create session → prompt → reply)no
npm run test:feishu-wsFeishu long connection establishmentyes
npm run test:roundtripFull loop (create chat → synthetic inbound → agent reply → real outbound)yes

> CI runs the unit tests and syntax checks on every push/PR. The DSH/Feishu E2E scripts need a live DSH host and real credentials, so they run locally.

Security

  • .env holds real credentials and is gitignored — never commit it
  • state/ holds real session bindings and is not committed either
  • The bridge only talks to the DSH loopback API; Feishu credentials are tenant-scoped

Community