dsh-terminal-panel:在会话头部只读聚合多代理终端输出

前言

在 DeepSeek Harness(DSH)里跑主会话、子代理或 Agent Team 时,bash 前台命令、后台 job 和持久 PTY 往往分散在侧栏终端、工具事件和不同 agent 上下文里。想一眼看清「当前树里谁在跑什么、输出到哪了」,通常要在多个界面之间切换,或反复展开工具结果。社区维护者 xx529 的客户端插件 dsh-terminal-panel 在会话头部增加「终端」View tab,把上述来源聚合成只读卡片网格,便于在同一会话视图内跟踪执行状态。

这是什么

dsh-terminal-panel 是 DSH 插件,分类为客户端(platform: web,注入会话 UI)。Host 侧采集当前会话树范围内的 bash 执行、后台任务与持久终端输出;客户端在会话内容区顶部以 tab 形式展示,面板只读,不提供向终端发令或改写进程的能力。

DSH 生态采用「一切皆插件」思路;SkillHub 等社区目录独立于 DeepSeek / 幻方,本文仅介绍该插件在 README 与安装文档中写明的能力。

核心功能

下面介绍面板聚合的范围与展示行为(以仓库 README 与契约 v12 为准)。

聚合范围

  1. 当前会话及其会话树内的 agent。
  2. 子代理、Agent Team 队友各自关联的 bash 前台执行、后台 jobs、持久 terminals。
  3. Host 通过 terminals.list(agent)、tools/execute 等链路发现 Run;侧栏 terminalController 注册表默认不参与与 agent PTY 混排(开启时标 sidebar)。

会话头部「终端」tab

安装并重启 DSH 后,会话界面头部会出现 终端 tab。激活该 tab 时,插件会隐藏底部 composer(优先官方能力;否则通过 DOM 锚点 + CSS 降级),避免与「只看输出」的场景抢焦点;切回其他 tab 会恢复。

只读卡片网格

  • 执行中的 Run 以卡片展示:进行中(黄)、终态后 linger 约 3s(可手动「收起」)、再进入 已完成 分组(绿);失败为红。
  • 卡片标题优先 tools/execute 的 description(≤200 字符),否则取命令首行;完整命令与 terminal 输入块在输出区顶部(bash/job 带 $,terminal 带 $ name 与 inputs)。
  • 行内 chip:agent.name 作会话标题;agent.roleName 作角色(主会话为 lead 等)。
  • 卡片宽度可拖右缘调整(约 280–640px),网格铺满行宽,纵向滚动;无横向滑动条设计。
  • P0 会话隔离(契约 v11 起):帧与缓存按会话树隔离,避免 A 会话看到 B 的 Run;客户端对异会话帧整帧丢弃。

状态与降级

  • 首帧前显示 skeleton,loading 与空态区分。
  • agent 缺失或仅能 meta 时显示 notice,不展示「运行中」动画;tier3 片段标注非实时全量。
  • 切 tab 或切会话时,模块级 SESSION_CACHE(LRU 4 / TTL 30min)尽量保留视图与游标,减少回到 tab 时的空白。

安装与启用

推荐通过 DSH plugin_manager 从 GitHub tag 安装(失败会自动回滚 profile 的 package.json / pnpm-lock.yaml)。安装成功后需 重启 DSH 桌面版并刷新页面。

// plugin_manager
{ "action": "install_bundle", "target": "github:xx529/dsh-terminal-panel#v0.1.1" }

若需钉死不可变 commit(例如 tag 被移动时排障),可使用:

{ "action": "install_bundle", "target": "github:xx529/dsh-terminal-panel#9f3fed1271150c39af210bdd0e17c79c04ce5a83" }

升级时将 #v0.1.1 换成新 tag 再执行 install_bundle 并重启;回滚与排障步骤见仓库 docs/install.md。

安装前建议自行阅读仓库源码与 MIT 许可证;插件随当前 DSH 进程权限运行,与宿主共享同一信任边界。

典型用法

经过上面的安装步骤后,用法主要是「开 tab、看聚合、切会话核对隔离」,无需额外配置文件(仓库未要求用户侧 JSON 配置项)。

  1. 在 DSH 中打开任意会话,让 agent 执行 bash、启动后台 job,或通过工具打开持久 terminal。
  2. 点击会话头部 终端 tab,在执行区查看对应卡片与实时/准实时输出(只读)。
  3. 若使用 Agent Team 或多子代理,同一 tab 内应只看到当前会话树内各 agent 的 Run;完成项在「已完成」分组中按需展开行查看历史输出。
  4. 需要跟代码变更或契约字段对照时,可读仓库 docs/architecture/contract.md(当前对外契约 v12,含 Run.description、agent.roleName 等展示字段)。

开发者本地验证插件质量(与最终用户安装无关)可在克隆后的仓库根目录执行:

npm run check
npm test
npm run smoke
# 或
npm run verify

README 记载:400 项单测、91 项 Host mock 冒烟、npm run verify exit 0;仓库不安装 npm 依赖(宿主 profile 提供包)。README 亦注明 v0.1.0 曾在真实 DSH 环境由用户口头确认整体可用(2026-10-26),部分 manual 验收项对外宣称前仍缺逐条截图证据——使用时以你本机 DSH 版本为准自行验证。

适用场景与注意

适合:在同一 DSH 会话里并行主 agent、子代理或队友,需要集中监视命令与终端输出、又不想在侧栏多个 terminal 间来回点的开发者。

注意:

  • 面板只读;发命令仍通过 composer 或其它 DSH 官方入口。
  • 依赖 DSH 版本区间与 Host 契约;跨会话泄漏类问题在 v11 已按 P0 修复,双会话回归步骤见仓库测试文档,使用前建议在你要用的 DSH 版本上自测。
  • 社区目录星标等统计可能滞后;以 GitHub release tag 与 docs/install.md 为准。

结尾

dsh-terminal-panel 把当前会话树内的 bash、job 与持久终端输出收到会话头部的「终端」tab,以只读网格统一呈现,并强调会话隔离与终态 linger 交互。若要在本机启用,使用 install_bundle 指向 github:xx529/dsh-terminal-panel#v0.1.1 后重启 DSH 即可。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜