dsh-open-in-app

DSH PLUGIN浏览器与联网

仓库 open-dsh-plugins/dsh-open-in-app · npm dsh-open-in-app

浏览器与联网 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

DSH plugin 在 Web UI 会话头部添加按钮,用已安装的终端或编辑器一键打开当前工作区文件夹,并自动识别应用图标。

验证等级 L5 L5 · 运行验证通过
GitHub 星标 2 复刻 0 · 未关闭 issue 0
最近更新 2026-08-28 创建于 2026-08-20
README 7.9 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add dsh-open-in-app
兼容 DSH 版本0.2.0-rc.2 等 11 个版本版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名dsh-open-in-app可用 npm view 查看包信息

能做什么

4 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-open-in-app:DeepSeek Harness 的一键打开工作区文件夹插件

  • 一键打开工作区文件夹
  • 白名单终端与编辑器
  • 自动识别应用图标
  • 记住上次选择的应用

适用场景

文件读写联网搜索终端命令

上游标签

deepseek-harnessdsh-plugin

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度稳定按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

上面的结论来自上游最近一次自动化验证(2026-10-08): 同一套检查会在插件发新版后重跑,页面显示的是最新一次的逐项结果。

逐项检查结果

L1 · 已找到 ✓ 通过
  • L1.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L2 · 结构化 ✓ 通过
  • L2.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L3 · 安装规范 ✓ 通过
  • L3.1_INSTALL_COMMAND_PARSED 安装命令已解析 方式:安装规范解析
  • L3.2_DSH_VERSION_DECLARED DSH 版本已声明 方式:DSH 版本声明
L4 · 安装已测 ✓ 通过
  • L4.1_INSTALL_EXECUTED_CONFINED 受限沙盒内执行安装 方式:沙盒安装执行
  • L4.2_INSTALL_SUCCESS 沙盒安装成功 方式:沙盒安装执行
  • L4.3_ARTIFACT_CONFIRMED 安装产物已确认 方式:沙盒安装执行
L5 · 运行已测 ✓ 通过
  • L5.1_INSTALL_PASSED_SANDBOXED 沙盒安装通过 方式:沙盒安装执行
  • L5.2_WEB_BOOT_READY Web 启动就绪 方式:Web 启动
  • L5.3_HTTP_SERVED HTTP 服务响应 方式:HTTP 请求
  • L5.4_PLUGIN_INVENTORY_ACTIVE 插件清单中已激活 方式:插件清单查询

风险详情

  • 审查结论 通过
  • 结论说明 vet 静态分析未发现可疑行为,判定为干净(clean)。
  • 风险计数 严重 0 / 高 0 / 中 0
  • 风险详情 未发现严重或警告级问题。

仓库档案

浏览器与联网
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方open-dsh-plugins仓库 dsh-open-in-app · 默认分支 main
分类浏览器与联网search
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言JavaScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue2 / 0 / 0收录时的数值,非实时
创建 / 更新2026-08-20 · 2026-08-28最后推送 2026-08-28
本站收录2026-08-27首次进入本站目录的时间

README 全文

7.9 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-open-in-app

English | 中文

面向 DeepSeek Harness(dsh)Web UI 的一个插件:在聊天窗口右上角提供一个按钮,用已安装的应用打开当前会话的工作区文件夹。菜单按终端模拟器和流行 IDE/编辑器白名单整理,分组为“终端应用”和“编辑器与 IDE”。

仓库:github.com/open-dsh-plugins/dsh-open-in-app

截图

open-in-app 控件位于会话头部工具行(聊天窗口右上角),“Session log”按钮旁边。文件夹按钮一键打开工作区——使用你上次为该工作区选择的应用;下拉箭头打开选择菜单,显示最近使用的应用、系统默认文件夹处理器,以及主机上白名单内的终端和编辑器——每一项都带有应用图标:

功能

  • 在会话头部工具行(聊天窗口右上角)新增一个 Codex 风格的拆分控件,样式与“Session log”头部按钮一致的胶囊(32px 高、1px 边框、18px 圆角、悬停填充),两段之间用细线分隔:
  • 文件夹按钮一键打开工作区——使用你上次为该工作区选择的应用(按 cwd 记录在 localStorage 中,按钮上显示其图标),否则回退到默认编辑器(优先级最高的已安装编辑器——VS Code → Cursor → Windsurf → Zed → IntelliJ IDEA → …——然后是系统默认);
  • 下拉箭头打开菜单,包含置顶的“最近使用”条目、一个“系统默认应用”条目(内置 host.openPath 行为;macOS 上是 Finder),以及主机上已安装的白名单终端和编辑器,每一项都带有应用图标(从应用包中以 32px 读取,以 data: URL 传递;无法解析图标的仅显示名称)。“系统默认应用”行显示默认文件夹处理器的真实图标(macOS 是 Finder,Windows 是资源管理器,Linux 是 xdg-mime 默认文件管理器),无法解析时回退为文件夹图标。
  • 从菜单选择应用即可用该应用打开当前工作区文件夹:
平台 应用发现 打开命令 图标
macOS /Applications、/System/Applications(+ Utilities)、~/Applications open -a "" 通过 sips 将 bundle .icns → 32px PNG;无 icns 的 bundle 用 qlmanage 回退
Windows %ProgramFiles%、%ProgramFiles(x86)%、%LOCALAPPDATA%\Programs(顶层 *.exe) cmd /c start "" 通过 PowerShell [System.Drawing.Icon]::ExtractAssociatedIcon 提取内嵌 exe 图标
Linux /usr/share/applications、/usr/local/share/applications、~/.local/share/applications(*.desktop) gtk-launch(回退到 xdg-open) freedesktop Icon= 值:绝对路径、hicolor 主题(128→16)、可缩放 svg、pixmaps

白名单

匹配对应用名(macOS 的 .app 基名、Windows 的 .exe 基名、Linux 的 desktop Name)不区分大小写。只有已安装且匹配的应用会出现在菜单中。

终端应用 — Terminal、iTerm2、Ghostty、Warp、Alacritty、kitty、WezTerm、Hyper、Tabby、Rio、Contour、Foot、Tilix、Terminator、Konsole、GNOME Terminal、xterm、mintty、Windows Terminal、PowerShell、Cmder、ConEmu。

编辑器与 IDE — Visual Studio Code、Cursor、Windsurf、Zed、Xcode、Android Studio、IntelliJ IDEA、PyCharm、WebStorm、GoLand、CLion、PhpStorm、RubyMine、Rider、DataGrip、DataSpell、RustRover、Fleet、Aqua、Visual Studio、Eclipse、NetBeans、Sublime Text、Nova、BBEdit、TextMate、CodeRunner、MacVim、Neovide、Emacs、Lite XL、HBuilderX。

要增删条目,编辑 lib/apps.js 中的 WHITELIST 数组——每个条目为 { id, category, match, exact? },其中 id 是规范显示名(也是原生打开命令必须能找到的名称),match 别名做子串匹配,exact 别名做全名匹配(用于诸如 code 这类会误匹配 CodeRunner 的短名称)。Windows JetBrains 启动器(idea64、pycharm64 等)与 Code.exe 已通过别名覆盖。

架构

  • 宿主端(lib/index.js):一个 Cordis 插件,注册一个 Typert Remote 服务 openInApp(通过 Typert Gateway 的 source-mode 回退发现——无需生成 TYPERT manifest):
  • openInApp/listApps → { apps, defaultIcon? }:白名单内已安装应用(含展示图标)以及默认文件夹处理器的图标
  • openInApp/openWith(path, appId) → 用指定应用打开文件夹
  • openInApp/openDefault(path) → 用系统默认方式打开文件夹
  • openInApp/openDefaultEditor(path) → 用默认编辑器打开文件夹(见 lib/apps.js 中的 EDITOR_PRIORITY)
  • 图标(lib/icons.js):为每个应用以及系统默认文件夹处理器(Finder / Explorer / xdg-mime 默认)解析一个 data:image/* 图标,按平台尽力而为(见上表),按源路径 + mtime 缓存,使重复打开菜单开销很低;失败时缓存为“无”,绝不报错。在 macOS 上,与应用同名的 icns 优先于文件类型 icns(Zed.app 中的 Zed.icns 优先于 Document.icns)。枚举的 source 路径作为不可枚举属性(lib/apps.js)携带,因此 JSON 传输永远不会看到它。
  • 客户端(lib/client.js):一个 dsh.client web 模块,通过 ctx.remote.$mount(...) 挂载 Remote 端点,并注册 conversation.session.header.utilities 条目 open-in-app。挂载运行在声明了 remote 的嵌套插件 fiber 中:api-gateway 将每个命名空间注册为点分隔的 cordis 服务(remote.openInApp),一个既挂载又注入自身命名空间的 fiber 会导致加载器死锁。因此消费方通过文档化的非严格 store 访问(ctx.reflect.get("remote.openInApp", false))读取该命名空间。
  • Bundle(cordis.patch.yml):一行加载器记录激活宿主端;profile 工具将其作为 profile bundle 引入。

安装

安装已发布到 npm 的包(需该包已发布到 npm registry):

dsh plugin --profile web add dsh-open-in-app

或在包含本仓库本地克隆的目录下执行:

git clone https://github.com/open-dsh-plugins/dsh-open-in-app.git
cd dsh-open-in-app
dsh plugin --profile web add .

然后重启 web 应用(dsh web)——加载器与客户端模块图在启动时组合,新增插件没有热重载。重启后,文件夹按钮会出现在会话标题旁,菜单会显示已安装的应用。

安全说明

  • Remote 端点不在特权方法列表中,因此它们与其余 /api 面处于同一浏览器信任边界之后(仅限 loopback / 已配置的可信主机)。
  • 打开路径会在宿主机上派生原生进程。文件夹路径来自会话自身的 cwd,即该 agent 正在操作的目录。
  • 图标解析仅读取枚举的应用路径(标准应用根目录)以及 freedesktop 图标主题目录;缓冲区上限为 256 KB,原生转换(sips、qlmanage、PowerShell)带有可选的 abort 信号。
  • 命令失败(open 退出码、应用缺失)会以菜单中的错误行呈现,而不是抛异常。

开发

  • lib/apps.js 与 lib/icons.js 是纯 Node(无 dsh 导入)——可独立测试(node -e 'import("./lib/icons.js").then(m => m.listAppsWithIcons()).then(console.log)')。
  • 客户端 bundle 必须保持自包含:它只依赖平台种子词(react、react/jsx-runtime、@deepseek-ai/dsh-client-ui-primitives)。
  • 无需重建:没有构建步骤——lib/ 原样发布。

常见问题

7 问
答案由本站依据条目字段整理,不引用上游原文
dsh-open-in-app 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add dsh-open-in-app` 即可。对应的 npm 包名是 `dsh-open-in-app`。

dsh-open-in-app 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-open-in-app 安全吗?

低风险。vet 静态分析未发现可疑行为,判定为干净(clean)。

dsh-open-in-app 支持哪些 DSH 版本?

上游记录的兼容版本包括 0.2.0-rc.2、0.1.7-rc.2、0.1.7-rc.1、0.1.7-alpha.2、0.1.6-alpha.2、0.1.6-alpha.1、0.1.5-rc.2、0.1.3-alpha.2。版本较多,只列出前 8 个。

dsh-open-in-app 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-open-in-app 有哪些功能?

一键打开工作区文件夹、白名单终端与编辑器、自动识别应用图标、记住上次选择的应用。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

浏览器与联网
按星标排序,可作替代方案

dsh-our-free-model

dsh-our-free-model

在 DeepSeek Harness 中装上这个 DSH plugin,无需登录、注册或填 API Key,即可直接调用 DeepSeek

L3 · 安装规范通过 8,796 星

dsh-web

dsh-web

侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。

L3 · 安装规范通过 8,549 星

BrowserSkill

BrowserSkill

BrowserSkill 的 DeepSeek Harness 浏览器自动化桥接插件,通过原生浏览器工具控制可见的 Chrome 和 Edg

L4 · 沙盒安装通过 8,456 星

dsh-pocket

dsh-pocket

DSH Pocket 让 DeepSeek Harness 装进口袋:电脑跑 dsh web,手机扫码即实时同步访问(局域网+公网),人在外

L5 · 运行验证通过 1,656 星

Browser4

Browser4

L4 · 沙盒安装通过 1,152 星

agentrq

agentrq

L4 · 沙盒安装通过 1,140 星

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 2026-10-08。