iotta / docs / product.zh.md
📖 product.zh.md

iotta — 产品概述

面向外部的产品定位。工程愿景参见 design.md中文版);商业化模式参见 commercialization.md


iotta 是将嵌入式设备变成语音助手的自托管服务器,也是你的团队构建、测试和交付该助手的工作台——从第一个仿真原型,到现场部署的设备群。

面向谁

  • 硬件/固件团队——一套忠实的设备协议、一个可供测试的软件设备,以及来自同一台服务器的安全更新。
  • AI/应用团队——版本化的提示词和动作、完整的会话记录,以及自动化测试。
  • 负责运维的人——单容器、一条命令、一个备份文件。

它能做什么

实时助手

  • 运行实时语音对话,并允许用户中途插话打断。
  • 语音转文字、AI 模型、文字转语音三者均可自由替换——通过修改配置即可使用 OpenAI、OpenAI 兼容服务,或运行在你自己硬件上的模型。
  • 两种构建语音的方式,同一套设置。 既可拆成独立的几步(语音转文字 → AI 模型 → 文字转语音,便于替换或自行部署每个环节),也可使用单一的一体化语音模型(更快、活动部件更少)。无论哪种方式,设备和所有工具的用法完全一致,因此你可以将两者直接对比。
  • AI 可以触发设备动作——读取传感器、调节音量、点亮 LED——通过一条独立的专用通道完成。

构建与测试

  • 软件设备——真实硬件的替身,让你在任何硬件存在之前就能构建并测试完整体验。
  • 浏览器模拟器——在浏览器中运行一次真实会话,无需安装:实时观察消息和音频的往来,触发 AI 的设备动作并查看其参数、结果与错误,并在连接出现问题时当场捕获。可将任意会话保存为可重复运行的测试。
  • 用于调优的音频采集——采集设备的原始未压缩音频(而不仅是压缩流),用于调优语音识别和音频硬件;可让运行中的设备随时切入该高保真模式;并可在记录中直接回放任意一轮的音频。
  • 会话记录 + 回放——每次会话,无论实时还是仿真,都会保存为详尽、可搜索的记录,可针对不同的提示词、模型或语音引擎进行回放,查看变化。
  • 自动化测试——编写脚本化的测试对话,针对预期结果自动评分,并可对两种设置(独立几步或一体化)运行同一套测试——在上线前捕获回归问题。
  • 版本化的提示词与动作——提示词和 AI 的设备动作定义都以版本形式保存,依次经过 草稿 → 暂存 → 上线;上线是一个有意为之的步骤,绝不会意外覆盖。

管理设备群

  • 一份实时设备名册,显示此刻真正在线的设备——基于真实连接,而非陈旧的签到。
  • 按分组将设备纳入管理,每组拥有自己的注册规则和默认助手设置。
  • 安全的空中更新(OTA)——每个固件构建版本都是固定且带校验和的;可先向设备群中的一小部分发布、阻止过旧而无法接收的设备、用一条命令撤销发布,并让 iotta 自动撤回开始导致设备崩溃的构建版本。

观察运行状况

  • 每轮与每次会话的数据——使用的 token 数、首次响应所需时间、每个步骤的耗时,以及与设备动作之间任何来回交互的时序——全部自动采集。
  • 每次会话的完整记录:各步骤耗时、AI 的设备动作,以及内联音频回放。
  • 设备健康状态随时间的变化,以及设备群中每个固件版本的崩溃率。
  • 外部 AI 调用检查器——针对每一次对外部 AI 服务的调用:请求与响应、耗时、token 数、估算费用,以及任何错误。
  • 日志和指标导出到你已在使用的标准监控工具

运行服务器

  • 以单容器运行,内置数据库;其所有数据都是主机上的普通文件。
  • 一键检查存储、磁盘空间、安全设置和提供商密钥。
  • 将所有内容备份到单个文件——并同样轻松地恢复。
  • UI 中的系统状态页面,HTTPS 由内置代理为你处理。

Web 控制台

  • 所有管理任务均可在浏览器中完成。
  • 由平台自身提供该控制台——无需额外安装任何东西。

为什么选择 iotta

  • 更快交付。 一个平台从第一天的仿真,贯穿原型到生产——没有独立的测试工具,阶段之间也无需重新接线。
  • 团队并行开发。 AI 与固件共享同一份约定好的设备动作清单,任何一方都无需等待另一方。
  • 全面可观测。 每次会话、每台设备的健康状态,以及每一次对外部 AI 的调用——时序、token 数、费用、错误——均有日志记录,均可查阅。
  • 运维简单。 在一台小型主机上以单容器运行,没有额外的数据库或服务需要照看,默认开启 HTTPS,备份只需一个文件。
  • 完全属于你。 自托管、源码可见,可使用 OpenAI 或运行在你自己硬件上的模型,无需任何对外的云服务。
  • 更新安全。 渐进式发布配合自动回滚,意味着一个有问题的构建版本永远不会使现场设备变砖。

iotta 对比竞品

此处的参照物是 xiaozhixinnan-tech/xiaozhi-esp32-server),即 iotta 所替代的开源平台。xiaozhi 一列基于 xinnan-tech/xiaozhi-esp32-server(含其自身第 15 节“已知限制”)。

能力 iotta xiaozhi
需运维的组件数 单个 Python 服务 + SQLite Python + Java/Spring + MySQL + Redis + NGINX + 独立 ASR 进程
部署方式 docker compose up,单主机 多服务;Redis 缓存刷新踩坑(§15.3)
负载稳定性 无状态应用,会话干净排空 每日重启容器以规避 socket 泄漏(§15.2)
认证/传输安全 按设备独立令牌,默认开启 TLS,常数时间比较 认证常被禁用;默认数据库凭据;“未经安全评估”(§15.8)
真实设备在线状态 真实连接/断开状态 last_connected_at = OTA 轮询时间,会话时间(§15.6)
安全 OTA 签名、分阶段百分比、最低版本门控,回滚 + 基于健康状态的自动回滚 平铺的 ai_ota 表;表为空时存在无限重试 bug(§15.4)
会话追踪 + 回放 (结构化,可回放) 无(仅有性能测试器 + 测试音频页面)
评测/回归测试 (有评分的测试套件)
工具/提示词版本管理 草稿 → 暂存 → 激活 运行时插件;无版本化契约
第三方 API 可见性 调用检查器 + 每轮 token 数、首字响应时间(TTFT)、各环节/多跳耗时 仅各组件延迟
Web 开发模拟器 基于真实协议的浏览器客户端(消息往来、工具调用、错误均可见) 仅浏览器音频测试页面
音频输入调试 无损 PCM 上行采集 + 会话中模式切换 + 追踪回放 仅浏览器测试页面
不绑定提供商 是(配置切换) 是(适配器列表非常丰富)
运行时形态 多步流水线一体化语音到语音,可用同一套评测套件进行 A/B 对比 多步流水线(ASR → LLM → TTS)
AI 流水线 ASR → LLM → TTS + 工具;记忆/RAG/视觉可基于同一提供商接口扩展 今日已含 VAD、声纹、记忆、RAG、视觉
多用户/RBAC 角色 + 审计日志(商业版功能) 今日已有普通用户 + 超级管理员
生产就绪度 内置 TLS、备份、预检 “未经加固不适合生产使用”(§15.8)

直白地说: iotta 押注于运维简洁性、更新安全性和全链路可见性——这恰恰是团队在交付产品时最容易在 xiaozhi 上吃亏的几个维度。xiaozhi 目前在 AI 流水线广度(记忆/RAG/声纹/视觉)上更胜一筹;在 iotta 中,这些能力位于相同的干净提供商接口之后,因此是对平台的扩展,而非重写。


版本规划

iotta 提供开放核心、自托管模式:

  • 社区版——免费;完整开发平台;活跃设备数量有上限(面向演示、个人使用和评估)。
  • 商业版——许可证提高/取消设备上限,并解锁团队功能(多用户角色 + 审计、高级灰度自动化、长周期保留分析)。

核心版本始终可在无需任何云依赖的情况下运行。商业模式、授权执行设计和定价/打包方案见 commercialization.md