dsh-plugin-comfyui:让 DSH 对话走本机 ComfyUI 完成文生图

前言

在 DeepSeek Harness(dsh)里接大模型对话时,用户常会直接说「画一张……」「生成一张……的图」。纯文本模型默认会回答无法生成图片,这和「在 Harness 里完成一次真实出图」不是同一条路:前者是拒答,后者需要本机或可达的 ComfyUI 服务、HTTP API、以及把结果写回会话并作为附件展示。

dsh-plugin-comfyui(维护者 Making-acid,GitHub:Making-acid/dsh-plugin-comfyui)是社区 DSH bundle,分类为模型推理。它在系统提示词里增加「本地图像生成能力」策略,并提供 comfyui_status、comfyui_start、comfyui_generate 三个工具:查找或启动本机 ComfyUI、执行文生图,并把图片附回对话。插件已收录 awesome-dsh-plugin(dsh-market 目录来源之一);社区插件目录与 DeepSeek / 幻方无官方从属关系。

下面介绍插件定位、能力、安装与配置,以及使用时的注意点。

这是什么

一句话:dsh-plugin-comfyui 让 Harness 在本机(或配置的远程地址)连接 ComfyUI,把聊天里的生图请求变成真实图片,保存到会话工作区并在对话中显示附件。

没有插件时,模型面对生图请求往往直接拒绝。装上之后:

  1. 系统提示词明确规定生图请求必须走 ComfyUI;
  2. 模型通过三个工具探测服务、必要时启动、再生成;
  3. 插件自动发现本机 ComfyUI 安装目录(portable 或源码版),首次自动启动成功后可把路径写回配置;
  4. 生成结果默认落在会话工作区 comfyui-output/,并作为对话附件。

实现上仅使用 Node 内置模块(fetch、fs、child_process),无第三方 npm 依赖,无需构建步骤。ComfyUI 以 detached 方式启动,会话结束或卸载插件不会关闭用户已在跑的 ComfyUI。

核心功能

三个模型工具

工具 作用
comfyui_status 查服务是否运行、版本、GPU 显存、队列、安装目录、checkpoint/LoRA 清单、采样器与默认参数,并给出下一步建议
comfyui_start 启动本机 ComfyUI 并等待就绪;可用 install_dir 指定目录(成功后会被记住);已运行则返回状态
comfyui_generate 文生图:prompt 必填;可选尺寸、步数、CFG、采样器、scheduler、seed、张数、checkpoint、LoRA;服务未运行且允许自动启动时会拉起;完成后图片附回对话并返回可复现参数

comfyui_generate 返回的 checkpoint、尺寸、steps、CFG、sampler/scheduler、seed、保存路径等,足以复现或微调同一张图。

典型对话流程

用户例如说「画一张雨夜霓虹街景」时,大致路径为:

模型读到「本地图像生成能力」策略
  → comfyui_status   探测 /system_stats、/queue、模型清单、安装目录
  → comfyui_start    未运行时:发现安装目录 → detached 启动 → 轮询就绪
  → comfyui_generate 校验模型与采样器 → POST /prompt → 轮询 /history
                     → GET /view 下载 → 写入工作区 + 对话附件
  → 模型汇报:图片已附上、保存路径、完整可复现参数

工具调用被中断时,插件会尽力 POST /queue {delete} 与 POST /interrupt 取消队列。ComfyUI 的 execution_error、被拒绝的 prompt、启动失败日志尾部会被翻译成模型可执行的信息。

安装发现与连接

ComfyUI 可放在任意目录:插件会在 AIpainting、ComfyUI、用户主目录、桌面、下载等常见位置搜索,也可在配置里写死 installDir,或通过 searchDirs 追加路径。

baseUrl 指向非本机地址时只连接与生成,不代启动;本机地址在 autoStart: true 时可在生图前自动拉起服务。已在 ComfyUI v0.34.0 上验证;至少需要一个 checkpoint 放在 ComfyUI/models/checkpoints(例如 SDXL / Illustrious 系)。

安装与前置条件

插件是标准 DSH bundle(package.json 声明 dsh.bundle.patch)。安装命令以仓库 README 为准:

# 已发布到 npm 时(市场一键安装走这条路)
dsh plugin --profile desktop add dsh-plugin-comfyui

# 或从本地路径安装(开发常用)
dsh plugin --profile desktop add link:/path/to/dsh-plugin-comfyui

DSH 桌面端也可用插件管理器的「安装本地 bundle」,或插件市场的一键安装卡片。安装后一般无需重启;若安装时 ComfyUI 未运行,第一次生图可按配置自动拉起。

依赖 说明
DSH 核心 >=0.2.0-rc.1 <0.3.0-0(插件在 0.2.0-rc.2 上验证)
Node >=20
ComfyUI 本机 portable(ComfyUI/ + python_embeded/)或源码版;README 在 v0.34.0 验证
模型 至少一个 checkpoint 于 ComfyUI/models/checkpoints

当前 npm 包版本为 1.0.0,许可证 MIT。

配置

配置写在 profile 的 cordis.patch.yml 里(bundle 自带默认值,字段均可选)。最小示例:

- id: comfyui
  name: dsh-plugin-comfyui
  config:
    baseUrl: http://127.0.0.1:8188
    autoStart: true

常用字段摘要:

字段 默认值 说明
baseUrl http://127.0.0.1:8188 ComfyUI HTTP API;远程地址不代启动
autoStart true 生图时服务未运行是否自动启动
installDir 空 指定安装根或其中的 ComfyUI 文件夹;空则自动查找
checkpoint 空 默认 checkpoint;空则用服务返回的第一个
sampler / scheduler dpmpp_2m / karras 默认采样器与调度器
steps / cfg 28 / 5 默认步数与 CFG
width / height 1024 / 1024 默认尺寸(生成时对齐到 8 的倍数)
generationTimeoutSeconds 900 单次生成等待上限
startTimeoutSeconds 180 等待服务启动上限
maxImages 4 单次张数上限
outputDir 空 空则 <会话工作区>/comfyui-output
persistDiscovery true 自动发现的安装目录是否写回配置
extraLaunchArgs [] 例如 ["--lowvram"]
pythonPath 空 源码版 ComfyUI 的 Python(portable 忽略)

换端口时修改 baseUrl 即可;插件会按新地址连接,本机场景下也可按新端口启动。

典型用法与自行验证

日常用法:在已安装插件的 DSH 桌面 profile 中,用自然语言描述画面即可,例如「画一张橘猫在窗台上」或「生成雨夜霓虹街景」;模型应按策略调用工具链,最终在对话里看到附件,并在工作区 comfyui-output/(或你配置的 outputDir)找到文件。

维护者在 README 中给出的仓库内验证命令(需本机 ComfyUI 可运行或可被插件拉起):

node scripts/smoke.mjs
node scripts/test-attachments.mjs

README 还记录了 Windows / RTX 5070 Laptop 8 GB / ComfyUI v0.34.0 等环境下的实测项(如 comfyui_start 约 11.1 秒就绪、832×1216 / 24 steps 约 26.2 秒出图等),可作为性能预期参考,而非对所有硬件的承诺。

适用场景与注意

适合谁: 已在本地安装 ComfyUI 和 checkpoint、希望在 DSH 对话里用同一套 Stable Diffusion 工作流出图,且希望模型不要再用「我不能生图」搪塞的用户或集成开发者。

权限与安全: 插件随当前 dsh 进程权限运行,会启动子进程、读写会话工作区、访问配置的 ComfyUI API。安装前应阅读仓库源码与 MIT 许可证,确认 baseUrl、installDir 等配置符合你的环境策略。

常见问题(来自 README):

  • 没有可用 checkpoint:将 .safetensors 放入 <ComfyUI>/models/checkpoints,必要时重启 ComfyUI。
  • 写 output 报 Permission denied:可手动先启动 ComfyUI 再生成,或检查沙箱/杀软对 ComfyUI 进程的限制。
  • 显存不足或很慢:降低尺寸与步数,或在 extraLaunchArgs 中加 ["--lowvram"]。
  • 服务连不上:先看 comfyui_status 的 serverError,再查端口占用。

结尾

dsh-plugin-comfyui 把 Harness 里的生图请求接到本机 ComfyUI:自动发现或启动服务、走标准 HTTP API 完成文生图,并把 PNG 等结果附在对话里,同时保留可复现参数。它是社区模型推理类插件,通过 dsh plugin add 或市场安装即可接入 DSH 的 Cordis 插件体系。

  • 插件目录页:https://www.skillhub.cn/plugins/Making-acid/dsh-plugin-comfyui
  • 源码与完整说明:https://github.com/Making-acid/dsh-plugin-comfyui
羽毛球分组比赛记分
小程序二维码

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

Xiaoye