把 ComfyUI 作为分屏画布标签嵌入 DSH Web,agent 实时操作活画布:读写工作流、改节点、连线、运行、取回出图、批量扫参、图片进画布、文本注入、导出 API 格式工作流。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-comfyui-canvas
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:wbin0001/dsh-comfyui-canvas
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
中文 · English
把 ComfyUI(本地或云端)以分屏画布标签嵌入 DeepSeek Harness Web,把 DSH 的 LLM 能力与 ComfyUI 的生成能力合成一个可视化创作平台——agent 在对话里激发创意、书写提示词与脚本,实时落到你眼前的画布上,产出图像、音乐、视频、3D。从灵感到成品,全程不离开对话,不用切换任何前端工具:
- 画布操作:搭建编排、读写工作流、修改节点、连线、运行、调整参数、工作流查错——所见即所得,实时落在你眼前的画布上
- 生产任务:批量扫参(
batch_run)、自动取回出图(get_outputs)带回对话,实现图像、音乐、视频、3D 等多任务智能创作与批量生产 - 环境维护:一键启动 ComfyUI、一键升级核心与全部自定义节点(
upgrade),省心维护不间断
本仓库集成了 DSH 侧插件(画布副驾)+ ComfyUI 侧桥接节点。需要无人值守 / 规模化执行时,可配合官方 ComfyUI MCP 服务器使用——见「画布驱动 vs MCP」。
功能特性
| 能力 | 说明 |
|---|---|
| 画布标签页 | 对话里新增 ComfyUI 标签,左边画布、右边对话 rail 分屏。iframe 常驻不重载,切标签秒回。 |
| 可视化画布副驾 | agent 操作你正在看的画布——节点出现、连线接上、参数变化、运行触发,全部实时显示在屏幕上,每一步都看得见,而不是黑盒改 JSON。出图经 comfyui_get_outputs 直接带回对话。 |
| 画布操作工具 | comfyui_read_workflow / add_node / connect / set_param / remove_node / inject_text / load_workflow / run / debug——在活画布上搭建与修复工作流;inject_text 把对话文本一步注入为可连线节点。 |
| 生产工具 | comfyui_batch_run 一次扫参数矩阵(seed / prompt / 强度);comfyui_get_outputs 把出图直接带回对话;comfyui_attach_image 把对话里的图片送进画布 LoadImage;comfyui_export_api 把当前画布导出为 API 格式工作流,供 comfy-cli 无人值守批量。 |
| 维护工具 | comfyui_upgrade 一键升级 ComfyUI 核心与全部 git 自定义节点;comfyui_config 报告当前连接与画布专注状态。 |
| 画布专注模式(会话隔离) | agent 通过 comfyui_config 感知当前会话是否在画布标签,只在画布场景专注画布操作,且按会话隔离——多个会话互不干扰。 |
| ComfyUI 报错处理 | debug 校验工作流并高亮报错节点(纯校验,不触发执行),agent 帮你定位/修复画布错误。 |
| 设置页 | ComfyUI 地址 / 端口 / 网络模式 / 桥接 Token / 启动命令 / 右侧面板宽度,实时生效。导航栏已自定义为 ComfyUI logo 图标。 |
| 对话栏增强 | 图片预览并入输入框、+ 号上传本地图片(走 DSH 官方附件通道)、画布上的授权弹窗、发送按钮贴右下角。 |
安装
1. 安装 DSH 插件
dsh plugin add github:<你的用户名>/dsh-comfyui-canvas
或本地安装:
# 在 DSH profile 目录下
pnpm add <本仓库路径>
插件自带 cordis.patch.yml(通过 dsh.bundle.patch 声明),装完自动挂载,无需手改配置。
2. 安装 ComfyUI 桥接节点
agent 工具通过 /dsh-bridge/* 与 ComfyUI 页面通信。桥接节点已内嵌在仓库 comfyui-bridge/ComfyUI-DSH-Canvas,把它复制进 ComfyUI 的 custom_nodes:
Windows(PowerShell / cmd):
# 方式一:从仓库 checkout 复制
Copy-Item -Recurse comfyui-bridge\ComfyUI-DSH-Canvas <ComfyUI>\custom_nodes\ComfyUI-DSH-Canvas
macOS / Linux(bash):
# 方式一:从仓库 checkout 复制
cp -r comfyui-bridge/ComfyUI-DSH-Canvas <ComfyUI>/custom_nodes/ComfyUI-DSH-Canvas
dsh plugin add 安装后,已安装的插件里也带这份桥接节点:
# Windows(PowerShell)
Copy-Item -Recurse (npm root -g)\dsh-comfyui-canvas\comfyui-bridge\ComfyUI-DSH-Canvas <ComfyUI>\custom_nodes\ComfyUI-DSH-Canvas
# macOS / Linux
cp -r $(npm root -g)/dsh-comfyui-canvas/comfyui-bridge/ComfyUI-DSH-Canvas <ComfyUI>/custom_nodes/ComfyUI-DSH-Canvas
然后重启 ComfyUI 并打开一次画布页面(注入的 bridge.js 会上报画布状态并监听命令)。
3. 配置
打开 设置 → ComfyUI 画布,填写 ComfyUI 地址(默认 http://127.0.0.1:8188)、端口、网络模式、可选桥接 Token、启动命令和右侧面板宽度。
启动命令按平台不同:
| 平台 | 示例 |
|---|---|
| Windows | ComfyUI启动器.bat(或 python main.py) |
| macOS | python main.py 或 ./start.sh |
| Linux | python main.py 或 ./start.sh |
安全
桥接(/dsh-bridge/*)是本插件给 ComfyUI 新增的唯一网络面。把 ComfyUI 暴露到回环地址之外之前请先读这里。
- 信任模型。默认桥接无鉴权,与 ComfyUI 自身
/prompt的信任模型一致——任何能访问 ComfyUI 端口的人都能读画布、上报状态、下发命令(load_workflow/run会消耗 GPU)。前端有命令白名单,无法执行任意代码,但这个面是真实存在的。 - 绑定回环。除非确有局域网/云端需求,请让 ComfyUI 保持
127.0.0.1。networkMode只是信息性字段;实际绑定取决于 ComfyUI 启动时的--listen。 - 可选共享 Token。在 设置 → ComfyUI 画布 → 桥接 Token 里填一个 Token,同时用相同值启动 ComfyUI(给它自己的环境变量
DSH_BRIDGE_TOKEN=...)。启用后,每个由 agent 发起的请求——读画布、下发命令、轮询结果——都必须携带Authorization: Bearer <token>;host 端自动带上,bridge 端拒绝没有 Token 的请求。前端自身的状态上报(/report、结果回传)保持开放,因为注入页面无法持有 Token;这些端点只改动内存快照、从不触发执行。两端都留空则保持默认开放行为。 - 多标签页安全。命令会定向到「最近上报的前端」(
clientId),所以同时开着多个 ComfyUI 标签页不会各自执行一次命令。
平台支持
支持 Windows / macOS / Linux。agent 工具通过纯 HTTP(/dsh-bridge/*)与 ComfyUI 通信,插件本身不依赖任何平台特性——只有复制命令和 ComfyUI 启动命令因平台而异,上面都已分别说明。
使用
- 打开一个会话,切换到 ComfyUI 标签——左边是画布,右边是对话。
- 直接让 agent 干画布活:
- “读取当前工作流”
- “给 KSampler 设 seed 为 42”
- “检查画布有没有报错”
- “运行一次”
- agent 会先读
comfyui_config确认当前在画布模式,然后专注画布操作。
对话产物 → 画布
agent 在对话里生成的图片与文本,可直接作为 ComfyUI 工作流的节点输入,形成「对话创意 → 画布产出」闭环:
comfyui_attach_image:把本机一张图片上传进 ComfyUIinput/,并可选指向某个 LoadImage 节点。走 ComfyUI 原生/upload/image,不经桥接——文件读取与上传由 host 从本机发起(云端 ComfyUI 场景下 DSH 机器与 ComfyUI 机器可能不同机,必须由 host 发起)。comfyui_inject_text:把一段文本写入某节点 widget;或新建一个源节点、填值、再连到目标输入——「对话文本作为独立可连线源」。是add_node + set_param + connect的一步封装;只改已有 widget 时set_param已够,inject_text用于「新建源并连线」。comfyui_export_api:把当前画布导出为 API 格式工作流 JSON(/prompt与 comfy-clirun_workflow所需格式),打通「画布 ↔ MCP」衔接——画布上调好图,导出后交 comfy-cli 无人值守批量跑。
架构边界:文件传输(图片→
input/)走 host + 原生 API;画布节点操作走桥接 command;读结果走原生/history+/view,三层不混。
画布驱动 vs MCP——两种操控 ComfyUI 的方式
本插件是画布驱动:它看到并编辑用户正在看的那张活画布(加节点、连线、改参数、运行,并用 comfyui_get_outputs 取回本次出图、用 comfyui_batch_run 扫参),无需保存工作流文件。
如果要做流水线/无人值守类的批量任务,ComfyUI 官方的 Comfy CLI(comfy-cli) 是与之互补的工具。它是一个独立的 Python CLI(通过 pip install comfy-cli 安装,也可对外暴露 MCP 服务器)——不是 DSH 插件,因此与本插件分开使用,而非挂进 DSH profile。它覆盖本画布插件刻意不重复实现的能力:
| 能力 | 本插件(画布) | ComfyUI CLI(comfy-cli) |
|---|---|---|
| 操作用户正在看的活画布 | ✅ | — |
| 直接运行已保存 / API 格式工作流文件 | ✅(经画布) | ✅(直接) |
| 批量排队 + 取回输出图 | ✅(batch_run + get_outputs) |
✅(run_workflow + fetch_outputs) |
| 官方工作流模板 | — | ✅(templates) |
| 模型下载 / 管理 | — | ✅(models) |
| 托管 / 付费模型(Flux、Veo…) | — | ✅(partner) |
| 图结构预检(validate / 依赖) | ✅(debug,本地) |
✅(validate,服务端) |
推荐分工:在画布上构建/调优工作流时用本插件;需要以相同图无人值守规模化执行(批量流水线、模板、模型管理、托管模型)时用 Comfy CLI。两者连的是同一个 ComfyUI 实例,可并存使用。安装 Comfy CLI:
pip install comfy-cli # 独立 CLI,非 DSH 插件 —— 见 https://github.com/Comfy-Org/comfy-cli
环境要求
- DeepSeek Harness Web(DSH),Node
^22.19.0 || >=24 - 运行中的 ComfyUI(默认本地
127.0.0.1:8188,云端需自行部署桥接节点并确保 DSH 可达),且已装桥接节点 - 浏览器打开过 ComfyUI 画布页(画布标签会自动加载)
开发
npm run check # node --check 校验 lib 两个文件
插件位于 DSH profile 的 node_modules/dsh-comfyui-canvas;lib/index.js 是 host 端工具、lib/client.js 是 web 端,改完重启 DSH 生效。
仓库结构
dsh-comfyui-canvas/
├── cordis.patch.yml # DSH bundle 加载层(自动挂载)
├── comfyui-bridge/ # ComfyUI 侧桥接节点(随仓库发布)
│ └── ComfyUI-DSH-Canvas/
│ ├── __init__.py # ComfyUI 服务端 /dsh-bridge/* 路由
│ └── entry/bridge.js # 注入画布前端:上报画布 + 执行命令
├── lib/
│ ├── index.js # DSH host:15 个画布工具 + 会话隔离模式
│ └── client.js # DSH web:画布标签 / 设置页 / 对话栏增强
├── LICENSE
├── README.md
├── README.zh.md # 本文档
└── package.json
桥接节点是唯一的 ComfyUI 侧依赖:它暴露 /dsh-bridge/workflow | report | command | result,并通过 app.registerExtension 注入画布页面;没有它 agent 工具就够不到画布。
已知问题
(当前无已知未决问题。此前"画布运行后节点预览不显示"已在 v0.1.1 修复:移除 iframe 的 referrerpolicy="no-referrer" 消除环境差异,并在 bridge.js 监听 ComfyUI executed 事件强制重绘画布。)
许可证
MIT
链接
同类插件
Tencent/WeKnora#dsh-weknora★ 21308
把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己带引用的 RAG 或 ReAct agent 回答(含可续聊的 session id)。
superdesigndev/treg★ 1158
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
anysearch-team/anysearch-dsh★ 399
基于 AnySearch 的实时网页与垂直搜索插件,为 DeepSeek Harness 提供搜索工具。
EthanYoQ/Invoice-Downloader#dsh-invoice-downloader★ 375
面向 DeepSeek Harness 的本地 IMAP 发票下载、OCR 识别、归档与 Excel 报销汇总。
omdsh-dev/dsh-data-agent★ 184
让 AI 帮你连数据库、写 SQL。
zhaoolee/notes#dsh-plugin★ 158
将 DSH 对话导出为锤子便签风格 PNG,或在配置的账号工作区中新建和更新 Markdown 便签。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。