Foreword¶
DeepSeek Harness (DSH) is designed around the philosophy that “everything is a plugin.” In the current plugin marketplace, the feishu / lark category already contains more than thirty listings, but most are notifiers, multi-IM gateways, or bridges attached beside the official web page via dsh plugin --profile web add. In this model, Feishu is only a remote control: the web page still exists, and closing the browser removes half of the product experience. Many also assume you are sitting at a personal PC, with a QR code appearing in the terminal.
dsh-feishu aims to solve this problem. It is a headless daemon living inside Feishu. Deployment is headless and resident: macOS, Linux, and WSL all work, with the focus on running as a daemon on an internet-accessible machine rather than scanning a QR code from a laptop terminal. A single resident dsh --profile feishu writes logs to files and requires no TTY for someone to watch. Feishu long-lived connection goes in, and Feishu cards go out. Models, slash commands, progress, Goals, and sessions all happen in the chat box.
Core Features¶
Not competing by the number of buttons on a shelf. It mainly solves the following four problems:
-
Lives inside Feishu
The Harness front-end is Feishu, not a remote-controlled web page. It does not depend ondsh-web-app, does not open port 3080, and does not run a one-off headless process. The Cordis plugin directly callscreate/followup/steer/cancel/resumein-process. -
Goal cards
Send/goalor fill in a goal on the card and click “Set and start.” The agent advances multiple rounds by itself. After a process restart, it will not secretly keep running; you must click “Resume auto-run” on the card or send/goal resume. On the card, you can set/modify the goal, pause/resume, and clear it, and the status changes in place (green when done, red when blocked). -
One process, multiple bots
The same process can host 2–3 independent Feishu apps. Sessions are separated by(appId, chat_id). History can be resumed via/resume, but the same session cannot be held by two windows at the same time. -
Mutable progress header
The progress card is updated in place. For example, it may display[dsf-23% G1/3] Using bash...(2), including the model alias, context ratio, and Goal round. When finished it becomes Done, when failed it becomes Failed, and the response body is sent as a separate message so it does not get mixed with progress.
In addition, it also provides:
* High-risk review card: unlisted rm, find -delete, and destructive git commands suspend execution, and an orange card appears in Feishu. It only runs after clicking “Allow this once.”
* Slash commands right in the chat box: /stop /clear /model /status /compact /resume /rename /goal /bye, etc.
Installation and Startup¶
Before installing, ensure the environment meets the following conditions:
- Node 22+:
node -vmust start withv22. - DeepSeek Harness CLI: already installed globally.
- DeepSeek API Key: environment variable
DEEPSEEK_API_KEY. - Feishu enterprise self-built app: create it at open.feishu.cn/app and obtain the App ID / App Secret. Permissions must include receiving and sending direct/group messages, event subscription long connection, etc.
1. Install the plugin¶
Use the official installation command:
dsh plugin --profile feishu add github:shoxiy-danny/dsh-feishu
If you need to lock the version, you can use a SHA:
dsh plugin --profile feishu add github:shoxiy-danny/dsh-feishu#<sha>
2. Set environment variables and start¶
Configure environment variables on the machine and then start:
export FEISHU_APP_ID=cli_xxx
export FEISHU_APP_SECRET=xxx
export DEEPSEEK_API_KEY=sk-xxx
dsh --profile feishu
After the log shows ready bots=..., send a message in the app’s direct chat. The first bot must already be created on the open platform; there is no place on the server to paste a QR code. Once the first bot is connected, a second bot can be added, and the QR code can be pushed back to Feishu.
Usage Examples¶
Besides basic interaction, the plugin also supports the following usage:
- Non-official models: connect models through OpenAI-compatible gateways, etc., by configuring
cordis.patch.ymlandmodels.json. - Multimodal: images/audio/files are saved to the local
inbox, and the path is provided to the model. Returning images/files/audio usessend_file, instead of stuffing them into the session image block. - Context management: after the cumulative usage exceeds 100K, tool results are automatically summarized, while cold starts and history are not trimmed back.
Notes¶
- First bot restriction: the first bot can only be created on the open platform; it cannot be initialized on the server by scanning a QR code.
- Restart behavior: after the process restarts, it does not automatically resume. You need to resume manually or use a wrapper script to write the resume command (expires in 10 minutes).
- Context limit: the current default model is
dsf(deepseek-flash). Multimodal tools must be enabled in the configuration.
Summary¶
dsh-feishu is suitable for users who have an internet-accessible machine, want to turn dsh into a 7×24 cloud colleague, already work in Feishu, and do not want to open web pages or keep watching a laptop terminal for the Agent again. It fully embeds Harness capabilities into the Feishu chat box, providing a headless and controllable interaction experience through cards and commands.
- Repository: github.com/shoxiy-danny/dsh-feishu
- Directory page: skillhub.cn/plugins/shoxiy-danny/dsh-feishu