从第一性原理理解架构
核心问题并不是让模型点击页面,而是保留一条可信链路,把人的意图、界面的准确状态、真正执行的动作、负责结果的源码,以及证明结果的证据连接起来。
A3S Test 把链路中的每一环都定义成独立技术契约。
约束决定系统形态
完整证据链路
图中的每条连接都必须显式发生。观察不能授权源码修改,模型候选不能决定 verdict,源码跨度也不能证明新页面正确。验证必须重新读取变化后的页面。
四层技术实现
CLI 与 MCP 只是这些层的入口,不增加新的权限。Core 不按后端名称分支。部署方注入类型化 SurfaceDriver,每个 adapter 只拥有自己能够证明的能力。不支持的行为直接关闭失败,不做近似实现。
页面理解发生在渲染之后
浏览器已经完成布局计算,Test Kit 只读取这份结果的有界投影。
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 节点指纹,证明节点未受影响后才保留稳定定位器。
公开引用表达权限,不泄漏私有身份。
渲染节点源码映射遵循同一原则。A3STestBoundary 可以提供粗粒度源码提示,框架 adapter 可以显式注册 DOM 归属和编码后的 Source Map v3。Test Kit 只对候选排序,不读取框架私有状态,不自行下载 Source Map,也不授予文件权限。
两个规划入口共用一个执行核心
路径未知时使用持久 Agent 会话,调用方编码 Agent 从每次最新观察中选择一个动作。路径明确后使用 ACL,在执行前关闭允许的动作、等待、断言和证据范围。两条路径复用同一套驱动与结果契约,因此探索成果不需要换一套自动化模型才能进入回归。
四层独立权限
- 渲染事实 来自界面观察、Test Kit 上下文、确定性断言、文件摘要与自有证据。
- 模型建议 可以生成带来源、置信度和预算的视觉位置、设计问题或契约候选。
- 人工授权 选择目标、预期结果、冲突关系,以及单项或批量修复范围。
- 工作区执行 属于已经拥有工作区的编码 Agent,A3S Test 在更新后的浏览器修订中验证结果。
把报告投影到 Review Overlay 不会改变 Runner verdict。打开编辑器或保存草稿不会进入 Repair Ledger,只有明确发送才会越过授权边界。
运行时与证据所有权
每个被启动的程序都属于 A3S Test 创建的进程组、Windows Job 或等价自有进程树。取消和超时会通过有界优雅路径与紧急路径终止并回收完整树。开发者已有的服务器和无关浏览器会话保持不变。
Web 会话使用隔离命名空间和非零空闲超时。工件路径必须解析为会话根目录中的新常规文件。路径穿越、符号链接、reparse point、旧文件复用、超大证据和不支持的载荷都会在冒充成功采集前被拒绝。
界面与 Provider 边界
可选 LLM、视觉定位与设计 Provider 都是类型化注入对象。HTTP adapter 禁止重定向和环境代理,除明确 loopback HTTP 外要求 HTTPS,限制请求体、响应体和 deadline,并从错误中脱敏授权值。Provider 输出在确定性边界与人工边界准入前始终只是建议。
继续阅读 Page Context 字段与生命周期了解浏览器侧协议,或查看权限与安全了解动作准入与失败行为。
