Extensions/X-WIDE Prompt Input Helper
ComfyUI Extension

X-WIDE Prompt Input Helper

X-WIDE Prompt Input Helper —— 正向/反向提示词浮窗:按键(默认 P / N,可自设)弹出输入框,从别处复制的内容自动收进来,回车直接写回画布上那个文本控件,不新增节点、不改现有流程

By XWIDE·Created about 15 hours ago·Updated about 15 hours ago· 0
XWIDE/comfyui-xwide-prompt-input-helper
Nodes—
On cloudLocal install
Stars0
Updatedabout 15 hours ago
Readme

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 | 中文

version license comfyui

给 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 这种); ③ 节点自己就带正反入口 → 用它。三条都认不出来时:正向按正向填入(面板会如实说明), 反向不猜 —— 提示词本来就不分正反时,它就是提示词。

在这个前提下按顺序找目标(每一档都先过一道角色闸门:角色认得出来、却跟你要的不是同一边, 就直接跳过这一档,不再"找到就用"):

  1. 你刚点过的那个文本框。点着的正好是本种 → 就是它;点着的是对面那一边 (点反向框按 P)→ 去找跟它配对的那一个(连在同一个接收节点上、角色正好是本种的); 它的正反认不出来 → 就当本种用。
  2. 当前画布上"唯一能确定是本种"的那个框(按上面那三步认出来的),顺带把配对的那个也记住;
  3. 你刚选中的节点里、认得出本种的那个文本控件;
  4. 配对:另一侧的位置是确定的时候(全图唯一认得出,或者你定过的绑定现在还能验出角色), 本侧就是它那一半 —— 治的是"同一张图里两段采样、正反各有俩框";
  5. 你上一次成功写过的那个框(绑定)。它指向的框角色认得出来、却是另一边,说明这条绑定 是老版本认不出正反时写下的污染 —— 读到它的当场删掉,而不是照着写;
  6. 当前真正获得焦点的输入框(同样过角色闸门);
  7. 画布上选中的节点(兜底);
  8. 更早版本留下的记忆(同样过角色闸门);
  9. 全都认不出来时:正向用你刚点过的那个框(面板会写明"这个框的正反认不出来,按正向处理");
  10. 再不行才摊开候选让你点。

第 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。