用 dsh-openpencil 在 DeepSeek Harness 對話裏預覽和編輯設計稿

前言

DeepSeek Harness(以下簡稱 DSH)把模型、工具、技能、會話和 UI 都做成插件,官方說法是「一切皆插件」。開發者預覽版已經開源,社區也很快出現了一批獨立目錄站,用來檢索和安裝第三方插件。目錄站與 DeepSeek / 幻方沒有官方從屬關係,安裝命令要以各插件詳情頁原文爲準。

在這個生態裏,智能體寫代碼已經比較順,做設計卻經常停在「生成一張圖」。圖不能點選圖層,也不能按節點改文案、調間距。OpenPencil 把設計稿存成可版本管理的 .op 文件;dsh-openpencil 則把它接進 DSH 的對話界面,讓智能體在真實畫布上創建、預覽和修改,而不是隻丟回一張 PNG。

本文依據社區目錄詳情頁、插件 GitHub 倉庫 README、npm 包說明,以及 OpenPencil 與 DeepSeek Harness 的公開倉庫整理:這個插件是什麼、能做什麼、怎麼裝、當前有哪些限制。

這是什麼

dsh-openpencil 是一款界面增強插件,由 ZSeven-W 維護,把 OpenPencil 接到 DeepSeek Harness 裏。社區目錄的定位是「DSH 的 OpenPencil 設計預覽與編輯插件」;倉庫 README 寫得更具體:在對話中預覽、檢查並編輯真實的 .op 文檔。

它要解決的問題很明確:智能體不再只返回一張生成圖,而是驅動一塊可編輯、可交互的設計畫布。.op 在 OpenPencil 裏是 JSON 形態的 Design-as-Code 文件,適合放進 Git 做 diff。插件當前 npm 包名爲 @zseven-w/dsh-openpencil,發佈版本爲 0.1.0-rc.1,README 標明已在 DSH 0.1.0-rc.6 上測試。許可證爲 MIT,主要語言是 TypeScript。

社區目錄頁收錄於 2026-08-15,當時展示 72 星;本文寫作時 GitHub 倉庫顯示 101 星。星標會變,以倉庫頁面爲準。

核心功能

倉庫把能力分成預覽、畫布、編輯器和一組給智能體調用的設計工具。下面只寫已經在 README / npm 說明裏覈對過的部分。

精確多幀預覽

安裝好的 OpenPencil 無頭導出器會按設計稿保真度渲染預覽:活動頁上第一個頂層畫板做成可回放的大圖 PNG;多幀文檔會多出一條可橫向滾動的縮略圖軌,支持點擊選擇和上一幀 / 下一幀。大圖還支持手動縮放、復位、適配畫板和適配內容。

渲染走 openpencil_render。它會生成一份內容尋址、不可變的 .op 快照,並把活動頁上每一個頂層畫板都畫出來。可選參數包括:

  • scale:範圍 0 < scale <= 8,默認 1
  • editable:默認 false;設爲 true 纔會放出編輯入口

精確渲染路徑不要傳 width / height。這兩個參數描述的是運行時視口,不是設計導出尺寸,只被保真度更低的 Jian 回退路徑接受。

精確渲染器按下面順序查找 OpenPencil 二進制:

  1. 環境變量 DSH_OPENPENCIL_BINARYDSH_OPENPENCIL_DESKTOP
  2. /Applications/OpenPencil.app/Contents/MacOS/openpencil-desktop
  3. ~/Applications/OpenPencil.app/Contents/MacOS/openpencil-desktop
  4. PATH 上的 openpencil-desktop

如果精確渲染器確實找不到,Jian 可能給出帶 runtime-preview 標記的回退預覽。精確渲染失敗、超時或 PNG 不合法時,插件不會悄悄切到回退路徑。

只讀交互畫布

工具卡片上的「Open interactive canvas」會按需掛載只讀的 OpenPencil Web SDK,支持平移、縮放和適配。可以查看任意頁面、嵌套節點或未激活頁面,不必離開當前對話。

Web SDK 畫布和託管編輯器是兩條獨立路徑。只讀畫布不能當完整編輯器用。查看器資源(ESM SDK、WASM、CanvasKit)也是打開畫布後才懶加載;資源缺失或無效時,PNG 預覽仍然可用,只是不會再顯示畫布按鈕。

託管編輯器

editable: true 時,編輯動作會打開託管的 OpenPencil 編輯器:選擇、圖層、屬性、繪製工具、撤銷 / 重做,以及顯式保存。當前已發佈的 DSH 到 0.1.0-rc.6 使用插件自己的可縮放右側工作臺,也可以切全屏;小視口會自動全屏。工具卡片和編輯器會跟隨 DSH 的中英文語言以及亮 / 暗色主題,切換時不必重載編輯會話。

編輯會話用的是 OpenPencil 的託管 Web Host,架構與 op-vscode 相同。插件只在用戶授權操作後才啓動 Host,把守護進程令牌放在內存裏,校驗 iframe 來源,會話結束就關掉進程。如果 DSH 在畫布有未保存改動時重載或卸載插件,Host 會保留一份不透明的本地恢復草稿,最多七天。再次打開同一源文件時會先詢問是否恢復;恢復不會覆蓋 .op 文件,直到用戶明確保存。

保存使用樂觀哈希和原子替換。如果源文件在編輯器外被改過,插件會報衝突,而不是直接覆蓋。

智能體設計工具

插件註冊了五個工具,讓智能體通過事務性的 batch_design 程序操作真實畫布:

工具 作用
openpencil_new 用一次事務性 batch_design 新建 .op,經 DSH 沙箱文件系統原子寫入;不需要事先打開編輯器
openpencil_create 在已有的活動畫布上,用 batch_design 生成或重組節點
openpencil_edit 修改明確指定的節點,或用戶當前選中的那一個節點
openpencil_render 生成不可變快照,並渲染活動頁上全部頂層畫板;可選 scaleeditable
openpencil_selection 讀取活動編輯器畫布上當前選中的節點

新建文檔只在整段 batch_design 成功後才發佈。工具不會覆蓋已有路徑;批次失敗也不會留下空文件。

能力授予與結果形態

圖片和文檔授予是帶簽名、綁定哈希的 capability。瀏覽器元數據不會暴露任意宿主機路徑;簽名後的預覽 / 編輯授予也不會進入規範工具結果或模型上下文。模型看到的結果保持普通 JSON;瀏覽器側的 presentationMeta.$dshOpenPencil 才攜帶預覽 URL、畫板列表、文檔快照和編輯器啓動授予。結果裏還會記錄 rendererrendererBinaryfidelity 以及警告信息。

安裝與啓用

社區目錄詳情頁給出的安裝命令如下,在 DeepSeek Harness 終端中運行:

dsh plugin add github:ZSeven-W/dsh-openpencil

需要可復現安裝時,按目錄頁說明把 commit 哈希固定上去:

dsh plugin add github:ZSeven-W/dsh-openpencil#<commit>

<commit> 換成倉庫裏實際的提交哈希。目錄頁寫明:插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前應檢查源代碼倉庫和許可證。

GitHub README 另外給出了面向 Web 配置的 npm 安裝方式,並指定了測試過的 DSH 版本。如果本機還沒有 DSH:

npm install -g @deepseek-ai/dsh@0.1.0-rc.6
dsh plugin --profile web add @zseven-w/dsh-openpencil@latest
dsh web

不想全局安裝 DSH 時,README 提供的等價寫法是:

pnpm dlx --package=@deepseek-ai/dsh@0.1.0-rc.6 dsh plugin --profile web add @zseven-w/dsh-openpencil@latest
pnpm dlx --package=@deepseek-ai/dsh@0.1.0-rc.6 dsh web

插件包本身是公開的,不需要 npm token。若所用的 DSH 預發佈包需要 registry 認證,README 要求把憑據放在用戶級或臨時 npm 配置裏,不要寫進插件倉庫。

精確預覽依賴本機的 OpenPencil 桌面端或 openpencil-desktop 可執行文件。OpenPencil 倉庫提供 macOS Homebrew、桌面端和 CLI 等多種安裝途徑;裝好後按上文的二進制查找順序讓 DSH 進程能找到它。

典型用法

倉庫 README 給出的智能體工作流可以按下面步驟復現,不需要事先準備一份 .op

  1. 在 DSH Web 界面用自然語言提出設計需求,例如做一頁 App 界面或一組演示畫板,並指定一個工作區相對路徑(如 designs/home.op)。
  2. 智能體應調用 openpencil_new,帶上這個新路徑和第一段完整的 batch_design 程序。工具在私有的託管 OpenPencil 守護進程裏執行該程序,整批成功後才寫出權威文檔。
  3. 智能體再調用 openpencil_render,參數使用返回的路徑,並設置 editable: trueautoOpen: true。對話裏會出現多幀畫廊,編輯器展開一次。回放中的歷史卡片,以及已經初次結算過的卡片,不會自動打開。
  4. 之後對已有活動畫布的修改,使用 openpencil_createopenpencil_edit。這些改動在用戶點擊編輯器的 Save 之前都不會落盤。
  5. 需要覈對用戶當前選中了哪些節點時,調用 openpencil_selection

README 還列出了適用的設計類型:App 頁面、演示文稿、社交媒體內容和信息圖等。這些能力來自 OpenPencil 本身的圖層、屬性、繪製、組件和模板,插件負責把它們接到 DSH 對話和工具循環裏。

從開發者側看,倉庫源碼結構也對應上述分工:src/index.ts 是 Cordis 服務入口,design-tools.ts / new-tool.ts 註冊工具,renderer.ts 負責精確渲染和 Jian 回退,editor-host.ts 管理編輯器生命週期,client/ 則是瀏覽器裏的工作臺、畫廊和選區面板。cordis.patch.yml 把插件掛到 DSH bundle 上。這些是源碼佈局說明,日常使用不必自己編譯;本地構建需要 Node 24.11 或更新版本,以及 pnpm。

適用場景與注意事項

比較適合這幾類人:

  • 已經在用 DSH Web 界面,希望智能體直接出可編輯設計稿,而不是隻生成圖片
  • 設計稿需要以 .op 文件進倉庫、做 diff 和後續迭代
  • 需要在對話裏覈對多幀畫板、圖層和選區,再決定是否保存

使用前要注意當前限制,這些都寫在倉庫的 Current Limits 裏:

  • 對已有畫布的後續編輯,要求託管編輯器已經打開;改動要等用戶執行 Save 纔會寫入
  • 輕量 Web SDK 畫布只讀;完整編輯走單獨的託管編輯器。DSH 0.1.0-rc.6 使用可縮放右側工作臺,可切全屏
  • 精確畫廊只覆蓋活動頁的頂層畫板;未激活頁面和嵌套節點要靠交互畫布查看
  • 渲染和快照緩存還沒有產品級的保留策略
  • DSH 0.1.0-rc.6 不會持久化 PTC / Code Mode 下嵌套工具的瀏覽器展示元數據;插件用同源、綁定會話的端點做只讀預覽恢復。編輯授予只發給近期、可信的現場結果

安全方面,目錄頁和倉庫是一致的:插件以當前 dsh 進程權限運行,安裝時可能執行代碼。安裝前應閱讀 GitHub 源碼和 MIT 許可證,確認維護者是 ZSeven-W,包名是 @zseven-w/dsh-openpencil。需要可復現環境時,固定 GitHub commit 或 npm 版本,不要長期使用未釘死的 @latest

精確渲染依賴本機 OpenPencil 二進制。找不到精確渲染器時,Jian 回退預覽會帶 runtime-preview 標記,保真度低於正式導出路徑,不要把它當成最終設計驗收圖。

小結

dsh-openpencil 把 OpenPencil 的 .op 畫布接到 DeepSeek Harness 對話裏:多幀精確預覽、只讀交互畫布、託管編輯器,再加上五個事務性設計工具。它適合在 DSH 裏把「提需求 → 改真實畫布 → 預覽驗證 → 再迭代」收成一條工作流,而不是來回貼截圖。

插件仍是預發佈版本(0.1.0-rc.1),需要匹配的 DSH 版本和本機 OpenPencil 渲染器。社區目錄與官方倉庫都提醒:先看源碼和許可證,再決定是否裝進當前進程。

  • 社區目錄:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-openpencil/
  • GitHub:https://github.com/ZSeven-W/dsh-openpencil
  • OpenPencil:https://github.com/ZSeven-W/openpencil
  • DeepSeek Harness:https://github.com/deepseek-ai/deepseek-harness
羽毛球分组比赛记分
小程序二维码

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

小夜