用 dsh-ramify 給 DeepSeek Harness 加上創意分支畫布

前言

用智能體做落地頁、UI 草稿或可預覽原型時,常見做法是直接讓模型寫第一版,再在同一份結果上反覆改。方向一旦定死,後面的修訂都疊在同一條線上,想並排看幾個明顯不同的方案,只能自己開新會話、複製粘貼、再靠記憶對比。

DeepSeek Harness(dsh)把這類能力做成插件:官方倉庫的定位是「一切皆插件」,由 DeepSeek AI 開源,當前仍是 developer preview,接口可能不兼容地變動。社區站點 DeepSeek Harness 插件庫 會收錄第三方插件,它是獨立目錄,與 DeepSeek / 幻方沒有官方從屬關係。

dsh-ramify 就是這個目錄裏的一款工具與能力插件。它在 DSH 網頁界面裏嵌一塊樹狀畫布,把多個創作方向、可運行作品和後續修訂組織成一棵即時更新的創意樹,用來生成、對比和繼續分叉。

本文按插件目錄頁、GitHub 倉庫 README、package.json 與源碼交叉覈對後整理:它是什麼、怎麼裝、怎麼用,以及使用時要注意的邊界。

這是什麼

dsh-ramify 是專爲 DeepSeek Harness 寫的 dsh-plugin,包名爲 @ramify/dsh-ramify,當前版本 0.1.0。GitHub 倉庫是 yanglongyun/dsh-ramify,目錄頁標註維護者爲 yanglongyun,許可證爲 MIT(LICENSE 中的版權聲明爲 Copyright (c) 2026 Sider AI)。倉庫主要語言是 TypeScript,GitHub 當前顯示 9 個 star。

它要解決的問題很具體:Agent 一次給出多個方向後,結果仍散落在對話裏,既不好看,也不好比,更不好從某一個節點繼續改。Ramify 把這些結果寫成畫布上的節點,舊方案保留,新修訂作爲子節點長出來。

插件走 DSH 標準插件清單、Cordis 服務和 Client UI 插槽,不修改 Harness 源碼。package.jsondsh.client.platform 聲明爲 web,界面出現在網頁側欄和覆層裏,不是終端 TUI 插件。

核心功能

樹狀畫布,而不是一條對話

README 把工作流程寫成五步:

  1. 點擊 DSH 左側欄的 Ramify,打開內置工作臺。
  2. 在 Ramify 原生輸入框裏填寫需求,並選擇要生成的方案數量。
  3. 插件先創建項目並立刻進入畫布,同時把任務交給當前 DSH 會話和模型。
  4. Agent 通過 Ramify 工具持續往畫布寫方案,節點和預覽會即時出現。
  5. 點節點右上角的發散按鈕,輸入修改要求,就可以從該節點繼續生成分支。

過程中不需要複製本機地址,也不需要在 Ramify 裏再配一遍模型或 API Key。界面提交走的是 DSH 官方會話輸入能力,模型調用仍由當前會話負責。

也可以不點輸入框,直接在 DSH 對話裏要求 Agent 使用 Ramify。README 給的例子是:

使用 Ramify 爲這個 AI 搜索產品探索三個明顯不同的落地頁方向,做出可預覽頁面讓我比較。

作品類型與預覽

節點不只是文本。源碼把卡片分成 titlenote 和作品類;作品類型包括 HTML、Markdown、SVG、圖片、視頻和音頻。README 寫明這些作品可以在畫布上直接預覽。

預覽有兩層,行爲不一樣:

  • 畫布卡片縮略圖使用空的 sandbox,不會跑 JavaScript,避免大量作品同時執行腳本把畫布拖慢。
  • 右側詳情和新窗口打開的作品不使用 sandbox 或 CSP,可以正常運行腳本、加載外部資源、聯網和提交表單。

也就是說,詳情頁更接近「普通網頁」,不是沙箱演示。

本地 runtime 與持久化

架構上分成兩塊:DSH 網頁裏的 Ramify 覆層(iframe),以及本機的 Ramify runtime。README 給出的默認地址是:

  • DSH Web UI:http://127.0.0.1:3099(這是插件 README 的示例端口;官方 Harness 文檔裏 npx @deepseek-ai/dsh web 默認是 3080
  • Ramify runtime:http://127.0.0.1:9519

插件啓動時會拉起打包好的 runtime。源碼 src/runtime.ts 裏子進程環境變量 HOST 設爲 0.0.0.0PORT 默認 9519;插件自身通過 http://127.0.0.1:9519 做健康檢查和 API 調用。如果該端口上已經有健康的 Ramify 實例,會複用而不是再開一份。卸載插件時,只清理自己拉起的進程。

項目、節點和作品用 SQLite 加本地 artifact 文件保存。dataDir 省略時走操作系統應用數據目錄:

  • macOS:~/Library/Application Support/Ramify/
  • Windows:%APPDATA%/Ramify/
  • Linux:${XDG_DATA_HOME:-~/.local/share}/ramify/

升級或重啓默認不會清空。前端用輕量輪詢感知變更。

註冊給模型的工具

插件向當前模型註冊一組工具,名稱與用途以 README 爲準:

工具 用途
ramify_start 啓動或連接畫布
ramify_project_create 創建項目與根節點
ramify_project_list 列出項目
ramify_project_tree 讀取完整創意樹
ramify_node_add 添加單個節點或作品佔位符
ramify_node_batch 原子化創建多層節點樹
ramify_node_complete 寫入 HTML、Markdown、SVG 或媒體作品
ramify_node_update 更新標題、文本或樹位置
ramify_settings 切換主題和界面語言

源碼裏 ramify_settings 的主題取值爲 light / dark / system,語言取值爲 system / zh-CN / en / ja / es / deramify_node_batch 一次最多創建 100 張卡片。系統提示要求:有比較價值的修訂寫成子節點,而不是覆蓋舊方案;不要把 loopback 服務地址當成給用戶看的主結果,主界面是 DSH 側欄裏的工作臺。

安裝與啓用

環境要求來自 README:

  • Node.js 22.19 或更高版本
  • DeepSeek Harness 0.1.0-rc.6(倉庫寫明的當前測試版本)或兼容版本

社區目錄頁給出的安裝命令是:

dsh plugin add github:yanglongyun/dsh-ramify

需要可復現安裝時,目錄頁建議固定 commit 哈希:

dsh plugin add github:yanglongyun/dsh-ramify#commit

#commit 換成實際提交哈希。插件以當前 dsh 進程的權限運行,安裝時可能執行代碼,裝之前應檢查源碼倉庫和許可證。

因爲客戶端聲明是 web,倉庫 README 把「當前推薦」寫成裝進 web profile。先克隆再本地添加:

git clone https://github.com/yanglongyun/dsh-ramify.git
cd dsh-ramify
npm install
npm run build

dsh plugin --profile web add "$PWD"
dsh web --port 3099

README 同時說明:lib/app/dist/ 會提交進倉庫,從本地 checkout 或 Git 安裝時不必再跑安裝期構建腳本。上面的 npm run build 是源碼開發路徑;若只按目錄頁的 github: 規格安裝,用的是倉庫裏已經提交的構建產物。

README 另有一節「npm 包發佈後」:

dsh plugin --profile web add @ramify/dsh-ramify

截至本文覈對時,npm registry 上還沒有 @ramify/dsh-ramify 這個包(返回 404),所以不要把這條當成現在就能用的安裝方式。

啓動後點擊 DSH 左側欄底部的 Ramify。插件會自動啓動 runtime,並把工作臺嵌進 DSH 覆層;頂部的外部打開按鈕只是可選的獨立窗口。

需要改端口或數據目錄時,可在 profile 的 cordis.patch.yml 裏覆蓋。倉庫自帶的默認補丁是:

- insert:
  - id: ramify
    name: '@ramify/dsh-ramify'
    config:
      port: 9519
      startupTimeoutMs: 5000
      shutdownTimeoutMs: 3000

README 還允許增加 dataDir,必須寫成絕對路徑。

典型用法

裝好並打開 Web UI 之後,有兩條入口。

第一條是 Ramify 自己的輸入框:寫清需求、選方案數量,提交後進入畫布等節點長出來。看中某一版,再從該節點發散,舊節點保持不動。

第二條是在當前 DSH 會話裏直接下指令,讓 Agent 調 Ramify 工具。可以沿用 README 的落地頁例子,也可以換成 UI 草稿、Markdown 文檔或 SVG。Agent 會先 ramify_project_create,再按卡片類型往樹上加節點;作品可以先佔位,再用 ramify_node_complete 把 HTML / Markdown / SVG / 媒體寫進去。

畫布更新不需要刷新對話。前端輪詢本地 runtime,節點和預覽會跟着 API 寫入出現。

適用場景與注意事項

比較適合這些情況:

  • 需要同時看多個視覺或結構方向,而不是在同一份稿上改來改去
  • 作品本身能在瀏覽器裏預覽(HTML、Markdown、SVG、圖片、音視頻)
  • 已經在用 DSH 的 Web UI,希望複用當前會話和模型,不想再配一套 API Key

需要注意的邊界:

  1. 這是社區插件,不是官方應用商店裏的「認證擴展」。 目錄站與 DeepSeek / 幻方無官方從屬關係。Harness 本身仍是 developer preview。
  2. 權限與安裝安全。 插件以當前 dsh 進程權限運行,安裝可能執行代碼。裝前閱讀源碼和 MIT 許可證;需要可復現時固定 commit。
  3. 只覆蓋 Web 客戶端。 dsh.client.platformweb,側欄入口出現在網頁界面。官方默認 Web 端口是 3080,插件 README 示例用 3099,按你實際啓動命令爲準。
  4. runtime 監聽地址。 源碼把子進程 HOST 設爲 0.0.0.0,DSH 側用 127.0.0.1:9519 訪問。如果本機網絡環境比較敏感,應清楚這一點,不要想當然認爲服務只綁在 loopback。
  5. 詳情頁沒有沙箱。 縮略圖不跑 JS;右側詳情和新窗口按普通網頁執行,可以跑腳本、聯網、提交表單。預覽來源不可信時,不要隨手點開詳情。
  6. 不保存模型密鑰,但會持久化作品。 插件不讀取、不接收、不保存模型 API Key;項目數據默認寫在系統應用數據目錄,卸載插件不一定等於刪掉這些文件。
  7. npm 包尚未發佈。 當前應按 GitHub 源碼或目錄頁的 github:yanglongyun/dsh-ramify 安裝,不要去裝不存在的 registry 包。

小結

dsh-ramify 把「一次生成多個可預覽方案,再從中意的節點繼續分叉」做成 DSH 網頁裏的一塊原生畫布。它複用當前會話和模型,用 SQLite 把樹狀修訂留在本地,舊方案不會被新修訂蓋掉。

項目仍是早期版本(0.1.0),測試基線寫的是 Harness 0.1.0-rc.6。如果這個工作流正好是你缺的那一塊,可以從目錄頁或倉庫自行評估後再裝。

  • 目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-ramify/
  • GitHub:https://github.com/yanglongyun/dsh-ramify
  • DeepSeek Harness:https://github.com/deepseek-ai/deepseek-harness
羽毛球分组比赛记分
小程序二维码

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

小夜