前言¶
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