Foreword¶
A common pain point when running agent tasks with DSH is that tasks can often take a long time; the model might take several minutes to reply, and it might call ask_user_question in the middle to wait for your input. Once you leave the terminal, you won’t know if the task has ended or are just waiting for input.
Existing approaches either involve polling logs or writing scripts to monitor processes, both of which incur extra maintenance costs. dsh-feishu-notify takes a different approach: it lets DSH proactively push notification cards to a Feishu group at key moments. Below is an introduction to what this plugin is, how to install it, and how to configure it.
What is this?¶
dsh-feishu-notify is a DSH plugin maintained by omdsh-dev. It sends notification cards via a Feishu group custom bot. It is adapted for DSH 0.1.0-rc.7 (and other fork release lines such as @deepseek-ai/cordis / @deepseek-ai/schemastery). The license is MIT, and the package version is 0.1.0.
Core Features¶
The plugin triggers notifications in two scenarios:
- When a session ends (agent enters idle state), it sends a “dsh session ended” card;
- When the model calls
ask_user_questionto wait for input, it sends a “dsh waiting for input” card.
The card content includes the working directory (last two segments), which helps distinguish which project is running, along with an optional “Open Session” button.
Several engineering details:
- Subagent sessions do not trigger notifications, preventing spam from subtasks;
- Webhook send failures are only logged and do not affect the main agent process;
- The package declares
dsh.bundle, sodsh plugin addautomatically mounts it to the profile’s bundle layer, eliminating the need to manually editcordis.patch.yml; - The compiled artifacts in
lib/have been committed to the repository, so no local build is required for Git installation; - It supports hot reloading of
settings.yaml. The configuration is re-read with every notification, so changes take effect immediately.
Installation¶
Prerequisites: git, pnpm, and a running DSH instance (>= 0.1.0-rc.7).
Method A: Install directly from Git (Recommended)
# Replace <profile> with the actual name (usually 'web' for GUI deployments)
dsh plugin --profile <profile> add git+https://github.com/omdsh-dev/dsh-feishu-notify.git
Method B: Install after local clone and build
git clone https://github.com/omdsh-dev/dsh-feishu-notify.git
cd dsh-feishu-notify
pnpm install && pnpm build
dsh plugin --profile <profile> add <path>/dsh-feishu-notify
For subsequent updates (Git installation), just run one command, then restart the DSH process:
dsh plugin --profile <profile> update dsh-feishu-notify
Configuration¶
Append a feishu-notify: section to the end of ~/.dsh/settings.yaml, then restart DSH:
feishu-notify:
enabled: true
webhookUrl: <Your Feishu group custom bot Webhook URL>
webhookSecret: "" # Fill this only if "Signature Verification" is enabled; otherwise leave empty ""
webUrl: "" # The jump URL for the "Open Session" button; leave empty to hide the button
Field Descriptions:
webhookUrl: Feishu group -> Group Settings -> Group Bots -> Add Bot -> Custom Bot -> Copy Webhook URL. Note that this is a private URL, equivalent to a secret key; do not leak it or commit it to any repository; leaving it empty will prevent notifications from being sent.webhookSecret: Only required if “Signature Verification” is enabled when creating the bot; otherwise, leave it empty"".webUrl: Your DSH web interface address. If left empty (written as"") in YAML, the button will not be displayed; if this line is omitted, the default ishttp://127.0.0.1:3080.
Configuration supports hot reload; no restart is required after changes, and changes take effect immediately.
Verification¶
First, perform an end-to-end verification: send a message, and after the model finishes replying, Feishu should receive a “Session Ended” card; when the model calls ask_user_question, it should receive a “Waiting for Input” card; no notification should appear for subagent completion.
Next, verify the webhook separately, without going through the agent:
DSH_NOTIFY_WEBHOOK_URL=<Your URL> pnpm send-test
# Add DSH_NOTIFY_WEBHOOK_SECRET if signature verification is enabled for the bot
Run unit tests:
pnpm test
Unit tests use a fetch stub and will not send real messages.
Uninstallation¶
Uninstall by following these three steps:
- Remove the two lines from
cordis.patch.yml; - Restart;
- Run the following in the profile directory:
pnpm remove dsh-feishu-notify
Applicable Scenarios and Notes¶
Suitable for two types of users: those who run long tasks and aren’t sitting at the terminal and want to know when the task ends; and those whose tasks require manual input midway and want to see it immediately on their phone to return and handle it.
Notes before use:
- Due to dsh-external/issues#397, sessionId + URL redirection is currently not supported; the “Open Session” button will only redirect to the webui;
webhookUrlis equivalent to a secret key; pay attention to file permissions and do not commit it to the repository;- Compatibility depends on fork release lines like
@deepseek-ai/cordisand@deepseek-ai/schemastery; be aware of compatibility when upgrading DSH versions; - The plugin runs with the permissions of the current DSH process. It is recommended to check the source code and license (this project is MIT) before installing to ensure everything is correct.
Conclusion¶
dsh-feishu-notify solves a very specific problem: it pushes the agent’s “ended” and “waiting for input” states to where you are actually looking. Install a plugin and configure a YAML snippet to get started; it is worth a try for DSH users running long tasks.
- GitHub: https://github.com/omdsh-dev/dsh-feishu-notify
- Community Plugin Directory: https://www.skillhub.cn/plugins/omdsh-dev/dsh-feishu-notify
The directory page is maintained independently by the community and has no official affiliation with DeepSeek or Hypothesis.