前言¶
在 DeepSeek Harness(DSH)裏做智能體開發時,畫布類創作往往和對話窗口分離:模型要改節點、觸發生成或導出快照,要麼靠人工點界面,要麼自己寫一套橋接。社區插件 dsh-infinite-canvas(維護者 Haitang-Hub)把無限畫布裝進 DSH Desktop 右側欄,並通過 MCP 把 canvas_* 工具註冊到 Harness,讓原生會話裏的模型可以直接驅動畫布。形態與同倉庫生態裏的 dsh-3d-director-desk 0.2.3 同構;可與 3D 導演臺插件並存,由不同 MCP server 名區分調用目標。
下面介紹它是什麼、能做什麼、如何安裝與驗收。
這是什麼¶
dsh-infinite-canvas 是 DSH 工作臺插件包:一個 npm 包同時承擔 DSH bundle(cordis.patch.yml 插入服務端入口)、右側欄「無限畫布」標籤(sidebarRightTabs.register()),以及 MCP 工具來源(dsh-mcp-client 把橋的 /mcp 註冊爲 streamable-http、無狀態原生工具)。簡介側重的能力包括多模態節點、AI 生成、工程管理,數據與站點經內置 canvas-agent 橋與面板 iframe 內的畫布頁面執行。
分類爲客戶端插件;社區目錄頁:skillhub.cn/plugins/Haitang-Hub/dsh-infinite-canvas。源碼與說明:GitHub — Haitang-Hub/dsh-infinite-canvas。許可證 MIT(見倉庫 package.json)。
架構與核心能力¶
調用鏈可以概括爲:DSH 會話調用 mcp__infinite-canvas__* → Harness 內 dsh-mcp-client(streamable-http 連 127.0.0.1:17371/mcp,持續重連)→ 插件 spawn 的 canvas-agent 單文件橋 → SSE / 進程內直達 CanvasSession → 右側欄 iframe 裏的畫布頁面(經 /bootstrap 拿本機 token,在瀏覽器內執行 canvas_* 工具)。
與 dsh-3d-director-desk 同時啓用時,MCP server 名分別爲 infinite-canvas 與 director-desk,默認端口 17371 / 17372,互不衝突。
Harness 側註冊的原生工具名(前綴 mcp__infinite-canvas__)包括:
site_navigatecanvas_list_projectscanvas_get_statecanvas_get_selectioncanvas_apply_opscanvas_run_generationcanvas_export_snapshot
宿主還暴露 REST 便於面板與運維:
| 接口 | 用途 |
|---|---|
GET /api/infinite-canvas.bridge-info |
返回 { ready, host, port, supervised, restarts, error? },面板決定顯示 iframe 或恢復引導 |
POST /api/infinite-canvas.restart-bridge |
重建插件託管的橋,無需重啓整個 DSH Desktop |
橋進程相關環境變量(插件託管時由入口注入):
| 變量 | 作用 |
|---|---|
CANVAS_AGENT_HOME |
配置與會話數據目錄(= dshHomePath('infinite-canvas')) |
CANVAS_SITE_DIR |
指向包內 site/,橋伺服畫布靜態站 + SPA 回退 |
PORT |
監聽端口(與 Config.port 一致,默認 17371) |
改端口時可在 Harness 進程環境設 CANVAS_AGENT_PORT=18000,patch 中的 url 與插件 Config.port 會同步。
從源碼構建並安裝¶
官方 README 給出的流程是先構建前端與單文件橋,再在 dsh-plugin/ 裏同步資產並 npm pack,最後用 本地 .tgz 絕對路徑 安裝(不要用未在文檔出現的 dsh plugin add github:... 形式)。
# 1. 構建前端(web/)
cd web && npm install --legacy-peer-deps && npm run build
# 2. 構建單文件橋(canvas-agent/)
cd ../canvas-agent && npm install && npm run build:bundle
# 3. 同步資產並打包(dsh-plugin/)
cd ../dsh-plugin && npm run pack:all # = sync + npm pack,產出 dsh-infinite-canvas-*.tgz
# 4. 安裝到 DSH Desktop
dsh plugin --profile web add /絕對路徑/dsh-infinite-canvas-0.2.6.tgz
# 5. 完整退出並重新打開 Desktop(安裝/替換包必須重啓才載入新 JS 模塊代碼)
說明:README 示例 tarball 文件名爲 dsh-infinite-canvas-0.2.6.tgz;當前倉庫 package.json 版本爲 0.2.9,實際 npm pack 產物文件名以打包時 version 字段爲準。安裝或換包、改端口後均需完整重啓 DSH Desktop 才生效。
典型用法與驗收¶
- 在 Desktop 右側欄「開始」引導頁打開 無限畫布,確認面板內畫布 iframe 正常(橋未就緒時會走引導;可看
bridge-info)。 - 在 原生會話 中調用 MCP 工具,例如
mcp__infinite-canvas__canvas_get_state,驗證工具經橋下發到 iframe 執行器全鏈路可用(README 驗收第 4 條)。 - 橋異常時可
POST /api/infinite-canvas.restart-bridge,不必重啓 Desktop(端口變更仍須重啓)。
按工作臺規範第 8 節還可做配置層覈對:dsh --profile web --dump-config 應出現本包兩層條目;tar -tzf 檢查 tgz 含 package.json、dsh/、lib/、bridge/、site/、cordis.patch.yml。
適用場景與注意¶
適合:已在 DSH Desktop(--profile web)上開發 Agent,需要在同一會話裏讀畫布狀態、改節點、跑生成或導出,並與 3D 導演臺等插件分工協作的場景。
注意:
- 插件以當前 dsh 進程權限 運行;安裝前請自行審閱源碼與 MIT 許可證。
- 若本機 17371 已被獨立
start.bat起的橋佔用,插件會複用該進程,數據可能落在~/.infinite-canvas而非dshHomePath('infinite-canvas')。 - iframe 內仍保留頁面直連模型的 AI 助手,與 Harness 原生會話並存。
- 社區目錄 SkillHub 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;DSH 生態理念是「一切皆插件」,本文事實均來自上述倉庫 README 與
package.json。
結尾¶
dsh-infinite-canvas 把無限畫布、右側欄面板和 MCP 橋收進一個可 dsh plugin add 安裝的包,讓 Agent 通過 mcp__infinite-canvas__* 操作畫布而不是隻「看截圖」。目錄頁:https://www.skillhub.cn/plugins/Haitang-Hub/dsh-infinite-canvas;倉庫:https://github.com/Haitang-Hub/dsh-infinite-canvas。