智能灯光控制工具

Airglow是一款智能灯光控制工具,通过实时动画显示Claude AI的状态,包括思考、工作、成功和权限提示等,适用于智能家居和开发场景。

  • by Roach
  • JavaScript
  • 本地部署
  • 9 星标
  • 更新于
在 GitHub 查看 Roach/hue-mcp

使用说明

        . * . * . * . * . * . * .
      *                           *
    .    _________________________    .
   *    |                         |    *
  .     |   * . * . * . * . * .   |     .
  *     |  .   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.