分享下最近为自己内置 Tailscale 的 iOS App 增加的 Remote Codex 功能

9 小时 0 分钟前
 fortitudeZDY

简版

最近给 NovaScale 这个内置 Tailscale 的 iOS App 添加了 Remote Codex 功能并顺利发布, 除了 Remote Codex 这个实验性新功能, 它还支持直接访问 Tailscale 内网中的 SSH 主机、内置浏览器访问内网网页、Linux&MacOS/Docker 监控管理之类的功能(免费用户可能会有配额限制)

由于新增的 Remote Codex 个人感觉还有点意思, 它只需要你有电脑上有 Tailscale 即可(在 Subnet Router 后应该也可以), 那它就能利用 Codex cli 的一个原生功能, 借助 NovaScale 实现 Remote Codex, 不需要第三方中转, 安全性也不错, 毕竟 Tailscale 的 WireGuard 还是比较靠谱的

本身单台 Codex Host 也是免费没有什么限制, 而上次在论坛里更新, 已经是 5 个月前的事情了(见附 1 链接, 可了解关于这个 App 的介绍)...

靠, 写到后面发现有点长了, 现在大家可能没有耐心看长文了, 我就把重要的内容先放这里, 其他的如果朋友们想看可以看下面的原贴

App 国区外区都可下载, 应小红书一些用户的要求, 针对国区也做了一个 618/端午 65 折限时优惠 的活动, 原来198LifeTime 专业版, 国区现在128就可以拿下, 由于本次分享的功能也是免费功能, 且 App 基础功能可能很多用户也够用了, 就不再额外送码了

原版

说起来有点尴尬, 在想到这个点子的时候, 其实已经有传言说 OpenAI 会发布 Remote Codex 功能, 果不其然, 在我还在用 codex 来修 App 里这个新增的 Remote Codex 的问题时, 它已经发布了, 但似乎有那么一丢丢的问题, 并且形式嘛, 还是放在了 ChatGPT App 里, 大概现在大家都知道要新提一个 App 得多慢

但既然做了这个功能,而且自我感觉还有点新意, 简单说下核心原理, 如果有人感兴趣, 也可以了解一下, 算是在推广自己创造之外, 还分享点自己的一些了解

codex-cli 有一个 app server, 实际上 chatgpt 远程 codex 的能力应该也是围绕这个 app server 构建的, 这个 app server 可以内嵌在 codex cli 或 codex 桌面客户端里, 它被设计为就是一个被集成的 codex 会话/线程(thread)以及回合(turn)管理核心

大概是 4/5 月份当时偶然间在 X 上看到有人讨论这么个东西, 去了解一下, 发现它还支持以 websocket server 方式监听在非 loopback 接口(当时甚至还不需要 websocket token 认证), 以 JSONRPC 方式实现对于 thread/turn 的处理, 从 schema 上来看, 还是挺完备的

由于监听在非 loopback 接口, 而我的所有设备基本上都有 tailscale, 而 NovaScale(当时还叫 NovaAccess)刚好又内置了 Tailscale 协议栈, 我也一直觉得在手机终端里搞 codex 感觉不太理想, 而我那里已经弃坑 anthropic, 所有工作都在用 Codex 推进, 且 Codex cli 是也是开源的, 因此我就觉得何不直接在 App 对接 Codex, 于是直接 codex app-server 加上 WebSocket 参数监听在 Tailscale 地址上, 就放在一个没关的终端上, 手机直接在 App 通过内置的 Tailscale 协议栈连接它就行

关于上面的原理性的内容, 有兴趣可以看附 2 链接, 由于中文是从英文 AI 翻译过来, 可能不完全准确, 仅供参考

经过差不多 1 个多月的开发与验证, codex cli 也从当时的 0.12x 到了发布时的 0.139(今天好像又到了 0.141), 从不需要 websocket token 认证到必需 websocket token 认证(指的是本地 app server 监听的 websocket), 我也专门写了个部署脚本, 把 codex appserver 包装成了一个 macOS/Linux 上的服务, 如果你在 NovaScale 中设置了 SSH 密钥,它甚至可以直接帮你远程部署并添加

目前这个 Remote Codex 功能已经能够实现继续 codex cli&codex 桌面 App 的线程、创建新线程、上传文件图片(它这个 websocket 接口的确能做, 虽然因为是一个 textframe 协议,性能一般, 小文件问题不大)、App 内通知和有限系统通知(Remote Push 这个有几个方案待选, 所以暂时还没有实现)、基至还能查询 5h/weekly 限额...

目前有时候下午出去接孩子的时候,已经习惯在手机上用它帮我调研点东西; 回到办公室后就可以继续开干了

还有一个有意思的一点, 如果是专业版, 开启了 iCloud 同步的话, 多个手机上的应用都可以访问这些 codex 主机; 虽然这个 App 没有桌面端, 但对某些功能我简单做了适配, 那么, 如果你有多台 Codex 主机, 你甚至可以利用这个 App(Apple 芯片安装 iPad 版本)实现对其他主机上的 Codex 会话进行处理

关于 AI 的一些感想

NovaScale 的 Remote Codex 功能以及 1.5.0 版本基本上全部都是 Codex 开发, 我的主要工作是进行验收和测试, 由于第一次做 chat interface, 发现经常性的会出现加了一个功能就坏了另外一个, 以及因为 streaming markdown 似乎 SwiftUI 有点吃力, 我需要 UIKit 重写, 看着 Apple Notes 上记录的 1.5.0 版本的长长功能点以及问题及修复引入的问题, 可能这就是 Agentic Coding 的一个痛点, 但如果不让我用 Agentic Coding, 1.5.0 新增的各种功能, 我绝对没有信心在 1 个月内完成

最近因为要给我另外一个 xEdge(针对国内 Tailscale 用户做的一个 Tailscale 平台)增加 Peer Relay 功能, 因此需要对 1 年多未更新的基于 Tauri 编写的定制 Tailscale 客户端, 在我之前已经完成对 Tailscale 内核升级的基础上, Codex 花了 2 天的时间, 帮我把 UI 重写了, 并把 Windows 的安装包从 WIX 又切回了 NSIS 以满足我在 Linux 上构建 Windows 安装包的需求, 这个效率, 让我觉得 100$的 Codex 订阅, 可能是我买过的订阅中最值得一个数字产品, 更不要说现在还存了 2 个 reset 额度

作为一名老程序员, 见证过通信行业的兴衰, 也参与了云计算了的热潮, 到如今算是了了自己一直以来的想做一些自己的产品的愿望, 看到 Agentic Coding 这样的能力, 心里有些五味杂陈

之前把微信的签名改为了 这是一个最好的时代, 也是一个最坏的时代, 多少一些应景, 每个人可能都会有自己的感想, 我就不再展开了

特别说明, 本文全部手打, 无任何 AI 参与, 顺便测测 EpoMaker Split65 这个垃圾分体键盘换掉垃圾轴体后的码字效果

附:

  1. 5 个月前的 NovaScale 分享(那时还叫 NovaAccess, 1.5.0 为了更好的对应 Tailscale 把 App 改成了 NovaScale)

https://www.v2ex.com/t/1187359

  1. 远程 Codex 的技术介绍

https://galaxnet.dev/zh-hans/nova/articles/remote-codex-in-novascale/

293 次点击
所在节点    分享创造
1 条回复
reidme
37 分钟前
不错!迎端午,送一波码吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1221446

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX