For AI agents: the complete documentation index is available at https://a3s-lab.github.io/ash/llms.txt, the full documentation bundle is available at https://a3s-lab.github.io/ash/llms-full.txt, and this page is available as Markdown at https://a3s-lab.github.io/ash/guide/architecture.md.
  • 简体中文
  • next
  • 系统架构

    ash 是一个独立 Rust workspace 和发行单元。A3S 主仓库只通过 crates/ash Git 子模块固定经过验证的提交,不把它并入根 Cargo 包。

    数据流

    Coding Agent / Harness
            │ framed ASH/1 or one-shot ASON
    
    Protocol admission → capability mask → request schema
    
    Session runtime → hierarchical governor → cancellation tree
            ├───────────────┬────────────────┐
            ▼               ▼                ▼
    Tokio I/O plane    Rayon CPU plane   session store
    process / pipe     search / hash     refs / spool
    RPC / timeout      diff / reduce     snapshots
            └───────────────┴────────────────┘
    
                  stable merge + projection
    
                      canonical ASON

    为什么使用 Rust

    • 单个原生二进制覆盖六个操作系统/架构目标。
    • 所有权与类型系统适合表达请求生命周期、取消、事务和一次性 Permit。
    • Tokio 处理大量 I/O 等待,Rayon 将可拆分 CPU 工作映射到固定多核池。
    • Send + Sync 公共边界让长驻 Harness 可以安全共享只读状态与调度器。

    双执行平面

    Tokio I/O

    负责标准输入/输出 RPC、子进程、管道、超时、取消、更新下载和有界文件 I/O。外部程序 默认通过 executable + argv 直接启动,不隐式进入 Bash、PowerShell 或 CMD。

    取消不是只发一个信号。Unix 会终止并等待所属进程组,Windows 会终止并等待 Job Object 清空;随后 exec 还会等待 stdin、stdout 和 stderr 任务结束,才编码最终取消响应。

    stdout 与 stderr 始终以 16 KiB 块并发排空。单路在 4 MiB 内保留于内存;超过后,完整 字节流转入会话私有临时文件,内存只留下有界的首尾样本用于即时投影。完整前缀与后续 块会在写盘前计入会话额度,需要引用的两路输出一起提交,因此失败不会发布半截 Alias。 完整内容的 BLAKE3 哈希由 Rayon 通过 4 MiB 固定缓冲计算,不占用 Tokio I/O Worker。

    磁盘引用支持按字节范围读取;必须读取完整值的消费者仍受 8、64 或 128 MiB 独立上限 约束。租约阻止使用中的文件被提前删除;释放引用或结束会话后,最后一个租约结束时会 清理临时文件。

    崩溃残留不依赖常驻守护进程。后续进程首次创建结果存储时,只会回收标记已满一小时、 能取得独占锁,且目录内全是已知普通文件的 ash spool。活动、刚创建、标记异常、包含 符号链接或外来文件的目录一律保留;删除逐文件执行,不做递归删除。

    Rayon CPU

    负责搜索准备、哈希、Diff、归约和其他可拆分计算。固定工作窃取池使用主机可用核心, 但不会为每个请求创建新线程池。

    进程管道排空完成后,UTF-8 投影也进入这个固定池:连续重复行折叠为 ×N,重复 K 行块 折叠为 ×N#K;非成功原生退出随后保留固定诊断窗口,只把节省字节的间隔替换为 ⋯N,最后 执行输出预算。分类、候选与验证可以并行,结果仍按稳定源顺序归并。超时或取消的最终清理 使用同一有界池,不会被已经取消的请求 Permit 拦掉终止证据。

    分层 Governor

    主机、会话、请求和动作共享预算。宽批图不能把每个节点的内部并行再次相乘;预算覆盖 并发度、截止时间、读取字节、输出记录与保留证据。

    确定性边界

    Worker 可以按任意顺序完成,但响应先按协议定义的稳定键归并,再投影、截断和编码。 相同输入、能力和文件状态必须产生逐字节一致的规范 ASON。

    完整组件所有权与失败边界见 仓库架构设计