Bundle
dsh-feishu-notify
DSH plugin: Feishu (飞书) custom-bot notifications when an agent session settles (idle) or asks for input (ask_user_question). Adapted for DSH 0.1.0-rc.7 (@deepseek-ai/cordis line).
- Source
- omdsh-dev
- stars
- 2 stars
- License
- MIT
- Updated
- Updated 17 hours ago
Readme
# dsh-feishu-notify DSH 插件:agent 会话结束时通过飞书自定义机器人发送通知卡片。已适配 DSH **0.1.0-rc.7**(`@deepseek-ai/cordis` / `@deepseek-ai/schemastery` 发行线)。 ## 作用 | 时机 | 卡片 | |------|------| | 会话结束(agent 进入 idle) | ✅「dsh 会话结束」 | | 模型调用 `ask_user_question` 等待输入 | 🔔「dsh 等待输入」 | <img width="1246" height="752" alt="image" src="https://github.com/user-attachments/assets/eaa2dda8-9e9d-431e-970c-3f0c18e59b98" /> 卡片含工作目录(末两段)与可选的「打开会话」按钮;subagent 会话不通知;webhook 发送失败只记日志,不影响 agent 主流程。 > 注意:由于 dsh-external/issues#397 目前不支持使用 sessionId + URL 跳转,现在的「打开会话」按钮只会跳转到 webui 中。 ## 安装 前置:git、pnpm、运行中的 DSH(≥ 0.1.0-rc.7)。 ### 方式 A:直接从 git 安装(推荐) ```bash # <profile> 换成实际名字,GUI 部署一般是 web dsh plugin --profile <profile> add git+https://github.com/omdsh-dev/dsh-feishu-notify.git ``` - 包声明了 `dsh.bundle`(`cordis.patch.yml` 插入 `feishu-notify` 插件行),`dsh plugin add` 会自动挂载到 profile 的 bundle 层,**无需手改 cordis.patch.yml**。 - 编译产物 `lib/` 已提交到仓库,git 安装无需构建(pnpm 的 allowBuilds 策略会拦截 prepare 脚本)。 - 更新:`dsh plugin --profile <profile> update dsh-feishu-notify`。 ### 方式 B:本地克隆构建后安装 ```bash git clone https://github.com/omdsh-dev/dsh-feishu-notify.git cd dsh-feishu-notify pnpm install && pnpm build dsh plugin --profile <profile> add <路径>/dsh-feishu-notify ``` ### 配置(两种方式相同) 在 `~/.dsh/settings.yaml` 末尾追加 `feishu-notify:` 段(字段说明见下),然后重启 DSH 进程。 ### 配置(~/.dsh/settings.yaml) ```yaml feishu-notify: enabled: true webhookUrl: <你的飞书群自定义机器人 Webhook 地址> webhookSecret: "" # 仅开启「签名校验」时填,否则留空 "" webUrl: "" # 「打开会话」按钮跳转地址;留空则不显示按钮 ``` - `webhookUrl`:飞书群 → 群设置 → 群机器人 → 添加机器人 → 自定义机器人 → 复制 Webhook 地址。**它是私有 URL(等同密钥),不要泄露或提交到任何仓库**;留空则不发送通知。 - `webhookSecret`:创建机器人时开启「签名校验」才需要,取机器人设置里的密钥。 - `webUrl`:你的 DSH 网页端地址。 - YAML 留空请写 `""`;不写该行则回落默认值(secret 空、webUrl 为 `http://127.0.0.1:3080`)。 - settings.yaml 热重载,之后改配置无需重启。 配置优先级(与 rc.7 首方插件一致):schema 默认值 → `cordis.patch.yml` 行内 `config:`(若配)→ `settings.yaml` 的 `feishu-notify:` 段。每次通知都会重读,改完即时生效。 ## 验证 - 发一条消息,模型回复完成后飞书收到「会话结束」卡;模型调用 `ask_user_question` 时收到「等待输入」卡;subagent 结束不通知。 - 单独验证 webhook:`DSH_NOTIFY_WEBHOOK_URL=<你的地址> pnpm send-test`(可选加 `DSH_NOTIFY_WEBHOOK_SECRET`)。 - 单测:`pnpm test`(fetch 桩,不发真实消息)。 ## 更新 / 卸载 - 更新:方式 A(git 安装)执行 `dsh plugin --profile <profile> update dsh-feishu-notify`;方式 B 则 `git pull && pnpm build` 后重新 add。更新后重启 DSH。 - 卸载:删除 cordis.patch.yml 中的两行 → 重启 → profile 目录 `pnpm remove dsh-feishu-notify`。 ## 与 DSH 0.1.0-rc.7 的适配说明 - 依赖迁移到 DSH 发行线使用的 fork:`@deepseek-ai/cordis`、`@deepseek-ai/schemastery`(替代上游 `cordis` / `schemastery`)。 - 事件负载改为直接使用已发布的 `@deepseek-ai/dsh-agent` / `@deepseek-ai/dsh-session` 类型,删除手写的结构类型。 - 修复:`agent/status` 的 subject 是 `Agent`,会话 id 字段为 `agent.id`(旧代码读 `agent.sessionId` 会得到 `undefined`,导致卡片链接失效)。 - settings 注册改用 `@deepseek-ai/dsh-settings` 的 `settingsNamespace` + `register`,并导出 `Config` schema 作为 `feishu-notify:` 配置段形状(rc.7 插件约定)。
Install
dsh plugin --profile web add github:omdsh-dev/dsh-feishu-notify
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-feishu-notify from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.