dsh-terminal

by mattismegevand

0 开发与运行时github 检测到 manifest package.json#dsh收录于 08-16

响应式标签页式Ghostty终端,用于DeepSeek Harness Web UI

A responsive, tabbed Ghostty terminal for the DeepSeek Harness Web UI

安装

dsh plugin --profile web add github:mattismegevand/dsh-terminal

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

English | 中文

面向 DeepSeek Harness Web 的 VS Code 风格终端面板。它使用 ghostty-web 渲染,将带版本的 Ghostty WASM 作为不可变资源提供,并通过 node-pty 连接本地 PTY。面板放置与调整大小由 dsh-dock 提供。

MIT License dsh-plugin

停靠在 Harness 会话底部的终端面板

功能

  • 每个 Harness 会话支持多个终端,并提供响应式标签托盘。
  • 通过 dsh-dock 支持左侧、右侧、底部和浮动布局。
  • 可实时分离与重新合并终端面板,且不会重启 PTY。
  • 支持尺寸同步、真彩色、Unicode、选择、粘贴、滚动历史和全屏程序。
  • 与当前 Harness 主题实时同步明暗配色。
  • Shell 标题会跟随工作区、前台进程和应用提供的终端标题。
  • 面板隐藏或移动时 PTY 保持运行;关闭标签、插件、浏览器页面或 Harness 进程时停止。
  • 可选地遵循会话当前的 Harness 沙箱策略。
  • 提供同源 WebSocket 防护、有界输入、每会话上限、环境变量清理和输出背压。

安装

需要 dsh-dock、dsh CLI(Node.js 22.19+ 或 24)和 pnpm 10+。

从 npm 安装

dsh plugin --profile web add @mattismegevand/dsh-terminal

从 GitHub 安装

dsh plugin --profile web add github:mattismegevand/dsh-terminal

从 Git 安装拉取的是源码,因此首次 add 时 pnpm 会运行包的 prepare 构建。pnpm ≥10 会先拒绝该行为:请把 pnpm 打印的精确包名复制到 profile 的 pnpm-workspace.yaml 的 allowBuilds 条目中,然后重新运行同一条 add 命令。

本地开发

git clone https://github.com/mattismegevand/dsh-terminal.git
cd dsh-terminal
corepack pnpm install
corepack pnpm check:all
dsh plugin --profile web add .

node-pty 是原生依赖。如果 pnpm 在 Web profile workspace 中加入 allowBuilds.node-pty 占位项,请将它设为 true,然后重新运行相同的 plugin-add 命令。

使用

打开会话并选择 终端。使用 + 或 `Ctrl+Shift+`` 新建 shell。拖动托盘行可将其分离;把终端面板停靠到同一边缘会重新合并其中的实时终端。面板 × 只隐藏面板,托盘中的删除操作会结束 shell。

配置

- id: terminal
  name: '@mattismegevand/dsh-terminal'
  config:
    shellPath: /bin/zsh
    shellArgs: ['-l']
    maxTerminalsPerSession: 12
    maxCols: 400
    maxRows: 200
    disposeGraceMs: 2000
    respectSandbox: false
    outputHighWaterBytes: 2097152
    outputLowWaterBytes: 524288
    processTitlePollMs: 500
    initialCols: 100
    initialRows: 30
    fontSize: 13
    scrollback: 10000

启用 respectSandbox: true 后,终端使用会话的沙箱模式。在 workspace-write 中,shell 可能提示无法更新历史记录或 workspace 之外的其他文件;这是预期行为。

相关插件

  • dsh-dock — 承载本面板的停靠系统。
  • dsh-open — 会话标题栏中 Codex 风格的工作区“打开”菜单。
  • dsh-git — 按会话隔离的工作树 Review 面板。

模型体验

用户操作的终端 UI

模型看到的内容

无。终端输入与输出只在用户操作的浏览器终端和 PTY 之间传输;插件不注册模型提示词、工具或会话消息。

Token 影响

不会向模型请求或响应增加 token。终端输出不会复制到模型上下文。

KV Cache 影响

无。PTY 活动不会改变主模型请求前缀。

已知限制

  • 终端目前仅支持本地主机。远程 provider 需要 Harness 提供支持 resize 的 PTY 契约。
  • PTY 有意不跨浏览器刷新、插件重载、Harness 关闭或显式关闭标签而存活。
  • respectSandbox 遵循当前本地沙箱 provider;更改模式前必须关闭活动终端。
  • Ghostty WASM 资源路径与固定版本的 ghostty-web 依赖绑定,升级资源时必须同时更改路径。

许可证

MIT

原始 README: https://github.com/mattismegevand/dsh-terminal/blob/main/README.zh.md ↗