前言¶
DSH 理念是「一切皆插件」。在處理空間佈局、版式設計或數據分段時,模型有時無法僅憑文字描述出邊界。需要一個瀏覽器彈出的交互式畫板,讓用戶直接參與繪製,同時將結果標準化地回傳給模型。
插件簡介¶
- 名稱:
dsh-partition-board - 所有者:gst20060726
- 定位:AI 認爲需要跟人確認「怎麼分區」時自主調用的 DSH 插件。它在瀏覽器裏彈出一塊畫板。
- 核心價值:通過色卡、繪圖工具和約束標註,將模糊的佈局需求轉化爲精確的矢量分區,並回傳給 AI 進行後續解讀。
安裝與啓用¶
在本地環境安裝此插件,需進行目錄聯結並在配置文件中聲明依賴。
# 1) 目錄聯結(等價於 `dsh plugin --profile web add link:<dir>` 建的鏈接)
New-Item -ItemType Junction `
-Path "$env:USERPROFILE\.dsh\profiles\web\node_modules\dsh-partition-board" `
-Target "$env:USERPROFILE\.dsh\plugins\dsh-partition-board"
# 2) 在 ~/.dsh/profiles/web/package.json 里加兩處:
# dependencies: "dsh-partition-board": "link:C:/Users/<你>/.dsh/plugins/dsh-partition-board"
# dsh.profile.bundles: 追加 "dsh-partition-board"
# 3) 驗證安裝(可選)
cd "$env:USERPROFILE\.dsh\plugins\dsh-partition-board"
npm test # 72 項:35 項純函數 + 37 項無頭渲染
npm run verify # 8 項安裝期契約自檢
核心功能¶
該畫板提供以下交互能力:
- 色卡與標註:提供色卡控件,用於標註「顏色 ↔ 含義」(如紅=主區、藍=側欄),顏色本身無意義,圖例纔是語義。
- 繪圖工具:支持矩形、套索、軟筆刷、橡皮四種繪製模式,每塊分區可調整邊界羽化(模糊分區)。
- 邊畫邊寫:圖形說不清的約束(如「這塊要能並排看兩張卡」)可直接寫在右欄,隨消息回傳給 AI。
- 縮放與平移:
Ctrl/⌘+ 滾輪:以光標爲錨點縮放(1–8 倍),普通滾輪仍滾動頁面。- 抓手拖動:平移畫布。
0鍵:視圖復位。- 裝飾性線寬/字號/標籤門檻都按縮放抵消,放大後不會糊。
- AI 輔助補全:未標註與細小分區由 AI 補全,方案以虛線疊加展示,用戶可確認或返工。
- 結果回傳:確認後的完整規劃(圖例 + 幾何 + 羽化度 + 柵格矩陣)回傳給 AI,AI 按
purpose解讀並推進項目。
協作流程¶
插件採用消息式通信,工具調用不阻塞。
- 工具調用:模型調用
partition_board({purpose, legend, ...}),畫板立即彈出。 - 用戶操作:用戶在畫板上標註、繪畫、調整羽化或書寫說明。
- 消息回傳:用戶操作通過
conversation.send("[partition-board] {...}")發送給宿主。 - 模型處理:
- 收到
kind = plan-request或rework:同一boardId、revision+1、mode="review",再調一次工具展示方案。 - 收到
kind = confirmed:拿到plan,按purpose解讀並推進項目。
- 收到
技術細節與邊界¶
- 存儲機制:畫板狀態存在
localStorage(鍵dsh.partitionBoard.v1:<sessionId>:<boardId>)。換瀏覽器或清緩存會丟失;隱私模式下畫板可用但不跨刷新記憶。 - 無狀態宿主:沒有宿主側的畫板存儲,這是刻意的(安全/鑑權原因)。規劃事實來源是對話本身。
- 柵格編碼:柵格是 32 列,
grid.cells用 base36 單字符編碼。 - 載荷預算:矢量總點數封頂 600,分區不會因超預算被丟掉。
- 無障礙支持:畫布是
role="application",支持aria-label和aria-describedby(狀態條)。 - 雙語界面:界面文案按
navigator.language切換(有信號但不是中文 → 英文;完全沒信號 → 中文)。 - 已知缺失:觸摸屏雙指捏合/旋轉、分區布爾運算、分區排序與圖層調整。
結語¶
插件通過瀏覽器彈出的畫板解決了 AI 在處理空間佈局時無法精確界定邊界的問題。用戶可以直接參與繪製和約束標註,配合 AI 的自動補全功能,能夠快速達成共識。確認後的規劃以標準化的載荷回傳給模型,推動項目繼續進行。