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:

  1. Lives inside Feishu
    The Harness front-end is Feishu, not a remote-controlled web page. It does not depend on dsh-web-app, does not open port 3080, and does not run a one-off headless process. The Cordis plugin directly calls create / followup / steer / cancel / resume in-process.

  2. Goal cards
    Send /goal or 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).

  3. 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.

  4. 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 -v must start with v22.
  • 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.yml and models.json.
  • Multimodal: images/audio/files are saved to the local inbox, and the path is provided to the model. Returning images/files/audio uses send_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.