dsh-terminal
English | 中文
> 面向 DeepSeek Harness Web 的 VS Code 风格终端面板。它使用 ghostty-web 渲染,将带版本的 Ghostty WASM 作为不可变资源提供,并通过 node-pty 连接本地 PTY。面板放置与调整大小由 dsh-dock 提供。
 
功能
- 每个 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 之外的其他文件;这是预期行为。
相关插件
模型体验
用户操作的终端 UI
#### 模型看到的内容
无。终端输入与输出只在用户操作的浏览器终端和 PTY 之间传输;插件不注册模型提示词、工具或会话消息。
#### Token 影响
不会向模型请求或响应增加 token。终端输出不会复制到模型上下文。
#### KV Cache 影响
无。PTY 活动不会改变主模型请求前缀。
已知限制
- 终端目前仅支持本地主机。远程 provider 需要 Harness 提供支持 resize 的 PTY 契约。
- PTY 有意不跨浏览器刷新、插件重载、Harness 关闭或显式关闭标签而存活。
respectSandbox遵循当前本地沙箱 provider;更改模式前必须关闭活动终端。- Ghostty WASM 资源路径与固定版本的
ghostty-web依赖绑定,升级资源时必须同时更改路径。
许可证
MIT