前言¶
在 DeepSeek Harness(DSH)里处理会话时,经常需要把当前工作区目录交给本机编辑器或 IDE 打开。DSH 原生会话头工具栏带有 Open In… 按钮,但内置软件清单在编译期固定,客户端还有白名单过滤,第三方软件无法接入,官方也未开放应用级扩展点。若你希望在 Cursor、VS Code 等工具里一键打开当前会话目录,只能依赖社区方案。
下面介绍维护者 lovezi0 发布的 dsh-open-in-app-base:它不修改宿主配置,在同位置提供一套可扩展的按钮组,并把「用哪个软件打开」做成注册契约,供同类下游插件补充目标软件。
这是什么¶
dsh-open-in-app-base 是 DSH 第三方插件,分类为工作流。它在会话(Session)头部工具栏提供一个 Open In… 按钮组底座:底座负责按钮外观与菜单渲染;具体软件的探测、路由与启动由下游插件实现。仓库:GitHub,目录页:SkillHub。当前 npm 包版本为 0.2.0,许可证 MIT;README 标注兼容 DeepSeek Harness 0.2.0-rc.1,并支持 Desktop。
核心功能¶
以下能力均来自项目 README 与 package 说明。
开放插槽¶
贡献方通过注册 id、label、route(可选 icon、order)即可加入菜单,无需改底座源码。
外观与原生对齐¶
按钮规格(24px 高、11px 字号、0.5px 描边、圆角与 hover)对齐原生 split 按钮;贡献方只提供图标路径数据,尺寸与结构由底座统一渲染。
零宿主面与安全边界¶
底座自身不注册本机路由、不启动进程;目标软件的探测与启动留在各贡献方插件内。
状态托管¶
宿主半边提供跨 profile 共享的设置存储(服务名 openInAppState),下游可读写自定义安装路径等配置,无需自建落盘。
隐身与可用性¶
没有任何已注册目标、全部不可用、或当前会话尚无工作区时,按钮整体不渲染。挂载后并发探测各目标;未安装或探测失败的不出现在菜单里。
双端一致¶
web profile 与 Desktop(Electron)加载同一份浏览器产物。
安装与启用¶
本插件是「Open In…」下游插件的共同依赖:只装下游插件时菜单不会出现,需与具体目标软件插件一并安装。下游插件的安装说明里也应写明依赖关系(详见仓库 DEVELOPMENT.md)。
web profile(命令行):
dsh plugin --profile web add dsh-open-in-app-base
Desktop: 在应用内 Plugins 页安装,包名 dsh-open-in-app-base。
安装前请自行查看仓库源码与 MIT 许可证;插件以当前 DSH 进程权限运行,涉及本机路径与外部程序启动时应注意环境安全。
典型用法¶
按钮出现在会话头部工具栏,位于原生 Open In… 的右侧。
- 点击按钮图标或右侧下拉箭头,展开菜单;选中某个软件后,才会向该目标的路由发起请求,由下游插件打开当前会话的工作区目录。
- 下游装一个或多个目标时,交互一致。
- 本次会话内选过的软件会被记住,并在菜单中打勾。
- 目标未安装或探测失败时不显示;全部不可用时整个按钮不渲染。
扩展开发¶
若要编写指向某软件的 Open In 下游插件,注册契约、客户端与宿主最小实现、硬要求及安装说明模板见仓库 DEVELOPMENT.md。
工作原理简述:插件分宿主半边与浏览器半边。浏览器半边在会话头槽位注册按钮组,以 cordis 服务 openInAppTargets 暴露注册表;点击后请求各目标自有路由。宿主半边提供 openInAppState 托管共享设置。
适用场景与注意¶
适合: 已在用 DSH 做智能体或会话开发、需要可扩展的「用外部 IDE/编辑器打开工作区」工作流,并愿意同时安装底座与具体目标插件(例如社区里的 Cursor、VS Code 等 Open In 插件)的开发者。
注意:
- 不能替代原生 Open In 白名单内的行为;底座是并行提供的扩展位,依赖下游注册。
- 社区插件目录(如 SkillHub)为独立站点,与 DeepSeek / 幻方无官方从属关系;安装与信任边界需自行判断。
- Node 构建要求
>=20(见 package.json),与普通用户安装 npm 包无直接关系,扩展开发时需留意。
结尾¶
dsh-open-in-app-base 解决的是 DSH 原生 Open In 无法由第三方扩展的问题:用统一按钮组与注册契约,让下游插件只关心「自己的软件怎么探测和打开」。若你的工作流里需要多目标、可配置的「在外部应用中打开会话目录」,先装底座,再按 DEVELOPMENT.md 或各下游插件说明补齐目标即可。
- 目录页:https://www.skillhub.cn/plugins/lovezi0/dsh-open-in-app-base
- GitHub:https://github.com/lovezi0/dsh-open-in-app-base
- npm:https://www.npmjs.com/package/dsh-open-in-app-base