前言¶
用智能体做落地页、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.json 里 dsh.client.platform 声明为 web,界面出现在网页侧栏和覆层里,不是终端 TUI 插件。
核心功能¶
树状画布,而不是一条对话¶
README 把工作流程写成五步:
- 点击 DSH 左侧栏的 Ramify,打开内置工作台。
- 在 Ramify 原生输入框里填写需求,并选择要生成的方案数量。
- 插件先创建项目并立刻进入画布,同时把任务交给当前 DSH 会话和模型。
- Agent 通过 Ramify 工具持续往画布写方案,节点和预览会实时出现。
- 点节点右上角的发散按钮,输入修改要求,就可以从该节点继续生成分支。
过程中不需要复制本机地址,也不需要在 Ramify 里再配一遍模型或 API Key。界面提交走的是 DSH 官方会话输入能力,模型调用仍由当前会话负责。
也可以不点输入框,直接在 DSH 对话里要求 Agent 使用 Ramify。README 给的例子是:
使用 Ramify 为这个 AI 搜索产品探索三个明显不同的落地页方向,做出可预览页面让我比较。
作品类型与预览¶
节点不只是文本。源码把卡片分成 title、note 和作品类;作品类型包括 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.0,PORT 默认 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 / de。ramify_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
需要注意的边界:
- 这是社区插件,不是官方应用商店里的「认证扩展」。 目录站与 DeepSeek / 幻方无官方从属关系。Harness 本身仍是 developer preview。
- 权限与安装安全。 插件以当前
dsh进程权限运行,安装可能执行代码。装前阅读源码和 MIT 许可证;需要可复现时固定 commit。 - 只覆盖 Web 客户端。
dsh.client.platform为web,侧栏入口出现在网页界面。官方默认 Web 端口是 3080,插件 README 示例用 3099,按你实际启动命令为准。 - runtime 监听地址。 源码把子进程
HOST设为0.0.0.0,DSH 侧用127.0.0.1:9519访问。如果本机网络环境比较敏感,应清楚这一点,不要想当然认为服务只绑在 loopback。 - 详情页没有沙箱。 缩略图不跑 JS;右侧详情和新窗口按普通网页执行,可以跑脚本、联网、提交表单。预览来源不可信时,不要随手点开详情。
- 不保存模型密钥,但会持久化作品。 插件不读取、不接收、不保存模型 API Key;项目数据默认写在系统应用数据目录,卸载插件不一定等于删掉这些文件。
- 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