dsh-watch
Background stream listeners that wake the DeepSeek Harness agent — put a watch on a command or file and receive new lines as in-session notices. The harness analog of Claude Code's Monitor tool, built on the first-class jobs subsystem.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:dshworks/dsh-watch说明文档
阅读完整 README ↗dsh-watch
Put a watch on a stream. The agent gets woken by what it says — even while idle.
dsh-watch gives DeepSeek Harness the missing half of background work: not "tell me when it finishes" (the stock jobs subsystem already does that) but "tell me when it says something". Arm a watch on a long-running command or a growing file; new lines — optionally filtered by a pattern — are batched per poll tick and delivered into the owning session as notices. An idle agent is woken; a busy one finds the notice queued into its next step. It is the harness analog of Claude Code's Monitor tool.
Every watch is a first-class background job (kind watch), so the standard surface applies unchanged: job_list shows armed watches, job_output drains a watch's line backlog, job_kill disarms one, ownership is session-fenced, and settlement arrives as an ordinary completion notice. This plugin adds only the watching — no parallel lifecycle, no second registry.
60-second start
dsh plugin --profile web add github:dshworks/dsh-watch
dsh --profile web
Then, in a session:
watch(source: "command", command: "npm run dev", pattern: "error|warn|Ready", label: "dev")
→ Watch armed (watch-1) on command: npm run dev.
# …the agent keeps working; when the dev server logs "Ready in 130ms",
# a notice wakes it:
[watch dev · watch-1] 1 line:
Ready in 130ms
Tail a file instead:
watch(source: "file", path: "/var/log/app.log", pattern: "ERROR|FATAL")
What it does, precisely
| Behavior | Detail |
|---|---|
| Sources | command (spawned once via the shell capability, inheriting the session's sandbox policy and env) · file (tailed from its current end; pre-existing content is never delivered; truncation restarts from the top; a not-yet-existing file is watched for) |