手机直接运行 Codex/OpenCode/Claude Code ,实时管理你的 AI Coding
最近发现一个有趣的开源项目 lunel 用户可以通过手机连接上电脑然后直接运行 Codex、OpenCode、Claude Code 重要的是免费和公网可用。它的核心技术原理其实是「手机作为纯 UI 客户端 」然后本地机器通过 WebSocket 网关实现中继连接然后电脑 CLI 通过服务和 AI 终端交互项目主要分三部分Expo React Native 开发的 Android 和 iOS App 支持 AI 面板Codex、Opencode 等支持 Git、终端模拟、文件浏览和编辑CLI 工具就是电脑上跑的lunel-cli负责所有真实操作文件读写、grep 搜索Git 命令终端PTY用 Rust 写的伪终端基于 wezterm 内核每帧只发送变化的字符网格cell grid 颜色进程管理、端口扫描、系统监控CPU/内存/磁盘中继服务器用 Bun 写的 WebSocket 网关公开部署在 gateway.lunel.dev / two.lunel.dev双通道架构control channel data channelQR 码配对机制另外目前有两种模式Lunel Connect连本地电脑支持公网Lunel CloudGitHub 登录后直接你开一个云 VM还没正式完成这里面一个核心之一是 “中继转发Relay” Lunel 包含了一个名为Proxy的 Bun 服务端作为移动端 App 和本地 CLI 之间的 WebSocket 桥梁App 只做 chat 和审逻辑和执行都在电脑的 Lunel CLI 。CLI 会调用一个 Rust 写的pty二进制文件pty是基于wezterm开发当你在手机 App 的终端或 AI 聊天输入内容时App 不会直接发送原始文本而是会封装为标准化的 Message 对象命名空间 (ns)区分消息用途如pty代表终端操作ai代表 AI 指令action具体的操作例如input或askpayload包含你输入的文字内容本地 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 终端还不一样例如对于 OpenCodeLunel CLI 不是直接运行外部命令而是利用 SDK 在本地进程做管理CLI 会调用opencode-ai/sdk中的createOpencodeServer在本地随机端口启动一个 OpenCode 服务器同时创建一个 API 客户端通过Authorization请求头与该本地服务器通信通过 SSE (Server-Sent Events) 循环监听 AI 返回的事件如server.heartbeat或session.updated并将其转发给手机端 App而对于 Codex 的调用方式是 JSON-RPC 它的交互相对复杂一些静默启动后台进程CLI 会通过spawn(codex, [app-server], ...)在后台启动一个codex进程这个进程对用户是不可见标准流通信它不使用网络端口而是直接通过进程的stdin标准输入和stdout标准输出进行对话两者之间通过JSON-RPC 2.0协议交换结构化数据例如 App 发送一个prompt指令CLI 会转化为turn/start的 JSON 请求发送给后台进程基于这个流程 Lunel CLI 可以在过程中精准识别和控制整个过程例如当 AI 尝试执行危险命令或修改敏感文件时CLI 可以捕获到requestApproval请求并暂停执行直到你在手机上点击“批准” 。Claude Code 也是采用类似方式它会启动一个codex app-server后台进程实现处理拦截在codex.ts的prompt方法可以通过参数指定model。另外 Lunel Cloud 模式还没完成它的目标看起来是在你需要的时候直接通过 GitHub OAuth 登录然后直接就可以在云端 VM 拉起一个服务然后运行预装了 Lunel 的 VM 这个看起来也挺有意思也可以期待下。这个项目的思路还是挺好的比如通过手机你就可以直接监控和管理你的 Codex 或者 Claude Code 当然 Claude Code 本身也支持 mobile 远程命令但是这个支持多个不同的 CLI 场景更灵活功能也更多目前还是免费重点是开源自己弄一套感觉比龙虾有意思多了。链接https://github.com/lunel-dev/lunel