工作流导出与IDE编辑适配小技巧-2
  13608564384 2025年12月27日 59 0

一、links 连接的双向一致性检查

在IDE中直接编辑JSON时,最容易出错的是 links 数组与节点 inputs/outputs 中的 links 字段不一致,导致工作流导入后连接线丢失或报错。

问题现象:修改节点ID或删除节点后,litegraph.links 数组中的连接信息与节点内部的 inputs[].linkoutputs[].links 不匹配。

连接结构解析

// links 数组中的一条连接 [link_id, source_node_id, source_slot_index, target_node_id, target_slot_index, data_type] // 例如:[1, 1, 0, 2, 0, "string"] // 表示:连接ID=1,从节点1的第0个输出槽 → 节点2的第0个输入槽,数据类型为string

必须保持的一致性

  1. 源节点的 outputs[slot_index].links 数组必须包含该连接的ID
  2. 目标节点的 inputs[slot_index].link 必须等于该连接的ID
  3. links 数组中的连接ID必须唯一且连续

检查脚本示例(Python):

import json def validate_links(workflow_json): links = workflow_json['litegraph']['links'] nodes = {node['id']: node for node in workflow_json['litegraph']['nodes']} for link in links: link_id, src_id, src_slot, tgt_id, tgt_slot, _ = link # 检查源节点输出 if link_id not in nodes[src_id]['outputs'][src_slot].get('links', []): print(f"错误:连接{link_id}未在源节点{src_id}的输出槽{src_slot}中找到") # 检查目标节点输入 if nodes[tgt_id]['inputs'][tgt_slot].get('link') != link_id: print(f"错误:连接{link_id}未在目标节点{tgt_id}的输入槽{tgt_slot}中找到")

二、代码字符串中的转义字符处理

在JSON中直接编写Python代码时,换行符、引号等特殊字符必须正确转义,否则会导致JSON解析失败或代码格式错乱。

常见问题

  • 多行代码中的 \n 必须写成 \\n(JSON字符串中的转义)
  • 代码中的双引号必须转义为 \"
  • 代码中的反斜杠必须转义为 \\

错误示例

{ "properties": { "策略代码": "class MyFactor(Factor): def calculate(self, factors): return factors['close']" } }

上面的代码直接换行会导致JSON解析失败。

正确做法

{ "properties": { "策略代码": "class MyFactor(Factor):\n def calculate(self, factors):\n return factors['close']" }, "widgets_values": ["class MyFactor(Factor):\n def calculate(self, factors):\n return factors['close']"] }

IDE技巧

  1. 使用IDE的"转义/反转义"功能(VS Code插件:JSON Escape)
  2. 先在Python文件中写好代码,然后用Python的 json.dumps() 自动转义
  3. 使用多行字符串时,可以用 """ 三引号包裹,但JSON中仍需转义为 \"\"\"

Python辅助脚本

code = """class MyFactor(Factor): def calculate(self, factors): return factors['close']""" import json escaped = json.dumps(code) # 自动处理所有转义 print(escaped) # 输出:\"class MyFactor(Factor):\\n def calculate(self, factors):\\n return factors['close']\"
最后一次编辑于 2025年12月27日 0

暂无评论

推荐阅读