Rodak 是面向开发者、创客、学校和小团队的本地优先 AIoT Agent 工作台。它以 Windows 桌面应用承载设备云联调、Xiaozhi 语音 Agent、Agent Runtime registry、扩展包执行、观测审计和 trace 回放,并把 MQTT、OTA、设备模拟、模型供应商与语音运行态收敛到同一个可离线管理的工作空间。
| 模块 | 说明 |
|---|---|
| MQTT 调试器 | 多连接管理、主题订阅/取消订阅、消息发布、实时消息流、历史消息分页与清理 |
| 设备模拟器 | 产品列表与物模型加载、设备注册/激活、设备 Token 获取、遥测/影子/指令 ACK |
| OTA 监控 | 升级检查、下载凭证与清单拉取、进度/结果上报、MQTT OTA 主题联动 |
| 聊天 | 多供应商流式对话、模型开关、会话与消息本地持久化、Markdown 渲染 |
| 语音输入 | OpenAI Whisper 在线转写、coli 本地离线转写、whisper.cpp 本地离线转写 |
| Agent 工作区 | 以 Overview / Workflows / Registry / Events / Replay 组织 Agent Runtime 现状、观测审计、扩展入口与 trace 回放 |
| 设置 | 工作区与认证、AI 供应商、语音引擎、主题/字体/语言、关于与合规入口 |
- 桌面框架:Electron + electron-vite v5
- 前端:Vue 3 + Vite + TypeScript
- UI:Nuxt UI 4
- 路由:Vue Router(
createMemoryHistory()) - 状态管理:Pinia
- 样式:Tailwind CSS 4
- 本地存储:better-sqlite3
- MQTT:mqtt.js(仅运行于主进程)
- 语音运行时:OpenAI API、coli CLI、whisper.cpp + FFmpeg
- 打包:electron-builder(Windows)
rodak/
├── src/
│ ├── main/ # Electron 主进程
│ │ ├── agent-runtime/ # 正式 runtime core、registry、workbench、mapper、orchestrator、prompt loader
│ │ ├── ipc/ # IPC 注册与桥接
│ │ ├── mqtt/ # MQTT 运行时
│ │ ├── store/ # SQLite DAO 与迁移
│ │ └── voice/ # OpenAI / coli / whisper.cpp 转写
│ ├── preload/
│ │ └── bridge.ts # contextBridge 暴露 window.api
│ ├── renderer/
│ │ └── src/
│ │ ├── views/ # 页面视图
│ │ ├── components/ # 业务组件
│ │ ├── composables/ # 组合式逻辑
│ │ ├── stores/ # Pinia stores
│ │ ├── sdk/ # 从 Mortise 复制并适配的 SDK 代码
│ │ ├── types/ # 从 Mortise 复制并适配的类型
│ │ └── utils/ # 从 Mortise 复制并适配的工具函数
│ └── shared/ # 跨进程共享通道常量与类型
├── docs/
├── resources/
└── templates/
pnpm install
pnpm dev
pnpm lint
pnpm typecheck
pnpm test
pnpm test:coverage
pnpm build
pnpm dist补充说明:
pnpm install/pnpm run rebuild:native会先清理pnpm虚拟仓中的 dangling junction,再调用electron-builder install-app-deps重建better-sqlite3等原生依赖,避免 Windows 下因可选平台包坏链接导致安装中断。pnpm prepare会注册simple-git-hooks,提交前执行lint-staged。- 测试采用
Vitest多项目工作区,覆盖renderer-unit、renderer-component、main-integration三层。 - 覆盖率可通过
pnpm test:coverage生成,最小验证基线见 AGENTS.md。
当前 preload 暴露的主要命名空间如下:
window.*:窗口控制app.*:应用目录、日志与法律文件入口store.*/auth.*:本地设置与认证会话mqtt.*:MQTT 运行时与持久化simulator.*:模拟设备 CRUDchat.*:会话与消息持久化aiProvider.*:AI 供应商配置voice.*:语音转写agent.*:统一工作台快照兼容入口agentRuntime.*:正式 Agent Runtime API、registry 管理、trace / metrics / audit 查询与推送whisperModel.*:Whisper 模型管理whisperBinary.*:whisper.cpp 二进制管理ffmpeg.*:FFmpeg 二进制管理
- Mortise Public API:工作区认证、产品查询、AIoT 设备链路、OTA 设备链路
- 第三方 AI 供应商 API:OpenAI 兼容、Anthropic、Google Gemini、Azure OpenAI 等
- 本地语音运行时:coli CLI、whisper.cpp、FFmpeg
Mortise 是当前设备云与 API 接入对象之一,不再定义 Rodak 的产品边界。
Rodak 当前不依赖 Mortise /api/v1/agent/* 接口,聊天能力通过供应商直连实现。
- 架构设计(中文):docs/architecture.md
- 架构设计(英文):docs/architecture.en.md
- Agent Runtime 当前进度对照:docs/agent-runtime-status.md
- Agent Runtime 正式路线图:docs/agent-runtime-roadmap.md
- Agent Runtime 结构说明:docs/agent-runtime.md
- Prompt / MCP / Skill / Plugin 关系说明:docs/plugin-skill-mcp-model.md
- Agent Runtime 迁移说明:docs/rfcs/agent-runtime-migration.md
- Agent Runtime Public API RFC:docs/rfcs/agent-runtime-public-api.md
- 接口目录(中文):docs/api-catalog.md
- 接口目录(英文):docs/api-catalog.en.md
- 实施规划归档(v1.0 历史):docs/plan.md
- 复制代码来源记录:docs/copied-sources.md
- 法律声明与合规:
resources/legal/