What the Web UI will look like. Web UI 会长这样。
This page is a static preview — every widget is filled with fake data so you can walk through the full scope before we start wiring up the backend. Scroll through the six modules below, tell us what to cut, keep, or add, and the real Web tier ships on top of this shape. 这是一份静态设计稿 —— 所有控件都用占位数据填好,让你在后端动工前先把完整范围过一遍。把下面六个模块翻完,告诉我们要砍什么、留什么、加什么,真实 Web 层就照这个形状来做。
1 · Chat (Agent)1 · Chat 对话
Backend ready后端已就位Talk to an LLM that can drive the device. Streaming tokens, expandable tool calls, inline artifacts. Cancel mid-flight, edit and re-run, fork from any turn. 和能操作设备的 LLM 对话。token 流式、tool 调用可折叠、产物内联预览。中途可取消、上条可编辑重跑、任意轮可 fork。
SurfaceFlinger timing out on the HWC composer — first occurrence 4.2 s after boot. Two other signatures look downstream of that. Want me to pull the matching dmesg window and check GPU driver init?
找到 3 类不同崩溃。最多的一类(47 次)是 SurfaceFlinger 在 HWC 合成器上超时,第一次出现在开机后 4.2 秒。另外两类看上去是它的下游。要不要我把对应时间窗口的 dmesg 拉出来,顺便看看 GPU 驱动初始化?
2 · Terminal2 · Terminal 终端
New新增Direct adb / serial shell in the browser — xterm.js over a WebSocket PTY. For the times you know exactly what to type. Dangerous commands hit a Human-in-the-Loop modal before they reach the device. 浏览器里直通 adb / 串口 shell —— xterm.js 接 WebSocket PTY。你知道要敲什么时直接敲。危险命令在到达设备前先过一道人工确认。
Every command lands in the session JSONL. Select any output block → right-click → “Ask LLM about this” to hand it over to the Chat tab. 每条命令都落到 session JSONL。选中任意输出 → 右键「让 LLM 分析这段」即可丢给 Chat 面板。
3 · Model Playground3 · 模型调试台
New新增Raw chat, bypassing the agent loop. Tune every parameter of a local model — temperature, top-p, top-k, context window, seed, stop sequences, think toggle, system prompt — and watch tokens/second, eval duration, and prompt eval duration in real time. Compare two parameter sets side by side. 绕过 agent loop 的直聊。把本地模型的每个参数调一遍 —— temperature / top-p / top-k / 上下文长度 / seed / stop / think 开关 / system prompt —— 实时看 tokens/s、eval 时长、prompt eval 时长。两套参数可并排对比。
enforcing, logging, or ignore_zero_blocks).
dm-verity 是一个 device-mapper target,用一棵 Merkle hash 树给块设备做透明完整性校验。bootloader 拿树的 root hash 去对签过名的 vbmeta 映像做验证,之后每次从这个分区读数据都会现算块的哈希。哈希不匹配时,按配置的模式触发 panic 或返回读错误(enforcing / logging / ignore_zero_blocks)。
4 · Devices Dashboard4 · 设备看板
Partial backend后端部分就位Every connected device at a glance — adb USB, adb over Wi-Fi, UART bridge. Tunnel status lights, live Windows probe output for COM ports and USB PID/VID. 所有连上的设备一眼看完 —— USB adb、Wi-Fi adb、UART 桥。隧道状态灯 + Windows 探针实时上报 COM 口和 USB PID/VID。
8G LPDDR5 · 128G UFS 3.1
board.lan:5555 · RTT 18 ms
COM27 → localhost:19001
5 · System Info5 · 系统信息
New capability新能力
One screen, full picture. Eleven panels cover everything from Android build fingerprint down to DDR type, partition usage, SELinux state, and Verified Boot chain — sourced from getprop, /proc, /sys, and dumpsys.
一屏看完整机软硬件。11 个面板覆盖从 Android 构建指纹到 DDR 类型、分区用量、SELinux 状态、Verified Boot 链 —— 数据来自 getprop / /proc / /sys / dumpsys。
🔭 Overview总览
- Android
- 14 · API 34
- Build构建
- userdebug · keys=test
- Fingerprint指纹
- Android/aosp/generic:14/UP1A.231005.007/eng
- Security patch安全补丁
- 2026-03-05
- RootRoot
- adbd with root
⚙ Kernel & Bootloader内核 & Bootloader
- Kernel
- 6.1.75-android14-11-g3a8f0e
- Arch
- aarch64 · armv8.2-A
- SELinux
- enforcing
- Bootloader
- u-boot 2023.10-genericboard
- Baseband
- N/A
- Slot
- _a · success
🧠 CPU
- SoC
- Generic Octa-core ARM通用 8 核 ARM
- Config
- 4× A76 @ 2.2 GHz + 4× A55 @ 1.8 GHz
- Governor
- schedutil
- Current当前频率
- 2.2 / 2.2 / 2.2 / 2.2 / 1.8 / 1.8 / 1.8 / 1.8
- Thermal温度
- 52.1°C cpu-big · 49.3°C cpu-little
🎨 GPU
- Model
- Mali-G610 MC4
- Driver
- r40p0 · OpenGL ES 3.2
- Vulkan
- 1.3.231
- Freq
- 800 MHz / 1000 MHz max
- Util
- 37%
💾 Memory内存
- Total
- 7 892 MB
- Used
- 4 137 MB · 52%
- Free
- 621 MB
- Buff/Cache
- 3 134 MB
- Swap
- 2048 MB (zram) · 412 used
🪙 DDR & UFS
- DDR type
- LPDDR5 · 6400 MT/s
- Channels
- 2
- Storage
- UFS 3.1 · 128 GB
- Seq read顺序读
- 2.1 GB/s
- Seq write顺序写
- 1.4 GB/s
🗂 Partitions分区
📁 Filesystems文件系统
🌐 Network网络
- wlan0
- board.lan · up · -52 dBm
- SSID
- lab-2.4G
- eth0
- down
- rndis0
- board-usb.lan · up
- DNS
- dns.lan, 1.1.1.1
🔋 Battery电池
- Level
- 74%
- Status
- charging (AC)充电中 (AC)
- Voltage
- 4.12 V
- Current
- +1824 mA
- Temp
- 38.2°C
- Health健康
- good · 412 cycles
🛡 Security安全
- Verified Boot
- GREEN · AVB v1.2
- dm-verity
- enforcing
- FBE
- aes-256-xts
- SELinux policy
- v33 · 2026-02-14 build
- OEM unlock
- enabled
- adb secure
- 1
6 · Real-time Charts6 · 实时图表
New capability新能力1 Hz sampling by default, 60-second sliding window, pause / zoom / CSV export. Always visible at the top of the app so you notice thermal throttle or memory pressure before the LLM does. 默认 1 Hz 采样,60 秒滑窗,可暂停 / 缩放 / 导 CSV。常驻顶栏,让你比 LLM 更早发现降频或内存压力。
CPU utilization 占用
47%Memory used内存占用
4.1GBBattery temperature电池温度
38.2°CDisk IO磁盘 IO
82MB/sNetwork网络吞吐
1.2MB/sGPU utilizationGPU 占用
37%Coming next — batch 2后续批次 — batch 2
Pending review等你过稿We will mock these six after you sign off on batch 1 above. Each will get the same walk-through treatment before any backend work starts. 上面 6 块你过稿后,这 6 块再按同样方式出静态稿 —— 全部定稿了再开后端。
→ Walk through, then cut. → 先过一遍,再砍。
Open an issue or send a note with what to remove, keep, or add from this preview. Once batch 1 stabilizes, we freeze the schema and start wiring the FastAPI endpoints / WebSocket channels behind each widget. 在 issue 里留言或直接反馈:这份 preview 里要删什么、留什么、加什么。batch 1 定稿后,我们冻结 schema,再按每个控件接上 FastAPI / WebSocket。