更新 T3 Code
你使用的应用,和运行智能体的服务器,可以在不同的机器上。当某台服务器落后于你的 Web 或桌面应用时,侧栏底部的更新按钮和 设置 → 环境 会提议更新它。
一次更新全部
侧栏底部的更新按钮一步更新每台已连接的机器。它先更新过时的提供方,然后更新落后的服务器,最后更新你正在使用的桌面应用。服务器会升到你的桌面应用正在安装的版本,或升到你的 Web 应用的版本。后台服务留在它当前的发布轨道上。远程桌面应用从它自己的轨道安装最新版本。把鼠标悬停在按钮上,可以看到它将更新什么。
运行时,按钮会变宽并显示进度。它会点出一台比平常更久的机器,并对失败的服务器提供 重试。点击它可以看到每台机器。每台服务器都开始自己的重启之后,桌面应用会在短暂倒计时后重启一次。选择 稍后 可以继续工作,准备好时再从更新按钮重启。仍在重启的服务器会自己完成,桌面应用重启之后按钮仍会显示它。
每台服务器在重启前都会检查自己能否安装该版本。如果某台服务器还拿不到这个版本,它的更新会失败,服务器继续运行,你可以重试。确认信息会列出跳过的每台机器和原因,例如离线或需要手动更新的机器。这些请用 设置 → 环境。
如果桌面应用以旧版本重新打开,T3 Code 会告诉你更新没有生效。它不会自行再次安装那个版本,即使另一台设备提出请求。在那台机器上用更新按钮重试。
确认信息会计入重启将打断的正在运行的对话线程,以及之后有多少可以恢复。见下面的 重启后继续对话线程。
在稳定版和每夜版之间切换
在桌面应用里更改 设置 → 关于 → 更新轨道。T3 Code 会显示它将移动的每台已连接机器,以及它将跳过的每台,然后一步完成移动。远程服务器在新轨道上安装最新版本。远程桌面应用在新轨道上重新安装。这个应用最后重新安装。你的对话线程、设置和数据都保留。
后台服务不能被远程移到更旧的版本。当稳定版比它的每夜版更旧时,在那台机器上运行 t3 update --channel stable --allow-downgrade。
如果某台机器的数据库已经有目标版本不支持的更改,或者 T3 Code 无法确认这一点,切换会被阻止。对话框会说明原因:它的版本旧到无法检查时,先在当前轨道上更新那台机器;或者等到目标轨道包含这些更改。运行桌面应用的 Mac 必须在那台 Mac 上切换。
即使切换没有完成,每台机器也会保留新轨道,但它只有通过一次切换才会真正移到该轨道。更新轨道 显示仍有多少机器运行另一条轨道。复查 会用新的检查打开同一个对话框。
更新之前
服务器更新会重启连接,并可能打断正在活动的智能体和终端命令。已保存的对话线程、设置和项目文件仍然保留。
设置 → 维护 → 重启后继续对话线程 默认开启。它会在更新、崩溃或机器重启之后恢复受支持的活动对话线程。更改会保存到支持这项设置的已连接环境;请先更新较旧的服务器。如果某个受支持的环境当时离线,或者值不一样,连接之后在设置里使用 应用到全部。T3 Code 必须在那台机器上再次启动;这项设置不会启用自动启动。终端命令仍可能被打断,没有保存提供方恢复状态的对话线程需要一条新消息。如果一条对话线程结束回合,是为了等待子智能体、后台任务,或智能体说它正在等待的命令或监视器,它会被唤醒,并被告知这项工作已停止。其他后台 shell 和监视器,例如开发服务器及其看门狗,不会唤醒它;对话线程会在你的下一条消息里得知它们。对话线程在等待你的批准、回答或密钥时,或者处于归档、推迟或已结束状态时,不会被恢复。连续三次自动恢复之后,对话线程会等待你的下一条消息。
来自先前编排系统的更新会保留对话记录,但无法把每一种运行时历史都带过来。继续一条重要的旧对话线程之前,请阅读来自较旧 T3 Code 版本的对话线程。
版本不一致时
客户端和服务器必须使用同一套编排协议。如果不是,连接会被拒绝,而不是半升级地运行:
- 比服务器新的应用会在连接前被拦住,并提示你更新通知里点名的那台机器上的 T3 Code。
- 比你的应用新的服务器会用一条更新消息拒绝连接。
更新通知点名的那一侧,然后重新连接。
更新一台已连接的服务器
提供的动作取决于服务器如何运行:
| 动作 | 做什么 |
|---|---|
| 更新服务器 | 安装并重新连接期间保持客户端打开。受支持的后台服务可以远程更新。对于桌面托管的服务器,这也会关闭并在主机上重新启动桌面应用。 |
| 更新桌面应用 | 更新运行服务器的那台机器上的桌面应用,需要时再重新打开它。 |
| 复制更新命令 | 在点名的主机上运行该命令,更新检测到的全局 npm 安装,然后用你平时的选项重启服务器。 |
| 复制重新启动命令 | 在主机上停止命令行服务器,并用复制的命令重新启动,保留你平时的子命令和选项。这不会更新已安装的 t3 命令。 |
在主机上运行:
t3 update <client-version>把 <client-version> 换成通知里显示的版本。该命令在重启后台服务之前会询问;如果你拒绝,准备好时再运行 t3 service restart。对于你手工启动的服务器,先停止它,之后用你平时的选项重新启动,例如 --host 或 --tailscale-serve。
由较旧版本安装的后台服务会拒绝 更新服务器,直到你在主机上更新它一次,并让那次更新重启它。如果你拒绝重启,服务在崩溃或重新开机之后可能一直停着,直到你运行 t3 service restart。
如果你用 npx 而不是已安装的 t3 运行服务器,主机上没有东西可更新:停止服务器,再用同样的子命令和选项以 npx t3@<client-version> 重新启动。
如果更新失败
保持客户端打开,直到它重新连接或报告失败。失败的服务更新可以回滚到上一个版本。如果更新仍然失败:
- 把提供的动作重试一次。
- 确认你更新的是服务器所在的机器,而不只是你正在使用的设备。
- 对于命令行服务器,停止它,并重新启动通知里显示的确切版本。
同一时间只能有一台服务器使用一个 T3 主目录。如果启动时报告另一个服务器拥有它,重试前先停止那台服务器,或者使用单独的主目录并与正在运行的服务器配对。
macOS 应用在 Alpha 更新之后没有重新打开
更新较旧的 T3 Code (Alpha) 安装,可能会把它替换成 T3 Code (Beta) 而不重新打开应用。从应用程序里打开 T3 Code (Beta),或者运行:
open "/Applications/T3 Code (Beta).app"如果旧的程序坞快捷方式不再打开应用,删掉它,再从应用程序里重新加入 Beta 应用。
如果桌面应用无法启动
如果桌面应用的服务器在启动时一直失败,T3 Code 会显示一个「T3 Code 无法启动」窗口,而不是应用本身。如果有更新的版本,选择 更新 来安装它。如果没有,窗口会链接到上次在你的电脑上成功启动的版本。下载并安装它以回到那个版本。用 复制详情 把错误放进缺陷报告。
软件源和代理
每台服务器通过它自己的 npm 检查 T3 Code 版本,以及用 npm 安装的提供方,因此这些检查使用 npm 配置的软件源、身份验证和代理设置。用 Homebrew 或 pnpm 安装的提供方通过那些工具检查。在服务器的机器上配置 npm。如果那个软件源无法到达,版本会显示为不可用;T3 Code 不会改试公共软件源。没有 npm 的机器直接检查公共 npm 软件源。
更新提供方
设置 → 提供方 显示所选环境的提供方更新。全部更新 一次更新每台已连接环境上每个过时的提供方。悬停可以看到它将更新哪些提供方。如果某个已启用且过时的实例只提供手动更新命令,或者它的实例使用不同的更新命令(例如两个实例运行不同的 CLI 安装),该提供方会被排除。这些请手工更新,或者把该提供方的每个实例都指向同一个 CLI。
提供方 CLI 更新成功之后,T3 Code 会用每个已启用实例自己的配置刷新该提供方的模型发现。已连接的客户端会自动收到刷新后的目录。必须启用提供方更新检查,才能下载最新的 T3 Code 模型目录。
提供方更新不会重启正在运行的聊天。已有会话可以继续使用先前的 CLI,直到它结束。如果发现失败,检查提供方状态并再次刷新。
移动端更新
要从手机更新一个环境,打开 设置 → 环境 并选择它。检查更新 会在该环境当前的发布轨道上查找最新版本。环境更新并重新连接期间,保持应用打开。无法远程更新的主机会改为显示在那台机器上更新的说明。
同一页可以刷新提供方状态并更新受支持的提供方。这些控件需要一个已连接的环境,以及操作它的权限。提供方更新检查和重启后续偏好在 设置 → 维护。如果提供方更新检查被禁用,刷新以查找更新版本之前先在那里启用它们。同一项设置也控制 T3 Code 是否下载模型目录更新,因此关掉它时,新模型可能要等你启用并刷新提供方状态之后才会出现。
App Store 或 Google Play 版本按平常方式安装。移动应用也可以在后台下载更新,并在你下次离开应用时应用它们。重启前它会保存草稿和已排队的消息。如果你长时间开着应用,它可能会要求立即安装;选择 稍后 会把更新留到下一个合适的时刻。