引言
"If we ever go the wrong direction, we want you to have everything you need to fork."
这是"一天一个开源项目"系列的第 206 篇文章。今天带你了解的项目是 T3 Code。
你的 AI 编程工作流大概是这样的:Claude Code 在终端里跑,Codex 开着另一个标签页,手边的手机完全插不上手。想从客厅的沙发上查看代码进度?打开笔记本,SSH 进服务器,再启动对应的 Agent......光是"看一眼"就要折腾五分钟。
T3 Code 解决的就是这个问题:给所有 AI 编程 Agent 提供一个统一的控制平面,手机、浏览器、桌面应用都可以作为控制界面,Agent 依然在你的机器上跑,你用的是自己的订阅,T3 Code 只负责"控制"这一件事。
21.4k Stars,MIT 协议,由打造了 T3 Stack 的 Ping 团队开发。
你将学到什么
- T3 Code 的 Driver + Adapter 架构设计
- 三个队列化工作线程如何解耦控制层和执行层
- Branch-per-thread 工作流和 PR 自动生成机制
- T3 Connect Relay 如何实现跨网络的远程访问
- 如何接入五种不同的 AI 编程 Agent
前置知识
- 用过至少一种 AI 编程工具(Claude Code、Cursor、Codex 等)
- 了解基本的 Git 工作流
- TypeScript 基础(能看懂接口定义)
项目背景
项目简介
T3 Code 定位自己为一个 "Agent 控制平面(control plane for coding agents)"。
这个定位很重要------它不是又一个 AI 编程工具,而是现有 AI 编程工具的控制层。你已经有了 Claude Code 订阅,已经配置好了 Codex,T3 Code 在这之上加了一层统一界面,让这些 Agent 可以从任何设备被控制。
官方列出了三个核心主张:
- Bring Your Own Subscription:不转售 API token,不设配额上限,用你自己的订阅
- 多平台控制:iOS、Android、Web、Electron 桌面,任意一个都是完整的控制界面
- 完全可 Fork:MIT 协议,代码完全开放,"如果我们走错了方向,你随时可以 fork 出去"
作者/团队介绍
- 团队 : Ping (pingdotgg) --- T3 Stack 的创建者
- T3 Stack: 由 Theo Browne 推广的 Next.js 全栈技术栈(tRPC + Prisma + Tailwind + NextAuth),是目前最受欢迎的 TypeScript 全栈方案之一
- 官网 : t3.codes
- 背景: 团队被 Codex desktop、Conductor、Cursor Glass 等工具启发,但认为这些工具都不够好,于是自己做了
项目数据
- ⭐ GitHub Stars: 21,400+
- 🍴 Forks: 5,200+
- 📄 License: MIT
- 💻 主要语言: TypeScript
- 🌐 官网: t3.codes
- 📦 安装:
npx t3@latest
主要功能
核心作用
T3 Code 在 AI 编程 Agent 和开发者之间建立了一个独立的控制层:
css
开发者设备(手机 / 浏览器 / 桌面应用)
↓ RPC over WebSocket / T3 Connect Relay
T3 Code 控制平面
↓ Driver + Adapter 协议
┌─────────────┬──────────┬──────────┬──────────┬──────────┐
│ Claude Code │ Codex │ OpenCode │ Cursor │ Grok │
└─────────────┴──────────┴──────────┴──────────┴──────────┘
↑ 实际执行在本地机器,使用你自己的订阅
五个支持的 Agent(官方称为 "Harness"):
- Claude Code ---
claude auth login - Codex CLI ---
codex login - OpenCode ---
opencode auth - Cursor ---
cursor-agent - Grok CLI ---
grok login
使用场景
-
手机远程监控代码任务
- 让 Claude Code 在机器上跑一个长任务,用手机随时查看进度、批准工具调用,不用守在电脑旁边。
-
多 Agent 并行管理
- 一个界面里切换不同的 Agent,每个线程(Thread)独立管理,互不干扰。
-
标准化 PR 工作流
- Agent 跑完任务,一键从当前线程分支创建 PR,标题和描述自动从 commit 历史生成,遵循项目
AGENTS.md中定义的规范。
- Agent 跑完任务,一键从当前线程分支创建 PR,标题和描述自动从 commit 历史生成,遵循项目
-
团队代码 Review
- 直接在 T3 Code 里 checkout 同事的分支,内联编辑 PR 描述和评论,支持 GitHub、GitLab、Bitbucket。
-
跨网络远程开发
- 通过 T3 Connect Relay,从公司外网连接家里的开发机,不需要配置 VPN 或端口转发。
快速开始
零安装体验(需要 Node.js 22.16+):
bash
npx t3@latest
桌面应用安装:
bash
# macOS
brew install t3code
# Windows
winget install t3code
# Arch Linux
yay -S t3code # 通过 AUR
# 或从 GitHub Releases 下载对应平台的安装包
配置 Agent:
启动后,在设置界面添加已安装的 Agent。每个 Agent 使用各自的登录命令完成授权:
bash
# Claude Code
claude auth login
# Codex
codex login
# OpenCode
opencode auth
# Grok
grok login
T3 Code 会检测到已认证的 Agent 并自动注册。
核心特性
1. Branch-per-Thread 工作流
每个对话线程(Thread)对应一个独立的 Git 分支,这是 T3 Code 的核心设计决策之一:
bash
Thread #1 → branch: feature/add-auth-flow
Thread #2 → branch: fix/payment-bug
Thread #3 → branch: refactor/api-layer
线程和分支一一对应,Agent 的所有变更有明确的 Git 边界,不会互相污染。CheckpointReactor 负责管理工作区快照------出错可以直接回滚到上一个检查点。
2. 一键 PR 创建
css
Agent 完成任务
↓
T3 Code 读取 commit 历史
↓
(如果有 AGENTS.md)遵循项目 PR 规范
↓
自动生成 PR 标题 + 描述 + Changelog
↓
支持:普通 PR / Draft PR / Stacked PR / Amended PR
支持 GitHub、GitLab、Bitbucket、Azure DevOps,且 Inline 编辑 PR 描述和评论(Azure DevOps 评论只读)。
3. 权限控制与工具调用审批
每次 Agent 执行工具调用(文件写入、命令执行等)前,T3 Code 提供审批界面。这对远程控制场景尤其重要------你可以在手机上看到 Agent 要做什么,决定是否允许,而不是让 Agent 在无监督状态下运行。
4. 远程访问(T3 Connect Relay)
通过内置的 T3 Connect Relay,实现跨网络连接:
- 手机 → T3 Connect Relay → 家里的开发机
- 不需要公网 IP,不需要端口转发
- 指数退避重连(上限 16 秒,稳定 30 秒后重置),断线自动重连
5. 多平台原生体验
| 平台 | 安装方式 |
|---|---|
| macOS | Homebrew / DMG |
| Windows | winget / 安装包 |
| Linux | AUR / DEB / 独立二进制 |
| iOS | App Store |
| Android | Google Play |
| Web | 浏览器直接访问 |
项目详细剖析
Driver + Adapter 架构
T3 Code 用 Driver + Adapter 模式实现对多个 AI Agent 的统一控制:
typescript
// 每个 Provider 需要实现的 Driver 接口
interface ProviderDriver {
driverKind: string; // "claude" | "codex" | "opencode" | ...
configSchema: ZodSchema; // 这个 Provider 需要哪些配置
create(config): ProviderAdapter; // 创建对应的 Adapter 实例
}
// Adapter 是和具体 Agent 通信的抽象层
// ClaudeDriver.ts → ClaudeAdapter.ts
// CodexDriver.ts → CodexAdapter.ts
// OpenCodeDriver.ts → OpenCodeAdapter.ts
// ...
两个注册表分离关注点:
- ProviderInstanceRegistry:管理已配置的 Provider 实例,按 ID 索引
- ProviderAdapterRegistry:将实例 ID 解析为活跃的 Adapter 对象
ProviderService 在两者之上,按线程而非 Provider 实例路由操作------调用方不需要知道当前线程使用的是哪个 Agent,统一通过线程 ID 交互。
新增一个 Provider 只需要写 Driver + Adapter,然后在 BUILT_IN_DRIVERS 中注册------不需要修改 orchestration 层或客户端代码。
三个队列化工作线程
控制层和执行层通过三个后台工作线程完全解耦:
scss
客户端(手机/浏览器)
↓ orchestration.dispatchCommand()
命令队列
↓
ProviderCommandReactor ← 处理意图事件,向 Provider 发起实际调用
↓
Provider(Claude Code / Codex / ...)
↓ 流式输出
ProviderRuntimeIngestion ← 消费 Provider 流,转换为内部命令
↓
CheckpointReactor ← 管理工作区快照和回滚点
↓
orchestration.subscribeThread()
↓
客户端订阅(实时更新)
这个设计的关键:客户端永远不直接接触 Provider 。所有操作通过 orchestration.dispatchCommand 发起,结果通过 orchestration.subscribeThread 订阅。网络抖动时客户端只需重连订阅,不影响服务端正在运行的任务。
连接运行时:RPC + 指数退避
连接运行时(Connection Runtime)处理多种目标类型:
| 目标类型 | 说明 |
|---|---|
| Primary | 直连本地服务器 |
| Bearer | Token 认证连接 |
| Relay | T3 Connect 中继(跨网络) |
| SSH | SSH 隧道连接 |
RPC Session 建立流程:preparing → opening → synchronizing。Session 不自带重试------重试逻辑完全在 Supervisor 层:
- 离线:释放当前 Session,等待,不消耗重试次数
- 瞬时错误:指数退避,上限 16 秒
- 稳定 30 秒:重置累积退避
- 认证/配置错误:阻塞等待外部输入变化
OpenCode 的特殊处理
五个 Provider 中,OpenCode 的基础设施最复杂:
- 每个实例维护一个懒加载本地服务器,最后一个借用方释放后 30 秒自动关闭
- 每次连接都需要通过认证的
/global/health检查(版本要求 ≥ 1.14.19) - 每个线程维护一个独立的服务器实例,避免共享目录时的 MCP 连接冲突
- T3 Code 不管理外部 OpenCode 进程------"原生配置变更可能需要在外部重新加载"
这种"更复杂的 Provider 需要更复杂的 Adapter"的模式,正是 Driver + Adapter 分层的价值所在。
与 Cursor Glass / Conductor 的定位差异
T3 Code 的 README 提到团队被 Codex desktop、Conductor、Cursor Glass 启发,但这些工具都不满足他们的标准:
| 工具 | 定位 | 局限 |
|---|---|---|
| Cursor Glass | Cursor 的独立悬浮窗 | 绑定单一 Agent |
| Conductor | Agent 编排层 | 闭源,无法 Fork |
| Codex desktop | Codex 的桌面客户端 | 绑定单一 Agent |
| T3 Code | 多 Agent 控制平面 | 早期阶段,功能仍在迭代 |
T3 Code 的差异化在三点:多 Agent 支持、完全开源可 Fork、原生移动端。
项目地址与资源
官方资源
- 🌟 GitHub : github.com/pingdotgg/t...
- 📚 官网 : t3.codes
- 📱 iOS: App Store 搜索 T3 Code
- 🤖 Android: Google Play 搜索 T3 Code
- 📦 一键安装 :
npx t3@latest
相关项目
- T3 Stack --- 同一团队打造的 Next.js 全栈技术栈
- Claude Code --- Anthropic 出品的 AI 编程工具,T3 Code 最完整支持的 Provider
- OpenCode --- 开源 AI 编程 Agent,T3 Code 内置支持
总结与展望
核心要点回顾
- 控制平面,不是 Agent:T3 Code 不替代 Claude Code 或 Codex,而是在它们之上加一层统一控制界面
- Bring Your Own Subscription:你的订阅、你的 quota,T3 Code 不碰,也不介入
- Driver + Adapter 分层:新增 Provider 只改一处,orchestration 层完全不动
- Branch-per-Thread:Agent 的每个会话对应一个 Git 分支,有边界、可回滚
- 远程访问是一等公民:T3 Connect Relay + 指数退避重连,从手机控制开发机是设计目标,不是附加功能
适用人群
- 同时用多个 AI 编程工具的开发者:Claude Code + Codex 的用户,不想在多个终端/界面间切换
- 想从移动设备监控长任务的工程师:跑一个大型 Agent 任务,走开后用手机查进度、批准操作
- 重视代码审计的团队:所有 Agent 操作有完整轨迹,工具调用可逐一审批
- 想 Fork 和定制 AI 工具的开发者:MIT 协议,完全开放,T3 团队明确欢迎 Fork
一句话评价
T3 Code 做的是 AI 编程时代的"云控台":你的 Agent 在本地跑,你在任何地方都能掌控它。
欢迎访问 PrimeSkills ------ 一个精心策划的 AI Agent 与技能市场,所有内容均经过真实企业级工作流验证。没有噱头,只有真正有效的东西。
更多实用知识和有趣产品,欢迎访问我的个人主页