DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Terminal Tabs — DeepSeek Harness 插件(DSH Plugin)
← Plugins
T

dsh-terminal-tabs

Terminal Tabs

DSH Web UI 的终端视图标签页:实时显示每个会话中的后台 shell/subagent 数量、中文用途标题、可折叠的命令正文及流式输出,并支持一键终止

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:bbboy31/dsh-terminal-tabs#871bcfdb561b711733394bad56d82d28d74f4558
README兼容性版本

兼容性与来源证明

Terminal Tabs 以 dsh-terminal-tabs 发布,当前版本为 0.2.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/9/5

版本

0.2.0stable
2026/9/5
0.1.0stable
2026/8/26

相关插件

正在加载相关插件…

最新版
0.2.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/9/5
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

继续浏览 developer-tools 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Sdk Minimal@deepseek-ai/dsh-sdk-minimal独立的最小 SDK 配置包:JSON-RPC、一个 DeepSeek 适配器、持久化 Shell 和 JSONL 会话Sdk App@deepseek-ai/dsh-sdk-appdsh SDK 配置包:基于 dsh-base 提供 stdio JSON-RPC 服务和进程生命周期管理Subagent Codex@deepseek-ai/dsh-subagent-codex基于官方 app-server 协议的一次性 Codex 子代理提供程序

README

dsh-terminal-tabs

English | 中文

Turn the commands your model runs — in the background and in the foreground — into something visible and closable inside the DeepSeek Harness web UI: a Terminals view tab next to Chat / Trajectory whose label tracks how many background shells and subagents the current session has running (命令行1, 命令行×3). Open it for a management page — one row per running command with a Chinese purpose title, a collapsible one-line command body, start clock plus ticking duration, a live output pane, and a Close button that actually kills the process.

Features

  • Real view tab — registered through the official conversation.view seat, sibling of Chat / Trajectory; selection is managed by the framework.
  • Live label — the tab text re-resolves on every projection from the host-pushed jobsBySession mirror, scoped to whichever session you are viewing. Zero observation RPC.
  • Purpose titles — a local heuristic dictionary maps each command to a short Chinese phrase (cd → 打开文件夹 "Open folder", git status → 查看 Git 状态 "Git status", Start-Sleep → 等待 "Wait", npm run dev → 启动开发服务 "Start dev server"). Subagents show as 子代理任务 "Subagent task"; unknown commands fall back to 执行命令 "Run command" while the raw text stays fully visible.
  • Foreground commands too — the plain pwsh/bash tool calls that finish in milliseconds and never become registry jobs are still captured: the node half wraps ctx.shell.run() and attributes each run to the session that initiated it, then serves them through /dsh-terminal-tabs/foreground. Running rows pulse green with a ticking duration; settled rows show the exit code and elapsed time, with the captured output tail under a chevron. The page merges them below the background rows.
  • Collapsible body — the command renders one ellipsised line; the chevron flips down/up and unwraps the full text.
  • Live output — expanding a background row opens a dark scrollback fed by a private tee on the spawned process: newest ~10 lines auto-follow, wheel up browses history, returning to the bottom resumes following.
  • Timing — start wall-clock (HH:MM:SS) and elapsed time (秒 → 分秒 → 时分) tick every second.
  • One-click close — kills the job through the node half's HTTP route; the jobs registry ownership fence still applies, so cross-session requests are rejected.
  • Stable numbering — rows keep their number while open; re-entering the page renumbers compactly. Background subagents are included, marked with an indigo dot.

How live output works (boundaries)

The browser never touches the model's consuming cursor. The node half wraps ctx.shell.start() at the instance level: every successfully spawned process gets an internal pump (300 ms) that drains the pipe into a per-process ring buffer (48 KiB cap). The wrapper is the process's single consuming cursor; a model-side read returns everything accumulated since its previous read, byte-for-byte — only the cadence changes. Consequences:

  • Background jobs started before the wrapper mounted have no captured output ("(暂无输出)").
  • Persistent PTY terminal sessions (ctx.terminals) do not flow through this channel.
  • The wrapper understands the current ShellProcessRead shape ({ delta }); if that contract changes upstream, output display degrades to empty while close/kill keeps working.
  • Foreground runs are recorded through a separate ctx.shell.run() wrap; an unattributable run (no initiating agent) passes through untouched. Settled entries keep the last 16 KiB of combined output.

Configuration (cordis.yml config row; all optional)

KeyDefaultMeaning
routePath/dsh-terminal-tabs/closeAbsolute pathname of the kill route
tailPath/dsh-terminal-tabs/tailAbsolute pathname of the output-tail route
foregroundPath/dsh-terminal-tabs/foregroundAbsolute pathname of the foreground-command ledger route
includeKinds["bash","pwsh","subagent"]Job kinds shown in the UI

Install

dsh plugin --profile web add github:bbboy31/dsh-terminal-tabs

Pure-JavaScript dual-plane plugin (node half index.js, browser half client.js) — no build step. After installing, refresh the web page.

Uninstall

dsh plugin --profile web remove dsh-terminal-tabs

Or use 插件市场 → installed list → 卸载 (two-step confirm). Uninstalling removes the routes, tab, and stylesheet with the fiber — no residue.

Development note: the Loader caches imported modules by package name — editing the node half requires a package rename or a process restart to take effect; client-half edits apply on page refresh.

License

MIT