PGZXB / dsh-feishu

Listed

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:面板驱动控制台——每个命令都是卡片按钮,卡内审批与提问,流式卡片,扫码一键配置。

mainModelTool View source

Installation

npx @deepseek-ai/dsh plugin --profile feishu add @dsh-feishu/dsh-feishu@latest

This command is generated from the GitHub repository address. Inspect the upstream README and source before running it; pin a release or commit when reproducibility matters.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit e28c987Synced Aug 18, 2026

The Feishu UI for DeepSeek Harness (dsh)

English | 中文

License: MIT Node npm CI dsh

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 the latest release — currently compatible with dsh 0.1.0-rc.7.

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

# 1. install Node.js ≥ 22.13
#    macOS / Linux: nvm (https://github.com/nvm-sh/nvm) → nvm install 22
#    Windows: https://nodejs.org  (or: winget install OpenJS.NodeJS.LTS)
node --version

# 2. install pnpm
npm install -g pnpm

# 3. install the plugin
#    (pnpm ≥ 11 blocks the protobufjs build script by default — if this
#     fails with ERR_PNPM_IGNORED_BUILDS, append --allow-build=protobufjs)
npx @deepseek-ai/dsh plugin --profile feishu add @dsh-feishu/dsh-feishu@latest

# 4. one QR scan — create + configure the Feishu app
npx --yes --package @dsh-feishu/dsh-feishu dsh-feishu-setup --new --profile feishu

# 5. run
npx @deepseek-ai/dsh --profile feishu

Install from source

# 1. install Node.js ≥ 22.13
#    macOS / Linux: nvm (https://github.com/nvm-sh/nvm) → nvm install 22
#    Windows: https://nodejs.org  (or: winget install OpenJS.NodeJS.LTS)
node --version

# 2. install pnpm
npm install -g pnpm

# 3. clone and build
git clone https://github.com/PGZXB/dsh-feishu.git
cd dsh-feishu
pnpm install
pnpm run build

# 4. install into a profile
npx @deepseek-ai/dsh plugin --profile feishu add link:.

# 5. one QR scan — create + configure the Feishu app
pnpm run setup:feishu -- --new --profile feishu

# 6. run
npx @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

# 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
/cd <path>set this chat's working directory
/repolist candidate project directories to pick from
/sessionslist saved sessions (resume any of them from the card)
/resume [id]resume a saved session in this chat
/clear /newstart a fresh conversation (the old session stays saved)
/cancelstop the running turn
/statusshow this chat's session status
/modelpick or set the model
/exportsend this chat's session log as a file
/schedulelist active reminders
/feishu-statusshow the surface diagnostic card
/groupcreate a group with the bot
/panelopen the control-panel card (all commands as buttons)
/helplist all commands
/plan /permission /goal /compact /feedbackdsh's own commands, same as the web UI

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.

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.

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

TestsDetected
Security policyDetected
Contributing guideDetected
DocumentationDetected
ExamplesDetected

Repository information

Language
TypeScript
License
MIT
Latest release
v0.2.0
Last updated
Aug 18, 2026, 4:25 PM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.