一天一个开源项目

一天一个开源项目(第206篇):T3 Code - AI 编程 Agent 的统一控制台

T3 Code 是一个开源的 AI 编程 Agent 控制平面,让你用手机、浏览器或桌面应用统一控制 Claude Code、Codex、Cursor、Grok Build 等多个 Agent。无需转让订阅,每个线程独立 Git 分支,一键创建 PR。21.4k Stars,MIT 协议,由 T3 Stack 团队打造。

·约 11 分钟阅读·AI Engineering

引言

"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 和开发者之间建立了一个独立的控制层:

开发者设备(手机 / 浏览器 / 桌面应用)
    ↓ RPC over WebSocket / T3 Connect Relay
T3 Code 控制平面
    ↓ Driver + Adapter 协议
┌─────────────┬──────────┬──────────┬──────────┬──────────┐
│ Claude Code │  Codex   │ OpenCode │  Cursor  │   Grok   │
└─────────────┴──────────┴──────────┴──────────┴──────────┘
    ↑ 实际执行在本地机器,使用你自己的订阅

五个支持的 Agent(官方称为 "Harness"):

  • Claude Codeclaude auth login
  • Codex CLIcodex login
  • OpenCodeopencode auth
  • Cursorcursor-agent
  • Grok CLIgrok login

使用场景

  1. 手机远程监控代码任务

    • 让 Claude Code 在机器上跑一个长任务,用手机随时查看进度、批准工具调用,不用守在电脑旁边。
  2. 多 Agent 并行管理

    • 一个界面里切换不同的 Agent,每个线程(Thread)独立管理,互不干扰。
  3. 标准化 PR 工作流

    • Agent 跑完任务,一键从当前线程分支创建 PR,标题和描述自动从 commit 历史生成,遵循项目 AGENTS.md 中定义的规范。
  4. 团队代码 Review

    • 直接在 T3 Code 里 checkout 同事的分支,内联编辑 PR 描述和评论,支持 GitHub、GitLab、Bitbucket。
  5. 跨网络远程开发

    • 通过 T3 Connect Relay,从公司外网连接家里的开发机,不需要配置 VPN 或端口转发。

快速开始

零安装体验(需要 Node.js 22.16+):

npx t3@latest

桌面应用安装:

# macOS
brew install t3code
 
# Windows
winget install t3code
 
# Arch Linux
yay -S t3code   # 通过 AUR
 
# 或从 GitHub Releases 下载对应平台的安装包

配置 Agent:

启动后,在设置界面添加已安装的 Agent。每个 Agent 使用各自的登录命令完成授权:

# 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 的核心设计决策之一:

Thread #1 → branch: feature/add-auth-flow
Thread #2 → branch: fix/payment-bug
Thread #3 → branch: refactor/api-layer

线程和分支一一对应,Agent 的所有变更有明确的 Git 边界,不会互相污染。CheckpointReactor 负责管理工作区快照——出错可以直接回滚到上一个检查点。

2. 一键 PR 创建

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. 多平台原生体验

平台安装方式
macOSHomebrew / DMG
Windowswinget / 安装包
LinuxAUR / DEB / 独立二进制
iOSApp Store
AndroidGoogle Play
Web浏览器直接访问

项目详细剖析

Driver + Adapter 架构

T3 Code 用 Driver + Adapter 模式实现对多个 AI Agent 的统一控制:

// 每个 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 层或客户端代码。

三个队列化工作线程

控制层和执行层通过三个后台工作线程完全解耦:

客户端(手机/浏览器)
    ↓ orchestration.dispatchCommand()
命令队列

ProviderCommandReactor      ← 处理意图事件,向 Provider 发起实际调用

Provider(Claude Code / Codex / ...)
    ↓ 流式输出
ProviderRuntimeIngestion    ← 消费 Provider 流,转换为内部命令

CheckpointReactor           ← 管理工作区快照和回滚点

orchestration.subscribeThread()

客户端订阅(实时更新)

这个设计的关键:客户端永远不直接接触 Provider。所有操作通过 orchestration.dispatchCommand 发起,结果通过 orchestration.subscribeThread 订阅。网络抖动时客户端只需重连订阅,不影响服务端正在运行的任务。

连接运行时:RPC + 指数退避

连接运行时(Connection Runtime)处理多种目标类型:

目标类型说明
Primary直连本地服务器
BearerToken 认证连接
RelayT3 Connect 中继(跨网络)
SSHSSH 隧道连接

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 GlassCursor 的独立悬浮窗绑定单一 Agent
ConductorAgent 编排层闭源,无法 Fork
Codex desktopCodex 的桌面客户端绑定单一 Agent
T3 Code多 Agent 控制平面早期阶段,功能仍在迭代

T3 Code 的差异化在三点:多 Agent 支持、完全开源可 Fork、原生移动端。


项目地址与资源

官方资源

相关项目

  • T3 Stack — 同一团队打造的 Next.js 全栈技术栈
  • Claude Code — Anthropic 出品的 AI 编程工具,T3 Code 最完整支持的 Provider
  • OpenCode — 开源 AI 编程 Agent,T3 Code 内置支持

总结与展望

核心要点回顾

  1. 控制平面,不是 Agent:T3 Code 不替代 Claude Code 或 Codex,而是在它们之上加一层统一控制界面
  2. Bring Your Own Subscription:你的订阅、你的 quota,T3 Code 不碰,也不介入
  3. Driver + Adapter 分层:新增 Provider 只改一处,orchestration 层完全不动
  4. Branch-per-Thread:Agent 的每个会话对应一个 Git 分支,有边界、可回滚
  5. 远程访问是一等公民:T3 Connect Relay + 指数退避重连,从手机控制开发机是设计目标,不是附加功能

适用人群

  • 同时用多个 AI 编程工具的开发者:Claude Code + Codex 的用户,不想在多个终端/界面间切换
  • 想从移动设备监控长任务的工程师:跑一个大型 Agent 任务,走开后用手机查进度、批准操作
  • 重视代码审计的团队:所有 Agent 操作有完整轨迹,工具调用可逐一审批
  • 想 Fork 和定制 AI 工具的开发者:MIT 协议,完全开放,T3 团队明确欢迎 Fork

一句话评价

T3 Code 做的是 AI 编程时代的"云控台":你的 Agent 在本地跑,你在任何地方都能掌控它。


欢迎访问 PrimeSkills —— 一个精心策划的 AI Agent 与技能市场,所有内容均经过真实企业级工作流验证。没有噱头,只有真正有效的东西。

更多实用知识和有趣产品,欢迎访问我的个人主页