使用说明
. * . * . * . * . * . * .
* *
. _________________________ .
* | | *
. | * . * . * . * . * . | .
* | . A I R G L O W . | *
. | * . * . * . * . * . | .
* | . * . * . * . * . | *
. |_________________________| .
* *
. * . * . * . .
* . * . * . * . * . * . * .
气辉
看着克劳德思考。 Philips Hue MCP服务器+Claude Code挂钩,可根据Claude正在做的事情实时设置灯光动画——思考时为青色,工作时为洋红色,成功时为绿色,权限提示时为红色。每一次会议,每一次工具调用,每一个专注的时刻:可见。即使你的屏幕被锁定或关闭,它也能工作——看一眼灯光,知道克劳德是否需要你的注意。
先决条件
- Node.js 18或更高版本
- 本地网络上的飞利浦秀桥接器(第2+代)
- 至少一个彩色Hue灯泡
安装
npm install
设置
这 setup 这个工具能处理一切。在任何时候都可以从克劳德那里打电话——它会检查你的配置,并告诉你下一步该做什么。
1.添加到克劳德代码
把这个放进去 ~/.claude/settings.json:
{
"mcpServers": {
"hue": {
"command": "node",
"args": ["/path/to/airglow/index.js"]
}
}
}
2.运行引导设置
setup()
该工具将自动搜索您的桥接器,引导您注册API密钥(按下链接按钮,调用 create_user),然后列出你的灯光,并为动画推荐一个灯光——按名称匹配。以一个电话结束:
setup({ default_group: 0, hook_light_id: 6 })
这将所有内容保存到 .env 并为您的项目返回一个可粘贴的挂钩块 .claude/settings.json.
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
HUE_BRIDGE_IP |
-- | 网桥IP地址 |
HUE_USERNAME |
- | API密钥(来自 create_user) |
HUE_DEFAULT_GROUP |
0 |
组ID set_status (0=所有灯) |
HUE_HOOK_LIGHT |
-- | 会话动画的灯光ID |
HUE_MAX_BRIGHTNESS |
60 |
亮度上限,0–100% |
复制 .env.example 到 .env 手动配置,或让 setup() 为你写这些。
Claude代码会话挂钩
thinking working prompt
~~~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~~~~~
~ CYAN pulse ~ ~ MAGENTA ~ ~ RED pulse ~
~ slow breathe~ ~ pulse ~ ~ 30s then ~
~~~~~~~~~~~~~ ~~ ~~~~~ ~~~ ~ idle ~
~~~~~~~~~~~~~~
hue-status.js 基于Claude Code会话事件为单个灯光设置动画。每次钩子调用都会杀死前一个脉冲并重新开始——没有孤立的进程,没有卡住的颜色。
| 事件 | 颜色 | 行为 |
|---|---|---|
| 用户提交提示 | 青色 | 脉冲(思考) |
| 刀具启动 | 洋红色 | 脉冲(工作) |
| 工具结束 | 青色 | 脉冲(思考) |
| 计划已批准 | 绿色 | 持续闪烁,然后继续 |
| 权限提示 | 红色 | 脉冲,30s自动过期→ 闲置 |
| 会话结束 | -- | 恢复会话前状态 |
会话前的灯光状态保存在每个会话的第一个提示上,并在会话停止时恢复。
吊钩配置
由自动生成 setup()。若要手动配置,请添加到项目的 .claude/settings.json:
{
"hooks": {
"UserPromptSubmit": [
{ "hooks": [{ "type": "command", "command": "node /path/to/airglow/hue-status.js thinking" }] }
],
"PreToolUse": [
{ "hooks": [{ "type": "command", "command": "node /path/to/airglow/hue-status.js working" }] }
],
"PostToolUse": [
{ "matcher": "exit_plan_mode", "hooks": [{ "type": "command", "command": "node /path/to/airglow/hue-status.js success" }] },
{ "hooks": [{ "type": "command", "command": "node /path/to/airglow/hue-status.js thinking" }] }
],
"Notification": [
{ "matcher": "permission_prompt", "hooks": [{ "type": "command", "command": "node /path/to/airglow/hue-status.js prompt" }] }
],
"Stop": [
{ "hooks": [{ "type": "command", "command": "node /path/to/airglow/hue-status.js restore" }] }
]
}
}
灯光ID默认为 HUE_HOOK_LIGHT 从 .env。要将项目固定到特定灯光,请将ID作为第二个参数传递:
node hue-status.js thinking 55
要将不同的项目绑定到不同的灯光而不发生git冲突,请使用 settings.local.json (由Claude Code自动识别) .claude/ 目录。
可用工具
| 工具 | 说明 |
|---|---|
setup |
引导入职-发现桥接,注册API密钥,选择动画灯光,返回挂钩配置 |
discover_bridge |
在本地网络上查找Hue网桥 |
create_user |
注册新的API用户(首先按下链接按钮) |
get_lights |
列出灯光——可按房间、开/关状态或颜色能力过滤 |
get_groups |
列出所有组和房间 |
get_scenes |
列出所有已保存的场景 |
get_sensors |
列出运动传感器、温度传感器、按钮和遥控器 |
get_dynamic_scenes |
列出动画智能场景——蜡烛、壁炉等。(v2 API) |
set_light |
控制单个灯——开/关、亮度(0-100%)、色温(153-500 muded)、RGB、HSL、闪光警报、过渡时间 |
set_group |
同时控制组中的所有灯光——参数与 set_light |
set_effect |
将原生动画效果应用于灯光——蜡烛、火、棱镜、闪光、蛋白石、闪光、宇宙。通过 no_effect 以清除。 |
set_status |
将灯光设置为语义状态颜色 |
activate_scene |
按ID激活已保存的场景 |
activate_dynamic_scene |
通过可选的速度控制激活动画智能场景 |
create_scene |
将当前灯光状态快照为命名场景 |
状态颜色
set_status 将命名状态映射到特定的光状态——非常适合CI管道、代理或任何有“情绪”的东西
| 状态 | 颜色 | 振动 |
|---|---|---|
idle |
暖白色 | 什么都没发生 |
thinking |
柔蓝 | 克劳德在推理 |
working |
亮蓝色 | 工具射击 |
building |
琥珀色 | 编译/CI |
waiting |
紫色 | 在评论中被屏蔽 |
success |
绿色 | 钉好了 |
deployed |
青色 | 已装运 |
error |
红色 | 有东西坏了 |
alert |
红色闪光 | 醒来 |
pulse_once |
一个呼吸周期 | 轻轻轻推,恢复到之前的状态 |
off |
关闭 | 完成 |
set_status({ status: "thinking" })
set_status({ status: "success", group_id: 3 })
set_status({ status: "pulse_once", light_id: 6 })
动态场景
get_dynamic_scenes 和 activate_dynamic_scene 使用Hue v2 CLIP API访问动画智能场景。需要使用当前固件和在Hue应用程序中创建的场景的第2代桥接器。
get_dynamic_scenes()
activate_dynamic_scene({ scene_id: "uuid-from-above" })
activate_dynamic_scene({ scene_id: "uuid", speed: 0.7 }) // speed: 0.0–1.0
场景快照
create_scene 准确捕捉您的灯光现在的样子,作为您可以随时回忆起来的命名场景:
create_scene({ name: "Evening Work" }) // captures HUE_DEFAULT_GROUP
create_scene({ name: "Office Focus", group_id: 3 }) // specific room
create_scene({ name: "Desk Only", light_ids: [6, 55] }) // specific lights
返回已准备好的场景ID activate_scene.
