@2nd1st/dsh-plugin-open-app:把 open-mcp-apps 应用接入 dsh

前言

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-appmcp-oma
  • 可配置本地 open-mcp-apps 引擎地址、serverName、应用根目录等
  • pins 与 containers 保存在浏览器 localStorage
  • workspace registration 是持久绑定

安装与启用

先确认环境:dsh 有 web profile,Node 22+ 可用,pnpmPATH 中,open-mcp-apps 引擎已运行且版本满足 v0.5.1+。

安装命令是:

dsh plugin --profile web add @2nd1st/dsh-plugin-open-app

安装后会改变 profile 的依赖和 bundle 配置。插件的 patch 会向 profile 树注入 open-appmcp-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?'

各配置项的作用:

  • engineBaseopen-mcp-apps 引擎 HTTP 地址
  • serverName:引擎 MCP client 的 serverName,会影响内联工具视图使用的 mcp__<serverName>__ 前缀
  • appsRoot:每个应用工作区目录的根目录,默认是 $DSH_HOME/storages/open-app/apps
  • containerPrompt:容器 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-appmcp-oma 行,先删除这些重复行,再使用 id-targeted override 保留配置。

适用场景与注意

适合在 dsh web 中使用 open-mcp-apps 应用的开发者。它适合需要为每个应用保留独立工作区和会话的场景,也适合希望模型在聊天中内联渲染应用界面的场景。

使用前注意:

  • 插件运行在 dsh web 进程中,会随当前 dsh 进程的权限访问 profile 目录和已配置的引擎地址
  • 安装前应检查源码与 MIT 许可证
  • dsh0.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

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜