前言¶
在 DeepSeek Harness(DSH)里接本地生图,常见有两种做法:要么让 ComfyUI 一直开着,内存和显存常年占着;要么每次用手动启动,第一次调用 generate_image 往往失败,再切窗口、等几十秒重试。两种都不理想。
下面介绍社区插件 dsh-comfyui-supervisor(维护者 nizhouding-tech),把 ComfyUI 的生命周期做成显式、可自动化的流程:需要时再启动,空闲一段时间后退出。插件本身在 DSH 冷启动时不发网络请求、不拉起进程,不影响 Harness 启动速度。
这是什么¶
dsh-comfyui-supervisor 是打包为 DSH 插件的 ComfyUI 监管工具:启动阶段什么都不做,通过三个工具按需管理本机 ComfyUI 服务。当前版本 0.1.0,许可证 MIT。归类为工作流类插件;源码与说明见 GitHub 仓库,目录页见 SkillHub。
非官方社区工具,与 ComfyUI、DeepSeek 或 AMD 无隶属关系。
核心功能¶
插件向智能体暴露三个工具,职责如下。
| 工具 | 作用 |
|---|---|
comfyui_status |
查询 ComfyUI 是否在运行、使用哪块设备、当前实例是否由本插件管理,以及 VRAM、版本等信息 |
comfyui_start |
确保 ComfyUI 运行:先探测,必要时拉起独立 supervisor 进程并等待就绪 |
comfyui_stop |
停止服务并释放内存/显存;默认只结束本插件拉起的实例,除非传入 force=true |
内置 supervisor 位于 assets/supervise.cjs(无额外依赖):在使用期间维持进程树,空闲超过配置的分钟数后结束 ComfyUI,并清理状态文件。
安装与启用¶
环境要求:DSH 0.2.x、Node 22+。进程树结束依赖 Windows 的 taskkill(探测与启动路径可移植,但当前完整生命周期管理以 Windows 为准)。
安装请使用 README 中的 tarball 地址,勿依赖 github:user/repo 简写(在 pnpm 下可能解析为 git+ssh:// 且无 SSH 密钥时会失败):
# 推荐:GitHub tarball(无需 npm 账号与 SSH 密钥)
dsh plugin --profile web add https://github.com/nizhouding-tech/dsh-comfyui-supervisor/archive/refs/heads/main.tar.gz
# 固定到 v0.1.0 发布包
dsh plugin --profile web add https://github.com/nizhouding-tech/dsh-comfyui-supervisor/archive/refs/tags/v0.1.0.tar.gz
若坚持使用 github: 简写,可先执行 pnpm config set git-protocol https。安装完成后 重启 DSH 一次,三个工具会出现在工具表中。
配置¶
在已安装插件条目的 cordis.patch.yml 中可调整 ComfyUI 地址、安装路径与超时,示例片段如下:
- insert:
- id: comfyui-supervisor
name: dsh-comfyui-supervisor
config:
baseUrl: http://127.0.0.1:8188
comfyRoot: D:\ComfyUI
idleTimeoutMinutes: 30
startTimeoutSeconds: 300
| 字段 | 默认值 | 含义 |
|---|---|---|
baseUrl |
http://127.0.0.1:8188 |
用于探测的 ComfyUI 端点 |
comfyRoot |
D:\ComfyUI |
ComfyUI_windows_portable 与 logs/ 所在目录 |
idleTimeoutMinutes |
30 |
无生成任务空闲超过该分钟数后结束 ComfyUI |
startTimeoutSeconds |
300 |
comfyui_start 等待就绪的最长时间 |
典型用法与工作方式¶
智能体侧可按「先看状态 → 需要则启动 → 再用生图类插件 → 空闲自动退出或主动 stop」使用,README 在真实 DSH 工具接口下验证了 status → start → status → stop 链路。
comfyui_start 大致流程:
- 请求
GET /system_stats,若已就绪则直接返回。 - 否则执行
node assets/supervise.cjs,写入.supervisor.lock(单实例)与.supervisor.state(进程信息),启动 ComfyUI 并等待/system_stats。 - 每 15 秒轮询
/queue与/history;空闲超过idleTimeoutMinutes后taskkill /T /F,删除状态文件并退出。
comfyui_status 通过状态文件判断运行中的实例是否 managed;comfyui_stop 对非本插件启动的实例默认拒绝结束,除非 force: true。
作者在 Windows 11 上实测(ComfyUI 0.44.0):冷启动 comfyui_start 约 10 秒 就绪;comfyui_stop 可释放 VRAM;将空闲超时设为 1 分钟测试时,可在 1 分钟后清理进程与锁文件;无进程时 comfyui_stop 为 no-op(changed=false)。你的硬件与版本不同,耗时会变化,以上仅作行为参考。
适用场景与注意¶
适合谁:在本机用 DSH 接 ComfyUI 生图、又不想常驻占显存,或希望智能体在首次生图前自动拉起服务的开发者。
使用前请知悉:
- 插件以 当前 DSH 进程权限 运行;安装前建议阅读仓库源码与 MIT 许可证,确认路径与停止逻辑符合你的环境。
- Linux / macOS 上进程树结束尚未实现(roadmap 中为 TODO);非 Windows 用户需自行评估或等待后续版本。
- 社区目录站点与 DeepSeek / 幻方无官方从属关系,安装来源以 GitHub README 为准。
局限与规划:计划支持由单一插件统一注入 lifecycle 服务;npm 发布待定,当前以 GitHub tarball 安装即可。
结尾¶
dsh-comfyui-supervisor 把「ComfyUI 常开」和「每次手启」两条路折成按需启动、空闲退出,减轻本地生图工作流里的资源与操作成本。更多信息见 SkillHub 目录页 与 GitHub 仓库。问题可联系维护者(README 中列有邮箱与 GitHub)。