dsh-live-terminal

uitested: passnpmMIT

Visible terminal panel that streams the agent's shell commands into an in-app terminal and lets the agent capture the terminal screen as text.

下载量 / Downloads
1,307
依赖体积 / node_modules
2.91 MB
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

Install

dsh plugin --profile web add dsh-live-terminal

Sandbox test results

StageResult
1 install✓
2 list✓
3 mount✓
4 boot—

Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).

README

dsh-live-terminal

DeepSeek Harness(DSH)的可见终端面板插件:把 agent 执行的 shell 命令放进应用内终端窗口里实时显示,允许 agent 对终端屏幕“截图”(文本 / ANSI / PNG),并提供一整套面向 agent 的终端控制工具。

Visible terminal panel for DeepSeek Harness: stream agent shell commands into an in-app terminal live, let the agent capture the screen (text, ANSI or PNG), and control terminals with a full live_terminal_* toolset.

![npm](https://www.npmjs.com/package/dsh-live-terminal)

![license](./LICENSE)

![DSH](https://github.com/deepseek-ai/deepseek-harness)

v1.3.1 修复(2026-10-27)

  • 修复倒计时横幅被悬停“弄丢”:v1.3.0 里鼠标移入终端会暂停自动关闭,而横幅只在“未暂停”时渲染,导致用户想点“立即关闭”时,鼠标一放上去横幅和两个按钮就消失。1.3.1 让横幅在暂停时继续显示,文案变为“自动关闭已暂停(移开鼠标恢复)”,保留 / 立即关闭 按钮始终可点;点击“立即关闭”会立刻关闭终端。
  • tools/regress-banner-close.mjs 增加回归:命令退出 → 悬停暂停 → 横幅/按钮仍在 → 点“立即关闭” → 会话消失。

v1.3.0 专注模式与窄栏可读性(2026-10-26)

  • 专注模式(放大终端):侧栏太窄导致命令换行时,点 chrome 上的放大按钮、菜单里的“展开”,或按 Ctrl+Alt+Enter,终端会覆盖到约 93% 视口宽(实测 PTY 从 88 列提升到 185 列),命令行不再被窄侧栏折断;按 Esc(终端未聚焦时)、点背景或再点最小化按钮退出。终端内运行 vim/TUI 时 Esc 仍发给程序,不会被抢走。
  • 字体大小可调:⋯ → 字体放大/缩小 或 Ctrl+Alt+= / Ctrl+Alt+-,10–20px 可调,持久化到 localStorage;Ctrl+Alt+0 恢复跟随 DSH 字体设置。
  • 视觉细节:放大态使用圆角浮层 + 背景模糊 + 阴影,终端区更宽的留白;暂停/倒计时/未读等状态徽标保持紧凑。

v1.2.2 修复(2026-10-26)

  • 修复“终端显示已退出但一直不关”:v1.2.1 的悬停/选中暂停是单向的,点开一个已结束的命令页签后自动关闭会永久暂停,页签看起来已关闭却一直留着。1.2.2 改为:
  • 鼠标在终端/页签上移动时临时暂停,移开后自动恢复倒计时并关闭;
  • 点击/选中页签不再永久暂停,只有点“保留”才会永久保留;
  • 暂停中的页签直接显示“已暂停”徽标,不再伪装成普通已退出状态。
  • 关闭失败不再“假关闭”:/close 非 404 失败时重新同步会话列表;Host 端 terminate 失败也不再返回 500,而是记录日志后完成关闭。
  • 版本号/构建/文档统一为 1.2.2。

v1.2.1 一览

v1.2.1 把评审报告中的功能、交互和界面建议全部落在一个版本里:

  • 可读:命令结束后默认 8s(失败 30s)才自动关闭,关闭前有倒计时;鼠标悬停时临时暂停、移开恢复;点“保留”永久保留。关闭的命令进入最近命令历史并可回看、复制、搜索、导出。
  • 可看:短命令阈值改为从 shell 就绪后计时,默认 1.5s;Windows 的 PowerShell 启动开销不再吞掉普通命令;被隐藏的短命令也有提示入口。
  • 可控:新增 wait / status / signal / resize / read 分页 / search / expect / send.keys / exec / rename / history / export 等工具;run/open 支持 cwd、shell、cols/rows、env;截图支持 text、ansi、png。
  • 可操作:会话切换器、重命名、保留、复制选区、右键菜单、Ctrl+F 搜索、跟随/固定、未读角标、关闭全部已结束、配置面板、快捷键。
  • 可恢复:失败通知不再依赖面板是否打开;断线保留最后屏幕而不是全屏遮罩;连接态、错误态、只读态都有明确状态条。
  • 可信:未套 DSH 文件沙箱的事实会在首次提示、状态栏和工具结果中明确标注;requireSandbox 可强制回退到内置沙箱工具。

功能

  • 在 DSH 右侧栏拉起真实终端(xterm.js + PTY,支持 PowerShell / cmd / bash),可直接键盘输入、多标签、resize、刷新重连;窄侧栏可一键进入专注模式放大到接近全屏,字体大小可调。
  • 接管默认 shell 命令:DSH agent 的前台 pwsh / bash 调用自动在面板里执行,输出实时滚动;agent 开始执行时右侧栏自动弹出(每个 DSH 会话最多一次,失败会重试)。
  • 终端截图:agent 可用 live_terminal_screenshot 拿到当前可见屏幕文本 + 光标/尺寸;format:"png" 时由浏览器渲染图片并按附件返回;format:"ansi" 返回 ANSI。
  • 完整 agent 控制面:等待结束/匹配、查询状态、发送信号、调整尺寸、分页读取、搜索、按键序列、在已有 shell 中执行命令、重命名、导出、历史查询。
  • 最近命令历史:关闭的命令终端默认保留最近 20 条(可配置、可落盘),面板和 agent 都能回看,Host 重启后历史仍在。
  • 本地链接可点击:终端输出里的 http://localhost:PORT 等地址自动变成可点击链接;工具结果也会返回检测到的端口。
  • 界面:中英文、跟随 DSH 主题与终端字体字号设置、紧凑会话条、可折叠状态栏、响应式窄栏、深色/浅色主题、键盘与读屏可访问性。
  • 安全回退:带 run_in_background 或 sandbox_permissions(升权)的 shell 调用不会被接管,仍走 DSH 原生实现,保持原有审批/沙箱/后台语义。

安装

桌面版 DSH(安装后需完全退出并重新打开 DeepSeek Harness 一次):

dsh plugin --profile desktop add dsh-live-terminal

Web 版 DSH:

dsh plugin --profile web add dsh-live-terminal
# 重启该 Host 后生效

图形界面:设置 → 插件 → 添加插件,输入 dsh-live-terminal。

插件市场:在 awesome-dsh-plugin / dsh-market 中搜索 Live Terminal 或 dsh-live-terminal。

从本地 link: 开发切回 npm 安装(可选):完全退出 DeepSeek Harness 后,在仓库根目录运行

powershell -NoProfile -ExecutionPolicy Bypass -File tools\switch-desktop-to-npm.ps1

脚本会先检测 DSH 是否仍在运行(运行中会被文件锁挡住并直接退出),并先安全移除 profile 里的 link: junction(规避 DSH/pnpm 在 link→npm 替换失败时清理删除被链接仓库 .git 元数据的问题;只删 reparse point,不动仓库目录),再把 Desktop profile 的依赖换成 npm 上的版本并校验安装结果;失败会自动恢复本地 link,加 -RestoreLink 可手动切回本地链接。

使用

用户侧

1. 正常和 DSH 对话,让它执行命令(例如“运行 npm test”)。命令会自动出现在右侧栏的终端面板中,实时输出。

2. 自己敲命令:右侧栏 → 终端面板 → 会话条上的 +。

3. 命令结束后面板会显示倒计时:保留 可让该终端不自动关闭;鼠标移到终端/页签上会临时暂停,移开恢复。点击页签本身不会永久暂停。

4. 想回看已关闭的命令:会话条 ⋯ → 历史(或命令失败通知上的“查看历史”)。

5. 想复制终端内容:选中文本后 Ctrl+Shift+C,或右键 → 复制;整屏复制在 ⋯ → 复制屏幕文本。

6. 想搜索输出:Ctrl+F 打开搜索条,Enter / Shift+Enter 跳转。

7. 需要更大的终端:DSH 右侧栏支持全屏/浮动(侧栏右上角),面板会自动 fit。

8. 快捷键(面板内置,页面聚焦时生效):

  • Ctrl+Shift+\` 打开/聚焦终端面板
  • Ctrl+Alt+T 新建终端
  • Ctrl+Alt+Shift+W 关闭当前终端
  • Ctrl+Alt+F 切换“跟随最新命令”

9. 侧栏太窄、命令换行影响阅读时:点终端条右侧放大按钮(或 ⋯ → 展开、Ctrl+Alt+Enter)进入专注模式;终端会放大到接近全屏,按 Esc(终端未聚焦时)或点背景退出。⋯ → 字体放大/缩小 可调字号。

10. 面板 ⋯ → 设置 可查看当前生效的配置(短命令阈值、自动关闭时间、历史条数等)并复制配置片段。

Agent 工具

工具 · 作用

live_terminal_run · 在可见终端里跑一条命令(独立会话),可等待或立即返回;支持 cwd/shell/cols/rows/env/keepOpen

live_terminal_screenshot · 截取终端屏幕:text(默认)/ ansi / png;可带 scrollback

live_terminal_send · 向交互终端写入文本/按键(keys:["Up","Enter"]、C-c、paste:true)

live_terminal_read · 读取尾部/区间/全部输出(已关闭终端自动回退历史)

live_terminal_search · 在保留输出中搜索字面量或正则,返回行号与上下文

live_terminal_wait · 等待进程退出或输出匹配,不杀进程

live_terminal_expect · 等待某个模式出现(dev server ready / 提示符)

`live_terminal_st

…(truncated)

Rendered from the README published on npm. Formatted only, not edited.

Versions

Published on npm::8,最后更新 2026-10-27

Links

GitHub · Homepage · npm

Same category