插件目录 / Developer / dsh-tool-monitor
dsh-tool-monitor
已验证 · 实测可装 yoke233
功能简介
dsh-tool-monitor — DSH 插件(工具)
可用 — 实测通过,早期项目
dsh-tool-monitor — DSH 插件(工具) 实测能干净安装、正常启动。早期项目,但功能可用。
「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。
README
让 DeepSeek Harness 在后台服务出错时立即收到事件。
订阅已经运行的 Bash 或 PowerShell Job;保留原始 job_output,不启动第二个业务进程。
快速开始 · 为什么需要它 · 工作方式 · 工具参数 · 兼容性与边界
快速开始
安装到 DSH profile:
dsh plugin --profile web add github:yoke233/dsh-tool-monitor
启动或重启 profile:
dsh --profile web
先正常启动后台服务:
pwsh(command: "npm run dev", run_in_background: true)
→ pwsh-1
再让 job_monitor 订阅这个 Job:
{
"job_id": "pwsh-1",
"description": "监听后端错误",
"pattern": "error|fatal|exception"
}
→ monitor-1
monitor-1 只订阅 pwsh-1 的输出。出现匹配行时,插件向所属 Agent 投递会话事件;原服务始终只运行一份。
为什么需要它
DSH 的普通后台 Job 会在任务结束时通知 Agent,但长期运行的后端服务可能在退出前就已经出现需要处理的错误。这个插件补充运行中的事件通道:
| 行为 | 结果 |
|---|---|
监听现有 job_id |
不重新执行服务命令 |
| 一次读取、多路分发 | Monitor 不会吃掉 job_output 的内容 |
| 惰性启用 tee | 没有 Monitor 的 Job 保持官方读取路径,不被轮询 |
| Host 本地过滤与批处理 | 没有匹配事件时,不触发模型请求 |
| 独立 Monitor 生命周期 | 停止 Monitor 不会终止目标 Job |
工作方式
Bash / Pwsh background process
│
│ readOutput() once
▼
lazy bounded output tee
┌────────────┴────────────┐
▼ ▼
job_output monitor-N
original output filtered complete lines
│
▼
followup() / inject()
插件使用兼容的 JobRegistry 实现扩展官方 LocalJobRegistry,继续复用 DSH 的所有权隔离、等待、取消、完成通知、容量限制和清理语义。原来的 job_list、job_output、job_kill 以及 Bash/Pwsh 工具保持不变。
完整设计和生命周期约束见 DESIGN.md。
工具参数
| 参数 | 必填 | 说明 |
|---|---|---|
job_id |
是 | 已有流式后台 Job 的 id,通常来自带 run_in_background: true 的 bash 或 pwsh |
description |
是 | 显示在 Monitor 通知中的简短说明 |
pattern |
否 | JavaScript 正则表达式,逐完整输出行匹配 |
case_sensitive |
否 | 是否区分大小写,默认 false |
timeout_ms |
否 | 订阅时限;默认持续到目标 Job 结束 |
Monitor 本身也是普通 Job:
job_list同时显示目标 Job 和 Monitor。job_output分别读取目标 Job 的原始输出和 Monitor 的匹配输出。job_kill monitor-1只停止订阅。- 目标 Job 结束时,关联 Monitor 自动结束并刷新最后一条不完整输出行。
兼容性与边界
- 支持 Bash 的 LF 与 PowerShell 的 CRLF 输出。
- 只支持公开流式
readOutput()的后台 Job;非流式 Job 会被明确拒绝。 - 所有权校验仍由 DSH Registry 执行,不能跨会话监听其他 Agent 的 Job。
- Job 和 Monitor 都是 Host 进程内状态,不跨 DSH Host 重启持久化。
- 插件安装前由另一 Registry 创建的历史 Job 不可补挂监听。
- 缓冲区按 UTF-8 字节设置上限;发生丢弃时,
job_output会显示明确提示。
本地开发
pnpm install
pnpm run build
pnpm test
dsh plugin --profile web add ./dsh-tool-monitor
测试覆盖 Bash、PowerShell、原 job_* 工具兼容、输出竞态、所有权隔离、目标结束与独立取消。
License
安装
装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:
dsh plugin add dshbase-catalog 然后对 agent 说「帮我装 dsh-tool-monitor」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。
该插件是 GitHub 源码(未发 npm)——直接从仓库装:
Web profile:
dsh plugin --profile web add github:yoke233/dsh-tool-monitor Headless(CLI)profile:
dsh plugin --profile headless add github:yoke233/dsh-tool-monitor 实测报告
验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。
使用场景
扩展 agent 的编码能力面——给它一个新工具、工作流或集成,让它接手以前做不了的开发任务。
适合谁
想让 dsh 在真实代码库上像队友一样干活的开发者——能改、能跑、能验证,而不只是回答问题。
二次开发建议
工具/命令面就是缝:暴露更多 SDK 能力、加更聪明的上下文接线,或收紧改代码与验证之间的循环。