Files
mclaughlinrosemary927-Comfy…/PROJECT_CONVERSATION_SUMMARY.md

6.5 KiB
Raw Permalink Blame History

PROJECT_CONVERSATION_SUMMARY.md

本文件是当前项目历史对话和需求演进的结构化摘要。它不能让新电脑的 Codex 界面显示旧聊天记录,但能让新会话快速理解此前发生过什么、为什么这样设计、用户反复强调的硬要求是什么。

项目起点

用户要求创建 ComfyUI custom node:ComfyUI_FindModels。主要目标是根据当前打开的 ComfyUI 工作流自动识别缺失模型,自动适配本地模型,提供下载直连地址,并上传到 GitHub。

GitHub 仓库:

https://github.com/mclaughlinrosemary927/ComfyUI_FindModels

需求演进

第一阶段:基础插件和入口

  • 创建 ComfyUI custom node / frontend extension。
  • 顶部工具栏增加 查找模型 按钮。
  • 面板由按钮打开,不要自动弹出。
  • 关闭后再次点击可以重新打开。
  • 面板关闭后下载任务继续运行。

第二阶段:缺失模型识别

用户多次反馈“工作流总览”能识别,但插件漏识别。因此核心方向改为复刻 ComfyUI 内置“工作流总览”的依赖识别逻辑。

重点要求:

  • 只显示缺失模型。
  • 正常模型不显示。
  • 加载成功后马上不显示。
  • 显示缺失模型大小。
  • 模型名称完整显示。
  • 模型名称后面有复制按钮。
  • 每个缺失模型下方操作保持清晰:定位引用节点、加载本地模型、查找下载来源。

出现过的问题类型:

  • LTX / UNet 模型没有识别。
  • GGUF / LLM 模型没有识别。
  • CLIPLoader(GGUF) 加载后仍显示缺失。
  • rgthree 权重 LoRA 多个槽位读取不到。
  • 多 LoRA 嵌套数组只识别部分。
  • 同一工作流中同名模型被多个节点引用时漏掉其中一个。
  • 节点里路径带前缀时误判或误放目录。
  • 已经本地加载成功后又过一会儿重新显示缺失。

第三阶段:官方路径和外部模型库

用户反复强调:模型必须按 ComfyUI 官方模型路径和官方注册目录存放,不能根据节点里写的路径乱放。

规则:

  • 节点值里的 Wan/...、Qwen/...、FLUX/...、中文目录等不是官方目标目录。
  • 目标目录必须来自 ComfyUI folder_paths 或插件注册的模型分类。
  • 外部模型库必须递归多层搜索。
  • 外部找到完全同名文件后,根据官方分类剪切到当前 ComfyUI 对应模型目录。
  • 如果无法确定官方分类,不能自动剪切。

第四阶段:缺失节点

用户要求缺失节点不要和模型混在一起,并能自动安装。

要求:

  • 缺失节点页面只显示缺失节点。
  • 支持通过 GitHub 搜索或用户输入 GitHub 链接安装。
  • 删除对 TE 官方市场的强依赖。
  • 增加“自动安装插件依赖 requirements.txt”开关。
  • 安装依赖时保护核心依赖,避免破坏 ComfyUI 环境。
  • 安装时显示进度。

第五阶段:下载任务和 Quark

用户提供两个 Quark 分享模型库:

https://pan.quark.cn/s/fb913d649b18
https://pan.quark.cn/s/4680ac866516

要求:

  • 设置页保留 Quark 链接。
  • 查找下载来源时后台递归检索 Quark 分享目录。
  • 必须文件名完全一致才下载。
  • 下载到官方模型目录。
  • 下载任务显示速度、已下载大小、耗时、剩余时间。
  • 支持暂停、继续、取消、重试。

已知限制:

  • Quark 直链经常因 token 校验、登录态、权限、限速或风控失败。
  • 失败时不能伪造成功,应提示真实原因。
  • 如果 Quark 不可用,继续查找 Hugging Face / Civitai 等可验证同名直链。

第六阶段:UI 重构

用户要求参考“工作流总览”和给出的 UI 图重新设计。

当前 UI 方向:

  • 右侧侧栏。
  • 顶部标题:查找缺失模型和节点。
  • 四个 tab:缺失模型、缺失节点、下载任务、设置。
  • 每个 tab 只显示本页相关内容。
  • 字体加粗,布局更紧凑。
  • 面板宽度不要过宽。
  • 左侧可拖动。
  • 查找模型 按钮位置跟 ComfyUI 顶栏联动,类似“工作流总览”。

当前硬性判断规则

  1. 文件名完全一致才算自动候选。
  2. 模糊相似不自动加载、不自动剪切、不自动下载。
  3. 已加载且本地存在同名文件时,应立即从缺失列表移除。
  4. 如果工作流没有提供模型目录,也要尽量通过 ComfyUI 官方注册目录和节点类别推断;无法推断时才提示不能自动剪切。
  5. 外部模型库只提供候选,不改变 installed 状态;只有剪切到官方目录或节点加载成功后才算解决。
  6. 缺失节点和缺失模型分开处理。

重要文件

  • model_finder.py:模型引用提取、分类、installed/adaptable/missing 判定。
  • find_models.py:ComfyUI HTTP 路由、外部模型库、下载、Quark、迁移入口。
  • node_installer.py:缺失节点识别和 GitHub 安装。
  • web/find_models.js:前端面板、工作流快照、自动扫描、加载本地模型、定位节点、下载/安装交互。
  • web/find_models.css:面板 UI。
  • tests/:回归测试。
  • scripts/:一键同步脚本。
  • AGENTS.md:后续开发规则。
  • PROJECT_CONTEXT.md:当前项目状态。

GitHub 和迁移说明

用户希望“带上下文和对话完整上传到 GitHub,并在另一台电脑显示对话”。技术上不能让 Codex UI 直接显示旧对话。项目采用以下替代方案:

  • 把上下文写入 AGENTS.md、PROJECT_CONTEXT.md、PROJECT_CONVERSATION_SUMMARY.md。
  • 把一键上传和拉取脚本放入 scripts/。
  • 新增 CODEX_START_HERE.md 和 scripts/codex-context.bat,用于在新电脑复制接续提示。
  • 新电脑克隆仓库后,新 Codex 会话读取这些文件继续开发。

可确认的限制:

  • 当前 Codex 没有“从 GitHub 导入旧对话到新电脑对话列表”的公开接口。
  • fork_thread 只能复制当前机器现有线程,不能通过 GitHub 跨电脑恢复。
  • 因此“新电脑显示旧聊天气泡”不能通过项目代码实现;能实现的是“新电脑新会话读取项目上下文并继续开发”。

当前开发原则

  • 遇到“工作流总览能识别但插件不能识别”,优先认为插件逻辑需要补齐,而不是要求用户手动改工作流。
  • 每次修复一个真实漏报,必须尽量增加测试,避免下次退化。
  • 不要为了隐藏报错而过滤真实缺失项。
  • 不要为了减少漏报而扩大自由文本扫描范围导致误报。
  • 任何下载或迁移动作都不能覆盖已有模型文件。