最近一直在折腾一个项目,做到现在感觉已经可以拿出来和大家正式交流一下了。
项目叫 MT Agent(MT 智能体)。
最开始的想法其实很简单:
既然现在 AI Agent 已经可以自己看代码、改代码、跑命令、调用工具,那能不能不依赖电脑,直接在 iPhone 上做一套真正能干活的 AI 工程环境?
做到现在的 1.0.8 (25),它已经不太像一个普通的 AI 聊天客户端了。
我现在更愿意把它定义成:
运行在 iPhone 上的 AI 工程执行环境 / AI 工程工作站。
项目下载
Release / 下载:
当前版本:
MT Agent 1.0.8 (25)
主要面向:
- TrollStore
- TrollStore Lite
- RootHide
- Dopamine
- Relaxin
- Rootless / Rootful
- iOS 15+
整体架构
目前大概是这样:
MT Agent
│
├── AI Agent
│ ├── Codex App Server
│ ├── Exec Fallback
│ ├── Subagents
│ ├── Skills
│ ├── Plugins
│ └── MCP
│
├── Persistent Project Memory
│ ├── Global Memory
│ ├── Workspace Memory
│ ├── Conversation Session
│ ├── State
│ └── Turn Checkpoints
│
├── Runtime Hub
│ ├── Codex Runtime
│ ├── CoreTools
│ ├── BuildTools
│ ├── Node.js
│ ├── Python
│ ├── Theos
│ ├── OLLVM
│ └── ReverseTools
│
├── Static Reverse
│ ├── radare2
│ ├── rabin2
│ ├── rasm2
│ ├── mt-macho
│ └── mt-rev
│
└── MT MCP Dynamic Debug
├── 进程附加
├── 内存搜索
├── 内存读写
├── 数据断点
├── 代码断点
├── 寄存器
├── 调用栈
├── 反汇编
└── 补丁验证
目标是最终形成:
理解项目
↓
搜索 / 修改代码
↓
编译
↓
静态分析
↓
真机动态调试
↓
验证
↓
继续修改
这一整套流程尽可能直接在 iPhone 上完成。
1. Runtime Hub
我没有把所有开发工具全部硬塞进 App。
现在采用的是独立 Runtime 架构。
目前主要包括:
| Runtime | 主要能力 |
|---|---|
| Codex Runtime | Agent 核心执行环境 |
| CoreTools | Git / rg / curl / jq 等 |
| BuildTools | CMake / Ninja |
| Node.js | Node / npm / npx / node-gyp |
| Python | Python 脚本与工具链 |
| Theos | iOS 编译、链接、签名、DEB |
| OLLVM | 编译混淆 |
| ReverseTools | radare2 / Mach-O 分析工具 |
Runtime 可以:
- 独立下载安装
- 独立更新
- SHA256 校验
- 安全解压
- 签名
- 安装后真实 Probe
- 失败回滚
- 覆盖安装后自动恢复
所以 App 本体不需要越来越臃肿。
2. Capability Registry
这个是我现在比较喜欢的一套设计。
不是:
Node 安装了
=
Node 所有能力都可以用
而是会继续判断:
installed
↓
dependency
↓
version
↓
environment
↓
policy
↓
probe
↓
ready / blocked
例如:
Node Runtime
├── JavaScript ✓
├── npm ✓
├── child_process ✓
├── N-API ✓
└── native addon build → 还需要 Theos
BuildTools 也是一样:
BuildTools
├── CMake ✓
├── Ninja ✓
└── iOS Build → 依赖 Theos SDK / clang / linker
也就是说 AI 不只是知道:
“我装了什么。”
还要知道:
“我现在到底能不能用这个能力。”
3. 手机上的开发环境
目前已经可以直接使用:
Git
ripgrep
sed
find
curl
jq
ldid
dpkg-deb
Node.js 18.20.4
npm / npx 10.7.0
node-gyp 10.1.0
Python
CMake 3.27.9
Ninja 1.11.1
Theos
clang / LLVM
iPhoneOS SDK
OLLVM
所以 Agent 可以自己:
读取项目
→ 搜索代码
→ 修改源码
→ Git diff
→ 调用构建工具
→ 编译
→ 签名
→ 打包
→ 查看结果
不是简单套一个 shell。
4. iOS 逆向能力
这也是 MT Agent 比较重点的一块。
ReverseTools 目前包含:
radare2
rabin2
rasm2
mt-macho
mt-rev
mt-inject-dylib
nm
ldid
可以直接分析 Mach-O。
对于比较大的二进制,我还专门做了 r2 内存保护。
因为手机不像电脑,直接让 radare2 对一个很大的 App 全量分析,很容易吃掉大量内存甚至导致整个 App 被 Jetsam。
所以现在会根据设备内存动态控制分析预算。
超过压力阈值后会:
保存已有分析结果
↓
主动停止 r2
↓
返回 memory_limited
↓
UI 显示“分析已安全停止”
而不是直接把整个 MT Agent 干崩。
5. MT MCP 动态调试
MT Agent 还可以直接连接 MT 内存工具。
目前 MCP 已经可以提供类似:
进程列表
进程附加
内存搜索
内存读取
内存修改
模块信息
数据断点
代码断点
寄存器
调用栈
反汇编
运行时地址
静态地址换算
Patch 验证
所以 AI 不只是告诉你:
“这里可能需要下断点看看。”
而是可以真正通过工具:
找到函数
↓
附加目标进程
↓
下断点
↓
读取寄存器
↓
查看调用栈
↓
反汇编
↓
继续分析
这样就可以形成:
静态分析 + 真机动态验证
的闭环。
6. Persistent Project Memory
1.0.8 最近又加入了一套比较完整的项目长期记忆。
以前 Agent 最大的问题之一就是:
一个项目聊了很久,过几天重新进去,很多上下文已经断掉了。
所以现在做成了:
Memory
│
├── global/
│ └── durable/
│
└── workspaces/<Workspace UUID>/
├── state.json
├── durable/
│
└── sessions/<Conversation ID>/
├── session.json
├── state.json
└── checkpoints.json
每个新对话第一次发送时:
bootstrap
↓
保存 initial_user_input
之后每个真实任务结束:
turn.completed
↓
宿主自动 checkpoint
不依赖 AI 自己主动决定:
“这一轮我要不要记住。”
Checkpoint 会保存类似:
当前任务
结果
findings
decisions
tests
remaining issues
next actions
所以一个项目放几天以后重新进来,即使只说一句:
继续
Agent 也可以根据:
Conversation State
+
Workspace Checkpoints
+
Persistent Memory
恢复之前的工程状态。
7. Memory 强隔离
这个我比较在意。
不同项目的记忆不能乱串。
目前规则是:
Global Memory
→ 可以跨项目
Workspace Memory
→ 只能当前 Workspace UUID
Conversation State
→ 当前 Workspace + Conversation ID
比如:
Workspace A
MT 内存工具
Workspace B
另外一个 App
A 项目的断点、文件、架构决定,不应该因为“相关”就被带到 B 项目。
所以 Workspace ID 是强隔离边界。
8. 多 Agent
现在支持主代理 + 子代理。
例如主 Agent 可以把任务拆成:
主 Agent
│
├── 子 Agent A
│ └── 查代码
│
├── 子 Agent B
│ └── 查 Runtime / API
│
└── 子 Agent C
└── 分析日志
然后主 Agent 最后负责收束。
不同供应商、模型、工具能力也在逐渐统一到一套 Agent Runtime 里面。
9. TrollStore / 越狱环境
iOS 这一块最大的麻烦不是“能不能运行 shell”。
而是不同环境差异非常大:
Pure TrollStore
TrollStore Lite
Rootful
Rootless
RootHide
Dopamine
Relaxin
尤其是:
- HOME
- root persona
- spawn
- PATH
- dylib
- rootfs
- signing
- Theos scheme
- App container
- Runtime 持久化
都不完全一样。
现在 MT Agent 会自动识别环境,比如:
kind=jailbreak
brand=Relaxin
family=ElleKit / RootHide
root=roothide
然后由 Runtime/Capability 层决定到底开放什么能力。
10. UI 也不是终端套壳
虽然底层已经有不少 CLI/Runtime,但上层还是原生 iOS UI。
目前包括:
- 原生聊天
- Workspace
- 会话侧栏
- Markdown
- 工具调用卡片
- 思考卡片
- 子代理状态
- TODO / Plan
- 模型切换
- Provider 管理
- Runtime 管理
- Skills / Plugins / MCP
- 用量与费用统计
- 智能记忆存储统计
- 深色 / 浅色主题
- 运行诊断
我还是希望普通用户打开以后看到的是一个正常 App,而不是满屏终端。
现在对 MT Agent 的定位
最开始可以说它是:
iOS 上的 Codex 客户端。
但现在已经不太准确了。
因为 Codex 只是 Agent Core 的一部分。
现在真正想做的是:
让 iPhone 自己拥有一套 AI 能理解、能调用、能执行、能记忆的工程环境。
也就是说 Agent 不只是会聊天。
它应该真正知道:
我现在在哪个 Workspace
这个项目以前做过什么
当前有哪些 Runtime
哪些 Capability 可用
有哪些 Skills / Plugins / MCP
怎么编译
怎么分析
怎么真机验证
然后自己把事情做下去。
下载
Release:https://github.com/susu123oss/MT-Agent
当前版本:
MT Agent 1.0.8 (25)
项目还在持续开发。
最近已经开始从“疯狂加功能”逐渐转向:
- 稳定性
- iOS 版本兼容
- Runtime 自动化
- Agent 能力发现
- Persistent Memory
- UI 流畅度
- 长期工程维护
如果论坛里有做:
TrollStore
RootHide
Dopamine
Theos
iOS 逆向
LLDB
radare2
MCP
AI Agent
的朋友,也欢迎一起交流。
很多东西确实都是一边真机踩坑,一边慢慢磨出来的。![]()