先确认输入输出再谈自动化——Comfy Agent 接管工作流前的检查

文章导读
让 Comfy Agent 接管工作流之前,先把两件事固定下来:哪些参数从外部进入工作流,哪些结果从工作流离开。自动化最容易出问题的位置通常不是 Agent 本身,而是边界没定义清楚——Agent 改写了一个你没打算授权的采样参数,或者把输出写到另一个目录,事后只能从结果反推原因。下面的检查顺序按“先边界、再权限、后验证”推进,每一步都能用配置、日志或命令行核对,不需要额外工具。
📋 目录
  1. 一 列出工作流输入节点和输出节点
  2. 二 标记 Comfy Agent 可读写的参数范围
  3. 三 用最小工作流测试 Agent 改动前后输出
  4. 四 在控制台记录接管失败的返回信息
  5. 五 把检查项落成通用配置模板
A A

让 Comfy Agent 接管工作流之前,先把两件事固定下来:哪些参数从外部进入工作流,哪些结果从工作流离开。自动化最容易出问题的位置通常不是 Agent 本身,而是边界没定义清楚——Agent 改写了一个你没打算授权的采样参数,或者把输出写到另一个目录,事后只能从结果反推原因。下面的检查顺序按“先边界、再权限、后验证”推进,每一步都能用配置、日志或命令行核对,不需要额外工具。

接管前的最小可行做法:先列出工作流的输入节点、参数名、默认值和输出落盘位置,再把参数分成只读、可改、禁止改三类并落成配置,然后用最小工作流跑出改动前基线,让 Comfy Agent 介入后对比输出文件。凡是无法在配置或日志里看到授权依据的参数,建议一律按禁止改处理;接管失败的页面提示和控制台文本要原样保留,便于回溯是哪一步被拦下。

列出工作流输入节点和输出节点

这一步的目标是让工作流边界可枚举。在 Comfy 界面里逐个点开节点,判断哪些节点的值来自工作流外部(提示词、图片路径、尺寸、随机种子、模型名称),哪些节点产出的结果需要离开工作流(图片、蒙版、文本、JSON)。两类节点分开记,不要混在同一张表里。

输入侧记录建议包含四列:节点名称(界面里显示的标题)、参数名(配置里真正的键名)、默认值(当前跑通时的值)、来源(外部文件、外部文本还是外部数值)。示例格式如下:

# inputs.txt —— 输入节点清单
节点名称             参数名      默认值              来源
Load Image           image     ./in/base.png       外部文件
CLIP Text Encode     text      a cat, studio       外部文本
Empty Latent Image   width     768                 外部数值
Empty Latent Image   height    768                 外部数值
KSampler             seed      123456789           外部数值

输出侧同样列一份,并确认落盘位置是绝对路径还是相对工作流目录,这两者在接管后容易混淆:

# outputs.txt —— 输出节点清单
节点名称        输出类型   落盘位置          命名规则
Save Image      image     /data/out/        ComfyUI_%05d.png
Preview Image   image     仅界面预览,不落盘   -

如果某个参数在界面上可见却没有进清单,说明它还处在“隐式输入”状态,接管时会变成不可控变量。需要结合环境确认后,再决定是把它补进清单,还是把对应节点排除在接管范围外。

标记 Comfy Agent 可读写的参数范围

权限划分按实际界面或配置里能看到的能力来定,看不到的权限项不要凭想象补。分三类:只读(Agent 只能读取当前值用于判断)、可改(允许写入)、禁止改(写入即拦截,避免破坏可复现性)。种子、模型文件名、输出目录通常建议归入禁止改或只读;提示词、尺寸这类在明确范围内的参数可以放进可改。

先确认输入输出再谈自动化——Comfy Agent 接管工作流前的检查
# agent_scope.txt —— 按实际可见权限填写,不确定的留空并归入禁止改
参数路径                            读    写    归属
KSampler.seed                       yes   no    禁止改(影响复现)
CheckpointLoader.ckpt_name          yes   no    禁止改(换模型等于换工作流)
CLIPTextEncode.text                 yes   yes   可改(需长度上限)
EmptyLatentImage.width              yes   yes   可改(需枚举允许值)
EmptyLatentImage.height             yes   yes   可改(需枚举允许值)
SaveImage.filename_prefix           yes   no    只读(用作对账依据)

填表时逐项问三个问题:Agent 是否能读到当前值;写入后是否影响输出对账;写错时能否通过重跑恢复。第三个问题答“不能”的参数,建议直接归入禁止改。可改参数同时写下允许范围,例如尺寸只允许在已经跑通的一组值里选择,而不是给一个连续区间。

权限表在接管前后各核对一次。接管后如果发现某个参数被写入、而表里没有登记,说明范围定义存在漏项,先把它补成禁止改,再继续下一步。

用最小工作流测试 Agent 改动前后输出

用一个节点少、耗时短的最小工作流做基线,而不是直接拿正式工作流试。步骤是:保存当前工作流,跑一次并记录输出文件的校验值;然后让 Comfy Agent 介入同一份工作流,用同一组输入再跑一次,对比两次输出。

# 1. 固化基线
cp workflow.json workflow.baseline.json
sha256sum /data/out/*.png > baseline.sha256

# 2. 让 Comfy Agent 接管后再跑一次

# 3. 对比
sha256sum /data/out/*.png > after-agent.sha256
diff baseline.sha256 after-agent.sha256
diff -r /data/out/ /data/out-baseline/

对比时区分三种情况:校验值一致,说明输出可复现,改动没有触及影响结果的参数;校验值不同但没有任何节点报错,需要先排查随机种子和采样相关参数是否被写入;文件缺失或落到另一目录,属于输出边界被改动,应回到权限表收紧写入范围。图片类输出受编码细节影响可能存在非语义差异,可以先看尺寸、节点名称和落盘路径是否一致,再决定是否深究像素差异。

先确认输入输出再谈自动化——Comfy Agent 接管工作流前的检查

基线工作流文件要留在版本控制或备份目录里,接管出问题时能直接回退到未接管的版本。

在控制台记录接管失败的返回信息

失败时的返回信息是回溯的唯一依据,建议在 Comfy 启动终端和 Agent 侧同时留存。需要记录的至少有三类:拒绝执行(被权限表拦下)、参数越界(值超出允许范围)、节点缺失(工作流里找不到目标节点)。页面弹出的提示和控制台文本往往不完全一样,两边都要留。

# agent_run.log 记录模板
时间        类型      目标                     原始信息(原样粘贴)                 处理
T+00:01:20  拒绝执行   KSampler.seed            write denied: read-only param       保持在禁止改
T+00:02:05  参数越界   EmptyLatentImage.width   value 1920 out of allowed set       收紧允许值
T+00:03:41  节点缺失   Upscale Image            node not found in workflow          确认节点是否被删除

记录时不要改写原始提示文本,也不要只写“失败了”。如果某类失败反复出现,可以在权限表里加注释说明原因,下次接管前先看这张表。控制台文本过长时,保留包含参数名和值的那一行即可,但要保证能对应到具体节点。

把检查项落成通用配置模板

把前面四步固化成一份可复用的检查骨架,字段留空,接管前逐项填写。模板只定义结构和验证动作,不绑定任何具体接口或版本功能,换工作流时按实际界面和配置替换字段值即可。

# preflight_check.template
workflow_file:        # 基线工作流文件路径
input_nodes:          # 节点名称 + 参数名 + 默认值,逐一列出
output_nodes:         # 节点名称 + 落盘位置 + 命名规则
readable_params:      # Agent 只读的参数路径
writable_params:      # 可改的参数路径,逐项标注允许范围
blocked_params:       # 禁止改写的参数路径
baseline_hash:        # 改动前输出文件的校验记录
baseline_output_dir:  # 改动前输出目录
console_log_path:     # 失败信息留存的日志路径
rollback_plan:        # 用哪份文件、哪条命令回到未接管状态

验证步骤按顺序做,缺一步就不要进入下一步:填充 input_nodes 和 output_nodes 后能对照界面逐项确认;writable_params 每一项都能指出允许范围;基线跑过一次并留下校验记录;接管后重跑一次并保存差异;失败日志能定位到具体节点和参数。模板本身不保证接管安全,它只是把判断依据固定下来,让每次接管都可对比、可回退。