duddy
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| COMFY_URL | Yes | The URL of the ComfyUI server, for example http://127.0.0.1:8188. | |
| DUDDY_REQUIRE_APPROVAL | No | Set to 1 to enable manual approval mode, where plan steps require frontend approval before execution. Default auto mode runs automatically after the plan is submitted. | 0 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
duddy-comfyui:在用户画布上操作 ComfyUI 工作流。 铁律:任何画布改动都必须先 duddy_plan_workflow 让用户批准,再用 duddy_apply_step 一次一步执行。绝不直接提交 workflow 或批量推送。
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| duddy_pingA | 检查 duddy 扩展是否在线。第一次接触 ComfyUI 时先调这个,能立刻区分「ComfyUI 没开」和「扩展没装」两种故障。 |
| duddy_plan_workflowA | 【第一步·只规划,绝不动手】把你想在画布上做的事写成一个分步计划,推送给用户的 ComfyUI 界面,等待用户点击「同意」。 硬性要求: · 每个 step 只做一件事,粒度要细(一个节点一步、一条连线一步) · create_node 必须给 ref 别名,后续 connect/set_widget 用别名引用,不要猜 node_id · connect 用 from_ref/from_slot → to_ref/to_slot · 每步给 title(人类可读)和 why(为什么需要这一步) 调用后你会拿到 plan_id 和 state=proposed。此时什么都不会发生,直到用户在弹窗里点同意。 直接把 narration 字段念给用户听,然后停下来等。 |
| duddy_plan_statusA | 查某个计划的状态与进度。执行每一步之前都应该先看一眼,确认 state 是 approved 或 applying,以及 cursor 指向第几步。 |
| duddy_apply_stepA | 【第二步·逐个动手】执行计划的下一步,一次只走一步。 前置条件:用户已经在 ComfyUI 弹窗里点了「同意」,plan.state == approved/applying。 如果返回 403 not_approved,说明用户还没批准。此时你必须停下来,告诉用户「请在弹出的窗口里点同意」,然后等待。 严禁尝试其它方式绕过(直接 POST /prompt、写 workflow 文件、批量推送都不行)。 返回里会告诉你这一步建了/连了什么、真实 node_id、剩余步数。把结果用一句话回报给用户,再决定要不要继续下一步。 |
| duddy_list_plansB | 列出最近的计划及其状态。用户问「刚才那个计划呢」时用。 |
| duddy_abort_planB | 中止一个尚未完成或已失败的流程。用户说「停」时立刻调。 |
| duddy_canvas_stateA | 读取用户当前画布的快照(节点数、连线数、完整 graph)。规划前先看一眼现有画布,避免重复建节点或位置重叠。 |
| duddy_eventsB | 最近的事件流,排查「为什么没反应」时用(弹窗没弹、前端没回报等)。 |
| duddy_search_nodesA | 搜索这台机器上真实存在的节点类型。【规划前必查】不要凭记忆写节点名,先搜一下确认它真的装了。 |
| duddy_node_infoA | 查某个节点类型的完整定义:需要哪些输入、有哪些 widget、可选值是什么、输出什么。写 widgets 之前必须查,否则参数名写错会直接失败。 |
| duddy_list_modelsA | 列出模型文件。不带 folder 时返回所有模型目录名;带 folder 返回该目录下的文件名。写死模型名之前查一下,避免文件不存在。 |
| duddy_precheck_planA | 只检查不执行:把计划丢进来,看它在这台机器上跑不跑得通(节点在不在、参数名对不对、模型文件有没有)。不确定的活儿先 precheck 一下,比失败后再回滚便宜。 |
| duddy_run_statusA | 当前跑到哪一步了:哪个节点、第几步/共几步、已完成哪些、预计还要多久、有没有报错。用户问「跑到哪了」或你想确认任务是否结束时调。 |
| duddy_get_logsA | 读 ComfyUI 的运行日志(包含节点里的 print)。出图报错、加载失败、卡住不动时,先看日志再猜原因。 |
| duddy_fs_changesA | 最近哪些文件变了:新增/修改/删除了哪些模型、插件、工作流。用户说「我刚装了个节点」或者怀疑文件被改时用。 |
| duddy_rollback_planA | 把某个计划已经做过的建节点/连线动作撤销掉。执行到一半失败、或者用户说「撤了重来」时用。注意:删除节点和改参数无法撤销,只有新建的能撤。 |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 16 tools
Most tools have clearly distinct purposes across discovery, planning, execution, and diagnostics. There is minor overlap between duddy_plan_status and duddy_run_status, and among duddy_events, duddy_get_logs, and duddy_fs_changes for troubleshooting, but the descriptions provide enough context to distinguish them.
All tools share the duddy_ prefix and snake_case formatting, making the set predictable. Most names follow a verb_noun pattern, though a few are noun phrases such as duddy_events, duddy_node_info, duddy_canvas_state, duddy_run_status, and duddy_fs_changes.
At 16 tools, the set is slightly above the typical 3-15 range but remains well-scoped for a workflow planning and execution server. Each tool maps to a distinct phase such as discovery, planning, approval, execution, rollback, or diagnostics, so the count does not feel bloated.
The surface covers the full lifecycle: node/model discovery, plan creation, prechecking, approval status, step execution, run status, abort, rollback, and diagnostic logs/events. The documented rollback limitation is a known constraint rather than an obvious missing operation.