Repository navigation
Module Map
13 个 Gradle 模块,全部登记在根
settings.gradle.kts(rootProject.name = "apex-agent")。 本页给出每个模块的职责、关键类、依赖与被依赖方向,以及"我该改哪里"的反查表。
| 模块 | 类型 | 职责一句话 | 关键入口 |
|---|---|---|---|
:app |
Android App | Compose UI(抽屉导航)+ Hilt 装配 + 浏览器/GitHub 工具 + 悬浮球 |
ApexApp.kt · MainActivity.kt · ui/ApexRoot.kt
|
:core:agent-engine |
纯 JVM | 六模式 ReAct 引擎、任务编排器、上下文压缩、会话记忆 |
AgentEngine · ApexAgentEngine · DefaultTaskOrchestrator · HybridCompressor
|
:core:tool-registry |
纯 JVM | 64 个内置工具 + schema 校验 + v3 执行硬化 + 技能注册 + MCP 客户端 |
ToolRegistry · ToolSchema · EnhancedToolExecutor · ToolBatchRunner
|
:core:llm-adapter |
纯 JVM | OpenAI 兼容流式客户端(自研 SSE)+ 多模型运行时 |
LlmClient · StreamingOpenAiClient · ModelRuntimeRegistry · ModelRoleRouter
|
:core:logging |
纯 JVM | 结构化日志(分类/级别/记录) |
AppLogger · LogCategory · LogLevel
|
:platform:privilege |
Android Lib | Root / Shizuku / 沙箱三级权限链 + 无障碍服务 + 进程流工厂 |
PrivilegeDetector · PrivilegeManager · ProcessStreamFactory
|
:platform:persistence |
Android Lib | 前台服务 + WorkManager 看门狗 | PersistenceEngine.kt |
:platform:terminal |
Android Lib | 终端运行时:rootfs 供给、PRoot 后端、原生 PTY、apt、18 个工具 |
LinuxPRootBackend · UbuntuLifecycleCoordinator · PtyOutputPump
|
:platform:cs-mem |
Android Lib | 认知记忆(本仓库差异化核心) |
CsMemSessionManager · TraceDistiller · BypassExecutionEngine · DreamRenderer
|
:terminal-emulator |
Android Lib | 自研 VT100/ANSI 终端模拟器(零依赖) | 转义序列解析、滚动区、24 位色 |
:plugin-sdk:plugin-api |
Android Lib | AIDL 契约 IApexPlugin + PluginContract 常量 |
IApexPlugin.aidl · ApexPluginService
|
:plugin-sdk:plugin-host |
Android Lib | 插件发现 / 绑定 / 工具桥接 | PluginManager.kt |
:plugins:plugin-workflow |
Android App | 参考插件 APK(3 个工具) | WorkflowPluginService.kt |
Note
ComposeFoundry/ 目录里是另一个独立 Gradle 工程(有自己的 settings.gradle.kts,
只包含 :app),不参与主构建。见 ComposeFoundry。
flowchart LR
APP[":app"] --> AE[":core:agent-engine"]
APP --> TR[":core:tool-registry"]
APP --> LLM[":core:llm-adapter"]
APP --> LOG[":core:logging"]
APP --> PRIV[":platform:privilege"]
APP --> TERM[":platform:terminal"]
APP --> CSMEM[":platform:cs-mem"]
APP --> PERSIST[":platform:persistence"]
APP --> VTE[":terminal-emulator"]
APP --> PHOST[":plugin-sdk:plugin-host"]
AE --> TR
AE --> LLM
AE --> LOG
TR --> LLM
TERM --> VTE
TERM --> TR
CSMEM --> TR
CSMEM --> PRIV
CSMEM --> LOG
PERSIST --> PRIV
PHOST --> PAPI[":plugin-sdk:plugin-api"]
PHOST --> TR
PLUGIN[":plugins:plugin-workflow"] --> PAPI
规则速记:
-
core:*只向下依赖core:*(除logging)—— 永远不碰 Android; -
platform:*可以依赖core:*与其它platform:*; -
terminal-emulator零依赖(连platform:terminal都不许依赖); -
:app是全汇聚点,因此所有 wiring(di/)都在:app。
com.apex.agent.core.engine
├── AgentEngine / ApexAgentEngine 流式 ReAct 主循环(大文件,受 ≤1200 行预算约束)
├── AgentConfig / AgentEvent 配置与事件(TextChunk / ThinkingChunk / ToolCall* / ResponseComplete…)
├── CommandPermissionGate / UserInput / UserQuestion
├── ConversationMemory / EnginePrompts
├── compression/ ContextCompressor · HybridCompressor · ToolOutputTruncator
│ SlidingWindowCompressor · LlmSummaryCompressor · TokenEstimator
├── orchestrator/ TaskOrchestrator · DefaultTaskOrchestrator · TaskStateMachine
│ BatchExecutionEngine · LoopDetector · FailureClassifier
│ RecoveryPlanner · RetryPolicy · ToolCallGraph · UserInteractionGate
└── task/ TaskRuntime · TaskModels · TaskStore/FileTaskStore
TaskStatusMachine · RecoveryPolicy · DanglingToolCallRepair
ToolRegistry · ToolResult · ToolSchema/ToolMetadata/ToolArguments/ToolAnnotations ·
EnhancedToolExecutor · SafeAgentTool · StreamingTool · ToolExecutionGate · ToolRunPolicy ·
ToolEnvironmentState · ToolBatchRunner · ToolCircuitBreaker · ToolUsageTracker ·
ToolTraceRecorder · ToolSuggester · Shortcut。
v2 定义"工具是什么",v3 定义"工具在真实循环里怎么不死",见 工具系统。
自研 SSE 解析(不依赖官方 SDK):LlmClient / LlmClientFactory / LlmConfig /
ModelProfile / ModelsCatalog / StreamingOpenAiClient,
运行时包 runtime/:ModelRuntime / ModelRuntimeRegistry / ModelRoleRouter /
CapabilityResolver / ModelProfileValidator / ModelRuntimeDiagnostics。
LlmConfig 关键默认值:contextWindow 128k、readTimeout 120s、connectTimeout 15s、retryCount 2。
详见 LLM 适配层。
api/ TerminalApi · TerminalSdk · ApiHardening 对外契约(面向 app)
runtime/ ExecutionContext · LinuxExecutionContext 运行时抽象
pty/ NativePty · JniNativePty JNI 桥 → C++ forkpty
proot/ LinuxPRootBackend · ProotExecutor · SystemBindProfile · NativeLibraryPRootBinaryProvider
ubuntu/ BundledRootfsSource · RootfsDownloader/Extractor/Configurator
RootfsProvisionerImpl · RootfsHealthCheck · UbuntuSourcesList
lifecycle/UbuntuLifecycleCoordinator
pkg/ UbuntuAptPackageManager · PackageOperationLock
tools/v2/ 22 个 terminal 工具 + tools/legacy/ 7 个
observation/state/ ObservationEngine2 · SemanticStateReducer · InputWaitingDetector
JNI:src/main/cpp/{pty_engine,pty_session,jni_bridge}.cpp + headers,CMake 产出 apex_terminal。
详见 终端运行时。
包 com.apex.agent.platform.csmem:
| 组 | 组件 |
|---|---|
| 会话 | CsMemSessionManager |
| 摄取 |
UiTreePruner · NodeFingerprint · DifferentialIngestor · MemoryWriterActor(有界邮箱 256) |
| 存储 |
MemoryGraphDatabase(Room schema v3)· MemoryGraphStore · 5 张表 DAO(nodes/edges/episodes/fsm_macros/migration_map) |
| 蒸馏 |
TraceDistiller(锚点提取 → 动作压缩 → FSM 编译) |
| 回放 |
BypassExecutionEngine(指纹命中绕过 LLM) |
| 生命周期 |
EntropyManager(能量/晶化)· DreamRenderer · TopologyMigrator
|
| 安全 | MemoryImmuneSystem |
| 对外 |
CsMemRecallTools(3 个召回工具)· di/CsMemModule
|
详见 cs-mem 认知记忆 · 记忆生命周期。
app/src/main/kotlin/com/apex/agent/
├── ui/ ApexRoot(抽屉)+ theme/ glass/ component/ + screen/<8 屏>
├── browser/ 浏览器智能体(15 工具)+ chrome/ 一整套 Chrome 风 UI 与 bridge
├── github/ GitHub 工具(7 个)
├── slash/ 斜杠命令解析(纯 JVM 可测)
├── tools/ AskUser · RiskAwareToolGate · PrivilegedCommandSpawner …
├── di/ Hilt 模块(ToolModule / TerminalModule / AgentModule …)
├── attachment/ environment/ marketplace/ bridge/ platform/
├── receiver/ BootReceiver
└── service/ ApexCoreService
| 诉求 | 首选模块 | 备选 / 注意 |
|---|---|---|
| 新增工具(纯计算) | core:tool-registry |
CI 有工具 ID 唯一性门禁 |
| 新增工具(需要 Android API) |
platform:* 实现 + app/di/ToolModule 注入 |
不要试图在 core 里引 Android |
| 新增工具(需要 UI/界面跳屏) |
app/tools/ 或 app/browser/
|
走 ask_user / 风险门 |
| 改 LLM 协议细节 | core:llm-adapter |
保持 OpenAI 兼容方言,别引入厂商 SDK |
| 改 UI 外壳/主题 |
app/ui/theme、app/ui/glass
|
见 Liquid Glass |
| 改终端行为 |
platform/terminal(实现)+ :terminal-emulator(渲染) |
两层不许互相依赖 |
| 改 rootfs 打包方式 |
scripts/fetch_rootfs.sh + platform/terminal/build.gradle.kts
|
见 Ubuntu rootfs 供给 |
| 改记忆算法 | platform/cs-mem |
同步更新 docs/memory-and-workflow-research.md
|
| 改 CI 门禁 |
.github/workflows/、scripts/
|
见 质量门禁 |
| 写独立插件 |
plugins/(新 application 模块,依赖 plugin-api) |
见 插件 SDK |
| 主题 | 事实 |
|---|---|
| 仓库管理 |
settings.gradle.kts 声明 13 个 include;RepositoriesMode.FAIL_ON_PROJECT_REPOS,仅 JitPack(EasyFloat)例外,exclusiveContent 过滤 |
| 依赖锁定 |
:app 开了 dependencyLocking
|
| 单 ABI 瘦身 | -PapexAbi=arm64-v8a |
| ABI 过滤 |
arm64-v8a / armeabi-v7a / x86_64
|
| 原生构建 | NDK CMake 3.22.1,-std=c++17 -Wall -Wextra -O2,-DANDROID_STL=c++_shared
|
| 特殊打包 |
useLegacyPackaging = true(rootfs 必须解压到 nativeLibraryDir 才能 exec)+ keepDebugSymbols 跳过 llvm-strip |
| wrapper | 仓库未锁定 gradlew,需本机 gradle wrapper --gradle-version 8.10 生成,或看 CI 步骤 |
-
MCP 生态总览
新 - (沙箱 MCP · 官方 Hub · 逆向 Host · 门控语义)
- 终端运行时
- 终端 API 契约
- SDK 边界
- Termux 能力矩阵
- Ubuntu rootfs 供给
- Ubuntu 生命周期
- PRoot 二进制溯源
- VT100/ANSI 模拟器
- 终端性能
- 终端迁移
- 原生层 C++/JNI