SuperAPI AI 工具集

yeelight-cinema-director

办公与效率

查看项目

更新于 10-16 11:17

技能介绍

用途

Yeelight Cinema Director 用于在本地私人影院场景下,把选定的影片、原声音乐与 Yeelight 灯光联动起来。当用户要求“电影主题灯光秀”“配乐可视化”或“用 Yeelight 灯做私人放映”时使用本技能。它是本地、单用户的体验:不会启动公网服务器、不会进行云端登录,也不会要求用户运行 shell 命令。

主要能力

  • 搜索影片,选择官方海报并选定恰好一首原声音轨;若目录返回官方曲目链接,Apple Music 作为主要播放入口。
  • 选择一个或多个已发现的灯具。每个被选灯只会被分配为 Accent 或 Ambient 之一,这两个名称描述的是音乐角色而非灯具数量;即使只有一盏灯,也会收到完整的合成音轨效果。
  • 通过浏览器进行音频分析,结合歌词线索编排灯光。页面显示实时频谱、保守的歌词提示、目标角色、派发确认和逐目标结果。
  • 可随时暂停、替换、清除或停止。停止会先使该代次失效,对冻结的目标快照做淡出、短暂断电、恢复记录的实时前状态,并逐个回读。部分完成、超时或恢复不一致的结果会被报告为不确定。

使用方式

主机(AI)拥有服务生命周期:它执行包装脚本、解析其单行 JSON 响应、仅在模式与运行时上下文相符时复用健康实例,并用主机浏览器工具打开返回的 openUrl。以下为宿主内部动作,不是给用户的指令:

模拟预览(“预览/模拟/先看看”的默认行为):

sh scripts/invoke.sh start

显式实时预检(仅在用户明确指定受保护上下文后):

sh scripts/invoke.sh start --mode live --profile <profile> --region <cn|sg|us|eu> --house-id <house-id>

当受保护的运行时元数据提供家庭网关时的优先用法:

sh scripts/invoke.sh start --mode live --profile <profile> --region <cn|sg|us|eu> --house-id <house-id> --control-mode local-preferred --gateway-ip <private-gateway-ip>

包装脚本输出一行 JSON,包含 status、serviceStatus、mode、openUrl 和 healthUrl。PowerShell 主机使用 scripts/invoke.ps1,动作相同。如果正在运行的服务模式或实时上下文不符,主机会先 stop 再执行请求的 start,不会静默复用错误实例。设置 YEELIGHT_CINEMA_MODE=live 以及活动/默认 profile 不足以启用实时模式。

启动前需对自然语言请求分类:

  • 模拟预览:如“预览、模拟、先看看效果”使用默认 mock 启动,不调用 Yeelight Runtime,可立即打开。
  • 实时预检:如“真实、实体、EU 家庭”要求主机从受保护的本地 Runtime 元数据中显式选定 profile、region 和 house 后启动。
  • 实时执行:任何含糊请求都不得触发物理写入。必须先展示确切目标集和恢复方案,然后在会话中要求用户确认范围内的测试。

首次运行默认在确定性 mock 模式下进行,因此目录、音频、灯光、停止和错误状态都可在无硬件时安全探索。真实运行需显式选择加入,除非已安装的 yeelight-home Runtime 通过带明确 profile/region/house 的只读预检,否则会安全失败。唯一的生产路径为:browser -> loopback service -> semantic Runtime request -> yeelight-home invoke --stdin。

放映操作

  1. 搜索影片,选择官方海报并选定恰好一首原声音轨。
  2. 选择一个或多个已发现的灯。
  3. 使用 “Open Apple Music window” 打开所选曲目——这是一个小的、可调整大小的顶层播放器;切换原声后再次点击会复用同一窗口并导航到新曲目,而不会新开窗口。页面右下角还提供可拖拽的 Apple Music 伴随控件,其“打开播放器/加载所选曲目/将播放器置前”复用同一顶层窗口。当所选曲目没有官方 Apple Music 链接时,YouTube 仅作为次要回退出现。若希望浏览器播放器驱动灯光,可用原生音频共享选择器共享正在播放原声的标签页或窗口并启用其音频;页面不能替用户选择音源。本地音频仍是回退方案。
  4. 准备控制台以捕获只读目标快照,然后启动。实时模式下,主机验证前 Prepare 保持只读;验证未成功前 Start 保持阻断。
  5. 随时可暂停、替换、清除或停止。

限制与边界

  • 服务仅监听 127.0.0.1,拒绝外部 Host/Origin 和跨站 POST,使用短时页面凭证,且不返回 CORS 授权。
  • 请求为 JSON,大小有界,字段/枚举闭合;用户文本按文本渲染而非可执行标记。
  • 封面图仅从服务器签名的不可见句柄和精确的 HTTPS 主机白名单中获取;重定向、私有 DNS、超大响应和原始上游错误都会被拒绝。
  • 本技能不包含二维码登录、令牌 profile、原始 URL、原始 header、MCP 会话或任意 Runtime 意图。YouTube Data API key 可选且仅在进程内;无 key 时使用固定的服务端 YouTube Web JSON 搜索回退,不抓取 HTML、不发送浏览器 cookie/登录状态。
  • 技能不会从浏览器调用 OpenAI、Anthropic、Gemini 或主机模型;AI 能力来自阅读本技能的主机 AI。
  • 实时上下文由主机拥有并显式传递:profile、region、house-id 及可选本地网关字段只传给本地 Runtime 进程,从不接受自浏览器 JSON、不返回到页面数据、不写入日志。
  • 初始防御性上限为每次放映 160 盏灯,这是资源保护而非拓扑或房间假设;超过 161 会在任何 Runtime 调用前被拒绝。
  • 首次物理运行是独立的有界验证而非普通高频放映:需通过受保护 Runtime 上下文执行只读的 auth status、home list、entity.list 以及专门的精确目标 state.batch.query 预检;从绑定范围内选择四盏不同灯作为物理样本;记录脱敏的逐目标前状态;要求用户明确确认“确认执行上述 4 盏灯短时验证”;服务将亮度上限设为 10%,并对每个目标串行执行一次有界验证序列。失败的恢复不算成功;应停止后续写入并保留恢复列表可见。
  • 浏览器一次只发送一个实时帧请求。忙碌或节奏跳帧意味着没有新物理写入被接受,也不会产生恢复队列。每个实时帧覆盖完整冻结的所选集合。Runtime 写入使用 12 个 worker 的有界池。
  • 部分或不确定的实时结果会被记录,当每个失败行都可重试时下一帧继续。连续全失败帧有 300 帧的宽限预算(默认节奏约 3 分钟),用尽后播放停止并保持已触及范围可恢复。
  • Flow receipt 表示语义请求已被确认,不代表物理灯已改变。lighting.design.apply 保留用于低频初始化和终止。
  • 详细契约参见 references/lighting-model.md、references/runtime-execution.md、references/setup.md 和 references/live-validation.md。

以上介绍基于所提供的技能资料,未提及的收费、价格、平台支持或效果细节暂未提供。