dsh-tool-comfyui:在 DSH 对话里直接调用本机与局域网 ComfyUI 出图

前言

在 DeepSeek Harness(DSH)里做智能体时,若需要文生图,常见做法是切到 ComfyUI 界面手点,或自己拼 ComfyUI 的 HTTP API。ComfyUI 出图是两段式协议:先 POST /prompt 拿到 prompt_id,再轮询 /history/<id> 直到完成;对话里若只有通用 web_fetch,很难在「提交后等待 GPU 跑完」这一环上闭环。dsh-tool-comfyui 是社区维护的联网工具类插件,把探测机队、按模板出图、查队列三件事注册成 Agent 可调用的工具,装好后在 chat 里用自然语言即可驱动本机或局域网上的 ComfyUI 机队。

这是什么

  • 插件名称:dsh-tool-comfyui(GitHub:yuehancn/dsh-tool-comfyui)
  • 维护者:yuehancn
  • 分类:联网工具(SkillHub 目录页:https://www.skillhub.cn/plugins/yuehancn/dsh-tool-comfyui)
  • 定位:给 DSH 用的自建工具插件;在 dsh 里一句话直接调用本机/局域网的 ComfyUI 机队出图。
  • 兼容性:README 写明在 dsh 0.2.0-rc.2(preview)上构建与测试;apply(ctx) 插件规范稳定,若你使用更新版本 dsh,需自行核对。
  • 许可:MIT

插件以当前 dsh 进程权限运行,仅访问你在配置里填写的 workers[].url;安装或使用前建议阅读仓库源码与许可证,并确认 ComfyUI 暴露方式是否符合你的安全预期(ComfyUI 默认无鉴权)。

核心功能

装好并在 profile 里启用后,会注册三个模型可调用的工具:

工具 作用
comfyui_status 探测全机队:谁在线、ComfyUI 版本、显卡型号/显存、队列深度;顺带列出可用工作流模板
comfyui_generate 按命名工作流模板出图:提交 prompt → 等 GPU 跑完 → 把成图下载到本地,返回文件路径
comfyui_queue 查某台机器的运行/排队情况,或一键中断并清空队列

轮询是插件存在的理由:裸 web_fetch 做不到「提交后等待」,因此必须写成插件内的协作逻辑。

README 中的权限与隐私要点:网络仅连配置中的 worker 地址(默认常见为 127.0.0.1:8188 与局域网机器),不访问第三方服务;不需要 API key;prompt 发往你的 ComfyUI,成图写入 outputDir;插件不启动进程(仓库里的 start-comfyui-worker.bat 供素材机手动双击)。comfyui_queue 的 cancelAll 会中断并清空目标机器队列,属于破坏性操作,仅在明确需要时使用。

安装与启用

支持的 profile 包括 desktop(桌面版)与 web(Web 版);装完需重启对应 profile,三个工具才会出现。

一行安装(资料原文命令):

dsh plugin --profile desktop add github:yuehancn/dsh-tool-comfyui

将 desktop 换成你自己的 profile 名称。README 另注:若已发布到 npm,也可使用 dsh plugin --profile desktop add dsh-tool-comfyui(注释形式给出)。

启用 bundle 时需注意:bundles 里必须列出包名 dsh-tool-comfyui,dsh 才会读取其 dsh.bundle.patch;仅在 dependencies 里声明而不进 bundles 不算启用。手动开发安装路径与 cordis.patch.yml 示例见 GitHub README,本文不展开 git clone 流程。

配置机队

在 profile 的 cordis.patch.yml 中覆盖插件行,示例结构如下(路径与 IP 需按你的环境修改):

- id: tool-comfyui
  config:
    workers:
      - id: local5090
        url: http://127.0.0.1:8188
        label: RTX 5090D 主力机
      - id: spark5060
        url: http://192.168.11.109:8188
        label: 5060 Ti 素材机 A
    workflowsDir: <插件目录>/workflows
    outputDir: C:/Users/<你>/Pictures/comfyui
    defaultWorkflow: txt2img
    maxBatchSize: 8
    timeoutMs: 900000

加机器即在 workers 中追加一项。常用配置键包括:workers[](必填)、workflowsDir(默认 workflows)、defaultWorkflow(默认 txt2img)、timeoutMs(默认 600000)、pollIntervalMs(默认 2000)、outputDir(默认 comfyui-output)、maxBatchSize(默认 8),以及分别开关三个工具的 generate / status / queue(默认均为 true)。

素材机上若需被局域网内 dsh 调用,可将仓库中的 start-comfyui-worker.bat 拷到素材机后执行,例如只听本机或监听 0.0.0.0(README 给出 8188 lan 用法);脚本会先尝试结束 pminer.exe,避免 GPU 被占满导致出图极慢。

工作流模板

模板为 ComfyUI API 格式 JSON,放在 workflows/ 下,文件名即模板名(仓库自带 txt2img.json 等)。插件按节点 _meta.title 注入参数,例如 title 为 prompt / positive / 提示词 时写入 args.prompt,negative / 负面 写入 args.negativePrompt,seed 等写入 args.seed;带 batch_size 的节点可接 args.batchSize。只覆盖字面量输入,不改动被连线(link)的输入。新模板流程:在 ComfyUI 导出 API 格式 → 给 CLIPTextEncode 等节点改 title → 存为 workflows/<名>.json → 调用时指定 workflow="<名>"。

典型用法

在对话里直接说明意图即可,README 示例:

帮我出一张白底咖啡杯的电商图
→ 调 comfyui_generate(prompt="a white ceramic mug on pure white background, e-commerce catalog photo")

先看看素材机活着没
→ 调 comfyui_status

把 109 上排队的任务清掉
→ 调 comfyui_queue(worker="spark5060", cancelAll=true)

成图默认落在 outputDir 下带时间戳的子目录;README 示例路径形如 comfyui-output/2026-10-01T23-30-12-local5090/dsh_comfyui_00001_.png。

适用场景与注意

适合:已在本地或局域网部署 ComfyUI,希望在 DSH Agent 对话中完成「看机队状态 → 选 worker → 按模板出图 → 本地拿路径」闭环的开发者或小团队。

注意:

  1. 插件不替代 ComfyUI 本身的安装与模型资源管理;worker 必须已启动且 URL 可达(局域网场景 README 建议先测 TCP 端口,勿仅依赖 ping)。
  2. comfyui_status 全部 offline 时,常见原因是 ComfyUI 未起或素材机未用 lan 监听。
  3. README 在 RTX 5090D、SDXL 1024×1024、30 步下给出单张约 15.1 秒、批量 2 张约 16.7 秒的实测耗时;同 seed 两次输出字节一致。该数据来自维护者环境,你的硬件与 workflow 会不同。
  4. 社区插件目录(如 SkillHub)与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,选型时以仓库 README 与源码为准。

结尾

dsh-tool-comfyui 把 ComfyUI 的提交与轮询封装进三个工具,让 DSH 在 chat 内即可完成机队探测、模板出图与队列管理,且网络与文件写入边界在 README 中写清。若要安装或查配置细节,可看目录页与 GitHub 仓库:

  • 目录页:https://www.skillhub.cn/plugins/yuehancn/dsh-tool-comfyui
  • GitHub:https://github.com/yuehancn/dsh-tool-comfyui
羽毛球分组比赛记分
小程序二维码

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

Xiaoye