DeepSeek Harness 插件 dsh-plugin-npm-scripts:Option+A 搜索并运行 package.json 脚本

前言

在 DeepSeek Harness(DSH)里做前端或 Node 项目时,开发命令往往散落在 package.json 的 scripts 里。常见做法是手动切到终端、回忆包管理器前缀,再输入 pnpm run build 一类命令;monorepo 里还要先 cd 到对应子包。jeremytenjo 维护的客户端插件 dsh-plugin-npm-scripts 把这一步收成一次快捷键:在任意 Session 里打开可搜索的脚本列表,选中后在 Harness 右侧真实终端里执行,同一脚本再次选择时可选择在原标签页重启而不是再开一页。

这是什么

dsh-plugin-npm-scripts 是 DSH 的客户端插件(维护者:jeremytenjo)。它在 Session 内注册全局快捷键(默认 macOS 为 Option+A,Windows/Linux 为 Alt+A),读取当前工作目录向上到 Git 根之间最近的 package.json,列出其中的 scripts,经键盘筛选后在新终端标签页里输入对应命令。发现脚本只读 package.json;实际执行发生在用户终端权限下,Host 端不跑项目业务代码。

插件在 SkillHub 目录 收录;源码与说明见 GitHub:jeremytenjo/dsh-plugin-npm-scripts。社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。当前 package 版本为 1.0.0,许可证 MIT。

核心功能

下面介绍 README 中已说明、且与实现一致的能力。

快捷键与面板

  • 在 Session 任意界面(Composer、页面或终端)均可唤起面板;再次按同一快捷键可关闭。
  • 快捷键可在 Plugins → npm scripts → Keyboard shortcut 修改,与 Settings → Keyboard shortcuts 共用本机绑定存储;Web 端对单修饰键 Option 有浏览器限制,文档说明了 fallback 与重置行为。
  • 对脚本名与命令做不区分大小写的搜索,精确匹配与前缀匹配优先排序。
  • 键盘操作:↑ / ↓ 移动,Home / End 首尾,PageUp / PageDown 每次六行,Enter 运行,Esc 关闭;搜索框采用 ARIA combobox + listbox,便于读屏。面板打开时模态层会屏蔽背景快捷键。

终端执行与重启

  • 在右侧边栏打开新的 terminal 标签,等待 shell 就绪后写入命令;标签会改名为脚本名。
  • 若该 Session、包、脚本已有记录的标签仍打开,再次选择时会询问 Restart script?;确认则向该 tab 发送 Ctrl+C 并在同一 tab 重新输入命令,取消则保持原进程。
  • 命令形式示例(会先 cd 到包目录,若 Session cwd 已是该包则省略 cd):
cd '/path/to/package' && pnpm run 'build'

脚本名会按目标 shell 做引号处理,而不是裸粘贴 shell 片段。

包管理器与 monorepo

包管理器检测顺序:

  1. package.json 的 packageManager 字段(如 pnpm@9.15.0)。
  2. 包目录及仓库根上的锁文件:pnpm-lock.yaml、yarn.lock、bun.lockb / bun.lock、package-lock.json / npm-shrinkwrap.json。
  3. 否则回退 npm。

支持 npm、pnpm、yarn、bun。从 Session 工作目录向 Git 根 walk,使用路径上最近的 package.json;在 monorepo 子包目录开 Session 看到的是该子包脚本,在仓库根则看到根包脚本。无 package.json 时面板报错并提供重试。

界面语言

UI 支持英文与中文。

安装与启用

插件随仓库提供浏览器 bundle(client.js),安装后无需再 build。

Desktop 应用(推荐):侧边栏打开 Plugins,选 Add plugin,填写本机上的插件目录路径(Desktop profile 由 Electron 管理)。

其他 profile(CLI):先将仓库放到本机目录,再对该 profile 添加插件:

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

将 <profile> 换为 dsh --profile <name> --dump-config 中显示的名称(例如 web)。安装后重启 Host 或刷新页面。

插件按 profile 生效:安装一次后默认在所有 Session 启用,不向单个仓库写入配置,项目只需有 package.json 即可使用。

典型用法

  1. 打开工作目录位于含 package.json 的 Git 仓库内的 Session。
  2. 按 Option+A(⌥A;非 macOS 默认为 Alt+A)。
  3. 输入关键字过滤脚本列表。
  4. 用 ↑ / ↓ 高亮目标,按 Enter。首条结果默认选中,因此连按 Option+A 再 Enter 会运行列表第一条。
  5. 新终端 tab 打开并执行命令。
  6. 若该脚本 tab 仍在,再次从面板选择同一脚本,按提示选择重启或取消。
  7. 需要改键: Plugins → npm scripts → Keyboard shortcut 录制新组合;Reset to default 恢复默认。

适用场景与注意

适合:日常在 DSH 里跑 dev、test、build 等 npm scripts,且希望少记包管理器前缀、少手动 cd 的开发者;monorepo 按目录就近读 package.json 的行为与常见「在子包开 Session」习惯一致。

注意:

  • 插件以当前 DSH Host / 终端进程的权限运行命令;安装前请自行查看 源码 与 MIT 许可证,确认符合团队安全要求。
  • 脚本列表来自 Host 对 Session 工作目录与 git rev-parse --show-toplevel 的解析;非 Git 目录或路径异常时行为以实际报错为准。
  • 快捷键冲突时插件页会提示 reserved/conflict,需换用未被 Harness 或系统占用的组合。

结尾

dsh-plugin-npm-scripts 把「查 package.json → 选对包管理器 → 开终端执行」收成 Option+A 与若干键,并在重复运行时避免无意义地堆叠终端 tab。若要安装或跟踪更新,可使用目录页 skillhub.cn/plugins/jeremytenjo/dsh-plugin-npm-scripts 与 GitHub 仓库 github.com/jeremytenjo/dsh-plugin-npm-scripts。

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

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

Xiaoye