T3 Code 是什么:客户端操控另一台机器上的 Agent
读 T3 Code 源码:RPC、EventSink 与 EffectWorker
从三个入口分清授权、持久状态与实际执行
读 T3 Code 源码:RPC、EventSink 与 EffectWorker知识学习CN编辑简报更新 2026-10-04
你将学会
- 先看契约
- 读取事务边界
- 最后看 worker
开始前需要
- 服务器环境上有一个可丢弃项目
- 一个已登录的支持 Provider
在连接重要仓库之前,把可丢弃试用转化为证据
先看结论
- 有类型的 RPC 仍须做权限检查。
- EventSink 保持意图与投影一致。
- checkpoint 不是普通分支提交。
先看契约
`packages/contracts/src/rpc.ts` 声明跨越客户端和服务器边界的命令、查询与订阅。追踪新客户端功能前,应核对负载字段和服务器宣告的能力。
TypeScript 类型对得上也不代表已经授权。环境认证文档指出每个 RPC 都声明所需 scope,服务器中间件在处理程序前检查。
读取事务边界
`apps/server/src/orchestration-v2/EventSink.ts` 一次记录回执、事件、投影和 outbox。Orchestrator 自己只做决策,不调用 Provider 或文件系统。
追踪某条命令时,应从决策走到 sink,再看后续效果。重试与旧事件重放也属于正确性,因为服务器会跨版本保存历史。
最后看 worker
`EffectWorker.ts` 在提交后处理效果并回传结果。`CheckpointStore.ts` 用隐藏的 Git 引用保存工作区状态,不向用户分支额外添加提交。
回退 checkpoint 还需同步 Provider 对话;不支持对话回滚时,应在修改文件前拒绝。这次固定源码审阅没有实际运行 checkpoint 或注入 worker 故障。
如何选择
| 比较维度 | 方案 A | 方案 B |
|---|---|---|
| Best when | You need predictable behavior and easy auditing | You need adaptive optimization and have reliable telemetry |
| Main risk | May leave performance on the table | Can become difficult to explain or debug |
实施步骤
- 1
找到 RPC 契约及所需 scope。
- 2
追踪一条回执、事件和 outbox。
- 3
跟随一次效果及其恢复条件。
可复制示例
text
rpc.ts -> scope 检查 -> Orchestrator.ts
EventSink.ts -> 事件 + 回执 + outbox
EffectWorker.ts -> 副作用 -> 结果常见问题
隐藏 Git 引用会改动我的分支历史吗?
文档说明它保存状态而不向用户分支添加提交。
文章测试过 worker 崩溃吗?
没有,这是固定源码的阅读路径。
资料来源
- T3 Code / packages/contracts/src/rpc.ts来源核查 2026-10-04
- T3 Code / docs/internals/environment-auth.md来源核查 2026-10-04
- T3 Code / apps/server/src/orchestration-v2/Orchestrator.ts来源核查 2026-10-04
- T3 Code / apps/server/src/orchestration-v2/EventSink.ts来源核查 2026-10-04
- T3 Code / apps/server/src/orchestration-v2/EffectWorker.ts来源核查 2026-10-04
- T3 Code / apps/server/src/checkpointing/CheckpointStore.ts来源核查 2026-10-04