2024年顶级AI编程工具测评:手机运行Codex实战指南

2026-05-28阅读 0热度 0
Claude

最近发现一个挺有意思的开源项目,叫 Lunel。简单来说,它能让你用手机连上电脑,然后直接在手机上运行 Codex、OpenCode、Claude Code 这类 AI 编程工具。最关键的是,它目前免费,而且支持公网访问。

手机直接运行 Codex/OpenCode/Claude Code ,实时管理你的 AI Coding

这个项目的核心思路其实很清晰:把手机当作一个纯粹的 UI 客户端。真正的计算和操作,都发生在你的本地电脑上。为了实现手机和电脑之间的远程连接,它引入了一个 WebSocket 网关作为中继。整个架构主要分为三块:

  • 移动端 App:基于 Expo + React Native 开发,支持 Android 和 iOS。

    • 功能上,它集成了 AI 面板(如 Codex、OpenCode 等)。
    • 同时,也支持基础的 Git 操作、终端模拟器以及文件浏览和编辑。

  • 本地 CLI 工具:也就是在你电脑上运行的 lunel-cli,所有“脏活累活”都由它负责。

    • 包括文件的读写、grep 搜索。
    • 执行 Git 命令。
    • 运行终端(PTY)。这里用 Rust 写了一个伪终端,基于 wezterm 内核,为了节省流量,它每帧只发送屏幕上发生变化的字符网格(cell grid)和颜色信息。
    • 此外,还负责进程管理、端口扫描和系统监控(CPU/内存/磁盘)。

  • 中继服务器:一个用 Bun 写的 WebSocket 网关,目前公开部署在 gateway.lunel.dev 和 two.lunel.dev。

    • 采用双通道架构(控制通道 + 数据通道)。
    • 使用二维码(QR 码)进行设备配对,流程比较直观。

目前,Lunel 提供了两种使用模式:

  • Lunel Connect:连接到你本地的电脑,并且支持通过公网访问。
  • Lunel Cloud:通过 GitHub 登录后,直接为你开启一个云虚拟机(VM)。这个模式目前还在开发中,尚未正式完成。

整个系统的关键之一在于“中继转发(Relay)”。Lunel 包含了一个名为 Proxy 的 Bun 服务端,它充当了移动端 App 和本地 CLI 之间的 WebSocket 桥梁。这样一来,App 只负责聊天界面和审批操作,而所有的业务逻辑和命令执行,都交给了电脑上的 Lunel CLI。

具体到执行层面,CLI 会调用一个用 Rust 写的 pty 二进制文件(基于 wezterm 开发)。当你在手机 App 的终端或 AI 聊天框里输入内容时,App 并不会直接发送原始文本,而是会将其封装成一个标准化的 Message 对象,包含:

  • 命名空间 (ns):用来区分消息的用途,比如 pty 代表终端操作,ai 代表 AI 指令。
  • action:具体的操作类型,例如 input(输入)或 ask(询问)。
  • payload:里面装着你输入的实际文字内容。

本地 CLI 收到这个消息后,会根据 ns 字段,将输入分发给不同的执行器去处理。

普通终端输入 (PTY 模式)

如果 ns 是终端相关的,CLI 就会把 payload 里的字符,通过标准输入(stdin)写入到 Rust PTY 进程中。这个过程,就跟你坐在电脑前敲键盘一模一样,本地的 Bash 或 Zsh 会接收到这些字符并执行。

AI 指令输入 (Claude Code / OpenCode)

如果输入来自 AI 面板,CLI 则会转交给对应的 AI 袋里模块(比如 cli/src/ai/opencode.ts)来处理。这个过程通常分几步:

  • 上下文搜集:CLI 会自动收集当前的上下文信息,比如文件结构、终端最后几行的输出内容等。
  • API 调用:CLI 使用你预先配置好的 API Key(例如 Anthropic 或 OpenAI 的),将“用户输入 + 系统上下文”打包发送给对应的 AI 模型。
  • 工具调用:如果 AI 返回的指令里包含了“修改文件”或“运行命令”这样的操作,CLI 的 AI 模块会解析这些指令,并调用本地的文件系统接口或 PTY 接口去真实地执行它。

值得注意的是,对于不同的 AI 终端,Lunel CLI 的调用方式也有所不同。

以 OpenCode 为例,CLI 并非直接运行外部命令,而是利用其 SDK 在本地进程中进行管理:

  • CLI 会调用 @opencode-ai/sdk 中的 createOpencodeServer 函数,在本地一个随机端口上启动一个 OpenCode 服务器。
  • 同时,它会创建一个 API 客户端,通过 Authorization 请求头与这个本地服务器通信。
  • 通信方式上,它通过 SSE(Server-Sent Events)循环监听 AI 返回的事件(比如 server.heartbeatsession.updated),并将其转发给手机端的 App。

而对于 Codex,交互方式则换成了 JSON-RPC,相对复杂一些:

  • 静默启动后台进程:CLI 会通过 spawn(“codex”, [“app-server”], …) 的方式,在后台启动一个 codex 进程,这个进程对用户是不可见的。
  • 标准流通信:它不依赖网络端口,而是直接通过进程的标准输入(stdin)和标准输出(stdout)进行对话。
  • JSON-RPC 2.0 协议:两者之间通过 JSON-RPC 2.0 协议交换结构化的数据。例如,App 发送一个 prompt 指令,CLI 会将其转化为 turn/start 这样的 JSON 请求发送给后台进程。

正是基于这样精细的流程控制,Lunel CLI 能够在整个过程中进行精准的识别和干预。比如,当 AI 试图执行一个危险命令或修改敏感文件时,CLI 可以捕获到 requestApproval 请求,然后暂停执行,直到你在手机上点击“批准”按钮才会继续。这相当于增加了一层安全护栏。

另外,前面提到的 Lunel Cloud 模式虽然还没完工,但目标很明确:在你需要的时候,直接通过 GitHub OAuth 登录,系统就会在云端为你拉起一个预装了 Lunel 的虚拟机(VM)。这个想法听起来也挺有意思,值得保持关注。

总体来看,这个项目的思路确实不错。它让你能通过手机这个最随身设备,来直接监控和管理 Codex 或 Claude Code 等工具。当然,像 Claude Code 本身也支持移动端远程命令,但 Lunel 的优势在于它能统一支持多个不同的 CLI 场景,更加灵活,功能也更集中。目前它还是免费开源的,自己折腾一套下来,感觉比用一些现成的封闭方案更有趣,也更有掌控感。

链接

github.com/lunel-dev/l…

免责声明

本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。

相关阅读

更多
欢迎回来 登录或注册后,可保存提示词和历史记录
登录后可同步收藏、历史记录和常用模板
注册即表示同意服务条款与隐私政策