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

启动项按钮 leexiaode4/dsh-launch-buttons

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

在输入框一键启动常用程序或打开目录

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · other
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
数据截至 2026/11/04·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 33 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件
查看扫描证据(共 8 处,展示前 8 条)
  • 读取本地文件
    lib/index.js:92
    return JSON.parse(readFileSync(file, "utf8"));
  • 写入本地文件
    lib/index.js:115
    mkdirSync(STORE_DIR(), { recursive: true });
  • 写入本地文件
    lib/index.js:117
    writeFileSync(tmp, JSON.stringify(store, null, 2), "utf8");
  • 写入本地文件
    lib/index.js:118
    renameSync(tmp, file);
  • 写入本地文件
    lib/index.js:121
    writeFileSync(file, JSON.stringify(store), "utf8");
  • 读取本地文件
    lib/index.js:132
    const stats = statSync(path);
  • 读取本地文件
    lib/index.js:268
    dirents = readdirSync(directory, { withFileTypes: true });
  • 执行外部命令来自配置/变量
    lib/index.js:453
    child = spawn(plan.command, plan.args, { stdio: "ignore" });
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 一键启动常用程序
  • 打开目录
  • 左右键切换目标

DSH 输入框支持多个命名启动目标:左键启动默认目标,右键打开列表。

README

由 DeepSeek 最新模型翻译生成
dsh-launch-buttons DSH 输入框的多启动项按钮。它是 dsh-launch-button 的独立副本 —— 原插件一行未改(中文说明见下方)。 - 左键主按钮 → 启动默认启动项。还没有配置任何启动项时,默认就是当前对话的工作区目录。 - 右键主按钮 → 弹出启动项列表(每一行是一个启动项)。 - 列表里每一行:点行本身启动它绑定的程序或目录,★ 把它设为默认,⚙(或在该行上右键)打开这个启动项自己的设置 —— 名称、路径、删除。 - 列表底部 + New launch item:填写名称与绝对路径,作用域可选只绑定这个对话或绑定整个工作区。 状态存放在宿主的 $DSH_HOME/launch-buttons/store.json,因此刷新页面不会丢,同一个配置档的每个客户端也共享。
展开完整文档(README 剩余 1 节)
dsh-launch-buttons

DSH 输入框的多启动项按钮。它是 dsh-launch-button 的独立副本 —— 原插件一行未改(中文说明见下方)。

- 左键主按钮 → 启动默认启动项。还没有配置任何启动项时,默认就是当前对话的工作区目录。
- 右键主按钮 → 弹出启动项列表(每一行是一个启动项)。
- 列表里每一行:点行本身启动它绑定的程序或目录,★ 把它设为默认,⚙(或在该行上右键)打开这个启动项自己的设置 —— 名称、路径、删除。
- 列表底部 + New launch item:填写名称与绝对路径,作用域可选只绑定这个对话或绑定整个工作区。

状态存放在宿主的 $DSH_HOME/launch-buttons/store.json,因此刷新页面不会丢,同一个配置档的每个客户端也共享。

安装

dsh plugin --profile desktop add github:leexiaode4/dsh-launch-buttons # from GitHub
dsh plugin --profile desktop add "<path to this checkout>" # from a local copy
dsh plugin --profile desktop add dsh-launch-buttons # from npm, once published

然后彻底重启 DSH —— 接线在宿主侧,刷新页面不够。如果 dsh-launch-button 也装了,在配置档补丁里把它禁用,免得输入框出现两个启动按钮:

- id: dsh-launch-button
disabled: true

兼容性

- 任何支持 dsh.bundle 协议的 DSH(>= 0.1.5-rc.1);无需构建步骤,除 Node 本身外没有运行时依赖。react 是可选 peer。
- Windows、macOS 和 Linux:文件夹和文档分别用 explorer.exe、open 和 xdg-open 打开;可执行文件直接 spawn。
- 客户端部分在 Web 平台渲染(浏览器和基于 Electron 的桌面客户端)。

测试

node --test test/core.test.mjs test/host.integration.test.mjs test/client.test.mjs

测试套件里每个启动用例都是拒绝路径 —— 测试从不启动真实进程。

BSD-3-Clause。

对话输入框右下角的多启动项按钮。它是 dsh-launch-button 的独立副本,原插件一行未改。

- 左键主按钮 → 启动“默认启动项”。还没有配置任何启动项时,默认就是当前对话的工作区目录。
- 右键主按钮 → 弹出启动项列表(每一行是一个启动项)。
- 列表里每一行:
- 点行本身 → 启动它绑定的程序或目录;
- ★ → 把它设为默认(此后左键主按钮直接启动它);
- ⚙(或在该行上右键)→ 打开它自己的设置:名称、路径、删除。
- 列表底部 + 新建启动项:填写名称与绝对路径,可选“只绑定这个对话”或“绑定整个工作区”。

数据放在哪

$DSH_HOME/launch-buttons/store.json:

{
"version": 2,
"sessions": { "<会话 id>": { "items": [ { "id": "…", "label": "…", "path": "…", "at": "…" } ], "defaultId": "…" } },
"workspaces": { "<工作区键>": { "items": [ … ], "defaultId": "…" } }
}

- 启动项分两个作用域:这个对话(sessions)与这个工作区(workspaces,该目录下的所有对话共享)。
- 列表顺序:本对话的启动项 → 本工作区的启动项 → 内置的「工作区」行(兜底)。
- 默认值解析:本对话的 defaultId → 本工作区的 defaultId → 内置工作区目录。默认项被删掉时自动回退到第一条。
- defaultId 可以是 "workspace",表示“默认就是工作区目录本身”。
- 一个作用域最多 24 个启动项。

从旧插件继承:第一次读取时,如果本插件自己的 store.json 还不存在,而旧的 $DSH_HOME/launch-button/bindings.json 存在,就把它导入(旧文件保持原样,不删)。所以换过来之后行为与原来一致,直到你配置了新东西。

安装

与 dsh-launch-button 相同的接法。推荐直接用一条命令(会自动写下面第 1、2 步):

dsh plugin --profile desktop add "C:\path\to\dsh-launch-buttons"
或直接从 GitHub 装:
dsh plugin --profile desktop add github:leexiaode4/dsh-launch-buttons

手动接线的两步:

1. 在目标 profile 的 node_modules 里建一个指向本目录的链接(Windows:目录 junction;macOS/Linux:ln -s): <profile>/node_modules/dsh-launch-buttons → <本目录>
2. profile 的 package.json:
- dependencies 加 "dsh-launch-buttons": "link:<本目录>"
- dsh.profile.bundles 数组里加 "dsh-launch-buttons"
3. 想让新的按钮替代原来的按钮时,在 profile 的 cordis.patch.yml 里把原插件关掉:

- id: dsh-launch-button
disabled: true

不关掉的话输入框右侧会同时出现两个启动按钮(一个旧的、一个新的),两个都能用。
4. 完全退出并重开 DSH(改的是 Host 侧接线,刷新页面不够)。

也可以走桌面端的插件管理器界面(可能需要一次批准):

npx --yes @deepseek-ai/dsh@<你运行中的版本> plugin --profile desktop add "<本目录或包名>"

验证

- 打开 http://127.0.0.1:<DSH 的端口>/dsh-launch-buttons/health:应返回 {"ok":true,"plugin":"dsh-launch-buttons","strategy":"multi-item",…}(带 storePath)。
- 输入框右侧出现 ▶ 按钮:左键应能打开工作区目录;右键应弹出启动项列表。
- 加一个启动项 → 在列表里点它应能启动;点 ★ 后左键主按钮应直接启动它。
- 失败时看桌面端日志里的 web boot: N entry did not activate,把原文发出来即可定位。

回退

删掉 profile package.json 里的 dsh-launch-buttons(dependencies + bundles 各一行)与那个 node_modules 链接、重启即可;$DSH_HOME/launch-buttons/ 可以直接删(旧插件的 $DSH_HOME/launch-button/ 从未被改动)。关掉原插件的 disabled: true 那两行删掉即可恢复旧按钮。

边界

- 只能启动程序或目录(.exe/.com/.scr 直接启动;目录、文档、脚本交给平台 opener 用系统默认程序打开,与双击等价:Windows explorer.exe、macOS open、Linux xdg-open;POSIX 上带可执行位的文件直接启动)。
刻意不走 cmd /c start:cmd 会二次解析参数,路径里带 & | ^ < > % ! 就会执行第二条命令,而从 Node 这边没法给 cmd 传一个安全引号化的路径(libuv 只给含空格或引号的参数加引号)。
- 路径必须是绝对路径且当前存在,添加时会检查。
- Host 启动子进程时刻意不传 windowsHide / detached:本机 windowsHide: true 会变成 CREATE_NO_WINDOW,子进程会在加载器里以 0xC0000142(STATUS_DLL_INIT_FAILED)当场死掉——看起来“启动成功”其实什么都没打开。
- 状态只存在 Host 侧,客户端不做 localStorage;换界面/刷新不会丢。
- 打开文件夹/文档通过系统 opener(Windows explorer.exe),因此以管理员身份运行的 DSH 与以普通身份运行的 DSH 打开的窗口权限不同。

测试

node --test test/core.test.mjs test/host.integration.test.mjs test/client.test.mjs

core.test.mjs 覆盖纯逻辑(路径判定、启动计划、store 归并与迁移、默认值解析、回环判定); host.integration.test.mjs 用假 ctx + 真 http server 驱动整套 JSON API(所有启动用例都是拒绝路径,不会真的启动进程); client.test.mjs 校验模块 id、slots 注入、座位与注入的 CSS。

文件

| 文件 | 作用 |
| lib/core.js | 纯逻辑:启动计划、store 形状与迁移、默认项解析、loopback 判定 |
| lib/index.js | Host:/dsh-launch-buttons JSON API、读写 store、启动进程 |
| lib/client.js | 客户端:输入框按钮、启动项列表、单项设置面板 |
| cordis.patch.yml | bundle 补丁,把 dsh-launch-buttons 插进 cordis |
预览分享卡片长什么样 ↓leexiaode4/dsh-launch-buttons
分享 · DeepSeek Harness Hub
leexiaode4/dsh-launch-buttons

在输入框一键启动常用程序或打开目录

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部