Repository navigation
AgentOS 0.1.0
AgentOS 0.1.0 (prototype / 原型)
请先读这一条。 / Read this first.
- 这里的模块 zip 还没有在真实的 Magisk / KernelSU 上刷过。
install.sh只在 adb-root 模拟器上用替身magisk验证过,没有在真机上刷机。真机验证过的只有 Pixel 8 · Android 15 · Magisk 30.7 上更早的模块版本。刷机有风险,先看INSTALL.md里的“救援方法”。 / This module zip has not been flashed with a real Magisk / KernelSU.install.shwas verified on an adb-root emulator with a stand-inmagisk; no flash was done on a real phone. The only real-device verification is an earlier module build on a Pixel 8 · Android 15 · Magisk 30.7. Flashing carries risk: read the rescue path inINSTALL.mdfirst.- 这是原型,不是稳定版。 / This is a prototype, not a stable release.
安装 / Install
- 把本页所有文件下载到同一个文件夹。 / Download all files on this page into one folder.
- 运行 / Run:
sh install.sh(多台手机时sh install.sh -s <序列号 / serial>) - 脚本做不了的部分(解锁 / root、USB 调试、授权 root、模型 key、启用插件、短信权限)和出问题怎么办,见
INSTALL.md(中文在前,英文在后)。 / What the script cannot do (unlock / root, USB debugging, granting root, model key, enabling plugins, SMS permission) and what to do when something goes wrong: seeINSTALL.md(Chinese first, English below).
需要一台已 root 的 Android 15–17 手机,Magisk(≥ 20.4)或 KernelSU;不支持 APatch。 / Needs a rooted Android 15–17 phone with Magisk (≥ 20.4) or KernelSU; APatch is not supported.
校验 / Verify
- 签名证书 SHA-256 / Signing certificate SHA-256:
42:2C:E2:7F:42:D5:C8:69:6B:09:24:1D:8C:65:9B:8B:CF:0C:97:59:7C:06:07:A4:7F:AE:E7:15:37:0D:6A:34 - 所有文件的 SHA-256 在
SHA256SUMS:shasum -a 256 -c SHA256SUMS(Linux:sha256sum -c SHA256SUMS)。install.sh会自己校验,校验不过就不会碰手机。 / Every file's SHA-256 is inSHA256SUMS;install.shverifies them itself and stops before touching the phone on a mismatch. - 从 debug 测试版换到这个正式版,必须先卸载旧的(数据一起删除),见
INSTALL.md第 4 节。 / Switching from a debug test build to this release requires uninstalling the old one first (its data goes with it), see section 4 ofINSTALL.md.
AgentOS 示例 App 0.1.0 发布说明 / Sample apps 0.1.0 release notes
中文在前,英文在后(内容一致)。English follows the Chinese part.
每个 tag 的资产:agentos-<ver>.zip(AgentOS App、Runner、脚本);AgentOS-Sample-<name>-<ver>.apk× 5(闹钟、日历、备忘录、待办、短信,项目发布证书签名);SHA256SUMS;build-info.json;本文件。
示例 APK 不在模块 zip 里,需要的自己装;短信尤其如此(见下)。
中文
这一版有什么
- 闹钟:除了原有的 MCP 工具,新增只读工具
alarm_system_next(系统范围的下一个闹钟,含其他时钟 App 设的);响应系统的SET_ALARM/DISMISS_ALARM/SNOOZE_ALARM/SHOW_ALARMS标准 Intent;新增“保证准时响铃”检查页(精确闹钟、通知、全屏通知、电池优化,国内机型有厂商文字指引)。 - 日历:数据层换成系统日历库(
CalendarContract)与本机日历并存。有 Google / CalDAV 账号的日历由系统同步到云端,本 App 不碰任何 token;无账号或没授权时本机日历照常可用。工具名和必填参数不变,只加字段。读到无法无损表达的重复规则时标custom并拒绝改写。 - 备忘录:“让 AgentOS 安排”现在把有明确完成状态的事分给待办,占用时间的分给日历,到点叫醒的分给闹钟,一件事只建一个。
- 待办(新):状态、优先级、截止日期、标签、一层子任务;8 个 MCP 工具;v1 不自带提醒。
- 短信(新):读系统短信库、经系统短信服务发送;不是默认短信应用。6 个 MCP 工具;发送是高风险,每次确认;验证码默认遮蔽。
- 中英文界面:五个示例 App 与 AgentOS 主 App 的确认框、授权框、错误提示、首次引导、设置页、插件管理页、已授权 App 页都有中英文,默认跟随系统,也可在系统的“应用语言”里单独设;系统语言既不是中文也不是英文时显示中文。
- 门禁与发包:
tools/check-i18n.py(资源对齐、字面量检查)进了 CI;tools/package-samples.py检查证书、版本、权限、debug 代码、插件包后产出 APK 和校验和。
已验证的设备
- Pixel 8(真机,Android 15 / API 35):闹钟的系统 Intent(选择器两种选法)与
alarm_system_next(对 Google 时钟设的闹钟返回它并标明不属于本 App);短信只验证了权限,日历只在“无账号”下确认了行为,没有在真机上发过短信、没有读过真实短信或日程。 - 模拟器(API 35 / 36):五个示例 App 的 JVM 之外的自测、脚本化 e2e(假模型)、界面截图(中英文各 4 张以上)。
- 国内机型:没有测过。
已知限制(请先读)
- 短信
- Android 15 起,SMS 权限对非应用商店安装的 App 默认被“受限设置”挡住:装好后要在“应用信息”里点“允许受限制的设置”才能授予
READ_SMS/SEND_SMS。实测:用 adb 安装、模块安装不受限;用文件管理器侧载会受限。我们不绕过它。 - 权限被限制或没授权时,App 进入“仅撰写”模式:只有
sms_compose(打开系统短信界面预填,由你自己点发送)可用。 - 不是默认短信应用:不能删除、不能标已读、不能写草稿、没有彩信 / 群发 / 选卡槽,也不会在来信时触发 Agent。
- 短信内容会进入会话历史,并发给你配置的模型端点。读短信(独立示例 App)也默认每次确认。
- 发送:异步,只承诺“已提交”,不承诺送达;默认拒绝短号(如 10086);有发送频率上限和重复内容去重;中文每条约 70 字,长消息多条计费。
- 验证码默认遮蔽(关键词加 4–8 位数字的规则,中英文模板都覆盖),可在设置里打开;只认数字验证码。
- AgentOS 的确认框对很长或引号很多的正文可能显示不全:此时工具会拒绝并要求缩短,而不是静默放行。
- 真实 SIM 发送、国内机型上的发短信管控与省电策略:未验证。
- Android 15 起,SMS 权限对非应用商店安装的 App 默认被“受限设置”挡住:装好后要在“应用信息”里点“允许受限制的设置”才能授予
- 日历
- “Pixel 8 登录 Google 账号后同步到网页端”没有验证(测试机没有账号)。飞书 CalDAV 能否从手机写回也没有验证;如果实际只能单向,Agent 写进系统日历的日程在飞书里看不到。验证步骤在
plugins/samples/calendar/README.md。 - 国内机各家日历 App 对非自家写入的提醒是否照常发:未验证。
CUSTOM_APP_PACKAGE打标只是约定,不是安全边界;同步来回之后标记是否保留:未验证。- 账号日历里的删除会同步到云端,且本 App 不提供撤销。
- “Pixel 8 登录 Google 账号后同步到网页端”没有验证(测试机没有账号)。飞书 CalDAV 能否从手机写回也没有验证;如果实际只能单向,Agent 写进系统日历的日程在飞书里看不到。验证步骤在
- 闹钟
- 同时装了 Google 时钟和本 App 时,系统 Intent 会弹选择器,由你选;Agent 只通过本 App 设闹钟。
- 国内厂商的“自启动 / 后台活动 / 加锁”只有文字指引,没有按品牌的深链;国内机上的准时率未测。
skip_ui建的闹钟不会在响过之后自动删除。
- 待办:v1 不自带提醒;到期提醒由 Agent 经日历
reminder_minutes或闹钟编排。 - 中英文:
--live(真实模型)的自然语言用例没有跑,只跑了脚本化(假模型)。 - 安装:示例 APK 不预装;需要先装 AgentOS,再装示例,在插件页启用。第三方插件默认关闭。
升级
覆盖安装即可:同一发布证书下,插件身份(包名 + 签名摘要)不变,按设计保留用户策略、无需重新确认签名(设计见 docs/extensions.md 4.x,发布前的覆盖安装演练见检查清单,尚未在真机上做)。日历换存储层后,旧的本机日历与日程原样保留,已在模拟器上用旧版覆盖安装验证。
English
What is in this release
- Alarm: besides the existing MCP tools, a new read-only
alarm_system_next(the next alarm of any clock app on the phone); handles the standardSET_ALARM/DISMISS_ALARM/SNOOZE_ALARM/SHOW_ALARMSintents; a new "ring on time" check page (exact alarms, notifications, full-screen notifications, battery optimisation, with text guidance for Chinese OEM ROMs). - Calendar: the data layer is now the system calendar provider (
CalendarContract) next to the app's own device-only calendars. Calendars of a Google / CalDAV account are synced by the system; the app never touches a token. Without an account or permission the device-only calendars keep working. Tool names and required parameters are unchanged; fields were only added. A recurrence rule that cannot be expressed losslessly is returned ascustomand refused for rewriting. - Notes: "Ask AgentOS to schedule" now routes things with a clear done state to Todo, things that occupy time to Calendar, and wake-ups to Alarm, one entry per thing.
- Todo (new): status, priority, due date, tags, one level of subtasks; 8 MCP tools; no built-in reminders in v1.
- Messages (new): reads the system SMS store and sends through the system SMS service; it is not the default messaging app. 6 MCP tools; sending is high risk and asks every time; verification codes are masked by default.
- Chinese and English UI: the five sample apps and the AgentOS app (confirmations, authorizations, errors, first-run guide, settings, plugin management, authorized apps) are available in both languages; the default follows the system, and the system "App languages" setting works per app. For any other system language the Chinese default is shown.
- Gates and packaging:
tools/check-i18n.py(resource alignment, literal checks) runs in CI;tools/package-samples.pychecks certificate, version, permissions, debug code and plugin package, then writes the APKs and checksums.
Verified on
- Pixel 8 (real device, Android 15 / API 35): the alarm system intents (both chooser outcomes) and
alarm_system_next(returns the Google Clock alarm and says it is not this app's). For Messages only permissions were exercised and for Calendar only the no-account behaviour was checked; no SMS was sent and no real message or event was read on the real phone. - Emulators (API 35 / 36): self-tests of the five sample apps, scripted e2e (fake model), screenshots (4+ in each language per app).
- Chinese OEM devices: not tested.
Known limitations (please read first)
- Messages
- From Android 15, SMS permissions of an app not installed from an app store are blocked by "restricted settings" by default: after installing, open App info and choose "Allow restricted settings" before
READ_SMS/SEND_SMScan be granted. Measured: installing with adb or through the module is not restricted; side-loading through a file manager is. We do not work around it. - Without the permission (or while restricted) the app is in "compose only" mode: only
sms_composeworks (it opens the system messaging screen pre-filled; you press send yourself). - Not the default messaging app: no deleting, no marking as read, no drafts in the store, no MMS / group messages / SIM choice, and incoming messages do not trigger the agent.
- Message content goes into the chat history and to the model endpoint you configured. Reading messages (a stand-alone sample app) also asks for confirmation every time by default.
- Sending is asynchronous and only promises "submitted", not delivery; short numbers (e.g. 10086) are refused by default; there is a rate limit and duplicate suppression; Chinese text is about 70 characters per part and long messages are billed per part.
- Verification codes are masked by default (keyword plus 4–8 digits, Chinese and English templates), switchable in settings; only numeric codes are recognised.
- AgentOS's confirmation dialog may not show a very long or quote-heavy body in full: the tool then refuses and asks for a shorter text instead of silently letting it through.
- Real-SIM sending, OEM send controls and power-saving revocation on Chinese ROMs: not verified.
- From Android 15, SMS permissions of an app not installed from an app store are blocked by "restricted settings" by default: after installing, open App info and choose "Allow restricted settings" before
- Calendar
- Syncing to Google's web calendar after signing in on a Pixel 8 was not verified (the test phone had no account). Whether Feishu CalDAV writes back from the phone was not verified either; if it is one-way, events the agent writes are not visible in Feishu. The steps to verify are in
plugins/samples/calendar/README.md. - Whether Chinese OEM calendar apps fire reminders for events written by other apps: not verified.
CUSTOM_APP_PACKAGEmarking is a convention, not a security boundary; whether the mark survives a sync round trip: not verified.- Deleting an event in an account calendar syncs to the cloud, and the app offers no undo for it.
- Syncing to Google's web calendar after signing in on a Pixel 8 was not verified (the test phone had no account). Whether Feishu CalDAV writes back from the phone was not verified either; if it is one-way, events the agent writes are not visible in Feishu. The steps to verify are in
- Alarm
- With both Google Clock and this app installed, the system intents show a chooser and you pick; the agent only sets alarms through this app.
- OEM "auto-start / background activity / lock in recents" has text guidance only, no per-brand deep links; on-time rate on Chinese ROMs is untested.
- Alarms created with
skip_uiare not deleted automatically after they ring.
- Todo: no built-in reminders in v1; the agent arranges due-date reminders through a calendar event's
reminder_minutesor an alarm. - Chinese / English: the
--live(real model) natural-language cases were not run, only the scripted (fake model) ones. - Installing: the sample APKs are not pre-installed; install AgentOS first, then the samples, and enable them on the plugins page. Third-party plugins are off by default.
Upgrading
Install over the previous version. Under the same release certificate the plugin identity (package + signing digest) is unchanged, so by design user policy is kept and no signature re-confirmation is needed (design: docs/extensions.md; the over-the-top install drill is on the pre-release checklist and has not been done on the real phone yet). After the calendar storage change the old device-only calendars and events are kept; verified on an emulator by installing over the old build.