[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-crystian--ComfyUI-Crystools":3,"tool-crystian--ComfyUI-Crystools":61},[4,18,26,35,44,52],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,2,"2026-04-10T11:39:34",[14,15,13],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":32,"last_commit_at":41,"category_tags":42,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[43,13,15,14],"插件",{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[43,14],{"id":53,"name":54,"github_repo":55,"description_zh":56,"stars":57,"difficulty_score":10,"last_commit_at":58,"category_tags":59,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[60,15,13,14],"语言模型",{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":75,"owner_location":76,"owner_email":75,"owner_twitter":75,"owner_website":77,"owner_url":78,"languages":79,"stars":100,"forks":101,"last_commit_at":102,"license":103,"difficulty_score":32,"env_os":104,"env_gpu":105,"env_ram":104,"env_deps":106,"category_tags":113,"github_topics":75,"view_count":32,"oss_zip_url":75,"oss_zip_packed_at":75,"status":17,"created_at":114,"updated_at":115,"faqs":116,"releases":117},6505,"crystian\u002FComfyUI-Crystools","ComfyUI-Crystools","A powerful set of tools for ComfyUI","ComfyUI-Crystools 是一套专为 ComfyUI 设计的高效增强工具集，旨在为用户提供更透明、可控的工作流体验。它主要解决了用户在复杂生成任务中难以实时监控系统资源、追踪执行进度以及查看图像隐藏元数据的痛点。\n\n通过内置的资源监控面板，用户可以实时查看 CPU、GPU、内存及显存占用情况，快速定位性能瓶颈；进度条功能则清晰展示工作流执行状态与耗时，并支持点击定位当前运行节点。此外，该工具提供了强大的元数据提取与对比功能，不仅能解析图像中的生成提示词和工作流信息，还能兼容 Photoshop 等其他来源的元数据，甚至支持直接对比两张图片或两个 JSON 文件的差异，无需重新加载工作流即可洞察细节。\n\nComfyUI-Crystools 特别适合需要精细调优工作流的 AI 艺术家、研究人员以及希望深入理解生成过程的进阶用户。其独特的技术亮点在于低开销的实时硬件监测（基于 NVIDIA CUDA）和灵活的元数据格式化输出（支持 JSON、CSV 等），让原本“隐形”的数据变得直观可用，帮助用户更高效地调试和优化创作流程。","# comfyui-crystools [![Donate](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDonate-PayPal-blue.svg)](https:\u002F\u002Fpaypal.me\u002Fcrystian77) \u003Ca src=\"https:\u002F\u002Fcolab.research.google.com\u002Fassets\u002Fcolab-badge.svg\" href=\"https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1xiTiPmZkcIqNOsLQPO1UNCdJZqgK3U5k?usp=sharing\">\u003Cimg src=\"https:\u002F\u002Fcolab.research.google.com\u002Fassets\u002Fcolab-badge.svg\" alt=\"Open in Colab\">\u003C\u002Fa>\n\n**_🪛 A powerful set of tools for your belt when you work with ComfyUI 🪛_**\n\nWith this suit, you can see the resources monitor, progress bar & time elapsed, metadata and compare between two images, compare between two JSONs, show any value to console\u002Fdisplay, pipes, and more!\nThis provides better nodes to load\u002Fsave images, previews, etc, and see \"hidden\" data without loading a new workflow.\n\n![Show metadata](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_5aec7bacc5f1.gif)\n\n# Table of contents\n- [General](#general)\n- [Metadata](#metadata)\n- [Debugger](#debugger)\n- [Image](#image)\n- [Pipe](#pipe)\n- [Utils](#utils)\n- [Primitives](#primitives)\n- [List](#list)\n- [Switch](#switch)\n- Others: [About](#about), [To do](#to-do), [Changelog](#changelog), [Installation](#installation), [Use](#use)\n\n---\n\n## General\n\n### Resources monitor\n\n**🎉Finally, you can see the resources used by ComfyUI (CPU, GPU, RAM, VRAM, GPU Temp and space) on the menu in real-time!**\n\nHorizontal:  \n![Monitors](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_37c4ea4ba594.webp)\n\nVertical:  \n![Monitors](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_139369a20a68.webp)\n\nNow you can identify the bottlenecks in your workflow and know when it's time to restart the server, unload models or even close some tabs!\n\nYou can configure the refresh rate which resources to show:\n\n![Monitors](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_efd5ba20d862.png)\n\n> **Notes:**\n> - The GPU data is only available when you use CUDA (only NVIDIA cards, sorry AMD users).\n> - This extension needs ComfyUI 1915 (or higher).\n> - The cost of the monitor is low (0.1 to 0.5% of utilization), you can disable it from settings (`Refres rate` to `0`).\n> - Data comes from these libraries:\n>   - [psutil](https:\u002F\u002Fpypi.org\u002Fproject\u002Fpsutil\u002F)\n>   - [torch](https:\u002F\u002Fpytorch.org\u002F)\n>   - [pynvml](https:\u002F\u002Fpypi.org\u002Fproject\u002Fpynvml\u002F) (official NVIDIA library)\n\n\n### Progress bar\n\nYou can see the progress of your workflow with a progress bar on the menu!\n\n![Progress bar](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_8e3b73382651.png)\n\nhttps:\u002F\u002Fgithub.com\u002Fcrystian\u002Fcomfyui-crystools\u002Fassets\u002F3886806\u002F35cc1257-2199-4b85-936e-2e31d892959c\n\nAdditionally, it shows the time elapsed at the end of the workflow, and you can `click` on it to see the **current working node.** \n\n> **Notes:**\n> - If you don't want to see it, you can turn it off from settings (`Show progress bar in menu`)\n\n\n## Metadata\n\n### Node: Metadata extractor\n\nThis node is used to extract the metadata from the image and handle it as a JSON source for other nodes.  \nYou can see **all information**, even metadata from other sources (like Photoshop, see sample).\n\nThe input comes from the [load image with metadata](#node-load-image-with-metadata) or [preview from image](#node-preview-from-image) nodes (and others in the future).\n\n![Metadata extractor](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_0148dc417124.png)\n\n**Sample:** [metadata-extractor.json](.\u002Fsamples\u002Fmetadata-extractor.json)\n\n>\u003Cdetails>\n>  \u003Csummary>Other metadata sample (photoshop)\u003C\u002Fsummary>\n> \n> With metadata from Photoshop\n![Metadata extractor](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_c8a3a48ccbb1.png)\n>\u003C\u002Fdetails>\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>Parameters\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - input: \n>   - metadata_raw: The metadata raw from the image or preview node\n> - Output:\n>   - prompt: The prompt used to produce the image.\n>   - workflow: The workflow used to produce the image (all information about nodes, values, etc).\n>   - file info: The file info of the image\u002Fmetadata (resolution, size, etc) is human readable.\n>   - raw to JSON: The entire metadata is raw but formatted\u002Freadable.\n>   - raw to property: The entire metadata is raw in \"properties\" format.\n>   - raw to csv: The entire metadata is raw in \"csv\" format.\n>\u003C\u002Fdetails>\n\n\u003Cbr \u002F>\n\n### Node: Metadata comparator\n\nThis node is so useful for comparing two metadata and seeing the differences (**the main reason why I created this extension!**)\n\nYou can compare 3 inputs: \"Prompt\", \"Workflow\" and \"Fileinfo\"\n\nThere are three potential \"outputs\": `values_changed`, `dictionary_item_added`, and `dictionary_item_removed` (in this order of priority).\n\n![Metadata extractor](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_3344d403fe37.png)\n\n**Sample:** [metadata-comparator.json](.\u002Fsamples\u002Fmetadata-comparator.json)\n\n**Notes:**  \n- I use [DeepDiff](https:\u002F\u002Fpypi.org\u002Fproject\u002Fdeepdiff) for that. For more info check the link.  \n- If you want to compare two JSONs, you can use the [JSON comparator](#node-JSON-comparator) node.\n\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>Parameters\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - options:\n>   - what: What to compare, you can choose between \"Prompt\", \"Workflow\" and \"Fileinfo\"  \n> - input: \n>   - metadata_raw_old: The metadata raw to start comparing\n>   - metadata_raw_new: The metadata raw to compare\n> - Output:\n> - diff: This is the same output you can see in the display of the node; you can use it on other nodes.\n>\u003C\u002Fdetails>\n\n\u003Cbr \u002F>\n\n---\n\n## Debugger\n\n### Node: Show Metadata\n\nWith this node, you will be able to see the JSON produced from your entire prompt and workflow so that you can know all the values (and more) of your prompt quickly without opening the file (PNG or JSON).\n\n![Show metadata](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_71c2a444fbf6.png)\n\n**Sample:** [debugger-metadata.json](.\u002Fsamples\u002Fdebugger-metadata.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>Parameters\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - Options:\n>   - Active: Enable\u002Fdisable the node  \n>   - Parsed: Show the parsed JSON or plain text  \n>   - What: Show the prompt or workflow (prompt are values to produce the image, and workflow is the entire workflow of ComfyUI)\n>\u003C\u002Fdetails>\n\n\u003Cbr \u002F> \n\n### Node: Show any\n\nYou can see on the console or display any text or data from the nodes. Connect it to what you want to inspect, and you will see it.\n\n![Show any](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_df3bc0f3ba44.png)\n\n**Sample:** [debugger-any.json](.\u002Fsamples\u002Fdebugger-any.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>Parameters\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - Input:\n>   - any_value: Any value to show, which can be a string, number, etc.\n> - Options:\n>   - Console: Enable\u002Fdisable write to console  \n>   - Display: Enable\u002Fdisable write on this node  \n>   - Prefix: Prefix to console\n>\u003C\u002Fdetails>\n\n\u003Cbr \u002F>\n\n### Node: Show any to JSON\n\nIt is the same as the previous one, but it formatted the value to JSON (only display).\n\n![Show any](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_4db505043207.png)\n\n**Sample:** [debugger-json.json](.\u002Fsamples\u002Fdebugger-json.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>Parameters\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - Input:\n>   - any_value: Any value to try to convert to JSON\n> - Output:\n>   - string: The same string is shown on the display\n>\u003C\u002Fdetails>\n\n\u003Cbr \u002F>\n\n---\n\n## Image\n\n### Node: Load image with metadata\nThis node is the same as the default one, but it adds three features: Prompt, Metadata, and supports **subfolders** of the \"input\" folder.\n\n![Load image with metadata](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_da41f7589abd.png)\n\n**Sample:** [image-load.json](.\u002Fsamples\u002Fimage-load.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>Parameters\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - Input:\n>   - image: Read the images from the input folder (and subfolder) (you can drop the image here or even paste an image from the clipboard)\n> - Output:\n>   - Image\u002FMask: The same as the default node  \n>   - Prompt: The prompt used to produce the image (not the workflow)  \n>   - Metadata RAW: The metadata raw of the image (full workflow) as string\n>\u003C\u002Fdetails>\n\n**Note:** The subfolders support inspired on: [comfyui-imagesubfolders](https:\u002F\u002Fgithub.com\u002Fcatscandrive\u002Fcomfyui-imagesubfolders)\n\n\u003Cbr \u002F>\n\n### Node: Save image with extra metadata\nThis node is the same as the default one, but it adds two features: Save the workflow in the png or not, and you can add any piece of metadata (as JSON).\n\nThis saves custom data on the image, so you can share it with others, and they can see the workflow and metadata (see [preview from metadata](#node-preview-from-metadata)), even your custom data.\n\nIt can be any type of information that supports text and JSON.\n\n![Save image with extra metadata](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_3d3b79079ef2.png)\n\n**Sample:** [image-save.json](.\u002Fsamples\u002Fimage-save.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>Parameters\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - options:\n>   - with_workflow: If you want to save into the image workflow (special to share the workflow with others)\n> - Input:\n>   - image: The image to save (same as the default node)\n> - Output:\n>   - Metadata RAW: The metadata raw of the image (full workflow) as string\n>\u003C\u002Fdetails>\n\n**Note:** The data is saved as special \"exif\" (as ComfyUI does) in the png file; you can read it with [Load image with metadata](#node-load-image-with-metadata).\n\n> **Important:**\n> - If you want to save your workflow with a particular name and your data as creator, you need to use the [ComfyUI-Crystools-save](https:\u002F\u002Fgithub.com\u002Fcrystian\u002FComfyUI-Crystools-save) extension; try it!\n![Crystools-save](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_52dccfa9e141.png)\n\n\n\u003Cbr \u002F>\n\n### Node: Preview from image\n\nThis node is used to preview the image with the **current prompt** and additional features.  \n\n![Preview from image](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_3a7c3cd0c4a8.png)\n\n**Feature:** It supports cache (shows as \"CACHED\") (not permanent yet!), so you can disconnect the node and still see the image and data, so you can use it to compare with others!\n\n![Preview from image](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_1bd82528e8e0.png)\n\nAs you can see the seed, steps, and cfg were changed\n\n**Sample:** [image-preview-image.json](.\u002Fsamples\u002Fimage-preview-image.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>Parameters\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - Input:\n>   - image: Any kind of image link\n> - Output:\n>   - Metadata RAW: The metadata raw of the image and full workflow.  \n>     - You can use it to **compare with others** (see [metadata comparator](#node-metadata-comparator))\n>     - The file info like filename, resolution, datetime and size with **the current prompt, not the original one!** (see important note)\n>\u003C\u002Fdetails>\n\n> **Important:**\n> - If you want to read the metadata of the image, you need to use the [load image with metadata](#node-load-image-with-metadata) and use the output \"metadata RAW\" not the image link.\n> - To do a preview, it is necessary to save it first on the temporal folder, and the data shown is from the temporal image, **not the original one** even **the prompt!**\n\n\u003Cbr \u002F>\n\n### Node: Preview from metadata\n\nThis node is used to preview the image from the metadata and shows additional data (all around this one).  \nIt supports the same features as [preview from image](#node-preview-from-image) (cache, metadata raw, etc.). But the important difference is you see **real data from the image** (not the temporal one or the current prompt).\n \n![Preview from metadata](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_528dc56fe898.png)\n\n**Sample:** [image-preview-metadata.json](.\u002Fsamples\u002Fimage-preview-metadata.json)\n\n\u003Cbr \u002F>\n\n### Node: Show resolution\n\nThis node is used to show the resolution of an image.\n\n> Can be used with any image link.\n\n![Show resolution](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_a5024486f5bb.png)\n\n**Sample:** [image-resolution.json](.\u002Fsamples\u002Fimage-resolution.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>Parameters\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - Input:\n>   - image: Any kind of image link\n> - Output:\n>   - Width: The width of the image  \n>   - Height: The height of the image\n>\u003C\u002Fdetails>\n\n\u003Cbr \u002F>\n\n---\n\n## Pipe\n\n### Nodes: Pipe to\u002Fedit any, Pipe from any\n\nThis powerful set of nodes is used to better organize your pipes.  \n\nThe \"Pipe to\u002Fedit any\" node is used to encapsulate multiple links into a single one. It includes support for editing and easily adding the modified content back to the same pipe number.\n\nThe \"Pipe from any\" node is used to extract the content of a pipe.  \n \nTypical example:\n\n![Pipes](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_6677b89655f1.png)\n\nWith pipes:\n\n![Pipes](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_29c61aaf0786.png)\n\n**Sample:** [pipe-1.json](.\u002Fsamples\u002Fpipe-1.json)\n\nEditing pipes:\n\n![Pipes](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_25d6739d4e8d.png)\n\n**Sample:** [pipe-2.json](.\u002Fsamples\u002Fpipe-2.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>Parameters\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - Input:\n>   - CPipeAny: This is the type of this pipe you can use to edit (see the sample)\n>   - any_*: 6 possible inputs to use\n> - Output:\n>   - CPipeAny: You can continue the pipe with this output; you can use it to bifurcate the pipe (see the sample)\n>\u003C\u002Fdetails>\n\n>**Important:**\n> - Please note that it supports \"any,\" meaning it does not validate (not yet!) the correspondence of input nodes with the output ones. When creating the link, it is recommended to link consciously number by number.\n> - \"RecursionError\" It's crucial to note that the flow of links **must be in the same direction**, and they cannot be mixed with other flows that use the result of this one. Otherwise, this may lead to recursion and block the server (you need to restart it!)\n\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>Bad example with \"RecursionError: maximum recursion depth exceeded\"\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> If you see something like this on your console, you need to check your pipes. That is bad sample of pipes, you can't mix the flows.\n![Pipes](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_6d39cecb0da0.png)\n>\u003C\u002Fdetails>\n\n\u003Cbr \u002F>\n\n---\n\n## Utils\n\nSome useful nodes to use in your workflow.\n\n### Node: JSON comparator\n\nThis node is so useful to compare two JSONs and see the differences.\n\n![JSON comparator](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_06db3a4934ae.png)\n\n**Sample:** [utils-json-comparator.json](.\u002Fsamples\u002Futils-json-comparator.json)\n\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>Parameters\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - input: \n>   - json_old: The first JSON to start compare\n>   - json_new: The JSON to compare\n> - Output:\n>   - diff: A new JSON with the differences\n>\u003C\u002Fdetails>\n\n\n**Notes:**  \nAs you can see, it is the same as the [metadata comparator](#node-metadata-comparator) but with JSONs.  \nThe other is intentionally simple to compare two images metadata; this is more generic.  \nThe main difference is that you can compare any JSON, not only metadata.\n\n\u003Cbr \u002F>\n\n### Node: Stats system\n\nThis node is used to show the system stats (RAM, VRAM, and Space).  \nIt **should** connect as a pipe.\n\n![JSON comparator](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_a1b934515df9.png)\n\n**Sample:** [utils-stats.json](.\u002Fsamples\u002Futils-stats.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>Parameters\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - input: \n>   - latent: The latent to use to measure the stats\n> - Output:\n>   - latent: Return the same latent to continue the pipe\n>\u003C\u002Fdetails>\n\n**Notes:** The original is in [WAS](https:\u002F\u002Fgithub.com\u002FWASasquatch\u002Fwas-node-suite-comfyui), I only show it on the display.\n\n\u003Cbr \u002F>\n\n---\n\n## Primitives\n\n### Nodes: Primitive boolean, Primitive integer, Primitive float, Primitive string, Primitive string multiline\n\nA set of nodes with primitive values to use in your prompts.\n\n![Primitives](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_f65b2590f62e.png)\n\n\u003Cbr \u002F>\n\n---\n\n## List\nA set of nodes with a list of values (any or strings\u002Ftexts) for any proposal (news nodes to use it coming soon!).\n\n> **Important:** You can use other nodes like \"Show any\" to see the values of the list\n\n### Node: List of strings\n\n**Feature:** You can concatenate them.\n\n![Lists](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_1b6e50f339b2.png)\n\n**Sample:** [list-strings.json](.\u002Fsamples\u002Flist-strings.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>Parameters\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - Input:\n>   - string_*: 8 possible inputs to use\n>   - delimiter: Use to concatenate the values on the output\n> - Output:\n>   - concatenated: A string with all values concatenated\n>   - list_string: The list of strings (only with values)\n>\u003C\u002Fdetails>\n\n\u003Cbr \u002F>\n\n### Node: List of any\n\nYou can concatenate any value (it will try to convert it to a string and show the value), so it is util to see several values at the same time.\n\n![Lists](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_8e791562d0b1.png)\n\n**Sample:** [list-any.json](.\u002Fsamples\u002Flist-any.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>Parameters\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - Input:\n>   - any_*: 8 possible inputs to use\n> - Output:\n>   - list_any: The list of any elements (only with values)\n>\u003C\u002Fdetails>\n\n\u003Cbr \u002F>\n\n---\n\n## Switch\nA set of nodes to switch between flows.  \n\nAll switches are boolean; you can switch between flows by simply changing the value of the switch.  \nYou have predefined switches (string, latent, image, conditioning) but you can use \"Switch any\" for any value\u002Ftype.\n\n![Switches](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_86bf3ec0be63.png)\n\n**Sample:** [switch.json](.\u002Fsamples\u002Fswitch.json)\n\n\u003Cbr \u002F>\n\n---\n\n## About\n\n**Notes from the author:**\n- This is my first project in python ¯\\\\_(ツ)_\u002F¯ (PR are welcome!)\n- I'm a software engineer but in other languages (web technologies)\n- My Instagram is: https:\u002F\u002Fwww.instagram.com\u002Fcrystian.ia I'll publish my works on it, so consider following me for news! :)\n- I'm not a native English speaker, so sorry for my English :P\n\n---\n\n## To do\n- [ ] Several unit tests\n- [ ] Add permanent cache for preview\u002Fmetadata image (to survive to F5! or restart the server)\n\n---\n\n## Changelog\n\n### Crystools\n\n### 1.27.0 (17\u002F08\u002F2025)\n- revert the lower case on name, cannot change on registry ¯\\_(ツ)_\u002F¯\n- zluda check removed, it is not necessary anymore\n\n### 1.25.3 (27\u002F07\u002F2025)\n- change the name to lower case\n\n### 1.25.1 (02\u002F06\u002F2025)\n- fix issues with switches on settings menu\n- node: \"Switch from any\" added\n- load image with metadata: filtered (exclude hidden folders an typically metadata files)\n- other fixes\n\n### 1.24.0 (02\u002F06\u002F2025)\n- PRs by community merged\n- Improved VRAM usage\u002Freadout\n- HDD error handling\n- Lazy switches\n\n### 1.23.0 (02\u002F06\u002F2025)\n- Jetson support added by @johnnynunez\n- some ui fixes\n\n### 1.20.0 (21\u002F10\u002F2024)\n- BETA of JSON file reader and extractor, to allow you to read your own JSON files and extract the values to use in your workflow \n\n### 1.19.0 (06\u002F10\u002F2024)\n- HORIZONTAL UI! New version is ready! 🎉\n\n### 1.18.0 (21\u002F09\u002F2024)\n- HORIZONTAL UI! 🎉\n- Configurable size of monitors on settings menu\n\n### 1.17.0 (21\u002F09\u002F2024)\n- Settings menu reorganized\n- Preparing for horizontal UI\n- Update from ComfyUI (typescript and new features)\n\n### 1.16.0 (31\u002F07\u002F2024)\n- Rollback of AMD support by manager does not support other repository parameter (https:\u002F\u002Ftest.pypi.org\u002Fsimple by pyrsmi)\n\n### 1.15.0 (21\u002F07\u002F2024)\n- AMD Branch merged to the main branch, should work for AMD users on **Linux**\n\n### 1.14.0 (15\u002F07\u002F2024)\n- Tried to use AMD info, but it breaks installation on windows, so I removed it ¯\\_(ツ)_\u002F¯\n- AMD Branch added, if you use AMD and Linux, you can try it (not tested for me)\n\n### 1.13.0 (01\u002F07\u002F2024)\n- Integrate with new ecosystem of ComfyUI\n- Webp support added on load image with metadata node\n\n### 1.12.0 (27\u002F03\u002F2024)\n- GPU Temperature added\n\n### 1.10.0 (17\u002F01\u002F2024)\n- Multi-gpu added\n\n### 1.9.2 (15\u002F01\u002F2024)\n- Big refactor on hardwareInfo and monitor.ts, gpu was separated on another file, preparing for multi-gpu support\n\n### 1.8.0 (14\u002F01\u002F2024) - internal\n- HDD monitor selector on settings\n\n### 1.7.0 (11\u002F01\u002F2024) - internal\n- Typescript added!\n\n### 1.6.0 (11\u002F01\u002F2024)\n- Fix issue [#7](https:\u002F\u002Fgithub.com\u002Fcrystian\u002Fcomfyui-crystools\u002Fissues\u002F7) to the thread deadlock on concurrency\n\n### 1.5.0 (10\u002F01\u002F2024)\n- Improvements on the resources monitor and how handle the threads\n- Some fixes \n\n### 1.3.0 (08\u002F01\u002F2024)\n- Added in general Resources monitor (CPU, GPU, RAM, VRAM, and space)\n- Added this icon to identify this set of tools: 🪛 \n\n### 1.2.0 (05\u002F01\u002F2024)\n- progress bar added\n \n### 1.1.0 (29\u002F12\u002F2023)\n- Node added: \"Save image with extra metadata\"\n- Support to **read** Jpeg metadata added (not save)\n\n### 1.0.0 (26\u002F12\u002F2023)\n- First release\n\n\n### Crystools-save - DEPRECATED (01\u002F06\u002F2025)\n\n### 1.1.0 (07\u002F01\u002F2024)\n- Labeling updated according to the new version of Crystools (this project)\n\n### 1.0.0 (29\u002F12\u002F2023)\n- Created another extension to save the info about the author on workflow: [ComfyUI-Crystools-save](https:\u002F\u002Fgithub.com\u002Fcrystian\u002FComfyUI-Crystools-save)\n\n---\n\n## Installation\n\n### Install from GitHub\n1. Install [ComfyUi](https:\u002F\u002Fgithub.com\u002Fcomfyanonymous\u002FComfyUI).\n2. Clone this repo into `custom_nodes`:\n    ```\n    cd ComfyUI\u002Fcustom_nodes\n    git clone https:\u002F\u002Fgithub.com\u002Fcrystian\u002Fcomfyui-crystools.git\n    cd comfyui-crystools\n    pip install -r requirements.txt\n    ```\n3. Start up ComfyUI.\n\n#### For AMD users\nIf you are an AMD user with Linux, you can try the AMD branch:\n\n**ATTENTION:** Don't install with the manager, you need to install manually:\n\n  ```\n  cd ComfyUI\u002Fcustom_nodes\n  git clone -b AMD https:\u002F\u002Fgithub.com\u002Fcrystian\u002Fcomfyui-crystools.git\n  cd comfyui-crystools\n  pip install -r requirements.txt\n  ```\n\n### Install from manager\n\nSearch for `crystools` in the [manager](https:\u002F\u002Fgithub.com\u002Fltdrdata\u002FComfyUI-Manager.git) and install it.\n\n### Using on Google Colab\n\nYou can use it on Google Colab, but you need to install it manually:\n\n[Google Colab](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1xiTiPmZkcIqNOsLQPO1UNCdJZqgK3U5k?usp=sharing)\n\n* Run the first cell to install ComfyUI and launch the server\n* After it finishes, use the link to open the a new tab, looking a line like this:\n```\nThis is the URL to access ComfyUI: https:\u002F\u002Fidentifying-complications-fw-some.trycloudflare.com    \n```\n\n---\n\n## Use\n\nYou can use it as any other node, just using the menu in the category `crystools` or double clicking on the canvas (I recommended using the \"oo\" to fast filter), all nodes were post fixing with `[Crystools]`.\n\n![Menu](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_89ab2bd46ef7.png)\n![shortcut](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_820bc03cadb7.png)\n\nIf for some reason you need to see the logs, you can define the environment variable `CRYSTOOLS_LOGLEVEL` and set the [value](https:\u002F\u002Fdocs.python.org\u002Fes\u002F3\u002Fhowto\u002Flogging.html).\n\n---\n\nMade with ❤️ by Crystian.\n","# comfyui-crystools [![捐赠](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDonate-PayPal-blue.svg)](https:\u002F\u002Fpaypal.me\u002Fcrystian77) \u003Ca href=\"https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1xiTiPmZkcIqNOsLQPO1UNCdJZqgK3U5k?usp=sharing\">\u003Cimg src=\"https:\u002F\u002Fcolab.research.google.com\u002Fassets\u002Fcolab-badge.svg\" alt=\"在Colab中打开\">\u003C\u002Fa>\n\n**_🪛 在使用 ComfyUI 时，您工具箱中的强大工具集 🪛_**\n\n借助这套工具，您可以查看资源监控、进度条与已用时间、元数据，并比较两张图片或两个 JSON 文件；还可以将任意值输出到控制台或显示界面上，实现管道功能等更多操作！它提供了更优秀的节点来加载\u002F保存图像、预览等，并能在不重新加载工作流的情况下查看“隐藏”的数据。\n\n![显示元数据](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_5aec7bacc5f1.gif)\n\n# 目录\n- [概述](#general)\n- [元数据](#metadata)\n- [调试器](#debugger)\n- [图像](#image)\n- [管道](#pipe)\n- [实用工具](#utils)\n- [基础节点](#primitives)\n- [列表](#list)\n- [开关](#switch)\n- 其他：[关于](#about)、[待办事项](#to-do)、[更新日志](#changelog)、[安装](#installation)、[使用](#use)\n\n---\n\n## 概述\n\n### 资源监控\n\n**🎉 终于可以在菜单中实时查看 ComfyUI 使用的资源（CPU、GPU、内存、显存、GPU 温度和存储空间）了！**\n\n水平布局：  \n![监控界面](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_37c4ea4ba594.webp)\n\n垂直布局：  \n![监控界面](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_139369a20a68.webp)\n\n现在您可以识别工作流中的瓶颈，判断何时需要重启服务器、卸载模型甚至关闭某些标签页！\n\n您还可以配置刷新频率以及要显示的资源：\n\n![监控设置](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_efd5ba20d862.png)\n\n> **注意事项：**\n> - GPU 数据仅在使用 CUDA 时可用（仅限 NVIDIA 显卡，AMD 用户抱歉）。\n> - 此扩展需要 ComfyUI 1915 或更高版本。\n> - 监控功能的开销很低（占用率仅为 0.1% 至 0.5%），您可以通过设置将其关闭（将“刷新频率”设为 `0`）。\n> - 数据来源于以下库：\n>   - [psutil](https:\u002F\u002Fpypi.org\u002Fproject\u002Fpsutil\u002F)\n>   - [torch](https:\u002F\u002Fpytorch.org\u002F)\n>   - [pynvml](https:\u002F\u002Fpypi.org\u002Fproject\u002Fpynvml\u002F)（NVIDIA 官方库）\n\n\n### 进度条\n\n您现在可以在菜单中看到工作流的进度条！\n\n![进度条](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_8e3b73382651.png)\n\n此外，它还会在工作流结束时显示已用时间，您还可以点击它来查看**当前正在运行的节点。**\n\n> **注意事项：**\n> - 如果不想显示进度条，可以在设置中将其关闭（“在菜单中显示进度条”）。\n\n\n## 元数据\n\n### 节点：元数据提取器\n\n此节点用于从图像中提取元数据，并将其作为 JSON 数据源供其他节点使用。您可以查看**所有信息**，甚至包括来自其他来源的元数据（如 Photoshop，见示例）。\n\n输入可以来自【带元数据的图像加载】节点或【图像预览】节点（未来还将支持更多输入来源）。\n\n![元数据提取器](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_0148dc417124.png)\n\n**示例：** [metadata-extractor.json](.\u002Fsamples\u002Fmetadata-extractor.json)\n\n>\u003Cdetails>\n>  \u003Csummary>其他元数据示例（Photoshop）\u003C\u002Fsummary>\n>\n> 包含 Photoshop 元数据\n![元数据提取器](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_c8a3a48ccbb1.png)\n>\u003C\u002Fdetails>\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>参数说明\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - 输入：\n>   - metadata_raw：来自图像或预览节点的原始元数据\n> - 输出：\n>   - prompt：生成该图像时使用的提示词。\n>   - workflow：生成该图像的工作流（包含所有节点、数值等详细信息）。\n>   - file info：图像\u002F元数据的文件信息（分辨率、大小等），以人类可读格式呈现。\n>   - raw to JSON：完整的原始元数据被格式化为可读的 JSON。\n>   - raw to property：完整的原始元数据被转换成“属性”格式。\n>   - raw to csv：完整的原始元数据被转换成 CSV 格式。\n>\u003C\u002Fdetails>\n\n\u003Cbr \u002F>\n\n### 节点：元数据比较器\n\n这个节点非常实用，可用于比较两份元数据并找出差异（**这正是我开发此扩展的主要原因！**）\n\n您可以比较三个输入：“Prompt”、“Workflow”和“Fileinfo”。\n\n有三种可能的输出：`values_changed`、`dictionary_item_added` 和 `dictionary_item_removed`（按优先级排列）。\n\n![元数据比较器](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_3344d403fe37.png)\n\n**示例：** [metadata-comparator.json](.\u002Fsamples\u002Fmetadata-comparator.json)\n\n**注意事项：**  \n- 我们使用了 [DeepDiff](https:\u002F\u002Fpypi.org\u002Fproject\u002Fdeepdiff) 库来实现这一功能。更多信息请参阅链接。\n- 如果您想比较两个 JSON 文件，可以使用【JSON 比较器】节点。\n\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>参数说明\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - 选项：\n>   - what：选择要比较的内容，可选“Prompt”、“Workflow”或“Fileinfo”\n> - 输入：\n>   - metadata_raw_old：用于开始比较的原始元数据\n>   - metadata_raw_new：用于对比的原始元数据\n> - 输出：\n>   - diff：这是您可以在节点显示界面上看到的结果，也可用于其他节点。\n>\u003C\u002Fdetails>\n\n\u003Cbr \u002F>\n\n---\n\n## 调试器\n\n### 节点：显示元数据\n\n通过此节点，您可以快速查看由整个提示词和工作流生成的 JSON 数据，从而无需打开 PNG 或 JSON 文件即可了解提示词中的所有值及其他信息。\n\n![显示元数据](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_71c2a444fbf6.png)\n\n**示例：** [debugger-metadata.json](.\u002Fsamples\u002Fdebugger-metadata.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>参数说明\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - 选项：\n>   - Active：启用或禁用该节点\n>   - Parsed：显示解析后的 JSON 或纯文本\n>   - What：显示提示词或工作流（提示词是生成图像的参数，而工作流则是 ComfyUI 的完整流程）\n>\u003C\u002Fdetails>\n\n\u003Cbr \u002F>\n\n### 节点：显示任意内容\n\n您可以将任何文本或节点数据输出到控制台或显示界面上。只需将其连接到您想要检查的内容，即可立即查看。\n\n![显示任意内容](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_df3bc0f3ba44.png)\n\n**示例：** [debugger-any.json](.\u002Fsamples\u002Fdebugger-any.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>参数说明\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - 输入：\n>   - any_value：要显示的任意值，可以是字符串、数字等\n> - 选项：\n>   - Console：是否写入控制台\n>   - Display：是否在此节点上显示\n>   - Prefix：控制台前缀\n>\u003C\u002Fdetails>\n\n\u003Cbr \u002F>\n\n### 节点：将任意内容转换为 JSON 并显示\n\n此节点与上一个类似，但会将值格式化为 JSON（仅在显示界面上）。\n\n![显示 JSON](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_4db505043207.png)\n\n**示例：** [debugger-json.json](.\u002Fsamples\u002Fdebugger-json.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>参数说明\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - 输入：\n>   - any_value：要尝试转换为 JSON 的任意值\n> - 输出：\n>   - string：显示界面上呈现的相同字符串\n>\u003C\u002Fdetails>\n\n\u003Cbr \u002F>\n\n---\n\n## 图像\n\n### 节点：加载带元数据的图像\n此节点与默认节点相同，但增加了三个功能：提示词、元数据，并支持“input”文件夹的**子文件夹**。\n\n![加载带元数据的图像](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_da41f7589abd.png)\n\n**示例：** [image-load.json](.\u002Fsamples\u002Fimage-load.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>参数\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - 输入：\n>   - image：从输入文件夹（及子文件夹）中读取图像（你可以将图像拖放到此处，甚至可以直接从剪贴板粘贴图像）\n> - 输出：\n>   - 图像\u002F遮罩：与默认节点相同  \n>   - 提示词：用于生成该图像的提示词（非工作流中的提示词）  \n>   - 元数据原始数据：图像的元数据原始内容（完整工作流），以字符串形式输出\n>\u003C\u002Fdetails>\n\n**注意：** 子文件夹支持灵感来源于：[comfyui-imagesubfolders](https:\u002F\u002Fgithub.com\u002Fcatscandrive\u002Fcomfyui-imagesubfolders)\n\n\u003Cbr \u002F>\n\n### 节点：保存带额外元数据的图像\n此节点与默认节点相同，但增加了两个功能：是否将工作流一同保存到 PNG 文件中，以及可以添加任意元数据（以 JSON 格式）。\n\n这会在图像中保存自定义数据，以便与其他用户共享，他们可以看到工作流和元数据（参见[从元数据预览](#node-preview-from-metadata)），甚至包括你的自定义数据。\n\n这些数据可以是任何支持文本和 JSON 的信息类型。\n\n![保存带额外元数据的图像](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_3d3b79079ef2.png)\n\n**示例：** [image-save.json](.\u002Fsamples\u002Fimage-save.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>参数\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - options：\n>   - with_workflow：是否要将工作流一同保存到图像中（特别适合与他人分享工作流）\n> - 输入：\n>   - image：要保存的图像（与默认节点相同）\n> - 输出：\n>   - 元数据原始数据：图像的元数据原始内容（完整工作流），以字符串形式输出\n>\u003C\u002Fdetails>\n\n**注意：** 数据会以特殊的“exif”格式（如同 ComfyUI 所做）保存在 PNG 文件中；你可以使用[加载带元数据的图像](#node-load-image-with-metadata)来读取这些数据。\n\n> **重要提示：**\n> - 如果你想以特定名称保存你的工作流，并将自己的数据作为创作者信息一并保存，你需要使用 [ComfyUI-Crystools-save](https:\u002F\u002Fgithub.com\u002Fcrystian\u002FComfyUI-Crystools-save) 插件；不妨试试！\n![Crystools-save](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_52dccfa9e141.png)\n\n\n\u003Cbr \u002F>\n\n### 节点：从图像预览\n此节点用于根据**当前提示词**及其他附加信息预览图像。\n\n![从图像预览](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_3a7c3cd0c4a8.png)\n\n**功能：** 支持缓存（显示为“CACHED”）（目前还不是永久性的），因此即使断开节点连接，你仍然可以看到图像和相关数据，从而可以用来与其他图像进行对比！\n\n![从图像预览差异](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_1bd82528e8e0.png)\n\n如你所见，种子、步骤和 CFG 已被更改\n\n**示例：** [image-preview-image.json](.\u002Fsamples\u002Fimage-preview-image.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>参数\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - 输入：\n>   - image：任何类型的图像链接\n> - 输出：\n>   - 元数据原始数据：图像及其完整工作流的元数据原始内容。  \n>     - 你可以用它来**与其他图像比较**（参见[元数据比较器](#node-metadata-comparator)）\n>     - 包括文件名、分辨率、日期时间及大小等文件信息，但这些信息均基于**当前提示词，而非原始提示词！**（请参阅重要提示）\n>\u003C\u002Fdetails>\n\n> **重要提示：**\n> - 如果你想读取图像的元数据，需要使用[加载带元数据的图像](#node-load-image-with-metadata)，并使用其“元数据原始数据”输出，而不是图像链接。\n> - 进行预览时，必须先将其保存到临时文件夹中，显示的数据来自临时图像，**并非原始图像或原始提示词！**\n\n\u003Cbr \u002F>\n\n### 节点：从元数据预览\n此节点用于根据图像的元数据预览图像，并显示附加信息（围绕该图像的所有信息）。  \n它支持与[从图像预览](#node-preview-from-image)相同的功能（缓存、元数据原始数据等）。但重要的区别在于，你看到的是**图像的真实数据**（而非临时图像或当前提示词）。\n \n![从元数据预览](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_528dc56fe898.png)\n\n**示例：** [image-preview-metadata.json](.\u002Fsamples\u002Fimage-preview-metadata.json)\n\n\u003Cbr \u002F>\n\n### 节点：显示分辨率\n此节点用于显示图像的分辨率。\n\n> 可用于任何图像链接。\n\n![显示分辨率](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_a5024486f5bb.png)\n\n**示例：** [image-resolution.json](.\u002Fsamples\u002Fimage-resolution.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>参数\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - 输入：\n>   - image：任何类型的图像链接\n> - 输出：\n>   - 宽度：图像的宽度  \n>   - 高度：图像的高度\n>\u003C\u002Fdetails>\n\n\u003Cbr \u002F>\n\n---\n\n## 管道\n\n### 节点：管道至\u002F编辑任意，管道自任意\n这一组强大的节点用于更好地组织你的管道。\n\n“管道至\u002F编辑任意”节点用于将多个链接封装成一个单一的链接。它支持编辑功能，并可轻松将修改后的内容重新添加回同一管道编号中。\n\n“管道自任意”节点则用于提取管道中的内容。\n\n典型示例：\n\n![管道](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_6677b89655f1.png)\n\n使用管道后：\n\n![管道](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_29c61aaf0786.png)\n\n**示例：** [pipe-1.json](.\u002Fsamples\u002Fpipe-1.json)\n\n编辑管道：\n\n![管道](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_25d6739d4e8d.png)\n\n**示例：** [pipe-2.json](.\u002Fsamples\u002Fpipe-2.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>参数\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - 输入：\n>   - CPipeAny：这是可用于编辑的管道类型（参见示例）\n>   - any_*：6 种可能的输入来源\n> - 输出：\n>   - CPipeAny：你可以继续使用此输出来延续管道；也可以用它来分叉管道（参见示例）\n>\u003C\u002Fdetails>\n\n>**重要提示：**\n> - 请注意，它支持“any”，这意味着它不会验证输入节点与输出节点之间的对应关系（目前尚未实现）。创建链接时，建议有意识地按编号逐一连接。\n> - “递归错误” 必须注意的是，链接的流向**必须保持一致方向**，不能与其他使用此管道结果的流程混合。否则可能导致递归，进而阻塞服务器（需要重启！）\n\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>带有“递归错误：超过最大递归深度”的不良示例\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> 如果你在控制台中看到类似情况，就需要检查你的管道。那是一个不良的管道示例，不能混用不同的流程。\n![管道](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_6d39cecb0da0.png)\n>\u003C\u002Fdetails>\n\n\u003Cbr \u002F>\n\n---\n\n## 工具类节点\n\n一些在工作流中非常实用的节点。\n\n### 节点：JSON 比较器\n\n这个节点非常有用，可以用来比较两个 JSON 文件并查看它们之间的差异。\n\n![JSON 比较器](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_06db3a4934ae.png)\n\n**示例：** [utils-json-comparator.json](.\u002Fsamples\u002Futils-json-comparator.json)\n\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>参数\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - 输入：\n>   - json_old：用于开始比较的第一个 JSON\n>   - json_new：要比较的 JSON\n> - 输出：\n>   - diff：包含差异的新 JSON\n>\u003C\u002Fdetails>\n\n\n**注释：**  \n正如你所看到的，它与[元数据比较器](#node-metadata-comparator)类似，但处理的是 JSON 数据。  \n另一个节点是为了简单地比较两张图像的元数据而设计的；而这个节点则更加通用。  \n主要区别在于，它可以比较任何 JSON 数据，而不仅仅是元数据。\n\n\u003Cbr \u002F>\n\n### 节点：系统统计信息\n\n此节点用于显示系统统计信息（RAM、VRAM 和磁盘空间）。  \n它**应该**以管道方式连接。\n\n![JSON 比较器](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_a1b934515df9.png)\n\n**示例：** [utils-stats.json](.\u002Fsamples\u002Futils-stats.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>参数\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - 输入：\n>   - latent：用于测量系统统计信息的潜变量\n> - 输出：\n>   - latent：返回相同的潜变量以继续管道\n>\u003C\u002Fdetails>\n\n**注释：** 原始版本来自 [WAS](https:\u002F\u002Fgithub.com\u002FWASasquatch\u002Fwas-node-suite-comfyui)，我只是将其显示在界面上。\n\n\u003Cbr \u002F>\n\n---\n\n## 基本类型节点\n\n### 节点：基本布尔型、基本整数型、基本浮点型、基本字符串型、基本多行字符串型\n\n一组用于在提示词中使用的原始值节点。\n\n![基本类型节点](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_f65b2590f62e.png)\n\n\u003Cbr \u002F>\n\n---\n\n## 列表\n一组包含任意值或字符串\u002F文本列表的节点，可用于各种用途（即将推出使用这些节点的新功能！）。\n\n> **重要提示：** 你可以使用“显示任意”等其他节点来查看列表中的值。\n\n### 节点：字符串列表\n\n**特点：** 你可以将它们连接起来。\n\n![列表](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_1b6e50f339b2.png)\n\n**示例：** [list-strings.json](.\u002Fsamples\u002Flist-strings.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>参数\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - 输入：\n>   - string_*：8 个可能的输入\n>   - delimiter：用于在输出中连接各个值的分隔符\n> - 输出：\n>   - concatenated：所有值连接成的一个字符串\n>   - list_string：仅包含值的字符串列表\n>\u003C\u002Fdetails>\n\n\u003Cbr \u002F>\n\n### 节点：任意值列表\n\n你可以连接任何类型的值（它会尝试将其转换为字符串并显示），因此非常适合同时查看多个值。\n\n![列表](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_8e791562d0b1.png)\n\n**示例：** [list-any.json](.\u002Fsamples\u002Flist-any.json)\n\n>\u003Cdetails>\n>  \u003Csummary>\u003Ci>参数\u003C\u002Fi>\u003C\u002Fsummary>\n>\n> - 输入：\n>   - any_*：8 个可能的输入\n> - 输出：\n>   - list_any：仅包含值的任意值列表\n>\u003C\u002Fdetails>\n\n\u003Cbr \u002F>\n\n---\n\n## 开关\n一组用于在不同流程之间切换的节点。  \n\n所有开关都是布尔型的；只需更改开关的值即可在不同流程之间切换。  \n你有预定义的开关（字符串、潜变量、图像、条件），但也可以使用“任意开关”来处理任何值\u002F类型。\n\n![开关](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_86bf3ec0be63.png)\n\n**示例：** [switch.json](.\u002Fsamples\u002Fswitch.json)\n\n\u003Cbr \u002F>\n\n---\n\n## 关于\n\n**作者注：**\n- 这是我用 Python 编写的第一个项目 ¯\\\\_(ツ)_\u002F¯（欢迎提交 PR！）\n- 我是一名软件工程师，但主要从事其他语言（Web 技术）的工作。\n- 我的 Instagram 是：https:\u002F\u002Fwww.instagram.com\u002Fcrystian.ia 我会在上面发布我的作品，所以请关注我以获取最新消息！ :)\n- 我不是英语母语者，所以如果我的英语不好，请见谅 :P\n\n---\n\n## 待办事项\n- [ ] 多个单元测试\n- [ ] 为预览\u002F元数据图像添加永久缓存（以便在刷新页面或重启服务器时仍能保留）\n\n---\n\n## 更改记录\n\n### Crystools\n\n### 1.27.0 (2025年8月17日)\n- 恢复名称的大写形式，因为注册表无法更改 ¯\\_(ツ)_\u002F¯\n- 移除了 zluda 检查，现在已不再需要\n\n### 1.25.3 (2025年7月27日)\n- 将名称改为小写\n\n### 1.25.1 (2025年6月2日)\n- 修复了设置菜单中开关的问题\n- 新增了“任意开关”节点\n- 加载带元数据的图像功能进行了过滤（排除隐藏文件夹和典型的元数据文件）\n- 其他修复\n\n### 1.24.0 (2025年6月2日)\n- 合并了社区提交的 PR\n- 改进了 VRAM 的使用和读取\n- 添加了硬盘错误处理\n- 懒加载开关\n\n### 1.23.0 (2025年6月2日)\n- @johnnynunez 添加了对 Jetson 的支持\n- 进行了一些 UI 修复\n\n### 1.20.0 (2024年10月21日)\n- JSON 文件读取和提取工具的 BETA 版本，允许你读取自己的 JSON 文件并将其中的值提取出来用于工作流\n\n### 1.19.0 (2024年10月6日)\n- 横向 UI！新版本已经准备就绪！🎉\n\n### 1.18.0 (2024年9月21日)\n- 横向 UI！🎉\n- 设置菜单中可配置显示器大小\n\n### 1.17.0 (2024年9月21日)\n- 重新组织了设置菜单\n- 准备横向 UI\n- 更新自 ComfyUI（TypeScript 和新功能）\n\n### 1.16.0 (2024年7月31日)\n- 回滚了 AMD 支持，因为管理器不支持其他仓库参数（https:\u002F\u002Ftest.pypi.org\u002Fsimple by pyrsmi）\n\n### 1.15.0 (2024年7月21日)\n- AMD 分支合并到主分支，应该适用于**Linux**平台上的 AMD 用户\n\n### 1.14.0 (2024年7月15日)\n- 曾尝试使用 AMD 信息，但导致 Windows 上的安装失败，因此我将其移除 ¯\\_(ツ)_\u002F¯\n- 添加了 AMD 分支，如果你使用 AMD 和 Linux，可以尝试一下（我自己没有测试过）\n\n### 1.13.0 (2024年7月1日)\n- 与 ComfyUI 的新生态系统集成\n- 在加载带元数据的图像节点中添加了 Webp 支持\n\n### 1.12.0 (2024年3月27日)\n- 添加了 GPU 温度监测\n\n### 1.10.0 (2024年1月17日)\n- 添加了多 GPU 支持\n\n### 1.9.2 (2024年1月15日)\n- 对 hardwareInfo 和 monitor.ts 进行了大规模重构，将 GPU 相关代码分离到另一个文件中，为多 GPU 支持做准备\n\n### 1.8.0 (2024年1月14日) - 内部版本\n- 设置菜单中增加了 HDD 监控选择项\n\n### 1.7.0 (2024年1月11日) - 内部版本\n- 添加了 TypeScript！\n\n### 1.6.0 (2024年1月11日)\n- 修复了线程死锁问题 [#7](https:\u002F\u002Fgithub.com\u002Fcrystian\u002Fcomfyui-crystools\u002Fissues\u002F7)\n\n### 1.5.0 (2024年1月10日)\n- 改进了资源监控以及线程处理方式\n- 进行了一些修复\n\n### 1.3.0 (2024年1月8日)\n- 总体上添加了资源监控（CPU、GPU、RAM、VRAM 和磁盘空间）\n- 添加了此图标来标识这套工具：🪛 \n\n### 1.2.0 (2024年1月5日)\n- 添加了进度条\n\n### 1.1.0 (2023年12月29日)\n- 新增了节点：“保存带有额外元数据的图像”\n- 增加了对 Jpeg 元数据的**读取**支持（但不能保存）\n\n### 1.0.0 (2023年12月26日)\n- 首次发布\n\n\n### Crystools-save - 已弃用（2025年6月1日）\n\n### 1.1.0 (2024年1月7日)\n- 标签根据 Crystools 的新版本进行了更新（该项目）\n\n### 1.0.0 (2023年12月29日)\n- 创建了另一个扩展，用于在工作流中保存作者信息：[ComfyUI-Crystools-save](https:\u002F\u002Fgithub.com\u002Fcrystian\u002FComfyUI-Crystools-save)\n\n---\n\n## 安装\n\n### 从 GitHub 安装\n1. 安装 [ComfyUi](https:\u002F\u002Fgithub.com\u002Fcomfyanonymous\u002FComfyUI)。\n2. 将此仓库克隆到 `custom_nodes` 目录下：\n    ```\n    cd ComfyUI\u002Fcustom_nodes\n    git clone https:\u002F\u002Fgithub.com\u002Fcrystian\u002Fcomfyui-crystools.git\n    cd comfyui-crystools\n    pip install -r requirements.txt\n    ```\n3. 启动 ComfyUI。\n\n#### 针对 AMD 用户\n如果你使用的是 Linux 系统的 AMD 显卡，可以尝试 AMD 分支：\n\n**注意：** 不要通过管理器安装，需要手动安装：\n\n  ```\n  cd ComfyUI\u002Fcustom_nodes\n  git clone -b AMD https:\u002F\u002Fgithub.com\u002Fcrystian\u002Fcomfyui-crystools.git\n  cd comfyui-crystools\n  pip install -r requirements.txt\n  ```\n\n### 通过管理器安装\n\n在 [管理器](https:\u002F\u002Fgithub.com\u002Fltdrdata\u002FComfyUI-Manager.git) 中搜索 `crystools` 并安装。\n\n### 在 Google Colab 上使用\n你可以在 Google Colab 上使用，但需要手动安装：\n\n[Google Colab](https:\u002F\u002Fcolab.research.google.com\u002Fdrive\u002F1xiTiPmZkcIqNOsLQPO1UNCdJZqgK3U5k?usp=sharing)\n\n* 运行第一个单元格以安装 ComfyUI 并启动服务器\n* 完成后，使用链接打开一个新的标签页，你会看到类似如下的行：\n```\n这是访问 ComfyUI 的 URL：https:\u002F\u002Fidentifying-complications-fw-some.trycloudflare.com    \n```\n\n---\n\n## 使用方法\n\n你可以像使用其他节点一样使用它，只需在 `crystools` 类别中选择菜单，或双击画布（推荐使用“oo”进行快速筛选）。所有节点都已加上 `[Crystools]` 标记。\n\n![菜单](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_89ab2bd46ef7.png)\n![快捷键](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_readme_820bc03cadb7.png)\n\n如果出于某种原因你需要查看日志，可以定义环境变量 `CRYSTOOLS_LOGLEVEL`，并设置相应的[值](https:\u002F\u002Fdocs.python.org\u002Fes\u002F3\u002Fhowto\u002Flogging.html)。\n\n---\n\n由 Crystian 用心制作。","# ComfyUI-Crystools 快速上手指南\n\nComfyUI-Crystools 是一套强大的 ComfyUI 辅助工具集，提供实时资源监控、进度条、元数据提取与对比、调试节点、增强型图像加载\u002F保存以及灵活的管道（Pipe）管理功能。\n\n## 环境准备\n\n*   **系统要求**：\n    *   操作系统：Windows, Linux, macOS\n    *   Python 版本：与 ComfyUI 要求的版本一致（通常建议 3.10+）\n    *   **ComfyUI 版本**：必须为 **1915** 或更高版本。\n*   **硬件注意**：\n    *   GPU 监控功能（显存、温度等）仅支持 **NVIDIA** 显卡（基于 CUDA）。AMD 用户无法查看 GPU 详细数据。\n*   **前置依赖**：\n    *   安装本插件后，以下库将自动被调用（通常无需手动安装，若报错可手动执行）：\n        ```bash\n        pip install psutil pynvml deepdiff\n        ```\n\n## 安装步骤\n\n推荐使用 ComfyUI Manager 进行安装，也可通过 Git 命令行安装。\n\n### 方法一：使用 ComfyUI Manager（推荐）\n\n1.  启动 ComfyUI，点击右侧菜单的 **\"Manager\"** 按钮。\n2.  选择 **\"Install Custom Nodes\"**。\n3.  在搜索框输入 `Crystools`。\n4.  找到 `ComfyUI-Crystools`，点击 **\"Install\"**。\n5.  安装完成后，**重启 ComfyUI**。\n\n### 方法二：命令行安装\n\n进入 ComfyUI 的 `custom_nodes` 目录，执行以下命令：\n\n```bash\ncd ComfyUI\u002Fcustom_nodes\ngit clone https:\u002F\u002Fgithub.com\u002Fcrystian\u002Fcomfyui-crystools.git\n```\n\n安装依赖（如果自动安装失败）：\n\n```bash\npip install -r comfyui-crystools\u002Frequirements.txt\n```\n\n重启 ComfyUI 即可生效。\n\n## 基本使用\n\n安装重启后，您可以在节点搜索栏中输入关键词找到相关节点。以下是核心功能的快速用法：\n\n### 1. 开启资源监控与进度条\n无需添加节点，功能默认集成在界面菜单中。\n*   **资源监控**：查看 CPU、GPU、RAM、VRAM 及温度的实时占用情况。\n    *   *设置*：在插件设置中可调整刷新率（设为 `0` 可禁用以降低开销）。\n*   **进度条**：顶部菜单显示工作流进度和耗时，点击可高亮显示当前正在运行的节点。\n\n### 2. 图像元数据提取与对比\n这是该插件的核心功能，用于分析图片生成参数。\n\n*   **加载带元数据的图片**：\n    使用 `Load Image with Metadata` 节点替代默认加载节点。它支持子文件夹，并输出 `prompt`（提示词）、`workflow`（工作流 JSON）和 `metadata_raw`。\n*   **提取详细信息**：\n    连接 `Metadata Extractor` 节点，可将原始元数据转换为可读的 JSON、CSV 或属性格式。\n*   **对比两张图片差异**：\n    使用 `Metadata Comparator` 节点。\n    1.  输入两张图片的 `metadata_raw` 数据（分别连接到 `old` 和 `new` 端口）。\n    2.  选择对比内容（Prompt、Workflow 或文件信息）。\n    3.  节点将输出具体的差异项（如参数变更、新增或删除的配置），非常适合调试生成效果变化。\n\n### 3. 调试与信息展示\n*   **查看任意数据**：使用 `Show Any` 节点，连接任意数据类型（字符串、数字、列表等），可直接在节点面板或控制台打印内容，方便排查数据流。\n*   **查看工作流 JSON**：使用 `Show Metadata` 节点，无需打开文件即可查看当前提示词和工作流的完整 JSON 结构。\n\n### 4. 管道（Pipe）管理\n使用 `Pipe To Any` 和 `Pipe From Any` 节点简化连线。\n*   **封装**：将多个分散的输出线（如 model, clip, vae）连接到 `Pipe To Any`，合并为一根线传输。\n*   **解包**：在需要使用的地方，通过 `Pipe From Any` 指定索引号，将数据还原出来。\n*   **编辑**：支持在传输过程中修改管道内的特定数据。\n\n### 5. 保存带额外信息的图片\n使用 `Save Image with Extra Metadata` 节点。\n*   勾选 `with_workflow` 可将完整工作流嵌入图片。\n*   可通过输入端口添加自定义的 JSON 数据到图片 EXIF 中，便于后续分享和追溯。","一位资深 AI 绘画工作流开发者正在调试一个包含数十个节点、耗时较长的复杂图像生成流程，试图优化显存占用并复现某张高质量样图的参数。\n\n### 没有 ComfyUI-Crystools 时\n- **资源监控盲区**：无法实时查看 GPU 显存和温度变化，只能在系统崩溃或报错后才意识到是显存溢出，缺乏预警机制。\n- **进度黑盒状态**：长任务运行时不知道当前执行到哪个节点，也无法预估剩余时间，只能盲目等待或强制中断重试。\n- **元数据提取困难**：想要分析参考图的生成参数（Prompt、工作流结构），必须手动编写脚本解析图片或依赖外部网站，效率极低。\n- **调试成本高昂**：对比两次生成的差异时，难以直观比对 JSON 配置或图像细节，往往靠肉眼猜测哪里出了问题。\n\n### 使用 ComfyUI-Crystools 后\n- **实时资源透视**：通过菜单栏的资源监控器，实时掌握 CPU、GPU、显存及温度数据，精准定位瓶颈并在过载前主动卸载模型。\n- **可视化进度追踪**：顶部进度条清晰展示当前运行节点和已用时间，点击即可跳转定位，让漫长等待变得可控且透明。\n- **一键元数据洞察**：利用“元数据提取器”节点，直接读取图片内嵌的完整工作流和 Prompt，甚至支持 Photoshop 等非标准元数据，瞬间复现他人作品。\n- **高效差异比对**：内置的图像与 JSON 对比功能，帮助开发者快速识别参数微调带来的具体变化，大幅缩短调试迭代周期。\n\nComfyUI-Crystools 将原本黑盒般的运行过程转化为可视、可控、可分析的透明工作流，是提升复杂任务开发效率的必备利器。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcrystian_ComfyUI-Crystools_efd5ba20.png","crystian","Crystian","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fcrystian_69479a61.jpg",null,"Spain","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fcrystian","https:\u002F\u002Fgithub.com\u002Fcrystian",[80,84,88,92,96],{"name":81,"color":82,"percentage":83},"Python","#3572A5",41,{"name":85,"color":86,"percentage":87},"JavaScript","#f1e05a",33.7,{"name":89,"color":90,"percentage":91},"TypeScript","#3178c6",23.2,{"name":93,"color":94,"percentage":95},"CSS","#663399",1.8,{"name":97,"color":98,"percentage":99},"Shell","#89e051",0.3,1826,135,"2026-04-09T14:17:15","MIT","未说明","GPU 监控功能仅支持 NVIDIA 显卡（需 CUDA），AMD 显卡不支持该特定功能；整体运行依赖 ComfyUI 环境，通常建议具备 CUDA 支持的 NVIDIA GPU",{"notes":107,"python":104,"dependencies":108},"1. 本工具是 ComfyUI 的扩展插件，需先安装 ComfyUI（版本要求 1915 或更高）。2. 资源监控器中的 GPU 数据（温度、显存等）仅在 NVIDIA 显卡且使用 CUDA 时可用。3. 监控功能默认开销极低（0.1%-0.5%），可在设置中将刷新率设为 0 以禁用。4. 部分图像预览功能涉及临时文件存储。",[109,110,111,112],"psutil","torch","pynvml","DeepDiff",[15,43],"2026-03-27T02:49:30.150509","2026-04-11T10:02:43.789118",[],[118,122,126,130,134,138,142,146,151,155,160,165],{"id":119,"version":120,"summary_zh":75,"released_at":121},198274,"1.26.0","2025-07-27T12:12:36",{"id":123,"version":124,"summary_zh":75,"released_at":125},198275,"1.15.0","2024-07-22T10:35:33",{"id":127,"version":128,"summary_zh":75,"released_at":129},198276,"1.12.0","2024-03-27T16:59:44",{"id":131,"version":132,"summary_zh":75,"released_at":133},198277,"1.10.0","2024-01-17T00:26:06",{"id":135,"version":136,"summary_zh":75,"released_at":137},198278,"1.9.3","2024-01-16T13:44:20",{"id":139,"version":140,"summary_zh":75,"released_at":141},198279,"1.9.0","2024-01-14T17:04:35",{"id":143,"version":144,"summary_zh":75,"released_at":145},198280,"1.6.0","2024-01-11T16:34:59",{"id":147,"version":148,"summary_zh":149,"released_at":150},198281,"1.5.0","关注点分离与重构","2024-01-10T22:32:52",{"id":152,"version":153,"summary_zh":75,"released_at":154},198282,"1.3.0","2024-01-08T10:30:34",{"id":156,"version":157,"summary_zh":158,"released_at":159},198283,"1.2.0","添加了进度条","2024-01-05T10:36:48",{"id":161,"version":162,"summary_zh":163,"released_at":164},198284,"1.1.0","- 新增节点：“保存带额外元数据的图像”\n- 增加了对 JPEG 元数据的**读取**支持（暂不支持保存）","2023-12-29T16:06:23",{"id":166,"version":167,"summary_zh":75,"released_at":168},198285,"1.0.0","2023-12-29T00:27:10"]