dsh-feishuDeepSeek Harness plugin

The Feishu UI for DeepSeek Harness — a panel-driven control console: every slash command a button on the ⚙️ control-panel card, in-card approvals & questions, live streaming cards, one-QR setup. | DeepSeek Harness 的飞书 UI:面板驱动控制台——每个命令都是卡片按钮,卡内审批与提问,流式卡片,扫码一键配置。

Stars
26
Forks
2
License
MIT
Last commit
Sep 2, 2026
Latest release
v0.3.1

Overview

The Feishu UI for DeepSeek Harness — a panel-driven control console: every slash command a button on the ⚙️ control-panel card, in-card approvals & questions, live streaming cards, one-QR setup. | DeepSeek Harness 的飞书 UI:面板驱动控制台——每个命令都是卡片按钮,卡内审批与提问,流式卡片,扫码一键配置。

Original README

Cached from the project repository on Sep 3, 2026. This is source content, separate from the Agents.md review above.

View source

The Feishu UI for DeepSeek Harness (dsh)

English | 中文

License: MIT Node npm CI

The Feishu UI for DeepSeek Harness (dsh) — a dsh-native plugin with a panel-driven control console: every slash command is a button on the ⚙️ control-panel card, approvals and questions resolve inside the chat, and one QR scan sets the whole app up.

Note: DeepSeek Harness is still pre-release (0.1.0-rc.x) and may break between releases. dsh-feishu tracks two dsh versions:

  • the main branch (installed from git) tracks dsh @next — currently 0.1.1-rc.2;
  • the npm @latest release tracks dsh @latest — currently 0.1.1-rc.2.

https://github.com/user-attachments/assets/e9163793-52f2-4e2c-a08a-22b27372be61

2.5-min demo: control panel, streaming card, approval and question.

Quickstart

Install from npm

sh
1# 1. install Node.js ≥ 22.13
2#    macOS / Linux: nvm (https://github.com/nvm-sh/nvm) → nvm install 22
3#    Windows: https://nodejs.org  (or: winget install OpenJS.NodeJS.LTS)
4node --version
5
6# 2. install pnpm
7npm install -g pnpm
8
9# 3. install the plugin
10#    (pnpm ≥ 11 blocks the protobufjs build script by default, so
11#     --allow-build=protobufjs lets pnpm run it)
12npx @deepseek-ai/dsh plugin --profile feishu add @dsh-feishu/dsh-feishu@latest --allow-build=protobufjs
13
14# 4. one QR scan — create + configure the Feishu app
15npx --yes --package @dsh-feishu/dsh-feishu dsh-feishu-setup --new --profile feishu
16
17# 5. run
18npx @deepseek-ai/dsh --profile feishu

Install from source

sh
1# 1. install Node.js ≥ 22.13
2#    macOS / Linux: nvm (https://github.com/nvm-sh/nvm) → nvm install 22
3#    Windows: https://nodejs.org  (or: winget install OpenJS.NodeJS.LTS)
4node --version
5
6# 2. install pnpm
7npm install -g pnpm
8
9# 3. clone and build
10git clone https://github.com/PGZXB/dsh-feishu.git
11cd dsh-feishu
12pnpm install
13pnpm run build
14
15# 4. install into a profile
16npx @deepseek-ai/dsh plugin --profile feishu add link:.
17
18# 5. one QR scan — create + configure the Feishu app
19pnpm run setup:feishu -- --new --profile feishu
20
21# 6. run
22npx @deepseek-ai/dsh --profile feishu

Then message the bot in Feishu. The setup wizard handles the Feishu app end to end — no web-console work and no manual credentials. Already have an app? Set FEISHU_APP_ID / FEISHU_APP_SECRET (environment or profile config) instead — see docs/feishu-setup.md.

Uninstall

sh
# remove the plugin from the profile
npx @deepseek-ai/dsh plugin --profile feishu remove @dsh-feishu/dsh-feishu

# optional — full clean slate: delete the profile and its surface data
# (paths shown for the default dsh home, ~/.dsh)
rm -rf ~/.dsh/profiles/feishu ~/.dsh/feishu

Usage

A Feishu chat is a dsh session — the bot is the agent's avatar. A typical session goes like this:

  1. Start a chat. Direct-message the bot, or run /group <name> to create a group the bot joins. In a group, @-mention the bot (the default policy; a group with just you and the bot also answers plain messages, and the policy is configurable).

Chat with the bot

  1. Open the control panel. Send /panel to pop up the panel card.

Control panel

  1. Pick a working directory. The bot refuses work until the chat has one: tap 📚 Pick project to choose from a list (the /repo equivalent), or 📁 Change dir to type a path (the /cd <path> equivalent).

Project picker

  1. Ask. Send a message — the agent runs and its output streams into a live card (tool calls, reasoning, markdown, tables). The card ends green with the full answer inside; Stop, copy, retry, and the ⚙️ panel button sit on it.

    Mid-streamFinalized
    Card mid-streamCard finalized
  2. Approve or answer when asked. A permission escalation posts an approval card — tap Allow once (or Reject). A question posts a card you answer with a tap (or a reply).

    ApprovalQuestion
    Approval cardQuestion card
  3. Manage sessions. Tap 🗂️ Sessions to list saved sessions and resume any of them from the card (the /sessions equivalent; /resume <id> moves one into this chat), and tap ➕ New chat (the /clear equivalent) to start fresh without deleting the old one.

Sessions picker

Every button on the panel card maps to a slash command — pick whichever feels faster; /help lists them all.

Commands

CommandWhat it does
/helplist all commands
/panelopen the control-panel card (all commands as buttons)
/group <name>create a group with the bot (bare opens a name-input card)
/cancelstop the running turn
/cd <path>set this chat's working directory (bare opens a path-input card)
/repo [path]pick a project directory (bare scans the default roots; /repo <path> scans that path)
/statusshow this chat's session status
/feishu-statusshow the surface diagnostic card
/schedulelist active reminders
/model <provider/model>switch this session's model (bare opens the picker)
/exportsend this chat's session log as a file
/logsend the dsh-feishu log file to this chat (handy for debugging — please attach the key log lines when you file an issue)
/sessionslist saved sessions (resume any of them from the card)
/resume <id>resume a saved session (bare opens the session list)
/clear /newstart a fresh conversation (the old session stays saved)
/goal <text>set the task goal (bare opens a text-input card)
/compactcompact older conversation history
/feedback <text>send feedback (bare opens a text-input card)
/permission <preset>switch the permission preset (bare opens the picker)
/plan [on|off]enter or leave plan mode (bare toggles)

Features

  • Live streaming cards — tool calls, reasoning, markdown, and tables stream in as the agent works.
  • One-tap control panel/panel renders the full command palette as buttons; no command syntax to remember, and each button is the exact equivalent of typing the command.
  • In-card approvals & questions — approve a permission escalation or answer the agent's questions in the chat.
  • Sessions survive restarts — a chat's session (and its working directory) is persisted across daemon restarts.
  • Groups & mentions — @-mention the bot; error notices, approvals, and questions @ the requester.
  • Reactions, allowlists, reminders, export, diagnostics — reaction ack, allowedChats / allowedUsers, scheduled reminders, session-log files, and a status card.

Contributing

See CONTRIBUTING.md and SECURITY.md. Development, tests, and release: docs/development.md.

Community

Join the dsh-feishu community group on Feishu:

dsh-feishu community group QR code

Credits

  • botmux — the reference for the group-chat interaction patterns: streaming cards, approvals, and the QR-driven Open Platform quick-setup flow. dsh-feishu borrows botmux's interaction and onboarding patterns, not its architecture — botmux bridges external CLIs, while this surface is dsh-native and in-process.
  • DeepSeek Harness — the platform this surface is built for.
  • Lark Open Platform SDK — the WebSocket long connection and card APIs the transport builds on.

License

MIT — see LICENSE.