mi-cli 主线说明
定位
mi-cli 是 HomeSense Studio V1 的唯一米家控制核心。HA 和 hami-cli 只保留为历史参考,不再作为当前家庭娱乐演示链路的活跃依赖。
V1 目标是支撑可实测的家庭电视场景:
text
Chat / Workflow
-> mi-cli 场景、小爱、红外、MIoT 控制
-> adb-cli 电视 App 操控
-> Bilibili TV 演示闭环登录
登录必须使用米家 App 扫码:
login_qr:生成二维码登录信息prepare_login:兼容别名,等同于login_qrlogin_status:检查登录状态,并在扫码完成后保存 tokenlogin_logout:清理本地登录状态
登录状态固定返回:
logged_intoken_validhas_saved_loginuser_idauth_fields_presentpending_qrqr.login_urlqr.qr_imageqr.lp_urlnext_steps.should_scan_qr
Token 会尝试通过 serviceLogin -> location -> cookies 刷新,但不能假设所有小米服务 token 通用。尤其 speaker_status 仍涉及 Mina 服务,属于实验接口,不进入 V1 主线承诺。
能力入口
资产发现:
discover:家庭、设备、features、entities、capability_profilespeaker_list:小爱音箱候选scene_list:米家手动场景discover_ir:红外控制器ir_get_keys:红外按键
控制:
scene_execute:执行米家手动场景ir_press_key:发送红外按键speaker_execute:让小爱执行语音指令speaker_play:让小爱朗读文本get_prop / set_prop / run_action:MIoT 属性与动作
推荐控制顺序:
scene_executeir_press_keyspeaker_executeset_prop / run_action
小爱与蓝牙边界
小爱 V1 主路径只依赖 MIoT action:
speaker_execute优先找execute-text-directive- 次选
execute_directive - 再次选
message_router.post speaker_play优先找play-text
蓝牙能力只承认米家云或网关已经暴露出来的设备能力。项目不承诺任意第三方蓝牙设备直控。
后端入口
后端已经把 mi-cli 接成一等执行器:
/api/auth/login/api/auth/status/api/auth/logout/api/devices/discover/api/devices/scenes/api/devices/scenes/execute/api/devices/speakers/api/devices/ir/controllers/:parentDid/api/devices/ir/keys/:controllerId
Workflow / Studio 默认电视演示链已经切到 mi-cli.scene_execute、mi-cli.speaker_execute 和 ADB,不再使用 hami-cli。
前端管理面边界
当前前端固定拆成三类控制面:
Studio:Dify 式资产中枢和工作流控制面,管理 workflow / manifest / plan / agent 等资产。设备管理:HA 式统一设备注册表,只关心 Device / Entity / Service / State,不承担扫码登录和 CLI 配置。集成管理:插件和集成管理面,管理 CLI / Agent / A2A / Service / Channel 的存在、配置、登录、通用调用和诊断。
因此 mi-cli 的二维码登录、米家诊断、场景查询、小爱列表、红外控制器查询都放在 集成管理。mi-cli.discover 发现到的设备会落到本地设备注册表,再由 设备管理 以统一实体方式展示。
这个拆分的目的:
- 避免设备页变成米家控制台。
- 让未来
adb-cli、bilibili-cli、Codex / Claude / 小龙虾 A2A、飞书/微信/QQ 渠道都能用同一种集成管理入口接入。 - 保持 Chat 和 Workflow 只消费共享底座,不把配置型 UI 堆进对话或画布里。