Windows CMD 也能 Tab 补全 ComfyUI 官方 CLI 了!------ CMD CLI 命令补全实操记录
关键词:ComfyUI、comfy-cli、CMD、Tab 补全、Clink、PowerShell、Windows
一、为什么要装补全
ComfyUI 官方提供的 https://docs.comfy.org/comfy-cli/getting-started 把打包、发布、节点管理等操作集中成一条命令,但默认只在 PowerShell/Bash 支持 Tab 补全 。
对"重度 CMD 用户"来说,每次手敲 comfy node publish --token xxx 不仅累,还容易打错。
本文记录如何让 Windows CMD 也能弹出子命令/参数提示,并解释为什么官方直接 comfy --install-completion 会失败。

二、背景
官方 https://docs.comfy.org/comfy-cli/getting-started 默认只支持 PowerShell/Bash 的 Tab 补全,Windows CMD 会无情提示:
Shell cmd is not supported.

本文记录一种 "先唤 PowerShell 装补全,再补装 Clink" 的零脚本方案,最终让 原生 CMD 也能弹出子命令/参数提示。
三、核心原理
comfy-cli 的补全依赖 Python 库 https://github.com/click-contrib/click-completion,该库硬编码 只认 powershell、bash、zsh、fish 四种 Shell;
对于 cmd.exe 会直截了当地返回 "Shell cmd is not supported."
因此必须借助 Clink(微软收购的 CMD 增强插件)手动注入补全脚本,才能绕过这一限制。
四、实测环境
-
Windows 11 26H1
-
VS 2022 Developer Command Prompt(仍是 cmd.exe 内核)
在 PyCharm 中配置 x64 Native Tools Command Prompt for VS 2022 作为默认终端
- Clink v1.9.5(事后安装)
- comfy-cli v1.5.3+
五、操作步骤(实测环境 Win11 23H2 + VS2022 DevCmd)
| 步骤 | 命令 / 操作 | 说明 |
|---|---|---|
| 1 | 在 CMD 里临时唤起 PowerShell | 用 powershell 安装 comfy-cli 补全功能 |
| 2 | 进入 ComfyUI 目录并激活环境 | .venv\Scripts\Activate.ps1 |
| 3 | 生成补全脚本(仅一次) | comfy --install-completion |
| 4 | 退出 PowerShell | exit |
| 5 | 安装 Clink(若未装) | winget install clink |
| 6 | 重新进入 普通 CMD 或 Developer CMD | 确保提示行出现 Clink v1.x.x |
| 7 | 测试补全 | comfy <TAB> |
六、上表中对应的命令(CMD终端中)
:: 在当前CMD窗口中唤起 PowerShell
powershell

# 进入 ComfyUI 目录并用 PowerShell 命令格式激活环境
.venv\Scripts\Activate.ps1
# 安装生成补全脚本(仅一次)
comfy --install-completion

# 退出 PowerShell 退回到 CMD
exit
:: 安装 Clink
winget install clink

:: 关闭当前窗口
:: 重新进入 普通 CMD 或 Developer CMD
:: 保提示行出现 Clink v1.x.x

::测试补全
comfy <输入关键词后按 TAB 键>
七、效果验证
Clink v1.9.5.ee6b4f
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.12.15
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
(Win_ComfyUI) H:\PythonProjects1\Win_ComfyUI>comfy <TAB>
node registry completion help version
(Win_ComfyUI) H:\PythonProjects1\Win_ComfyUI>comfy node <TAB>
pack publish init install update
无需手写 Lua,无需额外配置,Tab 键即刻弹出候选。




八、进阶操作:手动制作 CMD 补全脚本(Clink Lua)
-
- 在
%LOCALAPPDATA%\clink目录新建文件
comfy_completion.lua内容示例如下(已包含常用子命令,后续可按格式自行扩展):
-- comfy command completion for Clink
-- Save as %LOCALAPPDATA%\clink\comfy_completion.lualocal parser = clink.arg.new_parser
-- 子命令列表
local node_parser = parser({
"pack", "publish", "init", "install", "update"
})local registry_parser = parser({
"list", "search"
})local comfy_parser = parser({
"node" .. node_parser,
"registry" .. registry_parser,
"completion", "help", "version"
})-- 注册到 clink
clink.arg.register_parser("comfy", comfy_parser) - 在
-
- 保存后重新进入 CMD (或执行
clink reload),输入:
::测试补全
comfy <输入关键词后按 TAB 键> - 保存后重新进入 CMD (或执行
若弹出候选:
node registry completion help version
说明补全已生效。
九、使用示例
C:\> cd H:\ComfyUI
H:\ComfyUI> .venv\Scripts\activate
(Win_ComfyUI) H:\ComfyUI> comfy node <TAB>
pack publish init install update
(Win_ComfyUI) H:\ComfyUI> comfy node publish --token <TAB>
# 此处会继续补全文件名或环境变量,取决于 Clink 版本
十、原理浅析回顾
-
PowerShell 阶段
comfy --install-completion实际上会把补全逻辑写入 click 的通用描述文件 (_comfy.py),而非特定 Shell 脚本。 -
Clink 阶段
Clink 会扫描并自动加载 click 生成的补全描述,因此事后安装 Clink 也能立即生效;CMD 本身只需负责注入与触发。
十一、常见问题速查
| 现象 | 解决 |
|---|---|
仍提示 Shell cmd is not supported. |
说明还没装 Clink 或当前窗口未注入,重装/重开即可 |
| 补全无任何反应 | 确认新窗口有 Clink v1.x.x 字样;若无,执行 clink.bat inject |
| VS Dev Prompt 无效 | 关闭重开,或手动 clink.bat inject 一次 |
十二、一句话总结
"先 PowerShell 装补全,再补 Clink" → 事后无需任何 Lua 脚本,原生 CMD 也能享受与 PowerShell 同级别的 Tab 补全 。
装完一时爽,一直 Tab 一直爽!🎉
引用链接
1\] Clink 官网 [https://chrisant996.github.io/clink/](https://chrisant996.github.io/clink/ "https://chrisant996.github.io/clink/") \[2\] comfy-cli 官方文档 [https://docs.comfy.org/comfy-cli/getting-started](https://docs.comfy.org/comfy-cli/getting-started "https://docs.comfy.org/comfy-cli/getting-started") \[3\] click-completion 源码(查看支持 Shell 列表) [https://github.com/click-contrib/click-completion](https://github.com/click-contrib/click-completion "https://github.com/click-contrib/click-completion")