DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Feishu — DSH Plugin for DeepSeek Harness
← Plugins
F

dsh-feishu

Feishu

Feishu (Lark) IM bridge for DeepSeek Harness (dsh)

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:itr-del/dsh-feishu#e1051647ec6eeda78fecf57e4510e77546fc43d9
READMECompatibilityVersions

Compatibility and provenance

Feishu is published as dsh-feishu and currently resolves to version 0.2.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
github
Registry updated
9/16/2026

Versions

0.2.0stable
9/16/2026
0.1.0stable
8/20/2026

Related plugins

Loading related plugins…

Latest
0.2.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
any
License
Not declared
Source
github
GitHub
★ 1
Weekly downloads
0
Last push
9/16/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in

Related plugins

More verified plugins in integrations-communication.

Acp App@deepseek-ai/dsh-acp-appThe dsh ACP profile bundle: automation-only JSON-RPC stdio and process lifecycle over dsh-baseIm@xmanrui/dsh-im把十一种 IM 渠道和公网 AI Office 接入本机 DeepSeek Harness。 Connect eleven IM channels and a public AI Office to a local DeepSeek Harness.Pocketdsh-pocketPut DeepSeek Harness in your pocket: one package, one settings page, and scan a QR code on your phone to access DSH on your computer in sync (LAN + public network, real-time screen mirroring).Chat Importdsh-chat-importImport conversation history from 25+ AI coding agents into DeepSeek Harness as resumable sessions — tool calls, reasoning and results kept intact, with reverse export and sync. | 把 25+ AI 编程 Agent 的聊天记录导入 DeepSeek Harness 继续对话,保留工具调用、推理与结果,支持反向导出与同步。

README

dsh-feishu — Feishu (Lark) IM bridge for DeepSeek Harness

Pluggable cordis plugin wiring a Feishu self-built bot into a running DeepSeek Harness (dsh) web profile — installable via dsh plugin add.

┌────────┐   WS    ┌──────────────┐   cordis    ┌──────────┐    LLM    ┌──────────┐
│ Feishu │ ──────> │  this plugin │ ──────────> │ dsh agent │ ────────> │ DeepSeek │
│  IM    │ <────── │              │ <────────── │          │ <──────── │          │
└────────┘   API   └──────────────┘  events     └──────────┘  stream   └──────────┘

dsh-feishu — DeepSeek Harness × Feishu IM bridge

Features

  • One Feishu DM user ↔ one persistent dsh session (feishu:<open_id>).
  • Multi-turn conversations across reconnects.
  • Streams assistant replies back into Feishu, chunked at 4000 chars.
  • Filters DeepSeek <|DSML|...> tool-call markers from outbound text.
  • Interactive-question bridging. ask_user_question payloads (with their options) are rendered as plain chat text and the turn is unblocked immediately — otherwise the tool hangs until the watchdog fires, because it only accepts answers from the dsh web browser client.
  • Progress updates. Once a turn has run past 45s, newly produced assistant text is flushed to the chat every 30s, so long jobs are no longer silent.
  • Watchdog. A stalled turn is force-cancelled with a notice to the user; the timeout is configurable (30 min default).
  • Pure ESM, no TypeScript compile step.
  • No telemetry, fully local.

Installation

1. Install dsh

npm install -g @deepseek-ai/dsh
dsh web --help

2. Install the plugin

dsh plugin add dsh-feishu

This installs the plugin into ~/.dsh/profiles/web/node_modules/dsh-feishu and patches cordis.patch.yml automatically.

3. Configure your Feishu app

Create a Custom App at https://open.feishu.cn/app and copy appId + appSecret.

Under Event Subscriptions (事件与回调):

  • Set mode to Receive events via persistent connection (使用长连接接收事件/回调).
  • Add the event im.message.receive_v1.

Under Permissions (权限), grant:

  • im:message
  • im:message.p2p_msg (required for DMs)

Publish a version (发布版本) — without this the bot cannot receive events. Wait ~2 minutes after publishing.

4. Export env vars and run

export DEEPSEEK_API_KEY="sk-..."
export FEISHU_APP_ID="cli_..."
export FEISHU_APP_SECRET="..."

dsh web

You should see in logs:

[feishu] WebSocket started (appId=cli_xxx)
[feishu] FeishuBridgeService initialized

DM the bot anything — the agent will reply in the same conversation.

Environment variables

VariableRequiredDefaultNotes
DEEPSEEK_API_KEYyes (LLM)—https://platform.deepseek.com
DEEPSEEK_BASE_URLnohttps://api.deepseek.comFor proxies
FEISHU_APP_IDyes—cli_xxx from app console
FEISHU_APP_SECRETyes—From app console — never commit
DSH_FEISHU_WATCHDOG_TIMEOUT_MSno1800000 (30 min)Force-cancel threshold for a stalled turn
DSH_FEISHU_PROGRESS_AFTER_MSno45000How long a turn runs before progress updates start
DSH_FEISHU_PROGRESS_INTERVAL_MSno30000Minimum gap between two progress updates

How a message flows

  1. User DMs the bot.
  2. Feishu SDK fires im.message.receive_v1 → this plugin.
  3. Plugin loads/creates the agent for feishu:<open_id>.
  4. Plugin calls agent.followup(userMessage).
  5. When agent returns to idle, plugin reads agent.session.events, strips DSML noise, and posts the reply via larkClient.im.message.create(...).
  6. While the turn runs, a 2s polling watchdog does two jobs: an unsettled ask_user_question call is bridged to the chat (question + options) and the turn is cancelled to unblock it; a turn running past the threshold gets its new assistant text flushed as a "progress" message. Both share one seq cursor with the final reply, so no text is ever sent twice.

Limitations

  • Text only. Image / file / card / post messages are not handled.
  • No token-level streaming. Replies are still sent as whole blocks; during a long turn you only get periodic progress updates (see above).
  • No groups yet. DMs only.
  • Interactive UI tools are degraded. ask_user_question / exit_plan_mode only accept answers from the dsh web client. Over IM the plugin renders the question as text and cancels the turn, and injects an environment notice so the model prefers asking in prose.

License

MIT.

Acknowledgments

  • DeepSeek Harness (dsh) — the agent runtime this plugin extends.
  • @larksuiteoapi/node-sdk — official Feishu (Lark) SDK, MIT licensed.
  • DeepSeek API — LLM backend.

Author

itr-del — 13918029394@163.com

Built while integrating dsh with a self-hosted Feishu bot on Ubuntu 22.04.

📖 Open-sourcing story: PUBLISHING.md — how this repo got published and listed.

中文文档见 README.zh.md。