系统架构与授权边界
看清外部 coding client、原生绑定、ait-native 内核、Task worktree、Binary DB、服务器与 runner 如何跨本地与可选远程授权连接。
适用人群: 开发者、集成方与运维人员
按边界来读这套系统#
ait-native 只有一个原生工作流内核,外加两条明确的运行路径。常走的 是本地这条:外部 coding client或嵌入式宿主调用原生接口,实现发生在 Task 绑定的 worktree 里,再由一个 Snapshot 把结果记进本地的 Binary DB 权威。远程基础设施是可选的,而且只能通过明确的操作,去 扩展已经记录下来的状态。
本地开发是主路径。远程基础设施是可选的,通过有界的原生接口补上共享权威、异地留存和 CI。
本地开发与已记录的权威
Snapshot 把可变的工作记录进本地权威。
- 接触面外部编码客户端或嵌入式宿主ait-native 之外的交互式开发者,或进程内的调用方。
- 接口ait 命令行或原生绑定命令行或进程内的入口 surface。
- 内核ait 原生内核工作流、协议与存储语义。
- 执行绑定 Task 的工作区隔离的、可写的实现工作区。
远程权威、留存与 CI
已记录的状态进入服务器,有界的证据再回到服务器。
- 队列Worker Job由服务器权威持有的、带类型的持久请求。
- 执行ait-runner还原出确切的 Snapshot 内容并执行 Repository CI。
- 证据CI 证据回到所属服务器 Repository 的有界结果。
组件与权威对照#
| 组件边界 | 它拥有什么,又不拥有什么 |
|---|---|
| 外部 coding client与 Python/Node 宿主 | 负责 ait-native 之外的交互式或嵌入式使用体验。它们调用 AIT 接口,但不会取代原生的工作流或存储语义。 |
ait CLI、原生绑定与原生内核 | 负责命令接纳、工作流状态迁移、协议行为,以及对已记录权威的访问。Python 和 Node 是在进程内进入同一个内核,而不是另实现一套工作流。 |
| Task 绑定的 worktree 与本地 Binary DB | worktree 是一个隔离的、可变的实现工作区。Binary DB 拥有记录下来的 Plan、Task、Change、Snapshot、Line 和相关本地状态。Snapshot 就是可变编辑与持久 AIT 历史之间的那条界线。 |
ait-server | 拥有已注册的远程 Repository 权威、共享的远程工作流状态、带类型的 Worker Job、证据,以及对送达服务端的记录状态做异地保存。它不保存没进过 Snapshot 的本地改动。 |
ait-runner | 认领一个兼容的 Worker Job,物化出确切的 Snapshot 内容,在隔离的一次尝试中执行 Repository 声明的 CI 入口,然后返回有界的证据。它永远不会变成 Repository 权威。 |
主要的本地编写路径#
理解需求、写出实现,这些仍然是 coding client的事。AIT 给这份工作 提供的是稳定的仓库身份,和一条隔离的变更边界:
- 客户端通过 CLI 或受支持的原生绑定调用
ait。 - 原生内核解析出确切的 Repository、Plan 条目、Task、Change 和 Task 绑定的 worktree。
- 在创建 Snapshot 之前,代码改动一直是那个 worktree 里的可变 状态。
- Snapshot 和工作流记录进入本地 Binary DB 权威;配置好的收尾路径 随后就能基于这份记录状态做判断。
多个 agent 之间互不干扰,因为每个活动的 Task 各占一个 worktree 和 一把命令锁。AIT_RAM 可以加快放置速度,但它不改变权威边界:没进 Snapshot 的脏文件属于工作区状态,已记录的 Snapshot 才是可恢复的 AIT 状态。参见 并行 Task 隔离。
可选的远程权威与 CI 路径#
本地记录下来的状态,只有通过明确配置的远程操作才会到达 ait-server。一旦收下,服务端就拥有远程的 Repository 副本、共享的 工作流状态、证据和 Worker Job 队列。这样就能远程管理,也能对送达 服务端的那份确切状态做异地恢复。
要跑 CI,服务端会提交一个带类型的 Worker Job。ait-runner 认领这个 job,把它引用的 Snapshot 物化到隔离的尝试存储里,运行 Repository 声明的入口,然后返回有界的结果。服务端记录由此产生的证据;runner 的尝试目录用完即弃,不构成第二个权威。
远程保存不等于自动故障切换,也没法还原那些从未被捕获、从未传出去的 脏文件或未跟踪文件。参见 远程基础设施 和 `ait-runner`:原生 CI 执行面。
一个内核,通过原生嵌入复用#
ait-python 和 ait-node 在进程内加载已接纳的原生运行时。它们给 应用提供面向业务的入口,但不会另起一个工作流引擎,也不会重新定义 仓库权威。嵌入式应用同样得选定确切的 Repository 上下文,并遵守和 CLI 一样的 Task、Snapshot、远程和策略边界。
这张图有意只画到当前 1.1.1 的产品边界。Release 家族的组件、版本 证据和包的构成,仍然由 分发与发布 定义。