dsh-infinite-canvas:在 DSH 桌面端把無限畫布交給 Agent 操作

前言

在 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_navigate
  • canvas_list_projects
  • canvas_get_state
  • canvas_get_selection
  • canvas_apply_ops
  • canvas_run_generation
  • canvas_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 才生效。

典型用法與驗收

  1. 在 Desktop 右側欄「開始」引導頁打開 無限畫布,確認面板內畫布 iframe 正常(橋未就緒時會走引導;可看 bridge-info)。
  2. 在 原生會話 中調用 MCP 工具,例如 mcp__infinite-canvas__canvas_get_state,驗證工具經橋下發到 iframe 執行器全鏈路可用(README 驗收第 4 條)。
  3. 橋異常時可 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。

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

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

小夜