Skills Plugins MCP Prompt Model 导航 博客 资讯 我的中心
会话与消息 #dsh-plugin

dsh-tool-monitor

DeepSeek Harness plugin: background file/command monitors that wake the owning session on new output and show a live monitor list in the Web session header over a dedicated WebSocket. Host core + Web client half, no build step.

substitute525 @substitute525 ⬇ 1 ★ 0 main

安装

dsh plugin --profile web add github:substitute525/dsh-tool-monitor
下载安装清单

需要可复现安装时,可在仓库后追加 #commit 固定提交。

DeepSeek Harness plugin: background file/command monitors that wake the owning session on new output and show a live monitor list in the Web session header over a dedicated WebSocket. Host core + Web client half, no build step.

该插件未提供要点说明,请参考仓库 README。

dsh-plugin
  1. 安装并启动 DeepSeek Harness:npx @deepseek-ai/dsh web
  2. 在终端执行上面的安装命令(CLI 会解析插件并核验来源)
  3. 用 dsh plugins list 确认已安装,必要时重启 Harness 生效

插件以当前 dsh 进程的权限运行,安装时可能执行代码。请先通读仓库源码与许可证,确认无破坏性命令与越权访问;本站只做索引,不对第三方插件安全性作担保。

代码仓库github.com/substitute525/dsh-tool-monitor
许可证MIT
主要语言main
下载量1
GitHub 星标0
最近推送2026-08-28
收录日期2026-09-19
分类会话与消息

事实信息来自公开插件目录快照(2026-10-01),介绍文案由本站再加工。

以下为插件仓库 README 全文(原始内容,由公开目录抓取整理)。

# dsh-tool-monitor

> 一个 **dsh-plugin**:后台监听**文件**或**命令输出**,输出到达时唤醒所属会话,并在 Web 会话头部提供实时监听的列表与输出查看面板。MIT License。

## 功能

- **后台监听**:`monitor_start` 对 `file` 或 `command` 发起后台监听,返回 `monitor_id` 后立即继续。
- **触发唤醒**:默认在监听到**任意新输出**时唤醒;可用 `pattern`(JS 正则)限定只对匹配输出触发。
- **模型可见的四个工具**(宿主层注册,所有 preset 的所有会话可用):
  - `monitor_start` — 启动监听。参数:`source`(file|command)、`path`/`command`、`duration_seconds`(0=持续到会话/插件停止)、`interval_ms`(默认3000)、`pattern`(正则,仅匹配触发)、`initial_snapshot`(file 现有内容作为首批)、`one_shot`(首次触发后自动停止)、`max_chars`(缓冲尾保留,默认4000)
  - `monitor_read(id)` — 增量读取(消费游标,同 `job_output`)
  - `monitor_stop(id)` — 停止(command 会杀后台进程)
  - `monitor_list()` — 本会话可见的监听器
- **Web 会话头部**:提供「N 个监听器」控件,点开列出每个监听(状态点 / 时长 / 详情 / 停止钮),点某行按需展示保留输出。

## 机制

- **宿主自注册表**:monitor 存于插件自己的 `Map`(id 形如 `monitor-N`),状态词 `running / stopped / completed / failed`,**不写入 `ctx.jobs`**,因此不会出现在框架的「后台任务」列表里。
- **自有 WebSocket 推送**:宿主用公开缝 `ctx.get('webServer').registerUpgrade({ path: '/tool-monitor/ws' })` 注册专属 WS 端点,再用 `ws` 包的 `WebSocketServer.handleUpgrade` 握手。每次注册表变化(启动 / 停止 / 结束 / 移除)就给该会话的连接推一份 `{ type:'snapshot', monitors:[...] }`;新连接建立先发一次 baseline;**loopback 校验**拒绝非本地来源;插件卸载时注销路由。
- **客户端**:`new WebSocket(location.origin + '/tool-monitor/ws?sessionId=…')`,收到 snapshot 更新列表,掉线 1s 自动重连(重连后宿主补发 baseline);**不轮询**、不依赖 `useSessions`。头部按钮复用了框架的 `StateDot` + `IconChevronDownOutline14`,与「后台任务」等控件视觉一致。
- **输出按需读取**:模型端走 `monitor_read`(增量、消费游标);Web 端点开行时经 `/tool-monitor` RPC `read`(保留窗口、非消费)。**输出不随推送下传**。
- **唤醒**:构造 `UserMessage`(source `{kind:'plugin', plugin:'tool-monitor', form:'notice', summary}`),owner idle 且预算内(默认连续 3 次,`agent/inbox/claimed` 收到用户消息即复位)→ `owner.followup(msg)`;否则 `owner.inject(msg)`。`agent/disposed` 或插件卸载会停止其所有监听。

## 安装

用 dsh 自己的插件命令把包装进目标 profile。

```bash
# 1) 安装到 web profile(等价于在该 profile 目录执行 pnpm add)
dsh plugin --profile web add @caizhiyuan/dsh-tool-monitor

# 2) 若还未注册,在 profiles\web\cordis.patch.yml 添加插件行:
#    - insert:
#        - id: tool-monitor
#          name: '@caizhiyuan/dsh-tool-monitor'

# 3) 重启 dsh(宿主模块 + 新 client bundle 生效;client 部分刷新页面加载)
```

> 前提:dsh profile 需已组合 `webServer`(Web 版默认有);headless 无 `webServer` 时插件仍可用(模型工具正常),只是没有 WS 推送。

## 结构

- `lib/index.js` — Host 插件:`{name:'tool-monitor', inject:[...], Config(zod), apply}`;自注册表、每 tick 轮询、唤醒预算、`agent/disposed` 清理、`/tool-monitor/ws` 端点、`/tool-monitor` RPC(read/stop)。
- `lib/client.js` — Web 客户端半部(`window.__ModuleLoader__` 格式):会话头部注册 `monitor-list`(order 30),连自有 WS 收 snapshot,点开查看/停止。
- 无构建步骤(`"type":"module"`,纯 ESM / 模块加载器格式)。

## 开源协议

[MIT](LICENSE)

数据来源:公开的 DeepSeek Harness 插件目录与各插件 GitHub 仓库。本站为独立第三方目录,与 DeepSeek、幻方(High-Flyer)及插件作者均无隶属或背书关系。

每日精选 Skill 推荐,免费送到你邮箱

输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。

提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。

完全免费,取消任意时间。我们不会发送垃圾邮件。