前言¶
在 DeepSeek Harness(DSH)里同时开多个工作区、多个会话时,很难一眼知道「别的窗口在跑什么、卡在哪一步、有没有已经跑完」。去每个 GUI 里点一遍既慢,也不适合在 IM 或脚本里做自动化跟进。社区插件 dsh-session-monitor(仓库 Rukawa15/dsh-session-monitor)面向本机当前用户的会话事件流做只读聚合:状态总览、固定格式看板、按会话 tail / wait / 导出,并可配合 dsh-im 把结果推到微信、QQ、飞书等。维护者为 Rukawa15;当前插件包版本 0.6.0,许可证 MIT。
这是什么¶
DSH 会话监视器是一类 DSH 插件:不修改、不干预任何会话,只读取本机 ~/.dsh/sessions/ 下按工作区分组的 session.v4.jsonl.zstd(多帧 zstd 压缩的 JSONL 事件流),以秒级新鲜度反映各会话是否在跑、轮次与最新动作。可选 IM 推送依赖独立插件 dsh-im。
核心功能¶
README 将能力归纳为若干固定指令(均可通过 python scripts/monitor.py 调用;任意时刻 python scripts/monitor.py help 可得到与文档一致的固定格式指南,help <指令名> 可看单条详情):
| 功能 | 指令 | 说明 |
|---|---|---|
| 会话状态总览 | status |
全部会话的 RUNNING / STALLED / IDLE / ABORTED、轮次/步骤、最新动作 |
| 任务看板 | board |
三段式:活跃中 / 疑似中断 / 已完成 TopN(IM 查询首选) |
| 深入某任务 | tail <短ID> |
某会话最近 N 条事件(用户消息 / AI 消息 / 工具调用) |
| 等待回复 | wait <短ID> |
阻塞等到该会话本轮结束并打印 AI 回复;--notify 可自动推送到 IM |
| 主动推送 | notify --text "..." |
经 dsh-im 发到 IM(--to 选目标) |
| 导出对话 | dump <短ID> -o 文件.md |
完整对话导出为 Markdown |
所有指令支持 --cwd 路径 限定工作区;status / board / wait 支持 --json 机器可读输出。会话短 ID 一般取会话 ID 前 8 位左右即可。
插件还注册两个技能,供 DSH 内 AI 助手自动调用(无需手敲命令):
- dsh-session-monitor:询问「其他会话在干什么 / 任务进度 / 现在在跑什么」时,助手会调用 board / tail / status,并按约定原样回复看板输出。
- dsh-session-relay(跨会话信使):需要「去某会话发话 / 代问并带回回复 / 让某任务继续」时,经 GUI 代为发送,
wait阻塞等待对方回复后再转发。
状态与看板怎么读¶
[RUNNING]:正在运行(默认 15 分钟内有写入且本轮未结束;阈值可在配置中调整)。[STALLED]:疑似中断(本轮未结束但超过活跃判定时间无写入)。[IDLE]:空闲(本轮已正常结束)。[ABORTED]:最后一次轮次被手动中止。
看板「活跃中 / 疑似中断」各最多显示 board_max_running 条;超过 zombie_hours(默认 24 小时)无更新的会话不再展示;「已完成」按更新时间取前 board_top 条(默认 5)。
安装与启用¶
依赖:核心功能仅需 Python 3 与 zstandard(缺失时 pip install zstandard)。IM 相关命令需另装 dsh-im;未安装时相关命令会给出安装/配置引导,其余功能不受影响。
装完需重启 DSH 生效。官方 README 给出四种方式,任选其一:
- 安装 dsh-market 后,在「插件市场」标签页搜索
dsh-session-monitor一键安装。 - 命令行(npm,README 标注为推荐):
dsh plugin --profile <你的profile> add dsh-session-monitor
普通 dsh web 用户 profile 名一般为 web。
- 命令行(GitHub 仓库 URL):
dsh plugin --profile <你的profile> add https://github.com/Rukawa15/dsh-session-monitor.git
- 本地路径(开发模式):在本地已有仓库目录时:
dsh plugin --profile <你的profile> add <仓库路径>
不安装插件包也可以:将本仓库放入 ~/.agents/skills/(或作为技能目录),助手同样能调用 scripts/monitor.py 的全部指令,只是没有 DSH 设置页。
典型用法¶
下面示例来自 README(Windows 路径用反斜杠;Linux/macOS 可改为 scripts/monitor.py):
# 现在在跑什么任务?
python scripts\monitor.py board
# 某个任务进展如何?(短 ID 看板里有)
python scripts\monitor.py tail 0a29d310 -n 20
# 等某会话出结果,出来后推送到飞书
python scripts\monitor.py wait 0a29d310 --timeout 600 --notify
# 主动发一条消息到 IM
python scripts\monitor.py notify --text "构建完成" --to feishu
# 导出某会话完整对话
python scripts\monitor.py dump 0a29d310 -o 会话导出.md
# 完整使用指南(固定格式)
python scripts\monitor.py help
设置与配置¶
在 DSH 设置 → 「DSH 会话监视器」 可调整轮询间隔、活跃判定阈值、僵尸隐藏阈值、看板条数;顶部「依赖插件检测」会显示 dsh-im 连接情况(未安装则引导到插件市场;已连接无目标则引导到 设置 → IM 机器人 新建目标)。
配置优先级:命令行参数 > 配置文件 > 默认值。设置页与 ~/.dsh/dsh-session-monitor.json 为同一份数据;手改 JSON 后对之后运行的命令立即生效。命令行参数如 board --top 10、wait --poll 5 仅对当次生效。
可调项(README 默认值):poll_interval_sec(10)、running_threshold_sec(900)、zombie_hours(24)、board_top(5)、board_max_running(10)、delivery(IM 投递回退;正式目标由 dsh-im 统一管理)。
适用场景与注意¶
适合在本机跑多个 DSH 会话、需要统一看板或脚本化「等某会话跑完再通知」的开发者;经 IM 接入 DSH 时,board 固定输出也便于助手原样回传进度。
务必知晓:
- 数据只读本机当前用户的会话目录,不上传、不修改会话内容;插件以当前 DSH 进程权限运行,安装前建议浏览仓库源码并确认 MIT 许可证与行为是否符合预期。
- IM 推送为可选能力,依赖 dsh-im 及其目标配置。
- 社区目录页 skillhub.cn 上的条目与 GitHub 仓库由社区维护,与 DeepSeek / 幻方无官方从属关系;DSH 生态遵循「一切皆插件」,安装来源以 README 与目录页为准。
结尾¶
dsh-session-monitor 把分散在各工作区的 DSH 会话收成可读的 status / board,并支持 tail、阻塞 wait、Markdown 导出与可选 IM 通知,且全程只读。若要安装或查最新说明,可看社区目录页与 GitHub README:
- 目录页:https://www.skillhub.cn/plugins/Rukawa15/dsh-session-monitor
- GitHub:https://github.com/Rukawa15/dsh-session-monitor