@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

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

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

小夜