dsh-plugin-terminal-upgrades:在 DSH 终端里按住修饰键点击 URL 打开浏览器

前言

在 DeepSeek Harness(DSH)里跑 pnpm dev、next dev 或各类 CLI 时,终端里常会打印 http://localhost:3000 这类链接。默认行为下,用鼠标点 URL 只会移动光标、开始选中文本,还要手动复制到浏览器。下面介绍社区插件 dsh-plugin-terminal-upgrades(维护者 jeremytenjo,分类:客户端),它在不改动终端输出与 shell 的前提下,为终端里的 http:// / https:// 链接增加「按住触发键 → 下划线 → 点击打开系统浏览器」的能力。

这是什么

插件全名 dsh-plugin-terminal-upgrades,简介为:Terminal upgrades for DeepSeek Harness — 在终端里对链接 Option-click(触发键可配置)即可在浏览器中打开。当前仓库版本 0.2.0,许可证 MIT。它属于 DSH 客户端侧插件(dsh.client.platform: web,immediately: true),通过 overlay 读取 xterm DOM 渲染器已有行内容,不重写终端文本。

核心功能

经 README 核实,能力包括:

  1. 按住触发键时 URL 下划线:下划线画在 URL 对应单元格上,颜色与 URL 一致,指针变为手型,便于确认可点击区域。
  2. 点击打开浏览器:例如从 next dev 输出里点击 http://localhost:3000,桌面版会把 URL 交给默认浏览器并在新标签页打开。
  3. 可配置触发键:默认 Option(macOS 上为 ⌥;Windows / Linux 上对应 Alt)。可在配置中改为 Command(meta)或 Control(ctrl)。
  4. 普通点击不受影响:未按触发键时,点击、双击选词、键盘输入与原先终端行为一致;只有「触发键 + 链接上的点击」会被插件处理。
  5. 不修改终端本身:插件监听 document,根据指针位置映射到终端行与字符偏移,自行绘制 overlay;输出、配色与 shell 不变。
  6. 对所有终端标签页生效:安装后新开的标签页同样可用;卸载插件时会清理监听与 overlay。

URL 识别规则(插件内部与 README 一致):仅 http://、https://;句末标点在链接外;未配平的右括号会排除;配平的括号仍属于链接(如 https://example.test/a_(b))。

安装与启用

桌面应用(README 推荐路径):侧栏打开 Plugins → Add plugin,填入该插件目录页或仓库对应条目。桌面 profile 由 Electron 应用管理,此路径最省事。

其他 profile 使用 CLI(命令来自官方 README):

git clone https://github.com/jeremytenjo/dsh-plugin-terminal-upgrades.git
dsh plugin --profile <profile> add ./dsh-plugin-terminal-upgrades

将 <profile> 换为 dsh --profile <name> --dump-config 中显示的名称(例如 web)。安装后重启 Host 或刷新页面。包内已附带浏览器 bundle(client.js),无需本地 build 即可安装。

插件以当前 DSH 进程权限运行;安装前请自行查看 GitHub 源码 与 MIT 许可证,确认符合你的安全策略。

典型用法

  1. 运行会打印 URL 的命令,例如在 Next.js 项目中执行 pnpm dev。
  2. 按住触发键(默认 Option),将指针移到 URL 上:URL 出现下划线,光标变为手型;若指针已在链接上再按下触发键,也会立即下划线。
  3. 单击:URL 在新浏览器标签页打开;桌面应用中为系统默认浏览器。

不按触发键点击同一 URL,行为与未装插件时相同(定位光标、开始文本选择)。

配置

在 profile 的插件条目里设置 triggerKey。示例(路径与字段来自 README):

# ~/.dsh/profiles/desktop/cordis.patch.yml
- id: dsh-plugin-terminal-upgrades
  name: "dsh-plugin-terminal-upgrades"
  config:
    triggerKey: meta
triggerKey 对应按键
alt(默认) macOS Option;Windows / Linux Alt
meta Command
ctrl Control

修改后需重启 DeepSeek Harness:profile 在启动时应用插件配置;Host 启动时会校验 triggerKey,未知值会使插件明确报错而非静默回退。浏览器侧在页面加载时通过 loopback 路由 /__dsh/terminal-upgrades 读取一次配置(客户端插件不直接接收 profile entry config,由 Host 校验并发布)。

实现要点与限制

实现(摘要):DSH 终端使用 xterm DOM renderer,可见行以页面 DOM 文本存在。插件在 Host 侧校验配置并暴露 /__dsh/terminal-upgrades;浏览器端加载 client.js,映射指针到行内偏移并匹配 URL,下划线为插件自有 overlay。

限制(README 原文要点):

  • 单行检测:跨行折行的 URL 无法识别;短链如 http://localhost:3000 一般无影响。
  • 下划线为 overlay:滚动后可能需移动指针才重新对齐;极端字体回退可能差 1 像素。
  • Vim、less 等自捕鼠标的程序:在链接上「触发键 + 点击」会被插件消费;在其他位置仍传给程序。
  • 仅 DOM renderer:若终端切到 canvas / WebGL,插件不生效。
  • 非通用链接打开器:文件路径、行号、裸主机名不会当作链接。

结尾

dsh-plugin-terminal-upgrades 面向经常在 DSH 终端里点本地 dev URL 的开发者:按住可配置的修饰键即可预览可点区域并一键打开浏览器,且不打断平时的终端选词与输入。社区目录与 DeepSeek / 幻方无官方从属关系,DSH 生态按「一切皆插件」扩展;需要细节时可查目录页与仓库 README。

  • 目录页:https://www.skillhub.cn/plugins/jeremytenjo/dsh-plugin-terminal-upgrades
  • GitHub:https://github.com/jeremytenjo/dsh-plugin-terminal-upgrades
羽毛球分组比赛记分
小程序二维码

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

小夜