6.5 KiB
6.5 KiB
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 顶栏联动,类似“工作流总览”。
当前硬性判断规则
- 文件名完全一致才算自动候选。
- 模糊相似不自动加载、不自动剪切、不自动下载。
- 已加载且本地存在同名文件时,应立即从缺失列表移除。
- 如果工作流没有提供模型目录,也要尽量通过 ComfyUI 官方注册目录和节点类别推断;无法推断时才提示不能自动剪切。
- 外部模型库只提供候选,不改变 installed 状态;只有剪切到官方目录或节点加载成功后才算解决。
- 缺失节点和缺失模型分开处理。
重要文件
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 跨电脑恢复。- 因此“新电脑显示旧聊天气泡”不能通过项目代码实现;能实现的是“新电脑新会话读取项目上下文并继续开发”。
当前开发原则
- 遇到“工作流总览能识别但插件不能识别”,优先认为插件逻辑需要补齐,而不是要求用户手动改工作流。
- 每次修复一个真实漏报,必须尽量增加测试,避免下次退化。
- 不要为了隐藏报错而过滤真实缺失项。
- 不要为了减少漏报而扩大自由文本扫描范围导致误报。
- 任何下载或迁移动作都不能覆盖已有模型文件。