-
Notifications
You must be signed in to change notification settings - Fork 2
UI Guide
AceGuru-mjh edited this page Oct 1, 2026
·
4 revisions
单 Activity + 全 Compose(
app/src/main/res只有资源,没有 View 布局):MainActivity→ModalNavigationDrawer抽屉导航。本页是"某个功能在哪一屏"的反查表。
| 屏 | 内容 | 主要文件 |
|---|---|---|
| Agent | 主聊天:流式气泡 / 思维链 / 工具卡片(实时输出 + 进度条)/ 计划确认卡 / 附件(图片多模态)/ 斜杠命令 / 原生思考档位 / 模式切换 |
ui/screen/agent/AgentChatScreen.kt + AgentChatViewModel.kt
|
| 终端 | 真 Ubuntu 终端:VT100 渲染、rootfs 引导进度、会话管理 |
ui/screen/terminal/TerminalScreen.kt + TerminalViewModel.kt
|
| 市场 | 工具 / 技能 / MCP / 插件 / 连接器 五货架(Skill 屏已合并入市场) |
ui/screen/market/MarketScreen.kt + MarketViewModel.kt
|
| 记忆 | cs-mem 可视化:Episode 统计 / 宏技能数 / 近期情景 / 删除 |
ui/screen/memory/MemoryScreen.kt + MemoryViewModel.kt
|
| 任务 | 任务历史(FileTaskStore 持久化) |
ui/screen/tasks/TaskHistoryScreen.kt + TaskHistoryViewModel.kt
|
| 存储 | 存储用量与文件浏览 |
ui/screen/storage/StorageScreen.kt + StorageViewModel.kt
|
| 权限 | Root / Shizuku(三态卡片)/ 无障碍 / 悬浮窗 / 通知 / 存储 | ui/screen/permissions/PermissionsScreen.kt |
| 运行日志 | 结构化运行日志浏览(AppLogger 输出) |
ui/screen/log/LogViewerScreen.kt |
| 玻璃实验室 | Liquid Glass 内部验收页:可拖动玻璃片 / 档位阶梯 / 工具卡状态 / 诚实验收清单 | ui/screen/glass/GlassLabScreen.kt |
| 设置 | LLM 预设(OpenAI / DeepSeek / OpenRouter / Ollama / 自定义)+ Base URL / Key / 模型 + 温度 + 连接测试 + 通用设置 |
ui/screen/settings/SettingsScreen.kt + SettingsRepository.kt + SettingsViewModel.kt
|
另有:
-
Onboarding:首次启动引导(
ui/screen/onboarding/OnboardingScreen.kt); - 悬浮球:赛博霓虹风格,基于 EasyFloat,可从任意界面唤起应用。
┌──────────────────────────────────────────────────────┐
│ ☰ 抽屉 模式:[Build ▾] 思考:[STANDARD ▾] 原生:[NONE ▾] ⚙ │
├──────────────────────────────────────────────────────┤
│ 🧠 思维链(可折叠) ← AgentEvent.ThinkingChunk │
│ 💬 流式气泡 ← AgentEvent.ResponseChunk │
│ 🧰 工具卡片:参数 / 实时输出 / 进度条 / 结果 ← ToolCall* │
│ 📋 计划确认卡:批准 / 重规划 / 取消 ← PlanAwaiting… │
│ 🗜️ 系统消息:上下文已压缩(before→after) ← ContextCompressed│
│ ⚡ 上下文计量条(水位可视化) │
├──────────────────────────────────────────────────────┤
│ [📎] [/] 输入………………………………………………… 原生思考档位 发送 │
│ ↑ 斜杠命令联想(追加不覆盖) 悬浮于消息流之上 │
└──────────────────────────────────────────────────────┘
UI 组件库:
| 目录 | 内容 |
|---|---|
ui/theme/ |
MaterialTheme 主题定义(Light / Dark / Dynamic Color) |
ui/glass/ |
Haze 支撑的 Liquid Glass 组件系统(见 Liquid Glass) |
ui/component/ |
Markdown 渲染、上下文计量条、斜杠菜单等通用件 |
权限屏对每种权限显示三种状态之一:
| 状态 | 表现 | 操作 |
|---|---|---|
| 已授权 | 绿色可用 | 可查看能力说明 |
| 可获取 | 黄色待授权 | 一键跳转 Shizuku / 系统无障碍设置 |
| 不可用 | 灰色降级说明 | 告知降级后的可用能力 |
对应 权限执行链 的三个级别;模型也通过 PrivilegeInfoProvider
知道当前处于哪一级(缺什么会建议装 Shizuku)。
- 在
app/src/main/kotlin/com/apex/agent/ui/screen/<name>/下建<Name>Screen.kt+<Name>ViewModel.kt; - 需要数据时加 Hilt 注入的依赖/Repository;
- 在
ui/ApexRoot.kt的抽屉目的地列表注册(含图标与标题); - 遵循玻璃系统:只用已有的 七档材质,不要自制"alpha + blur 冒充玻璃";
- 预算:单文件 main ≤1200 行(质量门禁 会卡)。
Note
Skill 屏已从抽屉中移除并合并进市场屏 —— 抽屉里如果还看到"Skill",
说明你跑的是旧版本(注释见 ApexRoot.kt)。
- Liquid Glass 设计系统 —— UI 的视觉语言
- Agent 引擎 —— 主屏在渲染哪些事件
- Terminal 运行时 —— 终端屏背后的东西
- cs-mem 认知记忆 —— 记忆屏在看什么
-
MCP 生态总览
新 - (沙箱 MCP · 官方 Hub · 逆向 Host · 门控语义)
- 终端运行时
- 终端 API 契约
- SDK 边界
- Termux 能力矩阵
- Ubuntu rootfs 供给
- Ubuntu 生命周期
- PRoot 二进制溯源
- VT100/ANSI 模拟器
- 终端性能
- 终端迁移
- 原生层 C++/JNI