文档 / 概念 / 架构
架构
QingOS 分成哪几层,每层管什么,层和层之间怎么通信。
分层
| 层 | 是什么 |
|---|---|
| 脸 | 人看到、听到的地方:屏、语音、灯环、局域网控制台 |
| app | wasm 模块,在运行时里隔离着跑 |
| 运行时 | qing 这个程序:大脑、守门人、存储、模型服务、控制台 |
| 底座 | qinit、网络 qnet、音频进程、状态盘、升级 |
| 内核 | Linux 主线,从 allnoconfig 起配,只编要用的驱动 |
| 硬件 | SoC 跑上面全部;MCU 管灯、键、传感器 |
内核
我们不写内核,但自己配内核。只开三样东西要用的选项:驱动、进程隔离、快启动。没有模块,没有图形栈。QEMU 用的 x86_64 内核是 3.2 MB。
底座
底座全是我们自己的 Rust:
qinit是 1 号进程。它挂文件系统、起运行时、喂硬件看门狗。运行时 60 秒没有心跳,它就杀掉重起。qnet配网卡,做 DHCP、DNS、SNTP 对时,也自己做 Wi‑Fi 的 WPA2 握手。不用 wpa_supplicant。- 音频进程直接用 ALSA。屏直接用 DRM。没有 PulseAudio,没有窗口系统。
- 升级包有签名。新系统写进第二个系统槽。新系统起不来,设备退回旧的。
运行时
| 部分 | 管什么 |
|---|---|
| 大脑 | 组提示,调模型,把模型要的动作交给守门人 |
| 守门人 | 调用能力的唯一入口。查授权,该问就问,执行,写日志 |
| 存储 | 一个 SQLite 文件:授权、记忆、设置 |
| 模型服务 | 按角色选模型,限预算,请求出门前替掉私事 |
| 控制台 | 局域网里的 HTTP 服务。手机打开它做设置、看日志 |
部分之间只用总线上的事件通信。
三条规则
- 大脑只能通过守门人做事。大脑不直接碰网络、文件、硬件。
- 守门人不调模型。模型挂了,守门人照常工作。
- 操作系统这一层不知道 agent 存在。音频进程不知道录音给谁。
人和 agent 都调 app
人通过脸和按键调 app。agent 通过守门人调 app。app 自己联网、推卡,不经过 agent。
agent 只在一种情况出现:人说了一句话,要决定调哪个 app 的哪个能力。