dsh-live-terminal:在 DSH 里看见 Agent 正在跑的命令

前言

在 DeepSeek Harness(DSH)里让 Agent 执行 shell,输出往往只在对话流或工具结果里出现片段。长时间编译、交互式提示、TUI 界面时,你很难像本地终端一样「盯着屏幕」跟进;Agent 自己也缺少对「当前终端画面」的稳定读取方式。社区插件 dsh-live-terminal(维护者 Lancang-hzau)在 DSH 右侧栏拉起基于 xterm.js + PTY 的真实终端,把 Agent 的前台 pwsh / bash 调用流式显示到应用内,并提供一整套 live_terminal_* 工具供 Agent 截图、等待、搜索与控制终端。分类为客户端插件;npm 当前版本为 1.2.1,要求 DSH >=0.2.1-rc.2 <0.3.0-0(MIT 许可证)。

这是什么

dsh-live-terminal 是 DSH 的可见终端面板插件:Agent 执行的 shell 命令在应用内终端窗口里实时滚动;Agent 可对终端屏幕做「截图」(纯文本、ANSI 或 PNG),并通过工具集等待进程、发信号、分页读取、搜索、在已有 shell 里继续执行命令等。用户也可以手动新建多标签终端、键盘输入、调整尺寸与重连。

与「只看工具返回的 stdout 尾部」相比,它把执行过程变成可观察、可交互、可回溯的 UI,并把同一套能力暴露给 Agent。

核心功能

下面按 README 已说明的能力归纳,不展开未在资料中出现的细节。

终端面板与用户操作

  • 在 DSH 右侧栏显示终端,支持 PowerShell / cmd / bash,多标签、resize、刷新重连。
  • 接管默认 shell 工具:Agent 前台 pwsh / bash 调用自动在面板执行并实时输出;Agent 开始执行时右侧栏会自动弹出(每个 DSH 会话最多一次,失败会重试)。
  • 短命令过滤(v1.2.1):被接管的命令若从 shell 就绪起运行时间短于 interceptMinVisibleMs(默认 1500ms),不上屏、不自动弹栏;设为 0 可全部上屏。
  • 结束后自动关闭:一次性命令终端成功默认 8s、失败/超时/中止默认 30s 后关闭,关闭前有倒计时;悬停、选中、输入或滚动会暂停;可一键「保留」。关闭的命令进入最近命令历史(默认 20 条,可配置、可落盘)。
  • 本地 http://localhost:PORT 等输出可变成可点击链接;中英文界面,跟随 DSH 主题与终端字体设置。

Agent 工具面

README 列出的工具包括(节选说明):

工具 作用
live_terminal_run 在可见终端跑命令,支持 cwd / shell / cols / rows / env / keepOpen
live_terminal_screenshot 截取屏幕:text(默认)/ ansi / png
live_terminal_send 向交互终端写入文本或按键序列
live_terminal_read / live_terminal_search 分页读取、在保留输出中搜索
live_terminal_wait / live_terminal_expect 等待退出或输出匹配
live_terminal_status / live_terminal_signal / live_terminal_resize 状态、信号、尺寸
live_terminal_exec 在已有交互终端执行命令,保留 cd / env / venv 等上下文
live_terminal_open / live_terminal_close / live_terminal_list / live_terminal_rename 会话生命周期
live_terminal_history / live_terminal_export 历史与导出

安全与回退

  • 带 run_in_background 或 sandbox_permissions(升权)的 shell 调用不会被接管,仍走 DSH 原生实现。
  • 面板与 Agent 创建的 PTY 不套 DSH 文件沙箱,以当前系统用户权限运行;工具结果与 UI 会标注沙箱状态。若部署依赖 DSH 沙箱,可在配置中设 requireSandbox: true 强制回退或拒绝新建未沙箱终端。
  • interceptShellTools: false 可完全恢复原生 shell 行为,仅保留 Agent 主动调用的 live_terminal_*。

安装与启用

DSH 生态里插件通过 profile 安装;安装后需按说明重启 Host 或完全退出桌面版再打开。

桌面版 DSH:

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

安装后需完全退出并重新打开 DeepSeek Harness 一次。

Web 版 DSH:

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

也可在 设置 → 插件 → 添加插件 中输入 dsh-live-terminal;或在 awesome-dsh-plugin / dsh-market 搜索 Live Terminal 或包名。社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

典型用法

用户侧

  1. 正常与 DSH 对话,让 Agent 执行命令(例如运行测试)。命令会出现在右侧终端面板,输出实时滚动。
  2. 自行开终端:右侧栏 → 终端面板 → 会话条 +。
  3. 命令结束后可用「保留」阻止自动关闭;通过 ⋯ → 历史 回看已关闭命令。
  4. 复制:Ctrl+Shift+C 或右键;整屏复制在 ⋯ → 复制屏幕文本;Ctrl+F 搜索输出。
  5. 常用快捷键(面板聚焦时):Ctrl+Shift+\`` 打开/聚焦面板;Ctrl+Alt+T新建;Ctrl+Alt+F` 切换跟随最新命令。

Agent 侧示例思路

让 Agent 在可见终端启动 dev server 后,可用 live_terminal_expect 等待就绪提示,再用 live_terminal_screenshot 取 text 或 png 确认界面;长时间任务用 live_terminal_wait 而不杀进程;需要结束时用 live_terminal_signal 发送 SIGINT 等。具体参数以 DSH 工具 schema 与 README 表格为准。

配置要点

在 ~/.dsh/profiles/<profile>/cordis.patch.yml 中覆盖插件 config。常用项包括:

- id: dsh-live-terminal
  name: dsh-live-terminal
  config:
    interceptShellTools: true
    interceptMinVisibleMs: 1500
    autoCloseCommandDelayMs: 8000
    autoCloseFailedDelayMs: 30000
    historySize: 20
    historyPersist: true
    requireSandbox: false
    maxSessions: 16

完整字段与默认值见仓库 README「配置」一节;修改后按 DSH 插件加载方式生效。

适用场景与注意

适合:需要在 DSH 内直观观察 Agent 命令执行、调试交互式/TUI、让 Agent 基于终端画面做判断、或希望命令历史可搜索、可导出的开发者。

注意:

  • 终端以当前 DSH 进程对应用户的系统权限运行,PTY 不套文件沙箱;安装前建议阅读 GitHub 仓库 源码与 MIT 许可证,并按团队安全策略配置 requireSandbox / allowUnconfined。
  • Node 引擎要求为 ^22.19.0 || >=24.0.0(见 package.json)。
  • 资料中 GitHub 星标为 0,不代表功能完整度;以 README 与 npm 发布为准。

结尾

dsh-live-terminal 把 Agent 的 shell 执行从「黑盒工具回调」变成应用内可见、可截屏、可控制的终端会话,并兼顾短命令过滤、自动关闭、历史持久化与沙箱标注。插件目录页:skillhub.cn/plugins/Lancang-hzau/dsh-live-terminal;源码与文档:github.com/Lancang-hzau/dsh-live-terminal。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜