For AI agents: the complete documentation index is available at https://a3s-lab.github.io/Test/v1.0.0/llms.txt, the full documentation bundle is available at https://a3s-lab.github.io/Test/v1.0.0/llms-full.txt, and this page is available as Markdown at https://a3s-lab.github.io/Test/v1.0.0/concepts/architecture.md.

从第一性原理理解架构

核心问题并不是让模型点击页面,而是保留一条可信链路,把人的意图、界面的准确状态、真正执行的动作、负责结果的源码,以及证明结果的证据连接起来。

A3S Test 把链路中的每一环都定义成独立技术契约。

约束决定系统形态

基本约束对应架构选择
Web 页面持续变化,任何观察都会过期引用绑定观察,只保留精确修订差异证明未受影响的目标
DOM、可访问语义、CSS、布局和滚动事实已经由浏览器计算页面理解发生在渲染之后,不从截图重新猜测
自然语言不能构成可执行的安全边界动作使用封闭类型、Schema 校验、能力检查与策略准入
可见节点与源码文件属于不同身份空间Test Kit 用显式组件归属与排序后的源码跨度提供导航证据
建议、授权与修改属于不同责任方浏览器事实、模型候选、人工授权和工作区修改保持独立
探索有价值,但不能直接重复跑通的动作、等待、断言和证据进入关闭式 ACL 套件
取消失控可能比断言失败更危险运行时、浏览器命名空间、进程树和工件路径都有精确所有权

完整证据链路

人的意图 / PRD / 设计
             |
             v
       经审阅的期望
             |
浏览器渲染 + 可访问语义 + Test Kit
             |
             v
      绑定修订的观察
             |
      一个类型化动作候选
             |
        Core 准入门禁
 Schema + 能力 + 策略 + 来源
             |
             v
      Web / GUI / TUI 驱动
             |
             v
 事件 + 断言 + 自有证据工件
             |
       人工明确授权修复
             |
             v
 源码修改 -> 更新后的页面修订
             |
             v
 重新验证 -> ACL 回归

图中的每条连接都必须显式发生。观察不能授权源码修改,模型候选不能决定 verdict,源码跨度也不能证明新页面正确。验证必须重新读取变化后的页面。

四层技术实现

实现
渲染后事实层packages/testkit 与 Web adapter 原子组合浏览器语义、Page Context、精确修订差异、源码映射与 UI 证据
类型化控制层crates/a3s-test-corecrates/a3s-test-session 定义动作、观察引用、策略、权限、会话状态、结果与驱动契约
评审与界面执行层Review Overlay、crates/a3s-test-cli 与各 Surface Driver 明确提交修复范围,派发已准入动作,并拥有运行时与清理
验证与回归层Session verification、ACL 编译器与 Runner 从更新后界面保留证据,静态准入并有界重复动作、断言与清理

CLI 与 MCP 只是这些层的入口,不增加新的权限。Core 不按后端名称分支。部署方注入类型化 SurfaceDriver,每个 adapter 只拥有自己能够证明的能力。不支持的行为直接关闭失败,不做近似实现。

页面理解发生在渲染之后

浏览器已经完成布局计算,Test Kit 只读取这份结果的有界投影。

浏览器渲染
  ├── 可访问快照      角色、名称、原生状态
  ├── Page Context    组件、定位器、源码、几何、facts
  └── UI 理解         样式、布局图、裁剪、状态、动效
                                |
                                v
                         一次完整准入观察

a3s.test.page-context/1 协议通过非枚举 Symbol bridge 暴露。私有节点身份保存在 WeakMap,不会写入业务 DOM 属性。DOM 变更、尺寸、路由、视口、滚动和表单状态信号推进单调修订号。快照的明细、范围、耗时、节点数、字符串和编码字节全部有界。

a3s.test.page-context-diff/1 会在多个修订间哈希同一份有界 projection,精确报告节点、组件、page、facts 与 UI 失效信息。历史缺失或元数据装不进字节上限时返回 reset_required,绝不会伪装成不完整的“没有变化”。Web adapter 会在 Rust 中再次校验。Core 持久化时只保存带域隔离的 SHA-256 节点指纹,证明节点未受影响后才保留稳定定位器。

公开引用表达权限,不泄漏私有身份。

引用含义
@eN浏览器语义目标,只能在所属观察中操作
@cN唯一 Page Context 目标;在所属观察内,只有已证明未受影响的定位器可跨过修订漂移
@uN样式、布局、状态或动效补充证据,永久只读

渲染节点源码映射遵循同一原则。A3STestBoundary 可以提供粗粒度源码提示,框架 adapter 可以显式注册 DOM 归属和编码后的 Source Map v3。Test Kit 只对候选排序,不读取框架私有状态,不自行下载 Source Map,也不授予文件权限。

两个规划入口共用一个执行核心

调用方编码 Agent                    关闭式 ACL 套件
 观察 -> 决策 -> 一个动作             准入 -> 执行 -> 断言
               \                     /
                    类型化 A3S Test Core
             Action · Policy · Evidence · Lifecycle

路径未知时使用持久 Agent 会话,调用方编码 Agent 从每次最新观察中选择一个动作。路径明确后使用 ACL,在执行前关闭允许的动作、等待、断言和证据范围。两条路径复用同一套驱动与结果契约,因此探索成果不需要换一套自动化模型才能进入回归。

四层独立权限

  1. 渲染事实 来自界面观察、Test Kit 上下文、确定性断言、文件摘要与自有证据。
  2. 模型建议 可以生成带来源、置信度和预算的视觉位置、设计问题或契约候选。
  3. 人工授权 选择目标、预期结果、冲突关系,以及单项或批量修复范围。
  4. 工作区执行 属于已经拥有工作区的编码 Agent,A3S Test 在更新后的浏览器修订中验证结果。

把报告投影到 Review Overlay 不会改变 Runner verdict。打开编辑器或保存草稿不会进入 Repair Ledger,只有明确发送才会越过授权边界。

运行时与证据所有权

每个被启动的程序都属于 A3S Test 创建的进程组、Windows Job 或等价自有进程树。取消和超时会通过有界优雅路径与紧急路径终止并回收完整树。开发者已有的服务器和无关浏览器会话保持不变。

Web 会话使用隔离命名空间和非零空闲超时。工件路径必须解析为会话根目录中的新常规文件。路径穿越、符号链接、reparse point、旧文件复用、超大证据和不支持的载荷都会在冒充成功采集前被拒绝。

界面与 Provider 边界

界面当前实现边界
WebA3S Browser 或兼容 standalone browser,支持持久会话、ACL、语义引用、Page Context、证据与隔离网络策略
GUI锁定的 macOS A3S CUA 集成,在真实 arm64 主机验证权限、感知与精确清理
TUI原生 PTY / ConPTY、受限 VT 语义和自有命令进程树,当前由 ACL 驱动

可选 LLM、视觉定位与设计 Provider 都是类型化注入对象。HTTP adapter 禁止重定向和环境代理,除明确 loopback HTTP 外要求 HTTPS,限制请求体、响应体和 deadline,并从错误中脱敏授权值。Provider 输出在确定性边界与人工边界准入前始终只是建议。

继续阅读 Page Context 字段与生命周期了解浏览器侧协议,或查看权限与安全了解动作准入与失败行为。