Mika
wangzan101/Mika加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一个这样的场景:早上你在地铁上单手刷着手机,突然想起昨晚答应朋友"到家把上周那份合同发过去"。你不想切到微信翻聊天记录找文件再手动输入,但你也不想放下手机。
Mika 就是为这个场景生的。它不是一个需要你坐下来对话的聊天机器人,而是一个跑在你自己安卓手机里的 AI 智能体:你对它说一句话,它就退到一块你看不见的后台屏幕上,自己去开 App、找联系人、翻聊天记录、点按钮、打字、发消息,一直干到事情办完。而你手上的主屏幕还在正常刷抖音。
这个项目由独立开发者王赞(wangzan101)在 2026 年 10 月底开源,采用 Apache-2.0 协议,截至 2026 年 11 月初已在 GitHub 收获约 5200 星、1000 次 fork,成为近期开源 Phone Agent 赛道最受关注的项目之一。

市面上的手机智能体大多需要一台电脑在旁边做推理和执行,端侧的尝试也通常停留在"截图给模型 → 模型返回坐标 → 点击"的粗暴循环。Mika 的技术路线更有野心:把执行环境整个搬进手机自己的虚拟显示系统里。
它的核心机制有三条:
第一,无障碍服务(Accessibility Service)而不是 ADB。 项目内 app/src/main/java/com/wangzan101/mika/a11y/MikaAccessibilityService.kt 承担了界面元素读取与点击输入的职责。这条路的好处是不需要电脑、不需要 root、不需要开发者选项里的 USB 调试,每次任务都能自己完成一套"看屏幕—找按钮—点击"的循环。项目里甚至有专门的 ScreenAccessibility.kt 做节点缓存与失效重建,配套的 StaleNodeIdTest.kt 说明作者处理过无障碍节点过期这个经典难题。
第二,后台屏幕隔离。 通过 DisplayManager / VirtualDisplay 创建一块独立显示面并让应用在其中获得焦点,这样你在主屏打字时不会被智能体的操作打断——README 明确说明"Android 14+ 推荐,因为后台屏有独立焦点,不会干扰你在主屏输入"。这是 Mika 相对于 ADB 方案最大的体验差异。
第三,感知 + 决策 + 验证的闭环。 core/src/main/kotlin/.../core/agent/ 目录下是整个智能体的心脏:AgentLoop 负责主循环,ModelRouter 做多模型路由,SystemPrompt 定义行为约束,OutcomeJudge 与 JudgedOutcome 负责判断"任务到底完成了没有",LearnGate 决定这次经验是否值得沉淀成技能,MemoryExtractor 把对话里的偏好抽出来存进长期记忆,FailKind 则把失败分类以驱动重试或换策略。core/agent 这个命名方式意味着核心逻辑是平台无关的纯 Kotlin 模块。

Mika 的能力清单覆盖得相当宽:
| 能力 | 说明 |
|---|---|
| 操作任意 App | 不依赖任何 App 私有 API,像人一样"看屏幕找按钮";登录、验证码、支付会主动交还给你 |
| 内置浏览器 | 桌面级浏览器内核,保留登录态,能读页面、下载上传,遇到人机验证会交给你 |
| 当前屏幕提问 | 双击悬浮胶囊即可把眼前的屏幕丢给模型:"这条该怎么回?" |
| 定时与条件触发 | "明天 9 点提醒我""每周五做这件事",按原对话上下文执行 |
| 随时介入 | 任务运行中可以继续对话纠正方向;长按可撤回尚未开始的任务 |
| 语音输入 | 按住说话,调用系统语音识别或服务商语音模型,识别后可编辑再发 |
| Linux 沙箱 | 每个对话独立一个 arm64 Linux 沙箱,跑 Python / Node / shell 处理你发来的文件 |
| 电脑协同 | 通过 CLI + Skill 或 MCP,把手机端任务反向交给电脑上的 AI 智能体 |
内置知识库覆盖了微信、小红书、抖音、BOSS直聘、闲鱼、微博、知乎、淘宝系等 25 个 App 和 Amazon、豆瓣、Google Maps、YouTube 等 18 个网站,还包含"处理 PDF 文档""查清一件事""写技能"等 6 个 how-to 技能。模型侧预设了 DeepSeek、通义千问、Kimi、智谱、火山方舟、MiniMax、阶跃星辰、腾讯混元、百度千帆、OpenRouter、Anthropic、Gemini、OpenAI、xAI、Mistral、Groq、Ollama、LM Studio 等一长串服务商,也可以用自建的 OpenAI 兼容端点。

从 GitHub 语言统计看,这个仓库是 Kotlin 主导(1013 万字节),辅以 Python(13.7 万)、JavaScript(13 万)、Go(4.2 万)、HTML 和 C。
Android 主应用(app/ 模块):Kotlin 2.1.20 + AGP 8.7.3 + Jetpack Compose(BOM 2024.12.01,Material 3),Gradle 版本目录 gradle/libs.versions.toml 统一管理依赖。关键第三方库包括 OkHttp 4.12(模型 API 与 CDP 通信)、kotlinx-serialization-json、kotlinx-coroutines、androidx-webkit 1.12.1(WebView 能力)、CommonMark 0.30.1(Markdown 渲染)、Google ML Kit Text Recognition 16.0.1(含中文识别,用于屏幕 OCR)、Conscrypt 2.7.0(TLS)、Apache Commons Compress 与 XZ(沙箱运行时解压),以及 OpenTelemetry Proto(运行轨迹上报)。
核心库(core/ 模块,434 个 Kotlin 文件):core/model/ 抽象了 ModelProtocol、OpenAiCompatModel、AnthropicModel、GeminiModel、ResponsesModel 四类协议实现,ModelCatalog 负责模型列表拉取,PromptCaching 处理提示词缓存,ToolSpec 定义工具调用规格,UsageSink/metered 做 token 计量。core/agent/ 是决策循环,core/cap/ 分 phone/web/sandbox 三类能力(分别是手机控制、网页操作、沙箱执行),core/shell/ 管理辅助进程,core/memory/ 是记忆层,core/skills/ 负责技能生成。
代码结构:主源码按业务域切分为 30 余个包——a11y(无障碍)、browser(浏览器)、cap(能力层)、capsule(悬浮胶囊)、chat(对话)、confirm(确认)、device(设备访问)、knowledge(应用知识)、mcp(MCP 集成)、memory(记忆)、record/replay(运行记录与回放)、sandbox(Linux 沙箱)、shell(辅助进程)、skills(技能)、task(任务编排)、takeover(人工接管)、vision(图像处理)、voice(语音)、web(网页能力),UI 层在 ui/ 下有 60 余个 Compose 屏幕与组件。
测试:仓库含 783 个测试相关文件,包含大量 *DeviceTest.kt(真机设备测试)、androidTest 下的 Compose UI 测试与 EvalProbes,以及 eval/tasks/ 目录下按能力划分的评测任务集(barrier、impossible、irreversible、memory、read、skills、web、write 八类)——后者专门测试"不可逆操作""不可能完成的任务"这类边界情况,说明作者有意识地把安全性和拒答能力纳入评测。

Mika 不是孤立的 App,它自己带了一套"从电脑到手机"的完整链路:
tools/mika/:Python 编写的命令行客户端(mika-phone-cli),同时带一个 mika_desk 包,内含 HTML/CSS/JS 的桌面面板,可以从电脑给手机派任务。tools/relay/:Go 编写的远程网关(gateway.go、main.go、store.go),带完整的 Dockerfile——Go 1.27.3 构建阶段跑 go test ./... 再编译,Caddy 2.11.7 阶段校验配置,最终以 scratch 基础镜像运行、非 root 用户(UID 10001)启动,暴露 8787 端口,配套 compose.yaml 与 compose.nginx.yaml 编排文件。这让手机在没有公网入口时也能被电脑端的智能体远程调用。tools/sandbox/:构建 arm64 Linux 沙箱运行时的脚本与源码锁定(sources.lock),让手机本地能跑真正的 Python/Node/shell。MCP 支持分三种模式:局域网监听、USB 监听、经 relay 网关出站连接,统一由 McpRuntime.kt 与 core/mcp/McpRpc 承载,同一套任务协议对外暴露。
这里必须说清楚:Mika 的"部署"跟大多数服务器软件完全不同。
没有 Dockerfile 的一键启动体验。 主应用是标准 Android APK,从 GitHub Releases 下载安装(当前版本 v0.1.34,提供通用包与 arm64 包),走的是传统移动应用分发链路。只有可选的 relay 网关是容器化的。
手机型号有硬门槛。 README 明确列出:聊天/网页/文件需要 Android 11+;操作手机 App 需要 Android 12+,推荐 Android 14+(后台屏焦点隔离的效果依赖此);Linux 沙箱需要 arm64 设备。这不是"装个 apk 就能跑"的无门槛项目。
需要配对无线调试。 因为走的是无障碍 + 后台屏方案,任务执行需要一次无线调试配对(也可从电脑通过 USB 启动手机助手)。Android 在切换 Wi-Fi 或重启后会关闭无线调试,Mika 在获得授权后可自动重新打开。
屏幕安全边界有产品级设计。 支付页和密码输入页会屏蔽截图与无障碍读取,这类场景 Mika 主动把控制权交还给用户(Mika 内叫"接管"takeover),配合 confirm/ 模块的确认通知器和 Ask/Autonomous 两种模式(Ask 模式只在涉及花钱时确认)。
生态与合规风险是真实的。 自动操作第三方 App 和网站可能违反其服务条款,README 自己把这一点写进了免责声明,并建议重要操作用 Ask 模式人工复核。对企业内网合规场景尤其如此。
"接入即信任"的代价。 模型 API key 和记忆以加密形式存在手机本地,对话与运行记录不上云(无 Mika 服务器,更新检查只连 GitHub)——隐私设计相当克制。但注意,作者同时提供 OpenRouter / xAI / ChatGPT 账号直连登录路径,数据流向实际上由用户选择的服务商决定。
权限要求高。 无障碍服务 + 屏幕捕获 + 后台运行 + 网络,是典型的"高权限换能力"组合。开源代码能审,但装到自己主力机上仍是需要权衡的决定。
迭代极快。 仓库从 2026-10-29 创建到 11 月初已发布 30+ 个版本,代码树超过 2500 个文件。速度快意味着文档跟不上、bug 修复与功能引入交织,长期可维护性尚待观察。
生态位竞争激烈。 同类项目有 zai-org/Open-AutoGLM(多模态手机智能体,偏 ADB/云端路线)和 OpenDroid(本地/远程大模型 + 无障碍服务,自主规划执行验证修正)。Mika 的差异化优势是"纯端侧 + 后台屏隔离 + 无需电脑",但这也让它在需要强推理能力的任务上更依赖用户自己提供的模型。
Mika 代表的趋势是手机智能体从"云端遥控"走向"端侧自持"。过去两年手机智能体的主流范式是:手机截图 → 上传云端 → 大模型推理 → 坐标回传 → ADB 点击。Mika 用三件事改写了这条链路:把执行环境放进手机自身的虚拟显示系统、用无障碍服务替代 ADB、把推理入口开放给 20 多家模型服务商。
core/agent/AgentLoop + OutcomeJudge + LearnGate + SkillDrafter 这套组合尤其值得注意——它试图让智能体从完成的任务中自动沉淀技能,实现"越用越顺手"。README 里的原话是:"记住你告诉它的偏好,把完成的任务变成技能,下次更快更稳。"
从这个角度看,Mika 的价值不完全在于代码本身,而在于它证明了一件事:一台普通安卓手机,加上一个足够好的提示词工程和运行时编排,就足以承载一个可用的通用手机智能体。 2000 多行的模型协议适配层、34 个业务包、783 个测试文件——这套投入规模也反向说明,把"AI 真正动手"这件事做稳,所需的工作量远大于一次 API 调用。

项目信息