npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

dsh-comfyui-panel

v0.10.1

Published

The real ComfyUI editor inside the DeepSeek Harness Web UI. The model can read, edit, and run the workflow.

Readme

dsh-comfyui-panel

test license

English · 简体中文

在 DeepSeek Harness Web UI 里使用 ComfyUI:编辑器是独立的一页。右侧一列和拥有这张画布的会话对话。

目录

安装

在 DSH 中打开 设置 → 插件 → 发现 → 添加索引源,粘贴:

https://raw.githubusercontent.com/Natsubrei/dsh-comfyui-panel/main/market/index.json

安装 ComfyUI Panel 卡片。索引为每个版本钉住一个 commit,所以安装的一定是测试过的发布。plugin_market 工具读取同一个索引。

也可以从命令行安装:

dsh plugin --profile web add dsh-comfyui-panel

如果 DSH 已经在运行,重启它。bundle 变化后,浏览器需要强制刷新。

面板用的是这台机器上已有的 ComfyUI。还没有的话先装一个,官方几种装法见 docs.comfy.org/installation。

自己先把 ComfyUI 开起来就够了:只要它在 upstream 上应答,面板就会用上它。用自带 .bat 启动的便携版本来就监听在那里;桌面版监听自己的端口,要先把 upstream 指过去。 面板拿不到这个进程的归属时(Windows 上总是如此),它就是 external,没有 Stop, 因为进程不是面板启动的。

想让面板代管,就在 设置 里给它一个检出目录:手动安装是含 main.py、旁边有 .venv 的那层(Unix 上是 .venv/bin/python,Windows 上是 .venv/Scripts/python.exe); Windows 便携版选解压出来的那一层,面板会用里面的 ComfyUI 和 python_embeded。

使用

  1. 点左侧栏的 ComfyUI。编辑器占满中间主区,右侧是助手。
  2. 右侧一列把话发进这一页的会话。模型随后用下表里的工具改当前画布。
  3. 服务地址保持 http://127.0.0.1:8188,或在配置中改成别的地址。
  4. 服务没起来时,画布上是一张说明原因的卡片,并标出目录。画布底部的工具栏永远显示 启动、停止、设置 三个按钮,前两个在不适用时变灰。想让面板代管,就在 设置 里选目录(含 main.py 的那层,或便携版解压出来的那一层)。如果 comfy-cli 记录过工作目录,会填上那个;否则留空,等你选。随 DSH 启动 会被记住。已经在运行的服务会被直接用上,不会再启动一个。
  5. 等底部工具栏显示 运行中。在右侧说话。模型使用这一页的工具,包括发起运行。离开这一页后,需要编辑器在场的工具会失败。新建 会让这一页换一个会话,原来的会话和记录都还在。收起右栏后,画布右缘有一条标签,点它展开。

还没有 ComfyUI:运行 node test/mock-comfyui.mjs,在左侧栏打开 ComfyUI,等底部工具栏显示 运行中。mock 是单节点图,comfyui_run 返回 p1。在真正的 ComfyUI 使用 8188 端口前,先停掉 mock。

贡献者运行 npm test 和 npm run typecheck。覆盖范围见 CONTRIBUTING.md。

能力

工具只出现在已经同步过工作流的会话上。Host 重启后,已持久化的会话会重新获得工具。新会话在第一次同步时获得。

Panel 列的 需打开 表示该会话必须打开面板,可关闭 表示面板可以关着。

面板

| 能力 | 你得到什么 | | --- | --- | | 编辑器 | 在 /comfyui/ 提供真实的 ComfyUI 前端,走已认证的 HTTP 和 WebSocket。同源 iframe 保留第三方节点的界面。面板不使用 DSH 主题变量。自定义节点界面以 DSH 页面的身份运行,见 SECURITY.md。 | | 桥接 | window.comfyAPI.app.app 出现后,页面打开时大约每秒同步一次:UI 工作流、只读投影,以及 graphToPrompt() 给出的 API 提示。UI 工作流是权威图。编辑器事件(execution_start、executing、progress、executed、成功、错误、中断和队列状态)经编辑器自己的 socket 转发,运行就发往这个 socket。面板不再单独开一个 ComfyUI socket。 | | 摘要行 | 一行,例如 ComfyUI: rev 14 · "deepseek-chan-emoji" · 9 nodes · 9 links · selected 7 · panel open.。只有图有名字时才出现名称。打开多个标签时附加数量和当前标签。缩放、平移和改变面板大小不会增加 rev。 | | 名称 | 保存或加载具名工作流会给会话命名,摘要行里也会出现这个名字。当 ComfyUI 用户数据中存在 <name>.json 时,编辑器标签也改成同名。 | | 存储 | 域 dsh_comfyui。Host 重启不丢图。记录为 sessionId -> { workflow, prompt, semantic, revision, name, nameSource },保留最近更新的 20 个会话。nameSource 是 file 或 tool。模型看到的是投影和它自己的编辑结果。存储失败时退回内存,不阻塞桥接。具名工作流放在 workflows 表。 | | 进程 | 启动 和 停止 控制 ComfyUI。命令由检出目录推导(Unix 上是 .venv/bin/python,Windows 上是 .venv/Scripts/python.exe,便携版是旁边的 python_embeded/python.exe,否则用 python3 或 python),参数来自上游端口,不接受任意命令。目录和 随 DSH 启动 存在 dsh_comfyui 中,不写入 DSH profile。 |

模型工具

| 工具 | 作用 | 面板 | | --- | --- | --- | | comfyui_status | 上游、面板、工作流摘要、存储、进程管理和最近一次运行。diagnostics 每层一行(upstream、frontend、panel、commandChannel、storage、supervisor、workflow),带 ok、一句话 detail,需要下一步时带 action。warn: true 且 ok: true 表示能用但降级,例如前端版本未上报。 | 可关闭 | | comfyui_graph_read | 每个节点给出 id、type、title、mode、widgets(name -> value)和 inputs(name -> "<sourceNodeId>:<slot>")。layout=true 附加画布框和重叠判定。full=true 附加原始 UI 工作流和 API 提示。 | 可关闭 | | comfyui_run | 提交已同步的 API 提示并返回 prompt_id。调用返回后 Host 继续跟踪这次运行,无论面板开不开。输出的 PNG 带 UI 工作流,拖回 ComfyUI 可恢复图。wait=true 返回最多四张 type: 'output' 图片,每张 20 MB。没有附件服务,或模型路由不接受图片时,结果改为列出文件名。 | 可关闭 | | comfyui_cancel | 移除排队中的提示(action: "deleted")或中断正在运行的提示(action: "interrupted")。已经结束的提示是空操作。把输出文件复制到指定路径还不是工具。 | 可关闭 | | comfyui_progress | 面板事件(当前节点、步骤进度、错误)、运行记录、实时 /queue,以及 hostRun(终态和输出文件名)。面板关闭后 hostRun 继续,步骤进度不继续。 | 可关闭 | | comfyui_edit | 在一个有序批次里增删、移动、重连节点并设置控件值。结果带回剩下的节点和连线数,所以只应用了一半的编辑看得见。它不校验图的语义,由 ComfyUI 在转成提示时拒绝错误编辑。 | 需打开 | | comfyui_screenshot | 把编辑器画布写成 PNG 并返回路径。用 read_image 打开。 | 需打开 | | comfyui_node_info | 缓存的 /object_info 查询,用于类类型和输入名。 | 可关闭 | | comfyui_workflow_save | 按名称保存已同步的工作流。同名会覆盖该槽位。没有合并、撤销或逐槽位历史。 | 可关闭 | | comfyui_workflow_list | 已保存的槽位(节点和连线数、写入时间),加上 ComfyUI 用户 workflows/ 目录里的 .json 文件(大小、修改时间)。source 为 slot 或 comfyui。当前会话正在编辑的槽位会被标出。ComfyUI 读取失败时保留槽位并给出 warning。 | 可关闭 | | comfyui_workflow_load | 用已保存的槽位或 ComfyUI 用户工作流替换打开的图,然后同步。同名时槽位优先,除非 source 指明用哪个。 | 需打开 | | comfyui_workflow_export | 从已保存的槽位或会话的图写出一份 UI 工作流 JSON。路径必须在会话工作区内。 | 可关闭 | | comfyui_workflow_import | 把 UI 工作流 JSON 读入一个槽位。路径必须在会话工作区内。 | 可关闭 | | comfyui_workflow_switch | 按 name 切换到另一个已打开的标签;两个标签同名时用 path。该标签未保存的编辑会保留。 | 需打开 | | comfyui_workflow_close | 关闭一个已打开的标签。要求 confirm: true,并假定用户已经要求关闭。有未保存内容的文件标签会打开 ComfyUI 自己的保存对话框。有未保存内容的临时标签会被拒绝关闭。 | 需打开 |

comfyui_workflow_save、comfyui_workflow_list、comfyui_workflow_export 和 comfyui_workflow_import 只在该会话已经同步或恢复过工作流之后,才能在面板关闭时使用。

配置

默认上游是 http://127.0.0.1:8188。优先使用回环地址。要改地址,在 profile 的 cordis.patch.yml 里按同一个 id 覆盖本插件的行。补丁会替换整个 config,所以要重复写 prefix。prefix 固定为 /comfyui,其他值会让插件加载失败。

- insert:
    - id: dsh-comfyui-panel
      name: dsh-comfyui-panel
      config:
        upstream: http://127.0.0.1:8188
        prefix: /comfyui

代理会去掉 DSH 会话 cookie(dsh-auth-…),其他 cookie 和 Authorization 仍会转发。upstream 只指向你信任的服务。见 SECURITY.md。

从面板启动 ComfyUI 不需要 profile 配置。插件行上的 supervise 块会在启动时覆盖面板的设置。字段、必填的 cwd 和默认值见 docs/supervise.md。

要求

  • ComfyUI 的前端是标准 comfyui-frontend-package 构建(相对路径 ./assets/...,api_base 由路径推导)。面板最后在 1.57.1 上验证。上报其他版本时显示提示,仍然加载。不上报版本的服务不做处理。
  • 面板使用 window.comfyAPI.app.app,这是兼容层,不是稳定 API。实际用到的成员和升级后如何复查见 docs/comfyui-bridge.md。
  • DSH Web profile 挂载了 storage、storage-json 和 storage-domain。默认 profile 有。缺少时工作流只存在内存中。
  • 接管已在运行的 ComfyUI(这样刷新后 停止 仍可用)需要 Linux 的 /proc 或 lsof。两者都没有时,该服务保持 external。从面板启动一个不需要这两者。面板或 comfyui_status 看到健康的上游时会重试接管。工作目录不是所配置检出目录的监听者保持 external,会报告 pid,且不能停止。Windows 可以从面板启动检出或便携版,那里已在运行的服务保持 external。

限制

  • ComfyUI 用户工作流通过 /userdata 从 workflows/ 读取,每次加载一个 JSON 文件。名称是 workflows/ 下的路径去掉 .json,所以区分大小写,子目录会留在名称里。只列出 .json 文件。插件从不写入或移动这些文件。加载一个只改变面板画布。
  • 预览、逐节点进度、耗时和工具栏上的 取消 只在面板挂载期间存在。Queue 按钮发起的运行从第一个执行事件起获得 hostRun 跟踪。面板挂载前就开始的运行没有 hostRun,也没有步骤进度。Host 在 30 分钟后停止跟踪并报告 lost,含义是没观察到结束,不是运行失败。
  • 插件只是接管的 ComfyUI 在插件卸载后继续运行。那个进程不是插件启动的,重载后插件也分不清它是自己的幸存进程还是你手动启动的。要关掉它,先在面板里停止。插件自己启动的子进程会在卸载时停止。
  • 进程管理器分不清卡死的 ComfyUI 和长时间生成、暂时不回应 /system_stats 的 ComfyUI。健康重启要按工作负载调整。

许可证

MIT。