PromLight 高级教程
本教程面向已按《开箱教程》完成配对与接入的用户,专业、完整地介绍 PromLight 的全部能力。加入默认灯控效果满意,则无需阅读本文本。 下列功能均按需开启,非必选项。
接入配置(setup 子命令)
setup 子命令把 PromLight 的状态灯 hook 一键合并安装进各 AI 的配置文件。支持的 AI:claude / codex / cursor / copilot / qoder,或用 all 一次配好本机已装的全部。
setup <agent|all> [--global | --local | --project [<路径>]] [--force]
三种安装位置(互斥,缺省为 --global):
| 命令 | 作用 |
|---|---|
setup claude(缺省=--global) |
就地合并安装到全局(~/.claude/settings.json 等),对所有项目生效——《开箱教程》用的就是它。 |
setup claude --project [<路径>] |
合并安装到指定项目(路径缺省=当前目录)的 .claude/ 等,仅该项目启用,免手动复制。 |
setup claude --local |
不就地安装:在 PromLight 可执行文件同级目录生成配置,供你手动复制到目标位置。 |
合并是幂等的:重复执行不会重复追加,挪动 PromLight 位置后重装会自动更正配置里的路径,也会保留你原有的其它配置;目标文件不是合法 JSON 时会报错并保持原样、绝不破坏。
一次配好多个(all):
| 命令 | 结果 |
|---|---|
setup all(缺省=--global) |
只给本机已装的 AI 配置(按各 AI 的家目录是否存在判定),未装的跳过 |
setup all --force |
跳过检测,强制给全部 5 个 AI 都配 |
setup all --project |
项目级,仅给已装的配(Copilot 仅支持全局,会自动降级) |
显式点名单个 AI(如
setup claude)始终安装、不做检测;检测只作用于all。 Copilot 仅支持全局安装;对它用--project会自动降级为全局并打印提示。 配置改动均在新开对话后生效;Codex 还需在 设置 → 钩子 里手动点击信任一次(桌面版无法用/hooks命令信任)。
各 Agent 的状态覆盖
六种状态灯效(含义见《开箱教程》「默认灯效」)并非每个 AI 都齐全——能点亮哪些,取决于该 AI 对外提供的事件。✓=支持,—=该 AI 无对应事件:
| 状态 | Claude | Codex | Cursor | Copilot | Qoder |
|---|---|---|---|---|---|
| 新对话开始 | ✓ | ✓ | ✓ | ✓ | — |
| 正在处理 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 等待确认 | ✓ | ✓ | ✓ | — | — |
| 出错 | ✓ | — | — | ✓ | ✓ |
| 完成空闲 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 对话结束 | ✓ | — | ✓ | ✓ | — |
- Claude Code:六种状态全支持。
- Codex:不显示「出错」红灯与「对话结束」呼吸(每轮答完即「完成空闲」)。
- Cursor:不显示「出错」红灯,其余均支持。
- GitHub Copilot:不显示「等待确认」黄闪(其确认为系统弹窗)。
- Qoder:只显示「正在处理」「出错」「完成空闲」,无「开始 / 等待确认 / 对话结束」。
未覆盖的状态只是不会单独点灯,这是各 AI 的事件能力差异,并非 PromLight 故障。
Hook 脚本
agent_hook.py 是用于被 Claude/Codex 运行期间调用执行的 Hook 脚本文件,位于 PromLight 程序 同级目录。
该脚本通过TCP端口47800(默认端口,可修改,见「端口与 web 控制台」节),与 PromLight PC端程序通信,为了保证 Agent 正常运行,该脚本执行后立刻释放资源,不会报错,也不会阻塞 Agent 运行。
配置文件
以下配置文件都在 PromLight 程序所在的文件夹里(与 PromLight.exe / PromLight.app 同目录),任意文本编辑器即可打开修改:
events.json——HOOK事件 与 状态灯效映射表,用户可以自定义灯控状态(改完即时生效,无需重启)。devices.json——设备别名 / 多设备路由配置,用户为项目或Agent关联固定的设备(改完需重启 PromLight PC程序)。
自定义灯控效果(events.json)
events.json 有两段:
macros——常用灯效的简称(如work= 黄灯常亮),便于复用;events——"状态 → 灯效"对照表,值可写简称,也可直接写整条命令。
保存后下一次状态变化即生效,无需重启。
例:把"正在处理"从黄灯改成绿灯——
"UserPromptSubmit": "led green on --only"
让"对话结束"变成长周期呼吸
把"对话结束"配成全灭,容易让人误以为设备断电或损坏。用 --fade 给一段2秒长周期呼吸最为合适——平滑起伏、醒目又柔和。把 events.json 里 macros 的 end 改成:
"end": "led green blink --freq 2000 --fade 1000"
--freq 2000:闪烁周期 2 秒,即"长周期";--fade 1000:渐变 1 秒(=周期的一半)→ 满呼吸(灭↔亮平滑过渡)。
--fade只作用于本条命令、对应的那几盏灯,不写设备全局参数、也不影响其他状态的灯效——可放心写进事件。 (与之相对,write led.fadetime(见 §3)改的是全局持久参数,请勿放进事件命令。)
多台PromLight:命名与切换(devices.json)
程序会自动连上所有已配对的 PromLight 指示灯。在 devices.json 的 aliases 里给每台起个好记的名字
(右侧编号印在设备包装标签上,也可在 PromLight web 控制台输入 devices 查到):
"aliases": {
"1号": "D46C50377A40",
"2号": "D46C50377A43"
}
按项目关联PromLight(routes)
让某个项目始终用固定的PromLight,在 devices.json 的 routes 里把项目文件夹映射到设备:
"routes": {
"D:/我的项目/网站": "1号",
"D:/我的项目/App": "2号"
}
这样"网站"项目的 AI 状态永远显示在 1号灯上,多个项目并行也不串。匹配按最长前缀:配了某目录,其所有子目录都会路由到指定的PromLight上。
按 AI 来源关联设备(agents)
想让 Claude 和 Codex 各用一台PromLight?在 devices.json 加一个 agents 段:
"agents": {
"claude": "1号",
"codex": "2号"
}
于是 Claude 的状态走 1号PromLight、Codex 走 2号PromLight,一眼区分谁在干活。
路由优先级:routes(按项目)> agents(按来源)> 自动分配。即同一项目用 routes 钉死时仍以项目为准;没被项目命中的会话,才按 AI 来源分灯。
一份较完整的 devices.json:
{
"aliases": { "1号": "D46C50377A40", "2号": "D46C50377A43" },
"routes": { "D:/我的项目/网站": "1号" },
"agents": { "claude": "1号", "codex": "2号" },
"default": "1号"
}
default:没命中任何路由、也无可分配时的兜底设备(可省,省略=枚举到的第一台)。
改
devices.json后需重启 PromLight 程序才生效(改events.json则即时生效)。
手动操控 PromLight 指示灯
PromLight 程序在后台运行、无可见窗口;下列命令都在 web 控制台(浏览器打开
http://127.0.0.1:7800)的输入框中输入。
在 PromLight web 控制台中可使用提供的命令快速调试设备:
| 操作 | 命令 |
|---|---|
| 列出已连接设备 | devices |
| 把后续命令默认发给某盏 | use 1号 |
| 只让某盏执行这一条 | @1号 led red on |
注意,use 命令,仅用于选择待调试的设备,不会修改 devices.json 中的关联配置。
以下命令直接控制 PromLight 指示灯,便于调试或演示。语法如下:
led 颜色 动作 [--only] [--count 次数] [--freq 周期] [--fade 渐变]
- 颜色:
green绿 /yellow黄 /red红 /all全部(也可组合,如green+red) - 动作:
on亮 /off灭 /blink闪 --only:点亮前先关掉其他灯,保证同一时刻只显示一种状态--count N:闪几次(仅blink,0=持续)--freq:闪烁周期(仅blink,支持单位1000ms/1s,越大越慢;范围 200~5000ms)--fade:本次渐变时长(on/off/blink均可,范围 0~5000ms)。on/off:亮起/熄灭带一段平滑过渡,按设定整段渐变(只受 0~5000ms 限制);blink:配上它即"呼吸",但渐变上限会被自动裁到闪烁周期的一半(设更大也按周期/2 起伏)。
Note: 这里的参数
--count N,--freq,--fade仅针对本次命令,不会保存到设备中。
示例:
| 想要 | 命令 |
|---|---|
| 仅亮绿灯 | led green on --only |
| 红灯闪 5 次 | led red blink --only --count 5 |
| 黄灯慢闪 | led yellow blink --freq 1500ms |
| 全灭 | led all off |
命令打错只会提示"命令有误",不报错、也不影响 AI 运行。
读写设备默认参数(设备持久保存)
还可读/写设备参数。这些是设备级全局参数:写入后对所有灯生效、并持久保存:
| 想要 | 命令 |
|---|---|
| 设亮度 80% | write led.brightness 80 |
| 设闪烁周期 1 秒 | write led.frequency 1000 |
| 读当前亮度 | read led.brightness |
led.brightness亮度 1~100(%)led.frequency闪烁周期 200~5000(ms)led.fadetime渐变时间 0~5000ms(注意 0=无渐变)ble.advtimeout蓝牙广播超时 30..240(秒)
请勿在
events.json的事件命令里write这些参数——它们全局且持久,在事件中反复写入会改变其他状态的灯效、并频繁写入存储。需要"逐灯"渐变/呼吸(只影响某条命令的那几盏灯、不写全局)请改用led … --fade(见 §2)。
更新升级
本节所述自动更新仅指 PC 端 PromLight 程序(后台软件),不涉及 PromLight 蓝牙指示灯硬件的固件升级。蓝牙灯固件升级功能可能在未来版本中提供。
PromLight 程序会自动检查并下载新版本,下次重启程序时无感完成更新,无需手动操作;即使更新失败也不影响 PromLight 指示灯正常使用。
也可以在 web 控制台输入命令 update 手动更新。
端口与 web 控制台
PromLight 程序在后台运行,控制与调试都通过 web 控制台完成:在浏览器打开 http://127.0.0.1:7800 即可。
程序使用两个本机端口,均可在程序目录的 config.json 中配置(端口冲突时程序会引导生成该文件):
| 用途 | 默认端口 | config.json 字段 |
说明 |
|---|---|---|---|
| web 控制台 | 7800 |
web_port |
浏览器访问 http://127.0.0.1:7800 进行控制与调试 |
| Hook 通信 | 47800 |
port |
agent_hook.py 向 PromLight 程序上报 AI 状态的 TCP 端口 |
若某端口被其他程序占用(会导致程序启动失败或对应功能失效),编辑
config.json改用其他端口、保存后重启 PromLight 生效,例如:{ "web_port": 7801, "port": 47801 }
通信协议
暂无
常见问题
使用中的高频问题与排查方法见 常见问题。
命令速查
在 PromLight web 控制台(浏览器打开
http://127.0.0.1:7800)的输入框中输入。
| 命令 | 作用 |
|---|---|
help |
查看帮助,列出软件支持的所有命令和其他帮助信息 |
led green on --only |
仅亮绿灯(黄/红同理) |
led yellow blink --only |
黄灯持续闪 |
led red blink --only --count 5 |
红灯闪 5 次 |
led green blink --freq 4000 --fade 2000 |
绿灯长周期呼吸 |
led all on / led all off |
全亮 / 全灭 |
write led.brightness 80% |
设亮度 |
write led.frequency 1000ms |
设闪烁周期 |
read led.brightness |
读亮度 |
setup <claude|codex|cursor|copilot|qoder|all> [--global|--project [路径]|--local] |
合并/生成接入配置,详见「接入配置」节 |
devices |
列出已连接设备 |
use 名称 |
仅调试用,后续调试命令默认发给该设备 |
@名称 命令 |
仅调试用,只让该设备执行本条硬件命令 |
PromLight出厂默认参数
| 用户参数 | 默认值 | 作用 |
|---|---|---|
led.brightness |
50% | 控制LED灯的显示亮度 |
led.frequency |
1秒 | LED闪烁时的频率周期 |
led.fadetime |
500毫秒 | LED动作变化时的渐变时长 |
ble.advtimeout |
60秒 | 蓝牙广播超时关机时间 |