🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

终端语义视窗 fdfdfdfgbfdgfdg-star/dsh-terminal-vision

DeepSeek Harness
fdfdfdfgbfdgfdg-star17 天前有提交已提供中文文档扫描:含敏感能力

让智能体读懂 TUI 屏幕并模拟按键操作

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add fdfdfdfgbfdgfdg-star/dsh-terminal-vision
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · vision
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 17 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 4 处,展示前 4 条)
  • 读取本地文件
    lib/pty-manager.js:62
    if (!existsSync(cwd)) {
  • 启用终端会话(PTY)
    lib/pty-manager.js:80
    const proc = this.ptyFactory.spawn(file, args, {
  • 读取本地文件
    src/pty-manager.ts:102
    if (!existsSync(cwd)) {
  • 启用终端会话(PTY)
    src/pty-manager.ts:121
    const proc = this.ptyFactory.spawn(file, args, {
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 的终端语义视觉插件:用 @xterm/headless 提供带结构化屏幕模型(文本、光标、活动行)的 PTY 会话,让智能体驱动 vim、htop、lazygit 这类 TUI。

README

由 DeepSeek 最新模型翻译生成
dsh-terminal-vision 给 DeepSeek Harness(DSH)用的终端语义视觉插件。 让智能体对交互式终端程序拥有「语义视觉」——vim、htop、lazygit、less、安装向导 TUI——而不是面对原始转义序列字节流。每个 PTY 会话都由 @xterm/headless(xterm.js 的无头 JS 移植版)持续解析成结构化屏幕模型:可见文本行、光标位置、当前行。智能体随后就能读屏、发送按键、再读屏——在任何 TUI 上跑感知/动作循环。 DSH 中注册的工具 | 工具 | 用途 | | terminal_open(session_name, shell?, cwd?, cols?, rows?) | 打开持久 PTY 会话,返回 session_id。shell 可以是 shell 名(bash、pwsh、cmd),也可以是要直接运行的 TUI 程序(htop、vim file.txt)。 | | terminal_get_screen(session_id) | 结构化屏幕模型:lines[]、cursor {x, y}、active_line、终端标题。 | | terminal_send_keys(session_id, keys, wait_ms?) | 发送按键序列,等屏幕变化(就绪等待,默认 500 ms),然后返回新屏幕。
展开完整文档(README 剩余 1 节)
dsh-terminal-vision

给 DeepSeek Harness(DSH)用的终端语义视觉插件。

让智能体对交互式终端程序拥有「语义视觉」——vim、htop、lazygit、less、安装向导 TUI——而不是面对原始转义序列字节流。每个 PTY 会话都由 @xterm/headless(xterm.js 的无头 JS 移植版)持续解析成结构化屏幕模型:可见文本行、光标位置、当前行。智能体随后就能读屏、发送按键、再读屏——在任何 TUI 上跑感知/动作循环。

DSH 中注册的工具

| 工具 | 用途 |
| terminal_open(session_name, shell?, cwd?, cols?, rows?) | 打开持久 PTY 会话,返回 session_id。shell 可以是 shell 名(bash、pwsh、cmd),也可以是要直接运行的 TUI 程序(htop、vim file.txt)。 |
| terminal_get_screen(session_id) | 结构化屏幕模型:lines[]、cursor {x, y}、active_line、终端标题。 |
| terminal_send_keys(session_id, keys, wait_ms?) | 发送按键序列,等屏幕变化(就绪等待,默认 500 ms),然后返回新屏幕。接受纯文本、具名按键(Enter、Esc、Up…)、修饰键(Ctrl+C、Alt+b)、空格分隔的序列(":wq Enter")。 |
| terminal_read_output(session_id, lines?) | 回滚缓冲区最后 N 行(视口上方的历史)。 |
| terminal_close(session_id) | 关闭会话,释放 PTY。 |
| terminal_list_sessions() | 列出活动会话,含 id、名称、shell、cwd、存活状态。 |

架构

- 宿主部分(TypeScript,src/)——Cordis 插件:apply(ctx) 在 ctx.tools 上注册工具,通过 node-pty 管理持久会话(Windows 上用预编译 ConPTY 二进制,无需编译器)。
- 语义解析器(src/screen-model.ts)——方案 A:@xterm/headless 在 Node 里原生构建屏幕模型。原始 PTY 输出写入无头 xterm Terminal,按需读出缓冲区(buffer.active、translateToString)。不用 Python,没有常驻桥接进程,离线可用。
- 按键由 encodeKeys() 转换(友好名称 → 终端字节,含 Ctrl/Alt 修饰键、方向键、F 键)。
- 就绪等待:每次 terminal_send_keys 之后,工具会等到屏幕版本变化(数据到达)或超时——避免「盲发」。
- 所有工具返回可 JSON 序列化的对象;未知 session id 返回明确错误,不会崩溃。

安装

from a local checkout
dsh plugin --profile web add file:./dsh-terminal-vision

or from GitHub
dsh plugin --profile web add github:fdfdfdfgbfdgfdg-star/dsh-terminal-vision

Windows 注意: pnpm 默认拦截原生模块的安装脚本。如果 add 步骤报 ERR_PNPM_IGNORED_BUILDS: node-pty 失败,手动跑被拦截的构建步骤(node-pty 自带预编译 ConPTY 二进制,无需编译器):

bash
cd ~/.dsh/profiles/web
pnpm rebuild node-pty # runs the postinstall that copies conpty.dll

然后重启 DSH(重新启动 DeepSeek Harness 应用,或重新运行 dsh --profile web),在启动日志里确认出现:

[terminal-vision] loaded: tools=6

在聊天里验证:「Какие инструменты терминала тебе доступны?」——智能体应当列出六个 terminal_* 工具。

包内声明了 dsh.bundle.patch(cordis.patch.yml),因此 dsh plugin add 会自动把插件接入配置档,无需手动修改 cordis.patch.yml。

会话示例 text
terminal_open(session_name="htop", shell="htop") → session_id
terminal_get_screen(session_id) → lines[] of the htop interface, cursor
terminal_send_keys(session_id, "F10") → quit htop, new screen
terminal_close(session_id)

驱动 shell: text
terminal_open(session_name="work", shell="bash")
terminal_send_keys(session_id, "ls -la\n")
terminal_get_screen(session_id) → the ls output
terminal_read_output(session_id, lines=200) → anything that scrolled off

构建与测试(开发) bash
npm install
npm run build # tsc → lib/
npm test # node --test test/integration.test.js

lib/(编译后的 JS)已提交到仓库,所以直接 dsh plugin add 无需构建步骤。同样出于这个原因,包内刻意不设 prepare 脚本:pnpm 禁止 git 托管的包在安装时运行构建脚本(ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED),而 lib/ 已在仓库里,构建也就没必要了。开发时运行 npm run build,并提交更新后的 lib/。

依赖

- Node.js >= 22.19(DSH 宿主的要求)
- node-pty ^1.1.0 —— 自带预编译的 Windows ConPTY 二进制文件;在 Windows 11 上无需 Visual Studio Build Tools
- @xterm/headless ^6.0.0 —— 纯 JS,无原生代码
- 不需要 Python,也不需要 root/管理员权限

已知限制

- 屏幕模型只处理文本:颜色与属性由模拟器解析,但不会出现在快照里。
- cursorHidden 仅供参考(xterm.js 不暴露 DECTCEM 状态);多数 TUI 会让光标保持可见。
- Alt+<letter> 发送带 ESC 前缀的字节(不按程序协商应用小键盘模式)。
- 会话存活在 DSH 宿主进程里;重启 DSH 会关闭所有会话。
- 在 Windows 上默认 shell 是 cmd.exe(ConPTY);如果 PATH 里有 Git Bash / WSL bash,bash 也能用。
预览分享卡片长什么样 ↓fdfdfdfgbfdgfdg-star/dsh-terminal-vision
分享 · DeepSeek Harness Hub
fdfdfdfgbfdgfdg-star/dsh-terminal-vision

让智能体读懂 TUI 屏幕并模拟按键操作

这是你的仓库?认领条目

回到顶部