🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

代理实时看板 21hbguo/dsh-agent-board

DeepSeek Harness
21hbguo49 天前有提交已提供中文文档扫描:含敏感能力

树形监控主代理与子代理,停滞自动告警并一键直达会话

30.5/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

该插件未发布到 npm,按作者文档从 GitHub 源安装即可(静态检查只覆盖 npm 路径,不代表插件不可用)。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add 21hbguo/dsh-agent-board
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/11/02·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 49 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安装兼容性检查需源码安装

仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包@dsh-external/dsh-agent-board(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/15 11:40:23

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 9 处,展示前 9 条)
  • 发起网络请求
    src/client/tree.ts:371
    const res = await fetch('/api/subagent.list', {
  • 发起网络请求
    src/client/view.ts:348
    void fetch('/api/workspace.archiveSession', {
  • 发起网络请求
    src/client/view.ts:367
    void fetch('/api/agent-board/agents')
  • 发起网络请求
    src/client/view.ts:410
    void fetch('/api/agent-board/agents')
  • 写入本地文件
    src/index.ts:271
    mkdirSync(homedir() + '/.dsh', { recursive: true })
  • 写入本地文件
    src/index.ts:272
    writeFileSync(tmp, body, 'utf8')
  • 写入本地文件
    src/index.ts:273
    renameSync(tmp, ARCHIVE_PATH)
  • 读取本地文件
    src/index.ts:281
    if (!existsSync(ARCHIVE_PATH)) return
  • 读取本地文件
    src/index.ts:282
    const parsed = JSON.parse(readFileSync(ARCHIVE_PATH, 'utf8')) as { records?: Array<AgentSnapshotRow & { endedAt: number }> }
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-llm@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-client-ui-sidebar
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 树形层级监控
  • 停滞自动告警
  • 点击直达会话

README

由 DeepSeek 最新模型翻译生成
dsh-agent-board DSH(DeepSeek Harness)Agent 实时看板 —— 主 agent 与子代理的树形层级监控,停滞自动告警,点击直达会话。老板视角,一眼看清谁在跑、干到哪、卡没卡。 ◉ 当前 主代理轮询与进度监控 ⚙ bash: npm run build … ┣━ ● 子代理1-调研DSH API面 调研完成,方案已定稿… ┃ ┗━ ● 子代理1-验证实现 完成 ┣━ ● 子代理2-实现看板悬浮窗 ✍ 输出中… ┗━ ● 子代理3-写测试 ⚙ bash: pytest -x … Agent 看板:树形子代理实时监控(绿=working / 蓝=完成 / 灰=已读空闲 / 红=停滞) 生命周期演示:子代理运行中(绿)→ 完成(蓝)→ 双击打开后转空闲(灰) 完成态 已读态 ✨ 特性 | | 特性 | 说明 | | 🎯 | 树形层级图 | 以主 agent(实心圆)为根、子代理(空心圆)为分支的层级森林;多主会话并排显示;五色状态语义:🟢绿=working(在跑)/ 🟡黄=等你判断(ask/审批挂起)/ 🔵蓝=完成(未查看)/ ⚪灰=空闲(完成且已打开过,已读弱化)/ 🔴红=停滞 | | ⚡ | SSE 实时推送 | 数据变化事件级推送,看板即时刷新;断线自动回退轮询兜底 |
展开完整文档(README 剩余 1 节)
dsh-agent-board

DSH(DeepSeek Harness)Agent 实时看板 —— 主 agent 与子代理的树形层级监控,停滞自动告警,点击直达会话。老板视角,一眼看清谁在跑、干到哪、卡没卡。

◉ 当前 主代理轮询与进度监控 ⚙ bash: npm run build …
┣━ ● 子代理1-调研DSH API面 调研完成,方案已定稿…
┃ ┗━ ● 子代理1-验证实现 完成 ┣━ ● 子代理2-实现看板悬浮窗 ✍ 输出中…
┗━ ● 子代理3-写测试 ⚙ bash: pytest -x …

Agent 看板:树形子代理实时监控(绿=working / 蓝=完成 / 灰=已读空闲 / 红=停滞)

生命周期演示:子代理运行中(绿)→ 完成(蓝)→ 双击打开后转空闲(灰)

完成态 已读态

✨ 特性

| | 特性 | 说明 |
| 🎯 | 树形层级图 | 以主 agent(实心圆)为根、子代理(空心圆)为分支的层级森林;多主会话并排显示;五色状态语义:🟢绿=working(在跑)/ 🟡黄=等你判断(ask/审批挂起)/ 🔵蓝=完成(未查看)/ ⚪灰=空闲(完成且已打开过,已读弱化)/ 🔴红=停滞 |
| ⚡ | SSE 实时推送 | 数据变化事件级推送,看板即时刷新;断线自动回退轮询兜底 |
| 🚦 | 三态生命周期 | working(在跑)→ 完成(子代理弱化保留 5 分钟、主 agent 完成标蓝 60 分钟,点开变灰;每根最多 12 条防堆积)→ 超时消失;有在跑子代理的根自动展开 |
| 🔔 | 停滞自动告警 | 子代理静默超过阈值(默认 10 分钟)→ 自动向父会话注入 notice 提醒(GUI 可见、不唤醒模型、不耗 API 额度)——不再需要手动轮询 list_agents 催进度 |
| 📝 | 进展一目了然 | 每个节点同行显示:当前动作(正在执行的命令 ⚙ / 输出中 ✍)+ 最新答复节选 + 状态;工具与文本都是实时信号 |
| 🖱️ | 单击直达,行首折叠 | 单击任意节点打开会话;展开/折叠只走行首 ▸/▾(有子节点的根);打开 = 已读:完成节点由蓝变灰(空闲),跨刷新持久(localStorage);当前会话带「当前」标记 |
| 💾 | 跨重启持久 | 完成态存档落盘(~/.dsh/agent-board-archive.json),重启后不丢;会话标题/名字自动恢复 |
| 🪟 | 双形态看板 | 悬浮窗(右上角可拖拽移动、四角拖拽调大小、折叠、隐藏,位置/尺寸持久化)+ 停靠右侧面板(AionUi 文件插件风格:右侧常驻一列、内容左移不遮挡,拖拽把手调宽 220–520px、双击复位,标题点击折叠为 0 宽、右侧展开按钮) |
| 🔀 | 形态切换/并存 | ▦ 菜单(悬浮窗 / 停靠右侧面板 / 两者并存 / 隐藏)随时切换;设置 → 常规 → Agent 看板下拉同效;侧边栏 foot「Agent 看板」按钮 = 显示/隐藏总开关;× 只关当前形态(并存时保留另一个);全部状态持久化 |
| 🔤 | 字号调节 | 悬浮窗/停靠面板标题栏 − / + 连续调节字号(9–16px,每击 1px),双形态同步,刷新持久 |
| 📑 | 会话页「子代理」tab | 与「对话」「轨迹」同级:左主右子分屏(左 = 主 agent 对话,右 = 子代理对话页,分隔条可拖),每容器底部输入框可直接给该子代理发消息(subagent.prompt),ask/审批挂起时卡片内原地应答 |
| 🗑️ | 智能过滤 | 空白会话(无对话)不显示;归档的主 agent 连同整棵子代理树一起隐藏 |

🧩 解决的问题

DSH 的后台子代理卡住时(工具死等、LLM 挂起、自循环),父会话收不到任何信号:

- subagent-settled 通知只在子代理真正结束时才投递——而卡住的 agent 可以永远不 settle;
- list_agents 只有 running/idle/ready,没有活动时间戳——"running" ≠ "活着";
- 宿主没有 turn 级超时兜底。

dsh-agent-board 补齐这个洞:以 session 事件流为精确活动信号(毫秒级时间戳,最后一条 chunk/工具事件即"活着"),看板 + 自动告警双通道,老板不再需要轮询。

📦 安装

DSH 插件(host + client),本地构建注入即可,无需 npm 发布:

1. 构建(依赖 DSH checkout,自动探测 DSH_CHECKOUT) bash scripts/build.sh # 或 DSH 的 dev_build_plugin

2. 注入运行中的实例使用 DSH 的 dev_inject_plugin / dev_install_package 注入后刷新浏览器页面,右上角出现「Agent 看板」悬浮窗(默认形态)想要停靠右侧面板:悬浮窗标题栏 ▦ → 「停靠右侧面板」,或 设置 → 常规 → Agent 看板

重启后自动恢复:注入 registry + junction 持久装配(dev_inject_plugin 标准机制)。

🖥️ 显示形态(v0.2.0 新增)

| 形态 | 说明 |
| 悬浮窗(默认) | 右上角常驻浮窗:拖动标题移动、点击标题折叠为单行条、× 隐藏(右下角召唤按钮恢复) |
| 停靠右侧面板 | AionUi 文件插件同款:在 shell 网格右侧追加一列轨道,聊天区自动左移不遮挡;拖左侧把手调宽(220–520px,双击复位 300px);点击标题折叠为 0 宽,右侧出现 ◉ 展开按钮;与 aionui-panel 并存时自动共存(各自独立轨道) |
| 两者并存 | 悬浮窗 + 停靠面板同时显示 |
| 隐藏 | 全部收起,右下角「◉ Agent 看板」召唤按钮 |

切换入口(任意一处切换全局生效、跨刷新持久):
1. 悬浮窗/停靠面板标题栏的 ▦ 菜单;
2. 设置 → 常规 → Agent 看板 下拉(悬浮窗 / 停靠右侧面板 / 两者并存 / 隐藏);
3. 侧边栏 foot 「Agent 看板」按钮:显示/隐藏总开关。

📑 会话页「子代理」tab(v0.3.0)

进入任意主 agent 会话后,tab 栏出现第三个 tab 「子代理」(与「对话」「轨迹」同级,仅会话页渲染):

[对话] [轨迹] [子代理]
├────────────────────────────┬───────────────────────────┐
│ 主 agent 对话(markdown) │ ● 子代理1 标题… [跳转] │ │ │ ┌────────────────────┐ │ │ │ │ 子代理对话页 │ │ │ │ │ (气泡+markdown) │ │ │ │ └────────────────────┘ │ │ │ [ 输入框…… ] (Enter 发送) │ │ ← 可拖拽分隔条 → ├───────────────────────────┤ │ │ ● 子代理2 … │ └────────────────────────────┴───────────────────────────┘

- 左主右子分屏:左 = 主 agent 完整对话流;右 = 该会话的直属子代理(depth 1)列表,每容器 = 完整对话页(用户右对齐气泡 / 助手 markdown 代码块 / 工具调用摘要);中间分隔条拖拽调左右比例(rAF 丝滑、持久化)
- 每容器底部输入框:点击容器即激活其输入框,Enter/按钮发送 → 直接给该子代理发消息(宿主正牌 subagent.prompt 通道),子代理回复自动刷新显示
- 提问/审批原地应答:子代理 ask 挂起(waiting 黄卡)时,卡片内出现提问卡(选项单选/多选/自由文本 + 提交/取消)或审批卡(允许一次/拒绝)——不切 tab 直接应答(mux WebSocket + /api/respond)
- 筛选规则与看板一致:running 恒显、完成态 5 分钟、空白会话不显示、归档级联隐藏

⚙️ 配置

| 参数 | 默认 | 说明 |
| scanIntervalMs | 60000 | 停滞扫描周期 |
| stallThresholdMs | 600000 | 静默多久算停滞(10 分钟) |
| remindIntervalMs | 600000 | 同一子代理两次提醒最小间隔 |

环境变量覆盖:DSH_AGENT_BOARD_SCAN_MS / DSH_AGENT_BOARD_STALL_MS / DSH_AGENT_BOARD_REMIND_MS(毫秒,重启或重载后生效)。

🔧 工作原理

1. 活动记账:监听全局 session/event(每个事件自带毫秒时间戳),维护每个会话的「最后活动时间」「最新答复节选」「当前动作」——工具执行中最后事件是 tool/call(含命令),流式输出中最后事件是 assistant/chunk,天然可推断"正在做什么";
2. 停滞检测:定时扫描 running 子代理,静默超阈值 → 向父会话注入 {kind:'plugin', form:'notice'}(GUI 可见、不唤醒模型); 2b. 等待人工检测:ask 类工具(工具名以 ask 开头)tool/call 后无 tool/result、或 approval/asked 审批挂起 → 标 waiting(黄色圈 + 🔔 等你判断),应答/决定后自动清除;
3. 完成存档:子代理 settle 时把最终信息(创建名/答复/父会话)存档并落盘——完成态弱化保留 5 分钟(每根最多展示 12 条防堆积);主 agent 每轮 turn 结束标完成(蓝),保留 60 分钟,点开已读转灰;
4. 实时推送:数据变化(任何相关事件,500ms 节流合并)→ SSE 推送 changed 信号 → 浏览器立即拉快照;2s 轮询作兜底;
5. 树形组装:快照返回所有 live 顶层会话(roots)+ 子代理(rows),浏览器按 parentSession 血缘组装成森林,每个主 agent 一棵树。

状态模型

working ──完成──▶ 完成(子代理蓝 5 分钟 / 主 agent 蓝 60 分钟)──点开──▶ 灰(已读)──超时──▶ 消失绿 │ 等待人工(ask/审批挂起)──应答──▶ 恢复原状态(黄色)停滞(静默超阈值)──活动恢复──▶ 绿红有在跑子代理的根默认展开;行首 ▸/▾ 折叠;单击任意节点打开会话(打开 = 已读)。

🗂️ API

| 端点 | 说明 |
| GET /api/agent-board/agents | JSON 快照(roots + rows + label/action/reply/status) |
| GET /api/agent-board/stream | SSE 数据变化信号(data: changed) |

📄 License

BSD-3-Clause
预览分享卡片长什么样 ↓21hbguo/dsh-agent-board
分享 · DeepSeek Harness Hub
21hbguo/dsh-agent-board

树形监控主代理与子代理,停滞自动告警并一键直达会话

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部