终端语义视窗 fdfdfdfgbfdgfdg-star/dsh-terminal-vision
DeepSeek Harness让智能体读懂 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
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 17 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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 也能用。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
fdfdfdfgbfdgfdg-star/dsh-terminal-vision
让智能体读懂 TUI 屏幕并模拟按键操作
相关插件 · 视觉能力
智能体工作台Devin-AXIS/iPolloWork
企业级、本地优先的智能体工作台,面向个人和智能体团队——一个工作区,容纳多个智能体引擎;一套统一体系,管理插件和技能;支…
★ 7,364已汉化DSH
72
开源设计工作台nexu-io/open-design
OpenDesign:首个协作式 AI 设计智能体工作区
★ 105,709已汉化DSH
71.8
GPT 图像提示词库freestylefly/awesome-gpt-image-2
Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+…
★ 34,534已汉化DSH
71.5
多智能体编码工作区spacering-net/codeg
多智能体协作的 AI 编程工作区:汇总 Claude Code、Codex、OpenCode、Pi、Grok Build 等来源的会话。支持桌面应用、自托管服务器或 Docker。
★ 4,319已汉化DSH
71.5
AI 用量桌面小部件Javis603/token-monitor
EN | 简 | 繁 | KO | JA | PT
★ 3,533已汉化DSH
71.1
架构图生成器tt-a1i/archify
把你想理解、规划或分享的事,变成可以互动的可视化作品。
★ 93,105已汉化DSH
71.1
这是你的仓库?认领条目