# Hermes for Android ๆžถๆž„ๆ–‡ๆกฃ ## ๐Ÿ“ ้กน็›ฎๆ•ฐๆฎ็›ฎๅฝ• ``` /sdcard/.hermes/ โ† ้กน็›ฎๆ•ฐๆฎๆ น็›ฎๅฝ• (Hermes ๆ•ฐๆฎ็›ฎๅฝ•) โ”œโ”€โ”€ config/ โ”‚ โ””โ”€โ”€ openclaw.json โ† ไธป้…็ฝฎๆ–‡ไปถ โ”œโ”€โ”€ workspace/ โ”‚ โ”œโ”€โ”€ .androidforclaw/ โ”‚ โ”‚ โ””โ”€โ”€ workspace-state.json โ”‚ โ”œโ”€โ”€ skills/ โ† ็”จๆˆท่‡ชๅฎšไน‰ Skills (ไผ˜ๅ…ˆ็บงๆœ€้ซ˜) โ”‚ โ”œโ”€โ”€ sessions/ โ† ไผš่ฏๅކๅฒ (JSONL) โ”‚ โ””โ”€โ”€ memory/ โ† ๆŒไน…ๅŒ–่ฎฐๅฟ† โ”œโ”€โ”€ skills/ โ† ๆ‰˜็ฎก Skills (ClawHub ๅฎ‰่ฃ…) โ””โ”€โ”€ logs/ ``` --- ## ๐Ÿ—๏ธ ๆ€ปไฝ“ๆžถๆž„ ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Gateway (ๅทฒๅฎž็Žฐ) โ”‚ WebSocket RPC + ๅคšๆธ ้“ + ไผš่ฏ่ทฏ็”ฑ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ Agent Runtime (ๆ ธๅฟƒ) โ”‚ AgentLoop ยท Tools ยท Skills ยท Memory โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ Android Platform โ”‚ Accessibility ยท Termux ยท MediaProjection โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` --- ## ๐Ÿ“ ๆ ธๅฟƒ็ป„ไปถ ### 1. Agent Runtime **ๆ ธๅฟƒๅพช็Žฏ**: `agent/loop/AgentLoop.kt` ``` LLM ๆŽจ็† (Extended Thinking) โ†’ Tool Calls โ†’ Observations โ†’ LLM โ†’ ... โ†’ stop ``` **ๅ…ณ้”ฎๆ–‡ไปถ**: - `core/MainEntryNew.kt` โ€” ไธปๅ…ฅๅฃ - `agent/context/ContextBuilder.kt` โ€” 22 ๆฎต็ณป็ปŸๆ็คบ่ฏๆž„ๅปบ๏ผˆๅฏน้ฝ Hermes) - `agent/tools/ToolRegistry.kt` โ€” ๅทฅๅ…ทๆณจๅ†Œไธญๅฟƒ - `agent/skills/SkillsLoader.kt` โ€” Skills ไธ‰ๅฑ‚ๅŠ ่ฝฝๅ™จ --- ### 2. Tools ็ณป็ปŸ 19 ไธชๅทฅๅ…ท๏ผŒๅˆ†ไธบไปฅไธ‹็ฑปๅˆซ๏ผš | ็ฑปๅˆซ | ๅทฅๅ…ท | ๅฎž็Žฐๆ–‡ไปถ | |------|------|----------| | **่ฎพๅค‡ๆ“ไฝœ** | `device` (snapshot/tap/type/scroll/press/open) | `agent/tools/device/DeviceTool.kt` | | **ๆ–‡ไปถ** | `read_file` / `write_file` / `edit_file` / `list_dir` | `*FileTool.kt` / `ListDirTool.kt` | | **ๆ‰ง่กŒ** | `exec` | `agent/tools/ExecFacadeTool.kt` (่‡ชๅŠจ่ทฏ็”ฑ Termux ๆˆ–ๅ†…็ฝฎ Shell) | | **JavaScript** | `javascript` | QuickJS ๅผ•ๆ“Ž | | **็ฝ‘็ปœ** | `web_search` / `web_fetch` | `WebSearchTool.kt` / `WebFetchTool.kt` | | **ๆŠ€่ƒฝ** | `skills_search` / `skills_install` | `SkillsHubTool.kt` | | **่ฎฐๅฟ†** | `memory_search` / `memory_get` | `agent/tools/memory/` | | **้…็ฝฎ** | `config_get` / `config_set` | `ConfigGetTool.kt` / `ConfigSetTool.kt` | | **Android** | `list_installed_apps` / `install_app` / `start_activity` / `stop` | ๅ„่‡ช็‹ฌ็ซ‹ๆ–‡ไปถ | --- ### 3. Skills ็ณป็ปŸ Skills = ๆ•™ Agent ๅฆ‚ไฝ•ไฝฟ็”จๅทฅๅ…ท็š„ Markdown ๆ–‡ๆกฃใ€‚ไธ‰ๅฑ‚ไผ˜ๅ…ˆ็บง๏ผš 1. **ๅทฅไฝœๅŒบ Skills** (ๆœ€้ซ˜) โ€” `/sdcard/.hermes/workspace/skills/` 2. **ๆ‰˜็ฎก Skills** (ไธญ็ญ‰) โ€” `/sdcard/.hermes/skills/` (ClawHub ๅฎ‰่ฃ…) 3. **ๅ†…็ฝฎ Skills** (ๆœ€ไฝŽ) โ€” `app/src/main/assets/skills/` **ๅฝ“ๅ‰ๅ†…็ฝฎ Skills**: browser ยท debugging ยท data-processing ยท weather ยท feishu (ๅซ 8 ไธชๅญๆŠ€่ƒฝ) ยท clawhub ยท model-usage ยท session-logs ยท install-app ยท channel-config ยท model-config ยท skill-creator --- ### 4. Gateway (ๅทฒๅฎž็Žฐ) ๅŸบไบŽ Hermes Protocol v3 ็š„ WebSocket RPC ๆœๅŠก๏ผŒ่ฟ่กŒๅœจ `ws://127.0.0.1:8765`ใ€‚ **ๆžถๆž„**: ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Gateway Server โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ Feishu โ”‚ โ”‚ Discord โ”‚ ... โ”‚ 6 ไธชๆธ ้“ Channel โ”‚ โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ Session Router โ”‚ โ”‚ โ”‚ WebSocket RPC โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Agent Runtime (ๆœฌๅœฐ) โ”‚ โ”‚ AgentLoop + Tools + Skills โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` **ๅ…ณ้”ฎๆ–‡ไปถ**: - `gateway/GatewayWebSocketServer.kt` โ€” WebSocket ๆœๅŠก็ซฏ - `gateway/GatewayController.kt` โ€” RPC ๆ–นๆณ•ๆณจๅ†ŒไธŽ่ทฏ็”ฑ - `gateway/GatewayService.kt` โ€” ๆœๅŠก็ฎก็† - `gateway/methods/` โ€” ๅ„ RPC ๆ–นๆณ•ๅฎž็Žฐ (Agent, Config, Health, Models, Sessions, Skills, Tools, Cron) --- ### 5. Hermes ้›†ๆˆ `hermes-android/` ๆจกๅ—ๆไพ› Hermes ็š„ Android ๅŽŸ็”Ÿๅฎž็Žฐ๏ผˆ202 ไธช Kotlin ๆ–‡ไปถ๏ผŒๅฏน้ฝๅบฆ 93%๏ผ‰๏ผš - `NodeRuntime.kt` โ€” ่ฟžๆŽฅ็ฎก็†๏ผˆoperator + node session๏ผ‰ - `ChatController.kt` โ€” ่Šๅคฉ็Šถๆ€็ฎก็†๏ผˆhealthใ€bootstrapใ€history๏ผ‰ - `GatewayRunner (Run.kt)` โ€” Hermes Gateway ่ฟ่กŒๅ™จ๏ผŒๆ”ฏๆŒ local ๆจกๅผ็›ด่ฟž - `AppChatAdapter.kt` โ€” ่ฟ›็จ‹ๅ†… Chat UI ้€‚้…ๅ™จ๏ผˆๆ›ฟไปฃ WebSocket๏ผ‰ - UI ็ป„ไปถ๏ผš`ChatSheetContent`ใ€`RootScreen`ใ€`PostOnboardingTabs` **ๆกฅๆŽฅๅฑ‚** (`app/.../hermes/bridge/`)๏ผš - `HermesGatewayChannel.kt` โ€” IGatewayChannel โ†’ Hermes ่ทฏ็”ฑ๏ผˆRPC ๅˆ†ๅ‘ + ไบ‹ไปถๅ›ž่ฐƒ๏ผ‰ - `HermesAgentLoop.kt` โ€” Hermes AgentLoop โ†” App AgentLoop ๆกฅๆŽฅ - `HermesChatGateway.kt` โ€” ไธ€้”ฎๅฏๅŠจๅ…ฅๅฃ **ๆถˆๆฏๆต**๏ผš ``` Chat UI โ†’ ChatController โ†’ HermesGatewayChannel โ†’ AppChatAdapter โ†’ GatewayRunner โ†’ HermesAgentLoop โ†’ App AgentLoop โ†’ LLM API โ†’ AppChatAdapter.send() โ†’ eventListener โ†’ ChatController โ†’ UI ``` --- ## ๐Ÿ”ง Android ๅนณๅฐ้›†ๆˆ ### Accessibility Service - **็”จ้€”**: UI ๆ“ไฝœ๏ผˆ็‚นๅ‡ปใ€ๆป‘ๅŠจใ€่พ“ๅ…ฅ๏ผ‰ๅ’Œ UI ๆ ‘้ๅކ - **ๅฎž็Žฐ**: `accessibility/AccessibilityProxy.kt` (็‹ฌ็ซ‹ๆจกๅ— `extensions/observer/`) ### MediaProjection - **็”จ้€”**: ๅฑๅน•ๆˆชๅ›พ - **ๅฎž็Žฐ**: `accessibility/MediaProjectionHelper.kt` ### ๅ†…็ฝฎ Termux - **็”จ้€”**: Shell ๅ‘ฝไปคๆ‰ง่กŒ - **ๅฎž็Žฐ**: `extensions/termux/` (ๅ†…ๅตŒ Termux ่ฟ่กŒๆ—ถ๏ผŒๆ— ้œ€็‹ฌ็ซ‹ๅฎ‰่ฃ…) - **่ทฏ็”ฑ**: `ExecFacadeTool.kt` ่‡ชๅŠจๅˆคๆ–ญ Termux ๅฏ็”จๆ€ง ### MCP Server - **็”จ้€”**: ๆšด้œฒๆ— ้šœ็ข/ๆˆชๅฑ่ƒฝๅŠ›็ป™ๅค–้ƒจ Agent (็ซฏๅฃ 8399) - **ๅฎž็Žฐ**: `mcp/` --- ## ๐Ÿ“ฆ ๅŒ…็ป“ๆž„ ``` com.xiaomo.hermes/ โ”œโ”€โ”€ core/ # ๅบ”็”จๆ ธๅฟƒ โ”‚ โ”œโ”€โ”€ MainEntryNew.kt # Agent ไธปๅ…ฅๅฃ โ”‚ โ”œโ”€โ”€ MyApplication.kt # Application ็”Ÿๅ‘ฝๅ‘จๆœŸ โ”‚ โ””โ”€โ”€ ForegroundService.kt # ไฟๆดปๆœๅŠก โ”œโ”€โ”€ agent/ โ”‚ โ”œโ”€โ”€ loop/AgentLoop.kt # ๆ ธๅฟƒๆ‰ง่กŒๅพช็Žฏ โ”‚ โ”œโ”€โ”€ context/ContextBuilder.kt # ็ณป็ปŸๆ็คบ่ฏ (22 ๆฎต) โ”‚ โ”œโ”€โ”€ tools/ # 19 ไธชๅทฅๅ…ท + device/ + memory/ โ”‚ โ”œโ”€โ”€ skills/SkillsLoader.kt # Skills ไธ‰ๅฑ‚ๅŠ ่ฝฝ โ”‚ โ””โ”€โ”€ session/SessionManager.kt # ไผš่ฏ็ฎก็† โ”œโ”€โ”€ hermes/bridge/ # Hermes ๆกฅๆŽฅๅฑ‚ (ๆ–ฐๅขž) โ”‚ โ”œโ”€โ”€ HermesGatewayChannel.kt # IGatewayChannel โ†’ Hermes ่ทฏ็”ฑ โ”‚ โ”œโ”€โ”€ HermesAgentLoop.kt # Hermes โ†” App AgentLoop ๆกฅๆŽฅ โ”‚ โ””โ”€โ”€ HermesChatGateway.kt # ไธ€้”ฎๅฏๅŠจๅ…ฅๅฃ โ”œโ”€โ”€ gateway/ # Gateway WebSocket RPC (โš ๏ธ DEPRECATED) โ”‚ โ”œโ”€โ”€ GatewayWebSocketServer.kt โ”‚ โ”œโ”€โ”€ GatewayController.kt โ”‚ โ””โ”€โ”€ methods/ # RPC ๆ–นๆณ•ๅฎž็Žฐ โ”œโ”€โ”€ channel/ # ๅคšๆธ ้“็ฎก็† โ”œโ”€โ”€ providers/ # LLM Provider (OpenRouter, Anthropic, etc.) โ”œโ”€โ”€ config/ # ้…็ฝฎๅŠ ่ฝฝ (ConfigLoader, ProviderRegistry) โ”œโ”€โ”€ ui/ โ”‚ โ”œโ”€โ”€ activity/ # 15 ไธช Activity (Compose) โ”‚ โ”œโ”€โ”€ compose/ # Compose UI ็ป„ไปถ โ”‚ โ””โ”€โ”€ float/ # ๆ‚ฌๆตฎ็ช— โ”œโ”€โ”€ service/ # ็ณป็ปŸๆœๅŠก (ClawIME ่พ“ๅ…ฅๆณ•) โ”œโ”€โ”€ updater/ # ๅบ”็”จๆ›ดๆ–ฐ โ””โ”€โ”€ util/ # ๅทฅๅ…ท็ฑป extensions/ โ”œโ”€โ”€ feishu/ # ้ฃžไนฆๆธ ้“ (ๅซ 8 ไธช Skill) โ”œโ”€โ”€ discord/ # Discord ๆธ ้“ โ”œโ”€โ”€ telegram/ # Telegram ๆธ ้“ โ”œโ”€โ”€ slack/ # Slack ๆธ ้“ โ”œโ”€โ”€ signal/ # Signal ๆธ ้“ โ”œโ”€โ”€ whatsapp/ # WhatsApp ๆธ ้“ โ”œโ”€โ”€ observer/ # ๆ— ้šœ็ข + ๆˆชๅฑ (็‹ฌ็ซ‹ APK) โ”œโ”€โ”€ termux/ # ๅ†…ๅตŒ Termux ่ฟ่กŒๆ—ถ โ””โ”€โ”€ BrowserForClaw/ # AI ๆต่งˆๅ™จ openclaw-android/ # Hermes Android ๅŽŸ็”Ÿๅฎž็Žฐ self-control/ # AI ่‡ชๆˆ‘็ฎก็†ๆจกๅ— ``` --- ## โš™๏ธ ้…็ฝฎ **ไธป้…็ฝฎๆ–‡ไปถ**: `/sdcard/.hermes/openclaw.json` ๅŒ…ๅซ๏ผšๆจกๅž‹ Provider ้…็ฝฎใ€Agent ้ป˜่ฎคๅ‚ๆ•ฐใ€ๆธ ้“้…็ฝฎใ€‚ **ๆจกๅž‹้…็ฝฎ UI**: `ModelConfigActivity` + `ModelSetupActivity`๏ผˆ้ฆ–ๆฌกๅฏๅŠจๅผ•ๅฏผ๏ผ‰ > ๅŽ็ปญๅฐ†็ปŸไธ€ไธบ Hermes ๅŽŸ็”Ÿ้…็ฝฎๆ ผๅผ๏ผˆ`config.yaml` + `.env`๏ผ‰ใ€‚ --- ## ๐Ÿ“š ็›ธๅ…ณๆ–‡ๆกฃ - [README.md](README.md) โ€” ้กน็›ฎๆฆ‚่งˆ - [MAPPING.md](MAPPING.md) โ€” Hermes โ†” AndroidForClaw ๆบ็ ๆ˜ ๅฐ„ --- **ๆžถๆž„็‰ˆๆœฌ**: v4.0 **ๆœ€ๅŽๆ›ดๆ–ฐ**: 2026-04-16 **ๅฏน้ฝ Hermes ็‰ˆๆœฌ**: v0.9.x