这个 iOS / Android 双端的开源 AI Agent 必须推荐! OpenMinis 作者 @wsvn53 https://github.com/OpenMinis/OpenMinis OpenMinis 选择直接给模型一台 Linux 电...
AI 摘要
移动端AI Agent开发面临系统集成和工具调用限制。OpenMinis发布开源AI Agent,在iOS和Android上通过Linux沙箱实现系统级集成:iOS使用iSH深度定制fork(ARM64 guest),Android使用PRoot。模型仅暴露8个核心工具,设备功能通过沙箱内CLI命令调用,采用Native Offloads机制降低token消耗。支持Skills兼容、记忆分层、权限控制等设计。为移动AI Agent开发提供新思路,降低开发门槛,提高模型可控性和效率。 核心观点: 1. iOS端用iSH深度定制fork(OpenMinis/ish-arm64),改造为ARM64 guest,配合Asbestos JIT解释器,实现进程管理和100+系统调用。 2. 模型仅见8个工具(shell_execute等),20+设备集成通过沙箱CLI命令,Native Offloads将execve()路由到宿主侧原生handler。 3. Agent循环最多200轮,并发工具执行上限10,分级自动压缩与上下文卸载,并设有ToolLoopDetector熔断器。
推荐理由高信息密度,值得细读
原文
OpenMinis 作者 @wsvn53 https://github.com/OpenMinis/OpenMinis
OpenMinis 选择直接给模型一台 Linux 电脑,支持用户接入自己的模型(支持 API Key 或 OAuth 账号登录),Agent 便获得: · 一个在设备上本地运行的完整 Alpine Linux 沙箱——能 apk add、跑 Python、写脚本、操作真实文件; · 通过沙箱暴露的系统级集成——日历、提醒、健康、HomeKit、蓝牙、剪贴板、闹钟等; · 浏览器自动化、可扩展 Skills、跨会话持久记忆。
# 最核心的技术决策:手机上的 Linux 沙箱
iOS 端用的是 iSH 的深度定制 fork(OpenMinis/ish-arm64)。iSH 本质是一个用户态 Linux 内核模拟器,OpenMinis 把它从原版的 x86 guest 改造为 ARM64 guest(配合名为 Asbestos 的 threaded-code JIT 解释器),在 App 进程内实现了进程管理、100+ 系统调用、TTY/PTY、完整网络栈透传,文件系统则用 SQLite 存元数据的「fakefs」。这在 iOS 严苛的沙箱限制下跑通一个能装包、能联网的 Alpine 环境,工程难度和完成度都不低。
Android 端则务实得多:直接用 PRoot(Termux 同款方案的 fork)做用户态 chroot,解压真实的 Alpine rootfs,靠路径翻译和 --link2symlink 等技巧在无 root 环境下运行。两端殊途同归:都给 Agent 呈现同样的 /bin/sh + /var/minis/ 目录结构。
# Agent 架构:小工具面 + 一切皆 CLI
模型能直接看到的工具只有 8 个:shell_execute、file_read/write/edit、browser_use、memory_write/get、read_image。而全部 20 多个设备集成——iOS 的 apple-calendar、apple-healthkit、apple-vision,Android 的 android-shizuku-cli、android-a11y-cli 等——都不是 LLM 工具,而是沙箱里的命令行程序。实现方式很巧妙:内核层拦截 execve(),当 guest 进程执行 /usr/local/bin/apple-calendar 时,调用被路由到宿主侧的原生 handler(EventKit、HealthKit 等),结果以 JSON 经管道返回。项目称之为「Native Offloads」。
这带来几个直接好处:工具 schema 不膨胀(省 token、模型不易混乱);模型可以用 shell 的全部表达力组合这些能力(管道、脚本、循环);MCP 服务器也统一走 minis-mcp-cli 命令调用而非注入工具列表。这与 Anthropic 近来倡导的「代码执行优于工具调用」的方向一致,且该项目在移动端把这条路走通了。
Agent 循环(iOS AIChatViewModel.runAgentLoop,Android ChatViewModel)是成熟的流式工具循环:最多 200 轮、并发工具执行(上限 10)、按上下文窗口分级的自动压缩(LLM 摘要)与「上下文卸载」(超长工具结果写入文件、留占位符让模型按需 file_read 回来)、防失控的 ToolLoopDetector 熔断器、模型组故障转移(fallback chain)。
其他几个设计也值得一提: · minis:// URL scheme:会话级资源寻址,URL 刻意不含 session ID,从协议层面杜绝跨会话访问;工具产出的文件以 minis:// URL 返回给模型,聊天 UI 直接内联渲染图片/音视频。 · Skills 兼容生态:采用与 Claude Code 相同的 SKILL.md 渐进式披露机制(元数据常驻上下文,正文按需加载),并明确宣称为 Claude/Codex 写的技能可以直接跑。这是聪明的生态借力。 · 记忆分层:GLOBAL.md(用户维护)+ 按日记录的 daily log + 独立的 SOUL.md 身份定义,全部落在沙箱可见的 /var/minis/memory/,模型能用普通文件工具读写。 · iOS 后台保活:用定位心跳和后台音频延长执行时间,配合 Live Activity 展示进度——是灰色但常见的手段,说明作者对 iOS 平台限制的对抗做得很彻底。 · 权限模型:涉隐私的 CLI(健康、日历、位置、剪贴板等)有 Bypass / Ask Once / Not Allowed 三级授权,在系统权限之外多加了一道 Agent 级闸门。
金句
OpenMinis 选择直接给模型一台 Linux 电脑
iOS 端用的是 iSH 的深度定制 fork(OpenMinis/ish-arm64)
项目称之为「Native Offloads」
讨论
暂无评论。