Termina (前身为 ShellFace) 是一个运行在 VelaOS 智能手表上的硬核、零状态(Zero-State)、事件驱动的原生 Shell 终端环境。
它不仅是一个专为极客开发者设计的赛博朋克表盘,更是为 AI 智能体(AI Agent)量身打造的物理代理节点(Vessel / Node)。它允许 AI 直接接入物理世界,读取硬件传感器数据,并在真实的穿戴设备上执行系统级 Shell 命令。
Termina 通过其 “零驻留”与“AI 优先” 的架构,彻底打破了传统智能手表开发的边界:
- Zero-Resident UI (UI 0 驻留内存)
所有的 UI 视图(如终端、系统监控条)都是完全无状态的。当页面切换时,UI 会被极其严格地彻底销毁,以释放受限的 IoT 内存。状态的无缝恢复则通过极其轻量的**模块级缓存(Module Scope Caches)**瞬间完成。 - Domain-Driven Background Services (领域驱动后台服务)
Termina 的后台运行着永驻内存的守护精灵(exec_service,system_service)。它们甚至在 UI 销毁后依然存活,是整个手表永不停息的心脏。 - High-Performance EventBus (高性能事件总线)
UI 视图层和底层的业务逻辑(Domain)层永远不直接对话。所有的数据流转均通过一个高性能且严格隔离的事件总线(EventBus)完成。 - Agent Remote Control (AI 遥控与 QA 桥接)
AI Agent 无需通过“点击”屏幕来操作手表。借助QA Bridge(快应用桥),AI 可以通过 WebSocket 或蓝牙直接将指令注入到 EventBus 中,触发底层的 Shell 后台执行,并实时接收返回的终端日志流。
(详细的架构准则、生命周期及 Mermaid 实时架构图,请强制阅读 .agents/AGENTS.md)
- 原生 Shell 引擎:可在手腕上原生、异步执行
ps,cat,ping或任何兼容 NuttX/VelaOS 的底层 Shell 命令。 - 赛博朋克 UI 界面:极具未来感的 CPU/Memory 负载进度条、精准的电量监控、以及全功能的终端历史记录回显。
- 极致的安全与进程控制:内置了一套精密的后台会话管理器(Session Manager)。它能够精准追踪任务标记,安全中止长时间运行的死循环或后台任务,且绝对不会误杀无关的系统级进程。
- DataMan 原生桥接:绕过繁杂的中转,直接向 VelaOS 硬件层订阅心率、步数及电池传感器状态。
Termina 的构建与打包基于 Vela 的 LuaDevTemplate 工具链。
- Python 3
- 安装依赖库:
pip install -r requirements.txt
- 根据需要修改
watchface.config.json(可调整 WatchFace ID 或强制指定 LVGL v8/v9 版本)。 - 在
watchface/fprj/app/lua/目录下进行二次开发。 - 直接使用内置的 VSCode 任务面板 (Tasks) 运行:
- 热重载 (Hot Reload):日常高频代码调试(秒级响应)。
- 全新部署 (Full Deploy):全量推送所有资源、脚本与代码。
- 构建表盘二进制 (Build Binary):将项目打包为可上架应用市场的
.face固件。
如果你是一个试图接管此设备的 AI:
- 通过 QuickApp 代理隧道建立连接。
- 构造 Payload 并派发事件:
event_bus.emit(CMD_SUBMITTED, { cmd = "你的命令", session_id = "agent_node_1" })。 - 底层的
exec_service将在 VelaOS 中接管并异步执行你的指令。 - 监听总线上的
CMD_DATA和CMD_FINISHED事件,即可捕获实时的终端输出流(stdout/stderr)与底层退出码(Exit Code)。
“Termina: 从手腕深渊,凝视机器内核。”