前言¶
DSH(DeepSeek Harness,dsh)把可扩展能力放到 profile 和插件层。对智能体开发者来说,如果本地已经运行 open-mcp-apps,通常还需要一个 dsh web 入口:能在侧边栏看到应用,为每个应用保留独立工作区和会话,并在模型调用 MCP 工具时把应用界面嵌入聊天上下文。
@2nd1st/dsh-plugin-open-app 是 2nd1st 提供的 MIT 许可证 npm 包,用来把 open-mcp-apps 应用接入 dsh。它运行在 dsh web profile,不修改 dsh 源码。下面介绍它的定位、安装方式和配置项。
这是什么¶
@2nd1st/dsh-plugin-open-app 是一个 dsh 插件,仓库地址为 2nd1st/dsh-plugin-open-app。它把 open-mcp-apps 引擎中的应用变成 dsh 里的可进入入口,包括侧边栏 Apps 区块、每个应用独立的容器、工作区和会话,以及模型聊天中的内联应用渲染。
启用前通常需要:
dsh的 web profile- Node 22+
PATH中有pnpm- 运行中的
open-mcp-apps引擎,版本 v0.5.1+
dsh 当前是 0.1.0-rc 预览。插件跟随这个版本,可能在不同版本之间发生破坏性变更。
核心功能¶
- 在
dsh侧边栏新增 Apps 区块 - 为每个
open-mcp-apps应用提供独立容器、工作区和会话 - 在应用下方显示 agent 状态条或在场提示
- 支持模型在聊天中打开应用时内联渲染应用
- 运行在
dsh web平台 - 通过
dsh bundle注入open-app与mcp-oma行 - 可配置本地
open-mcp-apps引擎地址、serverName、应用根目录等 - pins 与 containers 保存在浏览器
localStorage - workspace registration 是持久绑定
安装与启用¶
先确认环境:dsh 有 web profile,Node 22+ 可用,pnpm 在 PATH 中,open-mcp-apps 引擎已运行且版本满足 v0.5.1+。
安装命令是:
dsh plugin --profile web add @2nd1st/dsh-plugin-open-app
安装后会改变 profile 的依赖和 bundle 配置。插件的 patch 会向 profile 树注入 open-app 和 mcp-oma 两行,因此后续配置应针对已有行进行修改,而不是再插入一行。
完成安装后启动或重启 dsh web:
dsh web
典型用法¶
准备 open-mcp-apps 引擎¶
确保 open-mcp-apps 引擎的 HTTP 面可用,默认端口是 8787。插件要求引擎版本为 v0.5.1+;旧引擎仍可用,但会降级。
如果需要发布每个应用的 open_<app> 工具,可以在启动引擎时设置:
OMA_DYNAMIC_TOOLS=1
通用的 open_app 工具始终可用。
配置插件¶
配置写在 profile 的 cordis.patch.yml 中,使用 id: open-app 做 id-targeted override。id-targeted override 会替换对应键,而不是合并,所以应写入完整的 config。
不要重复插入 open-app 行。重复的 id 会导致 dsh 无法启动。
示例配置如下:
- id: open-app
config:
engineBase: 'http://127.0.0.1:8787'
serverName: 'oma'
appsRoot: '~/.dsh/storages/open-app/apps'
containerPrompt: |
You live in the {app} app — this conversation is its container.
{card}
Answer in one sentence; that line is what the user reads on the status bar under it.
installMessage: 'What is in the app right now?'
各配置项的作用:
engineBase:open-mcp-apps引擎 HTTP 地址serverName:引擎 MCP client 的serverName,会影响内联工具视图使用的mcp__<serverName>__前缀appsRoot:每个应用工作区目录的根目录,默认是$DSH_HOME/storages/open-app/appscontainerPrompt:容器 agent 每次请求时携带的规则;空字符串会停用这套规则installMessage:新容器打开时的初始消息;空字符串会让容器保持静默
从旧版手工安装升级¶
如果之前是手工安装,旧包名可能不是 scoped 包名。升级时先移除旧包,再安装 scoped 包:
dsh plugin --profile web remove dsh-plugin-open-app
dsh plugin --profile web add @2nd1st/dsh-plugin-open-app
如果旧的 cordis.patch.yml 中还保留了手工插入的 open-app 或 mcp-oma 行,先删除这些重复行,再使用 id-targeted override 保留配置。
适用场景与注意¶
适合在 dsh web 中使用 open-mcp-apps 应用的开发者。它适合需要为每个应用保留独立工作区和会话的场景,也适合希望模型在聊天中内联渲染应用界面的场景。
使用前注意:
- 插件运行在
dshweb 进程中,会随当前dsh进程的权限访问 profile 目录和已配置的引擎地址 - 安装前应检查源码与 MIT 许可证
dsh为0.1.0-rc预览,插件可能破坏性变更;需要稳定版本时应锁定版本- 配置应通过
id: open-app的 override 完成,不要重复插入行 open-mcp-apps引擎是独立安装和本地进程,插件只配置它监听的位置,不改变引擎本身- pins 与 containers 存在浏览器
localStorage;workspace registration 是持久绑定,清除 container map 后下次访问会重新采用同一工作区
链接¶
仓库地址:https://github.com/2nd1st/dsh-plugin-open-app
npm 包名:@2nd1st/dsh-plugin-open-app