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

npm 脚本面板 jeremytenjo/dsh-plugin-npm-scripts

DeepSeek Harness
jeremytenjo7 天前有提交已提供中文文档扫描:未发现敏感能力

按快捷键搜索并运行 package.json 里的脚本

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · dev
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 7 天前
档位由哪些信号合成

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

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

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

DeepSeek Harness 的 Option+A npm 脚本面板:搜索 package.json 里的脚本,在新终端里运行选中的那个。

README

由 DeepSeek 最新模型翻译生成
DeepSeek Harness 的 npm scripts 在任意 DeepSeek Harness 会话里按 Option+A,会打开一个可搜索的列表,列出当前仓库 package.json 里的脚本。用键盘选中一个,它会在新的 Harness 终端标签页里启动;再次选中同一个脚本,会询问是否在该标签页里重启它。快捷键可以在插件自己的页面里配置。 功能 - 会话里随处可按 Option+A —— 输入框、页面或终端都行。 - 快捷键可配置,在插件自己的 Plugins 页面里设置,用的是和 Settings → Keyboard shortcuts 相同的设备本地绑定。 - 搜索过滤覆盖脚本名和命令,不区分大小写,并按相关度排序,精确匹配和前缀匹配排在最前。 - 键盘优先:↑ / ↓ 上下移动,Home / End 跳到首尾,PageUp / PageDown 翻页,Enter 运行,Esc 关闭。搜索框采用 ARIA combobox + listbox 模式,屏幕阅读器会播报当前选中的脚本。 - 在真正的 Harness 终端里运行:在右侧边栏打开新的终端标签页,等 shell 挂载完成后,输入选中的命令。 - 重启而不是重复开:选中已经有终端标签页的脚本时会先询问;确认后向该标签页发送 Ctrl+C 停掉正在运行的内容,然后在同一个标签页里重新运行脚本。
展开完整文档(README 剩余 1 节)
DeepSeek Harness 的 npm scripts

在任意 DeepSeek Harness 会话里按 Option+A,会打开一个可搜索的列表,列出当前仓库 package.json 里的脚本。用键盘选中一个,它会在新的 Harness 终端标签页里启动;再次选中同一个脚本,会询问是否在该标签页里重启它。快捷键可以在插件自己的页面里配置。

功能

- 会话里随处可按 Option+A —— 输入框、页面或终端都行。
- 快捷键可配置,在插件自己的 Plugins 页面里设置,用的是和 Settings → Keyboard shortcuts 相同的设备本地绑定。
- 搜索过滤覆盖脚本名和命令,不区分大小写,并按相关度排序,精确匹配和前缀匹配排在最前。
- 键盘优先:↑ / ↓ 上下移动,Home / End 跳到首尾,PageUp / PageDown 翻页,Enter 运行,Esc 关闭。搜索框采用 ARIA combobox + listbox 模式,屏幕阅读器会播报当前选中的脚本。
- 在真正的 Harness 终端里运行:在右侧边栏打开新的终端标签页,等 shell 挂载完成后,输入选中的命令。
- 重启而不是重复开:选中已经有终端标签页的脚本时会先询问;确认后向该标签页发送 Ctrl+C 停掉正在运行的内容,然后在同一个标签页里重新运行脚本。
- 选对包管理器:读取 packageManager 和 lockfile,支持 npm、pnpm、yarn 和 bun。
- 识别 monorepo:从会话文件夹向上走到 Git 根目录,使用最近的 package.json,运行前先 cd 进那个包。
- 安全引用:脚本名会按目标 shell 的规则加引号,而不是当作原始 shell 语法粘贴。
- 英文和中文界面。
- Host 里不运行任何项目代码:发现过程只读取 package.json;终端以用户正常的终端权限运行脚本。

安装

在桌面应用里打开侧边栏的 Plugins,选择 Add plugin,输入本地目录路径。桌面配置档由 Electron 应用管理,所以在桌面端这是首选方式。

其他配置档请用命令行:

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 或重新加载页面。

包里已经带了浏览器端产物(client.js),安装时不需要构建步骤。

用法

插件是配置档级:安装一次,之后每个会话默认启用。它不会往单个项目里加任何东西,也没有按项目开关——项目只需要有 package.json。

1. 打开一个会话,工作目录位于带 package.json 的仓库内。
2. 按 Option+A(⌥A)。
3. 输入内容筛选脚本。
4. 用 ↑ / ↓ 高亮脚本,按 Enter。第一个结果会自动选中,所以 Option+A、Enter 会运行第一个脚本。
5. 新终端标签页打开,重命名为脚本名,并接收命令。
6. 标签页还开着时再次选择同一脚本。面板会询问 Restart script?;Restart script 向运行中的进程发送 Ctrl+C,等待 shell,然后在同一标签页里重新输入命令。Cancel 让进程继续运行。
7. 想换按键,打开 Plugins → npm scripts → Keyboard shortcut,录制新绑定(见配置)。

面板里显示的命令就是将要输入的内容:

cd '/path/to/package' && pnpm run 'build'

如果包本身就是会话工作目录,则省略 cd。

哪些脚本会出现

面板使用会话工作目录与仓库根之间最近的 package.json。也就是说,在 monorepo 包内打开的会话显示该包的脚本,在仓库根打开的会话显示根脚本。

如果没有 package.json,面板会显示错误,并提供重试操作。

包管理器检测

1. package.json 中的 packageManager(pnpm@9.15.0、yarn@4.5.0 等)。
2. 包目录中的锁文件,然后是仓库根:
- pnpm-lock.yaml
- yarn.lock
- bun.lockb / bun.lock
- package-lock.json / npm-shrinkwrap.json
3. npm。

配置

| 设置 | 位置 | 默认值 |
| 键盘快捷键 | Plugins → npm scripts → Keyboard shortcut | macOS 上为 Option+A,Windows/Linux 上为 Alt+A |

打开侧边栏的 Plugins,选择 npm scripts。选中当前绑定(带铅笔的键帽),按下新组合键,松开即保存。

- Esc 取消录制。
- 保存自定义绑定后,Reset to default 恢复默认绑定。
- 已被 Harness 或操作系统占用的组合键会被拒绝,并提示冲突/保留。
- 绑定按设备保存,与 Settings → Keyboard shortcuts 存在同一处;不会写进仓库。在任一位置编辑快捷键,更新的都是同一项偏好。

桌面应用里,这个快捷键注册到系统原生键盘服务。Web 端上,Option+A 只是本地兜底方案,因为浏览器不接受单修饰键的 Option 绑定;保存一个浏览器支持的组合键会替换掉这个兜底方案,Reset to default 则把 Option+A 恢复回来。

键盘模型

| 按键 | 操作 |
| Option+A(默认) | 打开面板;再按一次关闭。在插件页面上可以改。 |
| ↑ / ↓ | 移动高亮 |
| Home / End | 跳到第一个 / 最后一个脚本 |
| PageUp / PageDown | 移动六行 |
| Enter | 运行高亮的脚本;在重启提示里,确认重启 |
| Esc | 关闭面板;在重启提示里,取消重启 |
| Tab / Shift+Tab | 在搜索框和关闭按钮之间切换焦点 |

面板打开期间,Harness 的模态层会拦截后台快捷键。实际生效的绑定同时显示在 Settings → Keyboard shortcuts 和插件页面上;改任意一处,改的都是同一个偏好设置。在 Web 应用里,Option+A 一直是本地兜底方案,直到你保存一个浏览器支持的组合键。

工作原理

- 浏览器端为 dsh-plugin-npm-scripts 注册一个 plugins.bundle.config 页面。它记录一个物理按键组合,用快捷键服务(describeBinding)校验,再通过 ctx.shortcuts.edit 持久化。
- Host 端注册一条精确的 loopback 路由:POST /__dsh/npm-scripts。
- 浏览器发送当前会话 id。Host 自己解析该会话的工作目录,运行 git rev-parse --show-toplevel,向上找到最近的 package.json,解析它,返回脚本列表和检测到的包管理器。
- 浏览器端拼出一条带引号的命令,请右侧边栏打开一个 terminal 标签页。
- 它订阅终端视图,等视图可写,把标签页重命名为脚本名,等第一个提示符出现,再写入命令。
- 每次启动都按会话、包、脚本记在本设备的 localStorage 里,同时记下 Host 终端标识。再次选择该脚本时,先解析出保存的标签页,再执行任何操作。
- 如果保存的 shell 还在运行,面板会先询问是否重启。确认后展开并聚焦该标签页,写入 Ctrl+C,等输出稳定,再在同一个标签页里重新输入命令。标签页已关闭或已退出,则改为新开一个终端标签页。

Host 路由从不运行项目脚本,从不接受客户端传来的文件系统路径,并拒绝非 loopback 或跨域请求。

开发

pnpm install
pnpm test # filter, quoting, and manifest tests
pnpm build # regenerates client.js

src/client.jsx 是浏览器端源码。src/filter.js 和 src/shell.js 是纯函数、可测试的辅助模块。client.js 由 esbuild 生成,再包装成 Harness 模块加载器可用的形式;改动源码时,把重新生成的 bundle 一起提交。

开发时的目录结构:

index.js Host route and repository inspection
src/client.jsx 弹窗、快捷键、终端启动与重启 src/filter.js 搜索/排序与高亮切片 src/launches.js 脚本到终端的记录,供重启提示词使用 src/shell.js 包管理器命令的构造与引号处理 test/*.test.mjs Node 测试运行器套件 cordis.patch.yml 配置档层入口

环境要求

- DeepSeek Harness 0.2.1-rc.3 或更新版本。
- 会话位于带 package.json 的项目内。
- 内置右侧栏终端(随附的 Web 和 Desktop 包中已启用)。
- Git 可选;没有 Git 时,面板回退到会话工作目录。

安全与限制

- 脚本名和包路径按目标平台做 shell 引号处理;拒绝 NUL 字节。
- 只列出所选 package.json 中的脚本,最多 1000 个,名称和命令长度有上限。
- 脚本在用户终端中以用户正常权限运行,不受智能体沙箱约束,与手动输入终端命令完全一致。
- 重启走与手动输入相同的终端输入路径:先向前台进程组发送 Ctrl+C,再发送命令,因此绝不会强杀无关进程。
- 面板跟随最近的 package.json;不扫描工作区里的每个包,也不浏览 node_modules。
- 终端恢复与进程生命周期由 Harness 的终端控制器管理。关闭标签页时,按终端服务商的规则结束进程树。

许可证

MIT
预览分享卡片长什么样 ↓jeremytenjo/dsh-plugin-npm-scripts
分享 · DeepSeek Harness Hub
jeremytenjo/dsh-plugin-npm-scripts

按快捷键搜索并运行 package.json 里的脚本

回到顶部