- 修复 PurgeVRAM_UTK 节点类型不匹配问题,创建 AnyType 类实现 - 修复 CheckMask_UTK 节点 NoneType 错误,添加空值检查 - 完成模块化重构:将 common_utils.py 功能拆分到不同目录 - 创建 image_converters.py、color_utils.py、logging_utils.py、any_type.py - 删除 common_utils.py,避免依赖冲突 - 更新所有相关文件的导入语句 - 提高代码可维护性和模块化程度
5.4 KiB
5.4 KiB
AI 协作编程规则(AI Coding Rules)
总则
- 所有代码必须遵循本项目的风格和结构。
- 不允许自动拉取、克隆、下载外部项目或依赖,除非用户明确要求。
- 只允许在本地已有文件和依赖范围内进行开发和修改。
- 遵循用户指令,优先满足用户需求。
- 保持代码风格、接口、参数、行为与用户项目一致。
参考项目代码的强制要求
- 当用户指定参考某个项目(如GitHub仓库、第三方节点等)时,必须严格复制该项目的相关代码实现,保持原有逻辑、参数、shape处理、异常处理等完全一致。
- 不得自行"优化"或"简化"实现,不得随意更改shape、类型、参数声明、默认值、边界处理等。
- 如需适配本地环境,仅允许在不影响核心逻辑的前提下做最小必要的兼容性调整,并需明确告知用户。
- 如遇到与主线ComfyUI不兼容的情况,优先保持参考项目的原始行为,并向用户说明。
代码风格
- 遵循 PEP8 代码风格。
- 类、函数、变量命名需简洁明了,使用英文。
- 关键逻辑必须有中英文注释。
- 遵循PEP8及项目原有风格。
- 变量、函数、类命名与参考项目保持一致。
节点开发
- 节点参数需有默认值、类型、范围说明。
- 输入输出类型必须与 ComfyUI 规范一致。
- 所有节点的输入和输出shape、类型、参数名、返回名,必须严格遵循ComfyUI官方节点开发规范,保证与ComfyUI原生节点和其他插件节点100%兼容。不得自定义非标准shape或类型。
- 新增节点需在
__init__.py注册,并补充到文档。 - 节点参数、UI、输出类型、行为与参考项目完全一致。
- 不得随意增删参数或更改默认值。
依赖管理
- 避免严格的依赖版本限制。除非有兼容性或安全性要求,否则建议只指定主版本或不指定版本。
- 依赖声明与参考项目一致,不随意更改依赖版本。
变更限制
- 不允许删除或覆盖用户已有的自定义节点。
- 不允许修改依赖包的源码。
- 不允许自动生成或修改测试数据文件,除非用户要求。
- 仅在用户明确要求时才可对参考项目代码做自定义扩展或优化。
- 所有变更需在注释中注明原因。
其它
- 如需引入第三方实现,必须先征得用户同意。
- 任何自动化操作前,需先说明理由和影响。
示例
应该做:
- 优化已有节点的参数校验和注释。
- 按照原项目实现方式重构 fill mask 相关逻辑。
- 新增节点时同步更新注册和文档。
- 依赖项如无特殊需求,不要写死具体小版本号。
不应该做:
- 不要自动拉取外部仓库或依赖。
- 不要更改用户未授权的文件。
- 不要随意更改项目结构。
- 不要在 requirements.txt/pyproject.toml 中写死所有依赖的精确版本号。
ComfyUI-UniversalToolkit 开发规范(AI_CODING_RULES)
2024-07-13 重要改进与规则
1. 节点注册与导入(ComfyUI v3官方规范)
- 每个节点文件只导出自己的
NODE_CLASS_MAPPINGS和NODE_DISPLAY_NAME_MAPPINGS。 __init__.py必须静态导入所有节点注册字典,禁止动态try/except导入和动态合并。- 只导出
NODE_CLASS_MAPPINGS、NODE_DISPLAY_NAME_MAPPINGS,对齐官方插件加载机制。 - 节点注册顺序清晰,所有节点都必须被静态合并进主注册字典。
2. 节点分组与命名
- 每个节点类必须有唯一且规范的
CATEGORY属性,分组如UniversalToolkit/Image、UniversalToolkit/Mask、UniversalToolkit/Audio、UniversalToolkit/Tools。 - 节点类名、注册名、显示名必须唯一,全部带
_UTK后缀,禁止与原生节点或其它插件重名。 - 节点显示名统一加
(UTK)后缀,保证界面分组风格一致。
3. pyproject.toml 规范
- 必须包含
[project]和[tool.comfy]两大段,字段严格对齐官方文档:name、description、version、license、dependencies、Repository[tool.comfy]下PublisherId、DisplayName、Icon必填
PublisherId必须与Registry注册一致,DisplayName为插件在ComfyUI-Manager/Registry中的显示名
4. 目录结构与分层
- 按功能分为
nodes/image、nodes/mask、nodes/audio、nodes/tools四大目录,每个节点独立py文件 - 禁止使用绝对导入和跨目录utils模块,所有依赖应在本插件目录下
5. 节点输入输出与兼容性
- 所有节点输入输出shape、类型、参数名、返回名必须严格遵循ComfyUI官方节点开发规范
- 禁止随意更改节点实现、参数、shape,所有节点必须与ComfyUI原生节点和其它插件100%兼容
- 任何涉及shape、类型、参数的修正,必须优先保证与ComfyUI主程序和主流插件生态兼容
6. 其它重要约定
- 禁止在
__init__.py中做复杂逻辑或动态注册,推荐静态声明所有节点映射 - 禁止用旧版的
register_node、register_nodes等动态注册API - 所有节点分组、命名、注册、导入、依赖、pyproject.toml等必须随时对齐ComfyUI官方最新规范
本规范为ComfyUI-UniversalToolkit插件开发的最高准则,所有贡献者和维护者必须严格遵守。
(如有新规范或官方更新,须第一时间同步修订本文件)