dsh-live-terminal
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.
Install
dsh plugin --profile web add dsh-live-terminal
Sandbox test results
| Stage | Result |
|---|---|
| 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.



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