DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Web Terminal — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

dsh-web-terminal

Web Terminal

用于 DeepSeek Harness Web GUI 的本地终端插件:基于真实 node-pty shell 的多标签 xterm.js 面板,通过主机进程上的 WebSocket 路由进行流式传输。支持热插拔——通过 web profile bundle list 挂载,无需修改 dsh 源代码。

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

npx -y @deepseek-ai/dsh plugin --profile web add dsh-web-terminal@0.1.1
README兼容性版本

兼容性与来源证明

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

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

版本

0.1.1stable
2026/8/16
0.1.0stable
2026/8/16

相关插件

正在加载相关插件…

最新版
0.1.1
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
692.5 kB
文件数
21
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 1
周下载
153
安全扫描
✓ v0.1.1 扫描通过
最近提交
2026/8/16
查看源码 ↗项目主页 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题

README

dsh-web-terminal

A local terminal plugin for the DeepSeek Harness web GUI. Adds a sidebar Terminal entry with a multi-tab xterm.js panel; every tab runs a real PTY shell on the host process via node-pty, streamed over a WebSocket route.

Features:

  • Real pseudo-terminal shells — interactive programs (vim, top, htop), Ctrl-C, resize all work
  • Multi-tab terminal panel with new / close / disconnect / reconnect / clear controls
  • Auto-fit on panel open, window resize, and container changes
  • Shell and working directory configurable (settings panel or patch yaml)
  • Loopback-only trust fence on every route
  • Hot-pluggable: no dsh source changes, mounts through the web profile bundle list (same dual-face plugin pattern as dsh-ssh)

Architecture

HalfEntryResponsibility
host (node)lib/index.js (src/index.ts)node-pty shell sessions, /api/dsh-terminal/info route, /api/dsh-terminal/terminal WebSocket upgrade, system-prompt announcement, settings namespace (shell/cwd)
client (browser)lib/client.js (src/client/index.ts)sidebar Terminal entry (DOM injection, self-healing), multi-tab terminal panel (React + xterm.js)

Wire protocol (src/protocol.ts):

  • client → host: {type:"input",data}, {type:"resize",cols,rows}
  • host → client: {type:"ready",shell}, {type:"output",data}, {type:"exit",code,error?}

Security: all routes carry a loopback-only trust fence (same-origin + 127.0.0.1/localhost checks). The terminal executes commands with the host user's privileges — equivalent to direct shell access.

Install into the web profile

Option A — bundle list (recommended):

# 1) one-time: allow node-pty build scripts in ~/.dsh/profiles/web/pnpm-workspace.yaml
#    allowBuilds:
#      esbuild: true
#      node-pty: true

# 2) add the dependency (adjust the path to your checkout)
cd ~/.dsh/profiles/web
pnpm add dsh-web-terminal@link:/path/to/dsh-web-terminal

# 3) append "dsh-web-terminal" to dsh.profile.bundles in package.json
#    (the bundle's cordis.patch.yml inserts the id=terminal plugin row)

# 4) restart dsh web

Option B — manual patch row in ~/.dsh/profiles/web/cordis.patch.yml (with the package installed in the profile):

- insert:
    - id: terminal
      name: 'dsh-web-terminal'

Configuration (settings panel / patch yaml)

- id: terminal
  config:
    enabled: true
    announceToAgent: true
    shell: /bin/zsh      # default: $SHELL
    cwd: /path/to/work   # default: host process cwd (workspace root)

Development

pnpm install            # pnpm-workspace.yaml must allow esbuild / node-pty build scripts
pnpm run typecheck      # tsc --noEmit
pnpm run build          # esbuild: lib/index.js (host) + lib/client.js (ModuleLoader wrapper)
pnpm test               # client bundle syntax + jsdom ModuleLoader simulation
node scripts/smoke.mjs  # host WebSocket link smoke test
node scripts/browser-diag.mjs  # Playwright: open the real GUI, click Terminal, type a command

The build script embeds node_modules/@xterm/xterm/css/xterm.css into src/client/xterm-css.ts (generated) because the ModuleLoader environment has no CSS loader.

Known pitfalls

  1. Client externals: only platform seed words (react family) and shell-own modules (@deepseek-ai/*) may stay external. @xterm/* must be bundled — otherwise the ModuleLoader reports require("@xterm/xterm") missed the module table (dsh-ssh bundles xterm too).
  2. Panel height chain: [data-dsh-terminal-view] is an absolute container; its direct child .dshTermView needs height: 100% or the inner .dshTermPanel { height: 100% } resolves against an auto-height parent and the whole flex chain collapses (terminal squashed to a 2px strip).
  3. node-pty spawn-helper permissions: the prebuilt prebuilds/<platform>/spawn-helper may lose its executable bit (posix_spawnp failed); run pnpm run fix:spawn-helper (also runs automatically on pnpm install via postinstall). Note node-pty spawn is blocked inside the dsh file sandbox — run smoke tests against a real dsh process.

Verify

curl http://127.0.0.1:3080/api/dsh-terminal/info
# {"shell":"/bin/zsh","platform":"darwin",...}

# browser: refresh the GUI → sidebar Terminal → new tab → type commands

License

MIT

相关插件

继续浏览 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 子代理提供程序