T3 Code 非官方中文翻译不是官方产品,也不是 T3 Tools 官方文档。源提交 d2c25950b4d9英文原文GitHub 源文件
Skip to content

设置与项目覆盖 ​

在 Web 和桌面端,设置页面顶部的「正在为…应用设置」这句话,用来选定一项更改所作用的项目(project)和环境(environment)。只存放设备偏好的页面(例如外观)不会显示这句话。它们从所有项目和所有环境开始,并在你切换分类或搜索某项设置时保持选中。

保存在本设备上的偏好(例如外观、确认提示和浏览器配置文件)始终显示,并忽略当前选择。其余内容都存储在服务器上。选择一个环境即可编辑它的设置;保持所有环境,则可一次性编辑每一个已连接的环境。离线环境保留各自的当前值。这是批量编辑,不会同步成一份全局默认值。

选择一个项目,即可在所选环境上为它覆盖设置。每个服务器设置行的标题旁有一个分层图标,用来表明该值的来源:内置默认值、环境,或项目覆盖。点击它,即可在每一个所选环境上查看这条来源链。覆盖可以重置,之后重新继承。项目无法覆盖的设置,在选中项目期间显示为只读。

所选环境不一致时,控件会以混合代替具体值,分层图标变为琥珀色。选定一个值后,它会应用到每一个所选环境。

更改环境的值,不会改动项目自己的覆盖。有项目覆盖了你正在编辑的设置时,分层图标会统计它们的数量,来源链会列出每一个项目及其值:点击某个项目即可跳转过去,也可以选择全部重置,让这些项目重新跟随环境。

提供方(provider)和诊断按机器区分:它们一次只显示一个环境,在你另选之前一直是主环境。其余每一项设置都会作用到当前所选的范围。

选中某个项目后,设置 → 提供方里某个提供方的开关只对该项目生效,开与关两个方向都可以:机器上关闭的提供方可以在某一个项目里使用,在各处都开启的提供方也可以被排除在另一个项目之外。该项目的模型选择器跟随这个开关。在该项目中,不能再于已关闭的提供方上开始新的回合(turn),已经排队的消息和委派任务的后续消息也一样。开关切换时已经在运行的回合会执行完毕。委派任务的结果仍会进入它的父对话线程(thread),父线程在下一个回合看到这份结果。重置会让该项目回到机器上的设置。提供方的其他设置仍然按机器区分。

在移动端,打开设置,用页眉中的筛选器选择已连接的环境和一个项目。该筛选器在服务器设置页面中仍然可用。选中所有项目时,服务器设置页面(例如对话线程、源代码管理和工作树(worktree))编辑的是所选环境的默认值。选择一个项目,则编辑它在所选环境上的覆盖。在某个页面中使用使用默认值,即可移除该页面的项目覆盖。打开设置 → 项目,可以在所选的已连接检出上重命名该项目,并查看这些检出位于何处。属于整个环境的设置,在选中项目时保持只读。所选目标不一致时,控件会显示混合,直到你选定一个值。外观、键盘以及其他仅限手机的设置会忽略该筛选器。

固定与归档项目 ​

已固定的项目(project)在各个项目选择器中排在最前:新建对话线程(thread)上的项目选择器、新建对话线程列表、命令面板、侧边栏的项目筛选,以及移动端。在简洁侧边栏(Boring sidebar)中,已固定的项目会占据最上方的文件夹,即使没有任何活动对话线程也是如此。可以在这些列表的任意一行上固定或取消固定项目,也可以在高亮行上按下对话线程的固定快捷键(默认为 mod+shift+p)。命令面板中的固定项目以及设置 → 项目同样可用。列表在打开期间保持原有顺序,因此新的固定会在你下次打开它时上移。

在设置 → 项目中归档一个你已经不再使用的项目。它会离开各个项目选择器。它的对话线程、设置和文件都保持原样,已归档的项目仍会显示在设置的项目列表中,并标记为已归档。在那里选中一个,再选择取消归档即可恢复。在移动端,归档和取消归档都位于设置 → 项目 → 整理。

项目若位于多台机器上,必须每一台机器都已连接,才能固定或归档它。

工作树分支名称 ​

在设置 → 工作树(worktree)→ 工作树分支命名中,选择一个静态前缀、由模型选定的语义前缀(例如 feat/ 或 fix/),或者为完整名称提供自定义说明。静态前缀默认为 t3/;末尾斜杠可有可无,空前缀则不会添加任何内容。静态前缀中的无效字符会被替换为连字符。自定义说明会追加到命名提示词之后,可以指定议题 ID、命名空间和大小写。

这些设置适用于自动命名的新工作树分支。选择一个项目(project),即可覆盖其环境(environment)的默认值。工作树目录会保留原来的名称。如果生成失败,或者自定义名称无效或已被占用,则继续使用临时分支名。

移动端的定时任务 ​

打开设置 → 定时任务,即可在已连接的环境(environment)中创建定时任务,或管理已有任务。使用设置筛选器,按环境或项目(project)缩小列表。每个任务都在你选定的环境上运行,并使用它的项目、模型和工作区设置。固定时间的日程使用该环境的时区,这可能与你的手机时区不同。选择一次,即可在你自己时区的某个日期和时间把任务只运行一次。如果当时环境离线,任务会在它恢复后运行。

在目标下,选择各次运行的去向。每次运行新建对话线程让每一次运行彼此分开。两个单对话线程选项会在第一次运行时开启一个对话线程(thread),并把之后的运行发到那里:一个延续同一段对话,另一个让每次运行都在看不到先前运行的全新提供方会话(session)中开始,这样对话线程仍然可读,而智能体的上下文不会增长。要移动单对话线程任务,请在目标下选择它所属项目中的另一个对话线程。把这类任务移到另一个项目后,下次运行会在那里开启一个新的对话线程。

删除对话线程,也会删除向该对话线程投递的任务。每次运行都新建对话线程的任务,在其先前的对话线程被删除后仍然保留。

你可以在列表中编辑、暂停、恢复、立即运行或删除任务。Webhook 任务只在其 URL 被调用时才会运行,因此不能立即运行。离开已编辑的表单时,会先询问,再丢弃未保存的更改。

Webhook 自动化 ​

在设置 → 定时任务中,把任务的日程选为收到 Webhook 时,即可在另一个服务调用其 URL 时运行该任务,例如 GitHub 上出现新的拉取请求(pull request),或某个 CI 作业失败。公开 URL 需要一条由 T3 Connect 管理的隧道;保存任务后,从编辑器中复制它的 URL。如果没有隧道,编辑器只显示 URL 的路径。轮换会替换该 URL,旧的 URL 随即失效。

提示词决定智能体看到的内容。占位符从请求中取出值:{{body.path}} 表示 JSON 或表单字段,{{headers.name}}、{{query.name}},{{body}} 表示原始正文,{{request}} 表示全部内容。例如,Review this PR: {{body.pull_request.html_url}} 只发送拉取请求的链接。没有值的占位符会留空。

每个值在到达智能体时都包在 <webhook-data-…> 标签中,并标记为不可信的请求数据。这有助于智能体把它和你的指令区分开,但并不能保证智能体忽略这段文字所说的内容。在值的内部,每一个 $、其他货币符号和 @,以及开启一个独立单词的 /,后面都会插入一个不可见字符,因此 $skill、@file 和 /command 这类提及不会生效。从值中复制出来的文本(例如电子邮件地址或一条命令(command))也会带上这个字符。没有签名时,任何持有该 URL 的人都可以用任意内容启动一次运行。签名只证明是哪个服务发出了请求:GitHub 载荷中仍然会带有任意 GitHub 用户所写的文字。

对于 GitHub,请打开要求签名,保留标头 x-hub-signature-256、十六进制编码和 sha256= 前缀,并在仓库的 Webhook 设置中填入同一个密钥,内容类型为 application/json。没有有效签名的请求会被拒绝。请在桌面端或 Web 上完成这项设置;移动端会保留已有的签名检查,但不能开启新的检查。

若只对一部分请求运行,请添加筛选条件。每一条都测试一个命名方式与占位符相同、但不带花括号的值,例如 headers.x-github-event 等于 pull_request,或 body.action 是 opened, reopened 其中之一。只有每一条筛选条件都匹配时,任务才会运行;其余请求会照常应答,记为已过滤并写明第一条未通过的筛选条件,且不会启动任何运行。值按文本比较;值为对象或列表时,只有存在能够通过。用逗号分隔是其中之一的各个值;值不能包含逗号,也不能以空格开头或结尾。

为抑制重复投递,请设置重复请求键模板,例如 {{headers.delivery-id}}。对每个任务,相同的键在七天内会被忽略。要合并一阵突发请求,请设置合并键(例如 {{body.id}})以及 10–3600 秒的窗口(默认 120 秒)。从第一次投递起算的窗口关闭时,一次运行会使用最新的正文、标头和查询参数;之后的请求不会延长该窗口。待处理的窗口在服务器重启后仍然保留。键必须包含请求占位符;如果任一占位符缺失,或者渲染结果为空,就跳过该键的规则。清空这些模板即可关闭去重。

重复与已合并的日志条目共享每个任务每分钟 10 条的上限。超出的投递仍会被接受,但不写入日志条目;已合并的投递始终替换已持久化的载荷。已合并的更新计入单独的每分钟 60 次验证上限;超出后会收到 HTTP 429。

在桌面端和 Web 上,从任务菜单中选择投递记录,即可查看最近的请求,以及每一条所生成的提示词。

如果环境(environment)离线,发送方会收到错误,且不会运行任何内容;等它恢复后,再从发送方重新投递,例如 GitHub 的最近投递。若希望改由 T3 Connect 保留这些请求,请在设置 → 共享与访问中打开离线时暂存 Webhook。T3 Connect 随后会把发往 T3 Connect URL 的请求最多存储 24 小时,并在环境恢复时投递它们。如果你不希望请求正文存放在自己的机器之外,请不要开启此项。要跳过等待过久的请求,请在任务上设置跳过早于此时的请求。

默认值与继承 ​

「对话线程(thread)」包含新对话线程的模型和工作区。「浏览器」控制智能体的浏览器访问。「源代码管理」包含自动拉取、默认的拉取请求(pull request)合并方式,以及文本生成。同样这些行会根据项目(project)面包屑,编辑环境(environment)默认值或项目覆盖。

「代码」下的「项目」分类保存项目的名称、图标、操作、检出和移除。操作属于项目:编辑它们会在每个所选环境上创建该项目自己的列表,重置则回到该环境的共享列表。项目的 t3.json 操作可以导入到那里。

仓库也可以在 t3.json 中声明的设置(例如新对话线程的工作区)按固定顺序解析:先是项目覆盖,然后是环境设置,然后是 t3.json,最后是内置默认值。把某项设置留在继承,即由下一层决定。浏览器访问的更改会在智能体的提供方会话(session)下次启动时生效。

新的工作树(worktree)会递归初始化 git 子模块。如果仓库声明了许多嵌套子模块,导致这一步变慢,请在设置 → 工作树的「高级」中把子模块设为仅顶层(选中项目即可在该处覆盖),从而只处理仓库自身声明的那些子模块;或设为跳过,把它们留给设置脚本。这项设置与工作区默认值按相同顺序解析:当项目和环境都处于继承时,正在检出的分支的 t3.json 中的 "worktreeSubmodules" 值会生效。

工作树位置 ​

新的工作树(worktree)放在 T3 主目录的 worktrees 文件夹中。要把它们放到别处(例如另一块磁盘),请把设置 → 工作树 → 工作树位置设为绝对路径,例如 D:\worktrees 或 ~/worktrees。该设置按机器区分。现有工作树仍留在原处,清理会同时覆盖默认文件夹和自定义文件夹。

macOS 上的快速工作树检出 ​

快速工作树检出是一项 beta 功能。请在每台 Mac 上于设置 → 实验室 → 快速工作树检出中开启它。此后,T3 Code 会在 T3 主目录的 caches 文件夹中,为每个仓库保留最近的若干次检出。新的工作树(worktree)通过 APFS 写时复制从其中一次检出克隆而来,速度大约比逐个写入全部文件快一倍,其中第一次 git status 也会因此变快。关闭此功能会删除缓存。

仓库的第一个工作树使用 Git 的普通检出,并填充缓存。这需要 Git 2.42 或更新版本。与 T3 主目录不在同一块磁盘上的工作树、稀疏检出、属性使用了 Git LFS 等过滤器的仓库,以及检出设置已更改的仓库,也会使用 Git 的普通检出。

存储清理 ​

打开设置 → 工作树(worktree)→ 清理,即可在一台机器或全部已连接的环境中启用自动清理。策略默认关闭,并在服务器启动时、更改时以及每小时在服务器上运行。离线机器保留其现有策略。

选择一个项目(project),可以把自动清理工作树设为继承、关闭或自定义。继承遵循每台机器的规则;关闭会保留该项目的工作树,直到你手动移除。自定义把单独的工作树规则应用到所选的项目或检出。浏览器捕获和日志保留期仍按整机生效。

工作树可以在经过选定的非活动天数之后移除,也可以在对话线程(thread)了结(settle)之后、合并之后,或在它们相对默认分支没有任何提交时移除。把了结后的保留期设为 0 天,即可在了结之后的下一次清理中移除工作树。在没有远程的仓库中,对未更改工作树的清理会与项目工作区里已检出的分支比较;如果该检出处于分离 HEAD,则保留该工作树。只有 T3 管理的工作树符合移除条件。活动的提供方会话(session)和共享工作树会阻止移除。保留有本地更改的工作树默认为未提交的更改,它保护已跟踪的编辑和未跟踪文件,但会删除被忽略的文件,例如 .env 和构建产物。任何本地文件还会保护除 node_modules 以外的被忽略文件。已编辑的已跟踪文件只保护已跟踪的编辑,并允许删除未跟踪文件和被忽略文件。分支和对话线程历史会保留;再开始一个回合(turn)会重新创建该检出。合并清理要求存在一个已合并的拉取请求(pull request),且其提交已包含在远程默认分支中。当拉取请求以默认分支为目标,并且工作树仍停留在该拉取请求的最后一次提交上时,GitHub 上的压缩合并(squash)或变基合并(rebase)同样计入。

启用删除对话线程已删除的工作树,即可在其最后一个对话线程被删除后移除安全的工作树,包括已归档的对话线程,以及先前删除所留下的工作树。服务器会等待提供方会话和终端停止,并在重启后重试被跳过的工作树。此策略关闭时,手动删除工作树的现有提示仍然可用。

选择立即删除,即可马上运行已启用的规则。最新结果显示哪些工作树被移除或保留及其原因,以及任何失败。结果还会列出工作树文件夹中没有任何对话线程使用的文件夹及其大小;清理不会移除它们,若要删除请手动处理。

浏览器捕获和轮换日志各有保留期。过期的捕获链接会失效。当前日志、消息附件(attachment)和浏览器配置文件都会保留。

项目图标 ​

选中项目(project)并打开「项目」,即可选择图标、表情符号、字母组合或图片。该选择会作用到项目组中的每一次检出,并显示在已连接的客户端(client)上。选择自动,即可让 T3 Code 重新检测图标。

在图标选择器中选择字母组合,即可设置一到两个字母或数字,以及一种颜色。

找不到图片时,Web 和桌面端会显示一个双字符字母组合,颜色取自图标调色板,并由已保存的项目名称推导。例如,Nebula 变为 NA,Silver Orchard 变为 SO,M7 Forge 变为 M7。

保持默认分支为最新 ​

在源代码管理中启用自动拉取,即可让默认分支的检出与其已配置的上游保持最新。选择一个环境(environment)来设置默认值,或选择一个项目(project)来覆盖它。在移动端,使用设置 → 源代码管理更改所选环境的默认值或项目覆盖。

只有在能够快进,并且检出没有已更改文件、未跟踪文件或本地提交时,T3 Code 才会拉取。它会跳过位于其他分支上的检出,以及没有上游的检出。如果某个检出还有本地工作,请先自行处理,自动拉取才会恢复。

非官方译文 · 源提交 d2c25950b4d9 · 不代表 T3 Tools