常驻后台监视器:文件收件箱(NDJSON)或命令输出增量一到就唤醒 agent,相当于 Claude Code Monitor 工具的 Harness 实现。
Persistent background watchers that wake the agent on new messages (file inbox or command-output delta) — the harness analog of Claude Code's Monitor tool.
安装
dsh plugin --profile web add github:AbnerAI/dsh-monitorGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
目录
A drop-in replacement for Claude Code's Monitor tool, built for DeepSeek Harness.
dsh-monitor is a harness plugin that arms persistent, background watchers on message sources. When new content arrives, the plugin wakes the owning agent — delivering a plugin-sourced user message into the session, exactly like Claude Code's <task-notification> mechanism.
If you rely on Claude Code's Monitor to stay responsive to inbound messages while a shell is idle, this plugin gives you the same capability inside DeepSeek Harness.
How it works
The model calls the monitor tool to arm a watcher on a source:
source: file— an append-only NDJSON inbox. New lines are delivered as they land.source: command— a shell command re-run on an interval. Its output delta since the last run is delivered.
On each new message the plugin wakes the agent:
| Agent state | Behavior |
|---|---|
| idle | agent.followup() — opens a new turn (harness analog of Claude Code's <task-notification>) |
| busy | agent.inject() — queues the message into the next step |
Watchers are durable within the session, disarmable on demand, and torn down automatically when the plugin is unloaded.
Installation
dsh plugin --profile <name> <args...>is a thin pnpm forwarder: it runspnpm <args...>in the profile directory, then adds any installed package that declaresdsh.bundleto the profile's layer stack automatically.
From npm
npx @deepseek-ai/dsh@latest plugin --profile web add dsh-monitor
From git
npx @deepseek-ai/dsh@latest plugin --profile web add https://github.com/AbnerAI/dsh-monitor
From a local directory
npx @deepseek-ai/dsh@latest plugin --profile web add /path/to/dsh-monitor
When installing a local directory, run
pnpm installinside the package first —link:installs do not resolve the package's own dependencies automatically.
Manual alternative: add dsh-monitor to the profile's dsh.profile.bundles
and include this package's cordis.patch.yml via its dsh.bundle.patch
declaration.
Quick start
Tell the agent to arm a watcher on an inbox file:
monitor(source="file",
path="/absolute/path/to/inbox.ndjson",
name="my-inbox",
poll_interval_ms=1000)
pathmust be an absolute path (or start with~— the plugin expands it). Node'sfsdoes not expand~itself.poll_interval_msdefaults to 2000; 1000 is a good balance for chat-like inboxes.
The tool returns a watcher id, e.g. monitor-1. From then on, every new line written to the file wakes the agent automatically.
Manage watchers at any time:
monitor_list # list armed watchers (id, source, delivered count)
monitor_stop(id="monitor-1") # disarm one
To watch a command's changing output instead of a file:
monitor(source="command", command="tail -n 5 /var/log/app.log", poll_interval_ms=5000)
Tools
monitor
Arm a persistent watcher.
| Parameter | Type | Required | Description |
|---|---|---|---|
source |
"file" | "command" |
yes | file = watch an append-only NDJSON inbox; command = poll a shell command's output |
path |
string | for file |
path of the NDJSON inbox (absolute, or ~-prefixed) |
command |
string | for command |
shell command to poll |
cwd |
string | no | working directory for the command (defaults to the process cwd) |
poll_interval_ms |
number | no | poll interval in ms (default 2000) |
name |
string | no | short label used in wake-up messages and monitor_list |
Returns a watcher id. Each new NDJSON line (or command-output delta) is delivered as a plugin-sourced notice that wakes the agent.
Implementation note. Polling uses plain global
setIntervalwith cleanup registered viactx.effect— the same timer convention asdsh-schedule. The Cordis timer-service mixin (ctx.setInterval) is intentionally not used: it is only resolvable from the host context, not from tool-execution contexts, and calling it throwscannot get property "timer" without inject.
monitor_list
List armed watchers with their ids, sources, and delivery counts. Empty output means nothing is armed.
monitor_stop
Disarm a watcher by id. Returns whether it was still armed.
NDJSON inbox format
Each line is a JSON object; the content field is delivered if present, otherwise the raw line:
{"content":"hello","ts":1712345678}
Any append-only NDJSON file works. The format pairs naturally with messaging and notification brokers: a broker appends one record per inbound message, and a watcher on the file wakes the agent as new records land. This mirrors the contract Claude Code Monitor exposes for its own inbox watchers.
Requirements
- DeepSeek Harness (dsh) with a Cordis-based plugin loader (bundles /
cordis.patch.yml). - Peer dependencies:
dsh-agent,dsh-llm,dsh-tools,cordis(satisfied by the harness runtime).
License
MIT
原始 README: https://github.com/AbnerAI/dsh-monitor/blob/main/README.md ↗
同类插件
查看全部 →
deepseek-harness
从仓库或系统描述生成经过校验的自包含交互式架构图、流程图、时序图、数据流图和生命周期图。

dsh-plugin
通过 DSH MCP 客户端挂载 Ouroboros 的纯配置包,在 DSH 中提供 36 个涵盖需求访谈、Seed、执行、评估与演化流程的工具。

dsh-tongflow
基于 TongFlow 的“片场”插件,用于图片、配音、音乐与视频制作:agent 为每个资产生成 TongFlow 工作流文件(.tongflow.json)并通过 TongFlow 插件执行,内嵌工作流画布,按镜头/角色/take 组织项目,附漫剧模板;以 @tongflow 开头的会话进入 Studio 界面。

helloagents
AI 编码 CLI 的工作流层:技能、项目知识、交付检查、更安全的配置写入与可恢复执行

dsh-ai-novel-writer
安装专用 AI 小说创作预设与工作台:提供带修订号的本地项目资产、紧凑侧边工作台,以及需要原生审批的逐文件变更。

rea
用 agent 逆向任何东西:从应用行为到原生二进制