DeepSeek Harness Hub
← 返回列表

SiriusWJ/dsh-mihome

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

给 DeepSeek Harness agent 的米家Xiaomi Home控制插件。

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/5 · 已提供中文文档

Mi Home (米家) control for DeepSeek Harness agents — list homes/devices, read props, control devices behind a human approval gate.

综合分
30.6
GitHub 分
30.6
用户评分
★ Stars
3
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add SiriusWJ/dsh-mihome
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/20(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-loop@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-credentials@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools@deepseek-ai/schemastery
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-mihome

给 DeepSeek Harness agent 的米家(Xiaomi Home)控制插件。
读取家庭/设备 · 查询属性 · 控制设备——所有改变状态的调用都经过人工审批闸门。

English ·
·

✨ 效果预览

| ① 提问 | ② 审批闸门 | ③ 完成——状态真的变了 |
|---|---|---|
| agent 用 mi_list_devices 列出你的设备。 | mi_turn / mi_control 暂停,弹出人工审批框。 | 批准后设备状态更新,mi_get_state 确认。 |

还有 Web UI 仪表盘卡片 —— 调用 mi_dashboard,全屋状态直接渲染在对话里:

🏠 米家仪表盘 · 14 台设备 · 12 在线 · 18:32:05
🏠 客厅  🏠 卧室  🏠 厨房
💡 灯光        💡 客厅灯  on · brightness 100%      💡 卧室灯  off
🔌 插座        🔌 客厅插线板  on · 32 W              …
📊 传感器      🌡️ 客厅温湿度  temperature 22.5°C   💧 卧室温湿度  humidity 52%
…
🕐 最近变化    卧室灯: power — → on   18:31

没有米家账号也能玩 —— 自带演示模拟器(pnpm demo:mi)+ 交互式演示页(docs/demo.html),5 分钟完整体验。

🎯 能做什么?

像跟管家说话一样指挥你的家——所有写操作都先经过人工审批:

| 你说 | 会发生什么 |
|---|---|
| 「检查米家连接,列出所有设备」 | mi_health / mi_list_devices 扫描并汇总 |
| 「客厅灯开着吗?卧室呢?」 | mi_get_state 按需读取属性 |
| 「给我看看家庭仪表盘。」 | mi_dashboard 在对话里渲染实时仪表盘卡片——分类、房间、最近变化一览无余 |
| 「关掉卧室灯。」 | mi_turn → 审批弹窗 → 执行 → 状态即时更新 |
| 「把客厅灯调到 60% 亮度。」 | mi_control(set_bright)→ 审批弹窗 → 执行 |
| 「等空调到 24° 再告诉我。」 | mi_wait_for_state 轮询到目标状态 |
| 「出门模式:把所有灯都关掉。」 | 批量 mi_turn(每条都过审批) |

🛠 功能

| 工具 | 说明 | 审批 |
|---|---|---|
| mi_health | 验证连接;返回账号、区域、家庭数、设备数 | 只读 |
| mi_list_homes | 列出家庭与房间(home_id / owner_id / 房间) | 只读 |
| mi_list_devices | 列出设备,按名称/类别过滤(light、outlet、sensor、climate…) | 只读 |
| mi_get_state | 单设备状态:在线状态、类别、常见属性(power/brightness/温度/湿度/电量…) | 只读 |
| mi_turn | set_power 开/关设备 | 需批准 |
| mi_control | 任意 miIO raw_command:set_bright、set_properties(MIoT)… | 需批准 |
| mi_wait_for_state | 轮询等待属性达到/离开某个状态 | 只读 |
| mi_dashboard | 全屋快照,在 Web UI 渲染为仪表盘卡片 | 只读 |

📦 安装

需要 dsh ≥ 0.1.0-rc.7(0.1.1-rc.2 已实测)。

从 npm 安装(推荐,预构建产物):
dsh plugin --profile web add dsh-mihome

或从 GitHub 安装(源码安装,pnpm 会在安装时自动构建):
dsh plugin --profile web add github:/dsh-mihome

安装后重启 dsh --profile web。可在 Settings → Plugins 管理。

🧪 没有米家账号?先玩演示模式

git clone https://github.com//dsh-mihome
cd dsh-mihome
pnpm install
pnpm demo:mi          # 在 http://127.0.0.1:8125 起一个假的米家云

在 profile 的 cordis.patch.yml 里配置:

- id: mihome
config:
mode: demo
baseUrl: http://127.0.0.1:8125

然后启动 dsh 试试:

「检查米家连接,然后列出所有设备。」

「把卧室灯调到 60 亮度。」——会弹出审批请求;批准后 mi_get_state 显示 brightness: 60。

「关掉客厅里所有的灯。」

模拟器里的温度传感器每几秒漂移一次,所以仪表盘和「最近变化」永远有新数据。

想完全不启动 dsh 就先看效果? 用浏览器打开 docs/demo.html:模拟 DSH 对话(工具卡片 + 审批弹窗),右侧实时控制台直连模拟器做真实调用。

可直接粘贴的配置(演示 / 真实米家 / 关闭审批)见 examples/cordis.patch.yml。

⚙️ 配置

在 profile 的 cordis.patch.yml 中覆盖插件配置(后层覆盖前层):

- id: mihome
config:
mode: cloud                # cloud 或 demo
region: cn                 # 米家账号区域:cn / de / ru / us / tw / sg / in…
usernameEnv: MIHOME_USERNAME   # 存放账号的环境变量名
passwordEnv: MIHOME_PASSWORD   # 存放密码的环境变量名
timeoutMs: 15000
requireApproval: true      # 改变状态的调用需要人工批准
allowedCategories: []      # 可控制类别白名单,例如 [light, outlet, climate];留空 = 全部允许
dashboardPropsLimit: 30    # 仪表盘拉取属性的设备上限
recentBufferSize: 50       # 最近变化缓冲大小

然后带上环境变量启动:

MIHOME_USERNAME= MIHOME_PASSWORD= dsh --profile web

username / password 也可以直接写进配置,但强烈建议用 usernameEnv / passwordEnv 走环境变量或 credentials 接缝——凭证每次请求重新解析,轮换无需重启。

🔒 安全说明

- 运输安全:米家云 API 使用账号密码登录换取一次性会话(serviceToken / ssecurity),插件不在本地保存密码,只在使用时通过凭证接缝读取。
- 审批闸门:mi_turn / mi_control 永远走 harness 的审批接缝(requireApproval: true 默认开启)——agent 不经你同意碰不了你的家。
- 类别白名单:allowedCategories 是第二道保险,设置后其他类别的控制调用直接被拒绝,且设备类别解析失败时默认拒绝(最小权限)。
- 账号安全:建议开启米家 App 的「设备授权」验证;如账号触发验证码/2FA 登录(部分账号会有安全风控),当前版本会给出明确报错——这种情况请用无 2FA 的账号或等待风控解除。

⚠️ 已知限制

- 云 API(account.xiaomi.com / api.io.mi.com)非官方文档,接口可能随米家 App 更新而变化;本插件按社区验证过的登录/签名流程实现(参考 Xiaomi-cloud-tokens-extractor / python-miio)。
- 不支持的场景:米家账号需验证码/2FA;分组设备(get_split_device 的子设备)属性读取可能受限。
- 本地直连(miIO UDP + 设备 token)规划中,接入后不依赖云端即可控制局域网设备。

🛠 开发

pnpm install
pnpm typecheck   # 针对 @deepseek-ai/* 类型做严格 TS 检查
pnpm build       # 打包 lib/(ESM + d.ts)
pnpm test        # 签名/加密原语 + 演示服务器端到端测试

📋 兼容性

- Host 端零运行时依赖:Node 内置 crypto / fetch + 标准库,无 MQTT、无额外守护进程。
- 已针对 npm 发布的 @deepseek-ai/dsh@0.1.1-rc.2 类型验证;harness 更新导致不兼容请提 issue。

📄 许可证

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群