🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

智能家居助手 C3H3-AI/ha-dsh-addon

DeepSeek Harness
C3H3-AI52 天前有提交已提供中文文档扫描:含敏感能力

在 Home Assistant 中接入 AI 对话与设备控制

35.1/100
综合分
7
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查未通过:仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装。以下命令仍可尝试,但可能失败。
无法用 dsh 插件命令安装(仓库内无 dsh 插件清单)
git clone https://github.com/C3H3-AI/ha-dsh-addon.git
按该仓库 README 的原生方式安装;若作者另行发布了 DSH 插件包,请以其文档为准

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · other
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/10/25·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 52 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(unknown · 2026/10/25) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安装兼容性检查需源码安装

仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包ha-dsh-addon(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/3 17:55:16

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 24 处,展示前 24 条)
  • 读取密钥环境变量
    deepseek_harness/api_server.js:43
    const API_TOKEN = process.env.DSH_API_TOKEN || '';
  • 读取本地文件
    deepseek_harness/api_server.js:107
    const text = fs.readFileSync(credPath, 'utf8');
  • 发起网络请求
    deepseek_harness/api_server.js:171
    return fetch(DSH_WEB_ORIGIN + '/api/' + wireMethod, {
  • 发起网络请求
    deepseek_harness/api_server.js:401
    const probe = http.request(
  • 读取密钥环境变量
    deepseek_harness/api_server.js:431
    const token = process.env.SUPERVISOR_TOKEN;
  • 发起网络请求
    deepseek_harness/api_server.js:437
    const r = http.request(
  • 读取密钥环境变量
    deepseek_harness/api_server.js:455
    const token = process.env.SUPERVISOR_TOKEN;
  • 发起网络请求
    deepseek_harness/api_server.js:461
    const r = http.request(
  • 读取本地文件
    deepseek_harness/api_server.js:483
    return JSON.parse(fs.readFileSync(pkgJson, 'utf-8')).version || 'unknown';
  • 执行外部命令固定命令
    deepseek_harness/api_server.js:492
    execFile(
  • 读取本地文件
    deepseek_harness/api_server.js:511
    fs.existsSync(VENDOR_DSH_BIN),
  • 删除本地文件
    deepseek_harness/api_server.js:556
    fs.rmSync(VENDOR_TMP, { recursive: true, force: true });
  • 写入本地文件
    deepseek_harness/api_server.js:557
    fs.mkdirSync(VENDOR_TMP, { recursive: true });
  • 执行外部命令固定命令
    deepseek_harness/api_server.js:561
    execFile(
  • 读取本地文件
    deepseek_harness/api_server.js:583
    if (!fs.existsSync(tmpBin)) throw new Error('安装成功但未找到 DSH bin');
  • 删除本地文件
    deepseek_harness/api_server.js:586
    fs.rmSync(VENDOR_DIR + '.old', { recursive: true, force: true });
  • 读取本地文件
    deepseek_harness/api_server.js:587
    if (fs.existsSync(VENDOR_DIR)) fs.renameSync(VENDOR_DIR, VENDOR_DIR + '.old');
  • 写入本地文件
    deepseek_harness/api_server.js:588
    fs.renameSync(VENDOR_TMP, VENDOR_DIR);
  • 写入本地文件
    deepseek_harness/api_server.js:591
    fs.writeFileSync(marker, JSON.stringify({
  • 读取本地文件
    deepseek_harness/api_server.js:593
    version: JSON.parse(fs.readFileSync(path.join(path.dirname(VENDOR_DSH_BIN), '..', 'package.json'), 'utf-8')).version,
  • 读取密钥环境变量
    deepseek_harness/proxy.js:30
    const BRIDGE_TOKEN = process.env.DSH_API_TOKEN || '';
  • 读取本地文件
    deepseek_harness/proxy.js:56
    const text = fs.readFileSync(credPath, 'utf8');
  • 发起网络请求
    deepseek_harness/proxy.js:185
    const b = http.request({
  • 发起网络请求
    deepseek_harness/proxy.js:264
    const proxyReq = http.request(options, (proxyRes) => {
扫描于 2026/11/4(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 接入AI对话
  • 控制智能家居设备

README

由 DeepSeek 最新模型翻译生成
ha-dsh-addon [![HA][ha-badge]][ha-url] [![HACS][hacs-badge]][hacs-url] [![GitHub stars][stars-badge]][stars-url] [![GitHub forks][forks-badge]][forks-url] [![GitHub issues][issues-badge]][issues-url] [![License: MIT][license-badge]][license-url] [![Last commit][last-commit-badge]][last-commit-url] [![addon v][addon-badge]][addon-url] [![integration v][integration-badge]][integration-url] [ha-badge]: https://img.shields.io/badge/Home%20Assistant-18BCF2.svg?
展开完整文档(README 剩余 1 节)
ha-dsh-addon

[![HA][ha-badge]][ha-url]
[![HACS][hacs-badge]][hacs-url]
[![GitHub stars][stars-badge]][stars-url]
[![GitHub forks][forks-badge]][forks-url]
[![GitHub issues][issues-badge]][issues-url]
[![License: MIT][license-badge]][license-url]
[![Last commit][last-commit-badge]][last-commit-url]
[![addon v][addon-badge]][addon-url]
[![integration v][integration-badge]][integration-url]

[ha-badge]: https://img.shields.io/badge/Home%20Assistant-18BCF2.svg?style=flat-square&logo=home-assistant&logoColor=white
[ha-url]: https://www.home-assistant.io/
[hacs-badge]: https://img.shields.io/badge/HACS-Custom-41BDF5.svg?style=flat-square
[hacs-url]: https://hacs.xyz/
[stars-badge]: https://img.shields.io/github/stars/C3H3-AI/ha-dsh-addon.svg?style=flat-square
[stars-url]: https://github.com/C3H3-AI/ha-dsh-addon/stargazers
[forks-badge]: https://img.shields.io/github/forks/C3H3-AI/ha-dsh-addon.svg?style=flat-square
[forks-url]: https://github.com/C3H3-AI/ha-dsh-addon/network
[issues-badge]: https://img.shields.io/github/issues/C3H3-AI/ha-dsh-addon.svg?style=flat-square
[issues-url]: https://github.com/C3H3-AI/ha-dsh-addon/issues
[license-badge]: https://img.shields.io/github/license/C3H3-AI/ha-dsh-addon.svg?style=flat-square
[license-url]: https://github.com/C3H3-AI/ha-dsh-addon/blob/main/LICENSE
[last-commit-badge]: https://img.shields.io/github/last-commit/C3H3-AI/ha-dsh-addon.svg?style=flat-square
[last-commit-url]: https://github.com/C3H3-AI/ha-dsh-addon/commits/main
[addon-badge]: https://img.shields.io/badge/addon-0.2.43-4E9AEE.svg?style=flat-square
[addon-url]: https://github.com/C3H3-AI/ha-dsh-addon/blob/main/deepseek_harness/config.yaml
[integration-badge]: https://img.shields.io/badge/integration-0.2.4-4E9AEE.svg?style=flat-square
[integration-url]: https://github.com/C3H3-AI/ha-dsh-addon/blob/main/custom_components/deepseek_harness/manifest.json

⚠️ 当前版本为 BETA:DSH 上游处于 developer preview(0.1.2-rc.x),本 addon 的适配层(认证注入、ingress 兼容、会话中继)随上游变动快速迭代,功能可能不稳定。遇到问题请先更新 addon 与 DSH 至最新版,并在 issue 中附上 addon 日志。

把 DeepSeek Harness(DSH)——上游开源的 AI 智能体运行框架(「一切皆插件」)——封装为 Home Assistant Addon。

- 通过 HA Ingress 访问 DSH Web UI(无需额外端口暴露)
- 内置桥接 API(deepseek_harness 自定义集成依赖此稳定契约)
- 可选接入 HA 原生 MCP Server,让 DSH 控制家里设备
- Web 一键更新:DSH 更新到上游最新版,无需重新发布 addon
- 多轮会话中继:HA 对话接进 DSH 智能体真实会话,跨轮保留上下文

快速开始

1. 将本仓库添加为 HA Add-on 仓库(Repository URL:https://github.com/C3H3-AI/ha-dsh-addon)
2. 安装 DeepSeek Harness addon
3. 配置页填写:
- api_key:DeepSeek API Key(必填)
- api_token:桥接 API 共享密钥(强烈建议设置,见下方「安全」)
- model / provider / base_url:模型配置(默认 deepseek-v4-flash / deepseek-official)
- ha_mcp_enabled / ha_mcp_url / ha_mcp_token:可选接入 HA MCP Server
4. 启动 addon,侧边栏出现 DSH Agent 面板

配套自定义集成:deepseek_harness(HA 商店可搜),用于 Assist 语音/文本对话与运行时状态传感器。

架构

[HA Ingress] ──► [HTTP 代理 :3080] ──► [DSH Web UI 127.0.0.1:3081]
│ (注入脚本 / 改写 host.describe)
[桥接 API :3082] ◄── [deepseek_harness 集成] ├ GET /api/status (只读, 放行) ├ POST /api/session (需 Bearer token, 多轮会话中继 —— 当前对话路径) ├ POST /api/chat (需 Bearer token, headless 一次性调用, 已不再使用) ├ POST /api/restart (需 Bearer token) ├ GET /api/update/status (需 Bearer token) └ POST /api/update (需 Bearer token, 一键更新)

- 持久化:所有数据在 /data/dsh/(会话、设置、凭据、vendor 更新)
- DSH 安全限制:DSH 自身禁止绑定 0.0.0.0,仅监听 127.0.0.1:3081,对外由代理接管

安全

- 桥接 API 共享密钥:addon 配置 api_token 后,所有写操作(chat / restart / update)要求 Authorization: Bearer <api_token>;未配置时写操作返回 401(fail-closed)。集成侧配置时填入相同值。
- 仅 Ingress 暴露:addon 不发布任何宿主端口(无 ports),Web UI 只能通过 HA 登录后的 Ingress 访问,避免 DSH(具备代码执行能力)暴露到局域网/公网。
- 桥接 API 监听容器内 3082,不映射到宿主机。

一键更新(DSH 本体)

DSH 处于测试期(rc.x),更新频繁。本 addon 提供 Web 一键更新,让用户自主升级 DSH 到上游最新版,无需维护者重新发布 addon:

1. 打开 DSH Web UI(侧边栏 → DSH Agent)
2. 进入 设置(Settings) 页面,底部出现 DSH 更新 卡片
3. 点击 → 确认 → 自动:npm install @deepseek-ai/dsh@next 到 /data/dsh/vendor → 原子切换 → 容器重启

- 更新后的 DSH 装在持久化目录 /data/dsh/vendor,镜像内置版保留作离线兜底与回滚
- addon 壳依赖 DSH 的会话 RPC 契约(session.create / session.history / session.prompt);契约变化时只改 addon 桥接层,HA 集成不动

数据备份

/data/dsh/ 位于 addon 的 /data 目录,随 HA 的 addon 备份自动包含(会话记录、设置、vendor 更新均被覆盖)。无需额外备份配置。

注意:卸载 addon 或变更 slug 会清空 /data 目录,属于预期行为。如果你需要保留对话历史,请在卸载前手动备份 /data/dsh/。正常更新 addon(包括 rebuild)时 /data 必定保留,无需担心。

版本通道

| 通道 | 说明 |
| latest | npm 稳定 tag(当前 0.1.2-rc.1),方案 A 首次自动安装与镜像内置版默认目标 |
| next | npm 预发布 tag(当前 0.1.2-rc.1,与 latest 相同),手动一键更新默认目标 |

DSH 兼容性

addon 兼容层的目标是当前 DSH 版本线(0.1.2-rc.1,镜像内置与 vendor 自动安装同源)。针对 rc.1 的关键适配由 addon 自动完成,用户无感知:

- 强制浏览器会话认证(rc.1+ 对全部 API 401 拦截):代理自动从持久化凭据生成签名 Cookie 并注入全部转发请求与 WebSocket,桥接层同样按需生成、401 自动重试。
- Ingress 查询串规范化:HA ingress 转发会重编码查询串,破坏 DSH 插件打包器 URL(/plugins/??列表&rev=x)的精确匹配;代理自动还原。
- 对不启用强制认证的旧版 DSH,上述注入/规范化均为无害空操作。

DSH 上游若再变更加密方案、bundler URL 形态或 RPC 契约,需要发布新版 addon 适配(proxy 对关键改写点带有"上游模式变化"告警日志,可快速定位)。

变更日志

0.2.43

- 🐛 修复设置持久化改写未到达浏览器:模块系统按 __DSH_BOOT__ 图 JSON 的 per-module URL 取包,指纹现覆盖该形态,普通刷新即可生效。

0.2.42

- 🐛 修复聚合包改写对老访客不生效:聚合包 URL 不变且无可缓存校验头,浏览器沿用缓存里的旧包。现给 bundler URL 追加代理版本指纹参数 &px=N(转发前剥离),代理改写行为变化时浏览器自动拉取新包,普通刷新即可生效。

0.2.41

- 🐛 修复 Ingress 下设置不持久:DSH 0.1.2-rc.1 起插件代码经 /plugins/?? 聚合包下发且 isLoopback 计算形态变更,原改写未命中导致设置后端退化为 memory(弹窗/语言每次重置、报 "settings are unavailable in this browser")。代理现对聚合包按新形态强制 isLoopback: true,设置恢复正常持久化。

0.2.40

- 🐛 修复 ingress 下 WebUI 401:DSH 0.1.2-rc.1+ 强制浏览器会话认证,代理自动生成签名 Cookie 并注入 HTTP/WS 请求。
- 🐛 修复 ingress 下插件加载失败 "HTML did not preload":HA ingress 重编码查询串导致打包器 URL 404,代理自动规范化。
- 🐛 修复新装首启动桥接 401:桥接 Cookie 改为惰性生成 + 401 重试,secret 晚于桥接启动也能自动恢复。
- 🐛 HTML 响应强制 no-store:避免浏览器缓存旧版页面引用失效资产。
- ✨ 侧边栏面板:panel: true,安装后侧边栏出现 DSH Agent 入口。

0.2.33

- ✨ 首次启动自动安装最新版(方案 A):新客户首次启动自动 npm install @deepseek-ai/dsh@latest 到持久化 /data/dsh/vendor,装完即用稳定通道最新版;失败静默回退镜像内置版,下次启动自动重试。run.sh 新增 install_dsh_vendor() / vendor_integrity_ok(),与一键更新同源(npmmirror + vendor.tmp 原子切换)。
- 🔄 内置版默认通道 @next → @latest:Dockerfile 与首次自动安装改走稳定通道(当前 latest/next 同指 0.1.2-rc.1);手动一键更新保持 next 默认、可选 latest。
- 🐛 修复按钮 202 契约:trigger_update() 接受 200/202,修复「更新 DSH」按钮误报失败(桥接层成功返回 202 后台异步执行)。
- 🐛 修复按钮国际化:button 平台改用 translation_key(en/zh-Hans 生效,英文界面不再显示中文硬编码名);更新按钮成功后即时推送 last_update_version。
- 🐛 补齐 icon.png:发布源集成目录补上 manifest 声明的 icon.png。

0.2.32

- ✨ HA 界面控制按钮:新增 button 平台(「重启 DSH」 / 「更新 DSH」)。
- 🔄 移除 /api/chat headless 死代码;契约测试迁移到 /api/session(12 项断言)。

0.2.31

- ✨ 多轮会话中继 POST /api/session:HA 对话接进 DSH Agent 真实会话,跨轮保留上下文。
- 🐛 修复限流:新对话不再复用「最近活跃的其它会话」(曾导致所有对话堆积进一个 105K token 的臃肿会话而触发 LLM 限流),改为 conversation_id 有效则复用、否则新建。
- 🐛 修复 HA 对话在 DSH 界面不可见:会话需注册到 workspace 才会被 DSH 会话树渲染;新建时带 workspaceId,游离会话用 session.create({workspaceId, sessionId}) 补认领(沿用 dsh-im 思路)。
- 🐛 修复 HA 2026.8 兼容:conversation.result() 已移除,改返回 conversation.ConversationResult(...),否则调用返回 500。

0.2.x

- 🐛 修复:桥接 API sendJson 幂等化,杜绝 /api/status、/api/restart 在 DSH Web 响应超时时因 timeout + error 双回调二次 writeHead 触发 ERR_HTTP_HEADERS_SENT 导致的桥接进程崩溃(日志曾见 WARNING: bridge API died, respawning...)。

开发

详见 docs/DESIGN.md(完整设计方案与关键决策记录)。
- 排障与调试经验(踩坑实录、排查顺序、常用命令):docs/DEBUGGING.md

- 本地测试:node api_server.js(需 DSH_API_TOKEN 环境变量)
- 双轨版本号:addon 轨 config.yaml == Dockerfile(当前 0.2.43);集成轨 const.py == manifest.json(当前 0.2.4)。两轨独立、不跨轨比较。CI 通过 scripts/check-versions.sh 校验各自一致。
- 测试与 CI:桥接 API 契约测试在 tests/(随仓库提交),CI(.github/workflows/ci.yml)跑 lint + 版本校验 + 契约测试 + 镜像构建。

License

MIT
预览分享卡片长什么样 ↓C3H3-AI/ha-dsh-addon
分享 · DeepSeek Harness Hub
C3H3-AI/ha-dsh-addon

在 Home Assistant 中接入 AI 对话与设备控制

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部