X-WIDE Prompt Input Helper
X-WIDE Prompt Input Helper —— 正向/反向提示词浮窗:按键(默认 P / N,可自设)弹出输入框,从别处复制的内容自动收进来,回车直接写回画布上那个文本控件,不新增节点、不改现有流程
X-WIDE Prompt Input Helper
<img src="https://raw.githubusercontent.com/XWIDE/comfyui-xwide-prompt-input-helper/main/web/logo_xwide.png" alt="X-WIDE — I BELIEVE" width="360">English | 中文
给 ComfyUI 用的穿透型正向 / 反向提示词浮窗。
按快捷键弹出输入框 → 从别处(浏览器、笔记、翻译软件)把提示词粘进来 → 点「应用并关闭」→ 内容直接写进你正在编辑的那个文本框。
不新增节点,不改任何现有节点,不需要重连工作流。
它就是跟着节点走的:任何一个带文本框的提示词节点,不管是你常用的
CLIP Text Encode,还是某个自定义节点里的提示词框,点一下那个框再按快捷键就能用;
换一个工作流照样能用,不需要先把节点挑出来。
- 正向:
P - 反向:
N
就是一个字母,不用按组合键。想换成别的键(包括 Ctrl+Alt+P 这种组合)
在设置里改:左下角齿轮 → X-WIDE 提示词输入插件(快捷键那一项点一下、直接按你想用的键
就行,还会告诉你这个组合有没有跟系统 / ComfyUI 撞车)。
为什么做这个
ComfyUI 原生的多行文本框有几个让人难受的地方:
- 框太小,长提示词只能看到两三行,写起来像在用针孔看世界;
- 想从外面把一整段提示词搬进来,得先全选、删掉、再粘贴,很容易误删;
- 正向和反向两个框经常在画布上离得很远,来回对照很费眼睛;
- 从翻译软件复制过来的内容,粘进去之后想改一处,又得在很小的框里找。
这个插件不试图替换原生控件,只是在旁边开了两扇"大窗": 你原来的工作方式一点没变,想看大的时候按一下快捷键就行。
怎么用
| 操作 | 说明 |
| --- | --- |
| P | 打开正向提示词浮窗(已经开着时再按 = 重新认目标 + 光标回到输入框,不会关掉它) |
| N | 打开反向提示词浮窗(同上) |
| Enter | 在浮窗里 = 应用并关闭(这是主力操作) |
| Shift+Enter | 在浮窗里 = 换行 |
| Esc | 关掉浮窗(内容会存成草稿,下次自动恢复) |
| 页脚的「关闭」 | 和 Esc 一样,也是关掉浮窗(想用鼠标的时候不用去够键盘) |
两个浮窗可以同时开着,方便正反提示词对照着改。
三个起点都能认:点一下画布上那个提示词框、选中那个节点、或者光标在画布上, 然后按
P/N就能打开对应的浮窗,并且写回你刚点的那个框。 光标停在画布节点的大文本框里时,P/N也照常生效(不会把提示词里的 p、n 抢走 —— 只有在我们自己的浮窗输入框里打字时才会让路)。
浮窗里的按钮:
- 应用并关闭 —— 写回目标控件。写不进去会明确告诉你原因,绝不会乱写。
- 清空 —— 面板清空,写入目标那个框也一起清空("这个框我不要了")。框本来就空时 只清面板;目标已经不在了会明说。清空不会改写入目标。
- 自动粘贴(勾选框,默认开)—— 见下面一段。
- → 负向 / → 正向 —— 把当前内容整段送到对面那个框,方便一处写好、拆成正向和反向。
在别处复制,面板自己收下(1.0.2 起):面板开着时,在页面里选中一段字按 Ctrl+C,
内容就自己进面板;在浏览器外面复制的,切回页面时会自动收下(1.0.3 起,自动粘贴
勾选框控制,默认开)—— 这正是"从翻译软件搬一段提示词进来"最顺手的走法。
你亲手改过内容之后,新收下的内容会接在后面,不会把你正在写的东西顶掉。
同一段文字只会收一次;Ctrl+V 这条老路也一直管用。
Firefox 不允许脚本在没有按键的情况下读剪贴板,所以那边的"切回来自动收下"是用不了 的 —— 面板会提示一次让你按
Ctrl + V,那条路在 Firefox 里照样好使。
文字大小可以调(1.0.4 起):浮窗标题栏上有 A- / A+,点一下走 10%(70%–400%,
200% 以上 25% 一步);面板里 Ctrl + 滚轮 也能实时调。
设置面板里也有一行「文字大小」,带「恢复默认大小」。两处是同一个值,改完立刻生效,刷新也记得住。
它会写到哪里去?
浮窗顶部一直显示着"这一下要写进哪个节点的哪个字段",下面一行小字还写着这次的依据, 写之前你都能看见。
正 / 反是看接收节点自己怎么规定的,按这个顺序认:① 这个框自己的名字写着正反 → 用它;
② 顺线找到接收节点,看线落在它哪个入口上(positive / negative 这种);
③ 节点自己就带正反入口 → 用它。三条都认不出来时:正向按正向填入(面板会如实说明),
反向不猜 —— 提示词本来就不分正反时,它就是提示词。
在这个前提下按顺序找目标(每一档都先过一道角色闸门:角色认得出来、却跟你要的不是同一边, 就直接跳过这一档,不再"找到就用"):
- 你刚点过的那个文本框。点着的正好是本种 → 就是它;点着的是对面那一边
(点反向框按
P)→ 去找跟它配对的那一个(连在同一个接收节点上、角色正好是本种的); 它的正反认不出来 → 就当本种用。 - 当前画布上"唯一能确定是本种"的那个框(按上面那三步认出来的),顺带把配对的那个也记住;
- 你刚选中的节点里、认得出本种的那个文本控件;
- 配对:另一侧的位置是确定的时候(全图唯一认得出,或者你定过的绑定现在还能验出角色), 本侧就是它那一半 —— 治的是"同一张图里两段采样、正反各有俩框";
- 你上一次成功写过的那个框(绑定)。它指向的框角色认得出来、却是另一边,说明这条绑定 是老版本认不出正反时写下的污染 —— 读到它的当场删掉,而不是照着写;
- 当前真正获得焦点的输入框(同样过角色闸门);
- 画布上选中的节点(兜底);
- 更早版本留下的记忆(同样过角色闸门);
- 全都认不出来时:正向用你刚点过的那个框(面板会写明"这个框的正反认不出来,按正向处理");
- 再不行才摊开候选让你点。
第 5 条是分工作流的:换一个工作流之后,绑定不会跟过去。
这一点很重要 —— 节点 id 只在一张工作流里唯一,如果跨工作流生效,
新工作流里那个"同样是 3 号"的节点就会被写进你根本没碰过的内容。
绑定指向的节点已经被删掉或停用(mode=4)时,插件也会当场把这条绑定清掉。
全都落空时,面板照常打开,但会明确标红提示"找不到目标", 并且拒绝写入 —— 宁可你手动指定,也不会把内容塞到你没看的地方。
目标选错了也不要紧:点一下画布上你真正想写的那个框再按
P/N,去向立刻改过去 ("刚点过的框"这一条在最前面,没有东西能挡住它)。
设置
设置就在 ComfyUI 自己的设置面板里(左下角齿轮 ⚙,或按 Ctrl+,):
找到 X-WIDE 提示词输入插件。那里刻意只有四行(插件信息 / 快捷键 / 自动粘贴 / 文字大小),
每行都是一张卡片、整页居中;
插件自己的信息(logo / 版本号 / 作者 / 用法)不占设置面板的行,都在「关于」那个信息页里。
快捷键 —— 点着按,不用手打,还会告诉你撞不撞车:
- 点一下那个按键框,直接按你想用的组合键就设好了;
- 下面每个键各有一条状态行:
✓ 这个组合可用/! 容易误触(没有 Ctrl / Alt / Shift 的单键,在别人的输入框里打字会误触发)/✕ 冲突; - 冲突会分三类说清:系统 / 浏览器保留(
Ctrl+W、F5…)、ComfyUI 自带 (Ctrl+S保存、Ctrl+Enter排队…,还会读出当前真正生效的那张表,把你撞上的那条命令 名字报出来)、容易误触(Delete、Space…); - 默认的
P/N在 ComfyUI 里也各有一个主人(画布上的"钉住选中节点"、"切换节点库侧栏"), 这只会显示成!提醒而不是✕冲突 —— 插件的监听在捕获相、命中就吃掉事件, 真机验过按P/N只出浮窗,节点没被钉住、侧栏也没动;想彻底避开换个组合就行。 Delete/Backspace= 把那个键关掉(面板还能从画布右键菜单打开),Esc= 取消, 另有「恢复默认按键」;- 改完立刻生效,不用刷新页面。
自动粘贴:面板页脚有一个勾选框,设置里也有一个,两个是同一个开关,默认开。
文字大小:面板标题栏上的 A- / A+,和设置里的「文字大小」那一行是同一个值
(70%–400%,10% 一步,200% 以上 25% 一步,另有「恢复默认大小」)。
浮窗标题栏右上角是 A- / A+ / ⚙ 三个按钮;"会写到哪去"改成了目标条下面那行常驻小字,
直接写出这次认出来的依据(点过的框 / 线落在哪个入口 / 节点自己的口 / 认不出来按正向处理)。
画布空白处右键 →「提示词插件」→ 可以打开设置或「关于」——
关于是一个信息页:logo、版本号、⚖ GPL-3.0、免责声明、「作者与链接」(GitHub 仓库 / B 站)、
「用法」和「快捷键」两张卡片。
安装
方式一:手动复制(推荐,最直接)
把这个目录整个复制到 ComfyUI 的 custom_nodes 下:
ComfyUI/custom_nodes/comfyui-xwide-prompt-helper/
然后重启 ComfyUI(不是刷新页面 —— 新增 custom_nodes 需要重启后端)。
重启后按 P,能看到浮窗就说明装好了。
方式二:ComfyUI Manager
在 Manager 里搜索 X-WIDE Prompt Input Helper 安装。
兼容性
- ComfyUI 前端 ≥ 1.3 —— 需要支持把
WEB_DIRECTORY下的.js作为 ES module 加载。 实测环境是前端 1.53.6 + ComfyUI 0.38.2(秋叶整合包 aki-v3)。 - 不需要任何 Python 依赖 —— 插件本身是纯前端的,
nodes.py里是空映射。 - 不会和其他插件打架:它不包装
ComfyWidgets,不注册节点。 单键快捷键也不占 ComfyUI 的内置组合 ——Comfy.Keybinding对"没有修饰键的单个字母" 有一条规定:焦点在输入框里时一律让路;真机实测(选中节点后在画布上真按P/N) 内置动作不会被触发。想更保险,在设置里换成Ctrl+Alt+P这类组合即可,改完立刻生效。
已知的边界
- 单键快捷键会让路给你正在打字的输入框:光标停在别人的文本框里时按
P/N, 按键原样留在文本框里,只弹一句提示。这是刻意的 —— 否则提示词里就没法打 p 和 n 了。 带修饰键的组合(比如改成Ctrl+Alt+P)规则相同:在别人的输入框里同样不抢键。 - 「切回页面自动收下」要读剪贴板:
navigator.clipboard.readText()只在安全上下文 (https://或http://127.0.0.1/localhost)下可用。用局域网 IP 访问 ComfyUI 时浏览器 禁用该 API,此时插件只提示一次让你按Ctrl+V—— 那条路照样好使。 Firefox 则是一律禁止没有按键的读剪贴板,所以在 Firefox 里请用Ctrl+V(同样只提示一次)。 - 只认文本类控件(多行文本、单行文本)。数字、下拉之类的控件不会被写入。
排查
打开浏览器控制台(F12),插件会把关键动作打在 [X-WIDE Prompt Input Helper] 前缀下。
在控制台里还可以直接用:
XWidePromptHelper.open('positive') // 用代码打开面板
XWidePromptHelper.describeTarget('positive') // 看看现在会写到哪
XWidePromptHelper.openSettings() // 打开设置
想看到更啰嗦的日志,在控制台执行 localStorage.setItem('XWidePromptHelper.debug', '1')
再刷新页面。
开发
前端源码在 web/:
web/js/i18n.js 中英双语字典
web/js/bridge.js 画布读写桥(找控件、写值、校验)
web/js/prompt_panel.js 浮窗本体(最大的一个文件)
web/js/prompt_helper.js 扩展入口、设置/关于弹窗、右键菜单
web/css/prompt_panel.css 样式(全部走 ComfyUI 的 CSS 变量)
测试是零依赖的,直接用 Node 跑:
node tests/run.mjs
它会用一套自写的极简 DOM 桩 + ComfyUI 前端桩,把「快捷键 → 浮窗 → 写回控件」
整条链路端到端跑一遍(312 项断言),并把报告写到 tests/last-run.txt。
不需要装 npm 依赖:测试跑在纯 Node 上(没有 Node 时用任意 Electron 可执行文件
加 ELECTRON_RUN_AS_NODE=1 也能跑)。
作者
X-WIDE
| | | | --- | --- | | 插件仓库 | https://github.com/XWIDE/comfyui-xwide-prompt-input-helper | | GitHub | https://github.com/XWIDE | | B 站 | https://space.bilibili.com/374064919 | | 插件市场 | https://registry.comfy.org/publishers/xwide |
许可
GPL-3.0,全文见 LICENSE。