DeepSeek Harness 插件

dsh-tool-notify

DSH plugin: model-facing notify tool (ntfy / webhook / Telegram-style)(英文原文)

跳到安装方式

来源信息

GitHub 仓库
rizkirmdhnnn/dsh-tool-notify
最近更新
2026年8月14日
分类
远程与移动
GitHub stars
0
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/rizkirmdhnnn/dsh-tool-notify
插件名:dsh-tool-notify
作者:rizkirmdhnnn

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器3 个文件
README.md来源说明 · 只读预览

dsh-tool-notify

A DeepSeek Harness (DSH) plugin that adds a model-facing notify tool. The agent calls it when a long task finishes or something needs attention, and a message is delivered to your notification channel.

Supports two channel types:

  • ntfy (default) — publishes to a topic on an ntfy server (https://ntfy.sh or self-hosted).
  • webhook — POSTs a JSON payload to any generic webhook endpoint.

Status

> Developer preview. DeepSeek Harness is iterating rapidly and breaking changes are expected. This plugin is tested against DSH 0.1.0-rc.6 / cordis 4.0.1 / Node 22.19+. Pin versions when you install.

Requirements

  • Node.js >=22.19 (or >=24)
  • pnpm via Corepack (packageManager: pnpm@11.7.0)
  • A running DeepSeek Harness profile (dsh --profile <name>)

Install

From npm (prebuilt, no build permission needed)

dsh plugin --profile demo add dsh-tool-notify

From GitHub (sources — build runs at install)

dsh plugin --profile demo add github:rizkirmdhn/dsh-tool-notify#<commit-sha>

pnpm ≥10 refuses to run the package's prepare build script until you allow it. dsh prints the exact package key; add it to the profile's pnpm-workspace.yaml:

allowBuilds:
  dsh-tool-notify: true

and re-run the add. That allowance means "run this package's code on my machine at install time" — only add packages whose source you trust, and pin a commit.

From a tarball

pnpm pack
dsh plugin --profile demo add ./dsh-tool-notify-0.1.0.tgz

Configuration

The bundle inserts a row with id notify. Override it in your profile's cordis.patch.yml (later layers win per row; a patch replaces the whole config):

- patch:
    - id: notify
      config:
        endpoint: https://ntfy.sh
        defaultTopic: dsh-alerts
        timeoutMs: 10000
        channel: ntfy
        # tokenRef: NTFY_TOKEN

| Field | Type | Default | Description | |---|---|---|---| | endpoint | string | https://ntfy.sh | Base URL of the ntfy server or the full webhook URL | | defaultTopic | string | dsh-alerts | Topic used when the model does not pass one (ntfy only) | | timeoutMs | number | 10000 | HTTP request timeout | | channel | 'ntfy' \| 'webhook' | 'ntfy' | Channel type | | tokenRef | string | — | Credential reference (env-var style name) for a Bearer token |

Auth via credentials

Secrets never go in config. Set tokenRef to the name of a credential (e.g. NTFY_TOKEN), then configure that credential through DSH's normal credential provider (env var, .env, or the UI). The plugin resolves it once per call through ctx.credentials, so a rotated token reaches the next call without a restart.

Usage

The model sees a notify tool with parameters:

{
  "message": "string (required)",
  "title": "string (optional)",
  "priority": "'min' | 'low' | 'default' | 'high' | 'max' (optional, ntfy)",
  "topic": "string (optional, ntfy override)"
}

A successful call returns { ok: true, status, channel }; a non-2xx response returns { ok: false, status, channel } (not an error). Network failures and timeouts are reported as tool errors.

ntfy

POSTs to {endpoint}/{topic} with body { topic, message, title, priority }.

webhook

POSTs to {endpoint} directly with body { message, title } — no ntfy-specific fields.

Development

pnpm install
pnpm run typecheck
pnpm run test
pnpm run build

The package is a standard DSH bundle: package.json declares "dsh": { "bundle": { "patch": "./cordis.patch.yml" } }, the plugin registers via ctx.tools.register(defineTool(...)), and registrations are effects that unwind when the plugin unloads.

License

MIT