【分享】MT Agent 1.0.8 —— 我把一套 AI 工程环境塞进了 iPhone

最近一直在折腾一个项目,做到现在感觉已经可以拿出来和大家正式交流一下了。

项目叫 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

的朋友,也欢迎一起交流。

很多东西确实都是一边真机踩坑,一边慢慢磨出来的。:joy: