项目是什么
Exact 是一个跨平台应用运行时,来自 GitHub 仓库 expo/exact,主要使用 Rust 编写,采用 MIT 许可证。它的核心主张很直接:写一次应用,让它在 Web、macOS、iOS 和 Linux 上原生运行,并且让 AI 编码代理也能在每一个平台上构建、运行、查看和测试它。Android 和 Windows 目前处于早期推进阶段,应用能够构建并运行,但仍有缺失项。
它不是把网页塞进 WebView 的混合方案。按项目 README 的描述,Exact 没有 WebView,UI 层也没有 JavaScript 桥;首帧渲染之前不会执行应用 JavaScript。这一点是理解整个项目的起点。
它解决什么问题
Exact 面对的是跨平台应用开发中几个反复出现的矛盾:同一套界面要在不同平台运行,但各平台的控件、排版和交互习惯并不相同;AI 代理可以写代码,却很难真正“看见”和“操作”应用来验证结果;开发反馈循环一旦跨平台就变慢。Exact 的应对方式是把界面描述、数据逻辑和宿主渲染拆开,再给代理提供一套统一的操作接口。
核心组成与工作原理
Exact 把应用分成几层:
- Contract:一种小型声明式语言,用来描述界面。编译器通过语法、类型、分析和 lowering 四个阶段把它变成紧凑的“计划”(plan)。构建时还会把常量数据“烘焙”进计划,使首帧不需要额外请求。
- Runner:计划的虚拟机,负责带 key 的组件实例、事件、基于可寻址时钟的定时器,以及数据接缝。
- Kernel:基于列式节点 arena 的布局内核,通过修改过的 Taffy 实现 CSS 布局。Apple 平台用 CoreText 测量文本,Linux 用 cosmic-text。Web 端则由浏览器自己完成同一套 CSS 布局,因此 Web 构建不携带布局引擎。
- Hosts:负责呈现组件树。Web 宿主写 DOM 节点,由浏览器执行 CSS 过渡;Apple 宿主是带 C ABI 的静态库,分别对接 AppKit 和 UIKit;Linux 宿主自行绘制,可输出到 DRM/KMS 并处理 evdev 输入,也可渲染到离屏缓冲区。
- 数据源:TypeScript 在原生宿主上跑在 Hermes 上,在 Web 上跑在浏览器自己的引擎里;Rust 原生运行,也可以热替换为共享库,或在 iOS 和 Web 上以 Wasm 形式替换。所有返回值都会按 Contract 声明的形状校验。网络、文件、SQLite 和密钥等能力由 Grants 控制。
可选项被拆成独立产物,按需加载,包括 wgpu GPU 模块、原生模块和游戏引擎扩展。项目强调“只为用到的部分付费”,GPU 渲染、Markdown 编辑器、文本流和浏览器 SQLite 都不是核心 crate 的特性开关。
面向 AI 代理的设计
Exact 明确假设大量代码会由 AI 代理编写。它提供十个统一操作:tree、screenshot、tap、type、state、layout、logs、clock、prefer、perf,通过 scripts/agent.mjs 驱动 Web、macOS、iOS(模拟器或真机)和 Linux。项目特意把数量控制在十个,避免像前代那样不断膨胀成几十个接口。
一个有意思的细节是时钟归代理控制:两次操作之间画面不动,代理不需要靠 sleep 等待动画结束,而是直接推进时钟或让时钟稳定,再读取结果。测试被写成这些操作的脚本,app.test.contract 文件可以在任意宿主上原样运行。此外,contract build --json 输出带稳定 ID 和源码范围的诊断信息,contract symbols 提供导航,开发源码映射能把屏幕上的节点指回声明它的代码行。
使用方式与运行环境
README 给出的快速开始步骤是在 macOS Apple Silicon 上验证过的。基本流程是:安装工具后运行一次 bun scripts/exact.mjs setup,用 bun scripts/exact.mjs new 创建应用,然后阅读 docs/start-here.md;如果做网站,则读 docs/start-here-site.md。项目称这份指南是唯一必读的文档。
工具链方面,需要 Rust(通过 rustup,固定版本在 rust-toolchain.toml 中)、Bun 1.4.2、Google Chrome(代理通过无头 Chrome 驱动 Web)、以及 macOS 上的 Xcode 27.1 或更新版本。Node 和 npm 不需要。Linux 也能跑 Web 循环、Linux 宿主和 iOS 交叉编译;Windows 上做 iOS 构建需要 WSL 2 加 Ubuntu 24.04。TypeScript 应用在原生宿主上还需要 Hermes,项目使用 Ibex 固定并校验过的发布包,普通 Cargo 构建保持离线。
这些环境要求比较具体,项目也提供了 setup --check 来检查配置。由于项目处于 pre-1.0 阶段,安装细节可能变化,建议以仓库中最新的 Quick start 为准。
性能目标的定位
README 列出了一些预算指标,例如冷启动到可交互首帧 100 ms p50、开发重启从编辑到呈现 100 ms p50、首帧前执行的应用 JavaScript 为零、修改一行后重建对应 crate 在 30 秒内、以及单 crate 编辑后的阻塞门禁在 30 秒内。项目还提到在 RealWorld(“Conduit”)基准上,Exact 的运行时比 React SSR 构建完成 hydration 早约 300 ms,代码量为 26 KB,对比 React 的 81 KB。这些是项目自己给出的目标和对比数据,应理解为项目声明,而非独立第三方评测。
目前可用与尚缺的部分
按 README,Web、macOS、iOS 和 Linux 是当前的主要目标平台,Android 和 Windows 仍处于早期。项目明确说明自己是 pre-1.0、每天变化,不承诺 API 稳定、向后兼容或迁移指南,这是有意为之。仓库 exact2 是对更早仓库(“exact1”)的重建,旧设计文档只作为研究材料,不作为权威依据。
设计记录放在一个私有的编号文档仓库 expo/exact-llp 中,有权限的人会把它克隆到 llp/ 目录;公开文档则在 docs/ 下。README 会用编号引用这些设计文档(如 LLP 1115 D7),普通读者不必依赖它们来理解项目。
适合谁关注
Exact 适合正在评估跨平台应用运行时的开发者、对 AI 代理参与应用开发流程感兴趣的人,以及愿意接受快速变化、pre-1.0 项目的早期使用者。它不适合需要稳定 API、完整迁移路径或成熟生态的生产项目。若你只关心传统 Web 开发,这个项目的原生宿主和 Contract 语言会带来额外的学习成本;若你的痛点正是“代理写完看不到结果”或“跨平台 UI 验证太慢”,它的十个统一操作和可寻址时钟值得进一步了解。
项目主页
项目地址:exact
相关推荐
cinecode:用 AI 编程代理写剧本、造画面、配音效,把一句话变成 MP4 电影
gputaskman:给 GPU 装一个 htop,逐进程看清显存都被谁占了
Hermes Agent:Nous Research 开源的自我改进 AI 智能体,能从经验中创建技能并跨平台运行
TradingAgents 是什么:用多智能体 LLM 模拟交易公司的开源框架
llama.cpp:用 C/C++ 实现本地大模型与视觉语言模型推理
ECC:给 AI 编码代理加装一套工程化流程与工具箱
Superpowers:给编程 Agent 装上完整开发方法论的开源技能框架
REA:用一个 MCP 让 AI Agent 逆向分析二进制、应用与运行时行为
最近更新
cinecode:用 AI 编程代理写剧本、造画面、配音效,把一句话变成 MP4 电影
cinecode 是一个在本地运行的 AI 电影生成工具包:AI 编程代理写剧本、用代码逐帧搭建画面、设计声音并输出 MP4,覆盖短片、长视频、广告、解说和音乐视频。本文介绍它的两种模式、两个创作目标、主要功能、运行环境和适用场景。
gputaskman:给 GPU 装一个 htop,逐进程看清显存都被谁占了
gputaskman 是一个用 Python 编写的终端 GPU 任务管理器,试图回答“显存到底被谁占了”:它把逐进程显存、GPU 引擎活动与运行时、模型文件、LLM 的权重/KV cache 拆解关联起来,支持 Windows、Linux、WSL 和 Apple Silicon。本文介绍其功能、安装方式、平台限制与适用场景。
开发一次,四个平台原生运行:Exact 想做的 AI 原生跨平台应用运行时
Exact 是一个跨平台应用运行时:用小型声明式语言 Contract 描述界面,用 TypeScript 或 Rust 写数据逻辑,编译出的界面计划在 Web、macOS、iOS 和 Linux 上以各平台原生方式运行,并允许 AI 编码代理通过统一操作脚本构建、运行、观察和测试应用。
Hermes Agent:Nous Research 开源的自我改进 AI 智能体,能从经验中创建技能并跨平台运行
Hermes Agent 是 Nous Research 开源的自我改进 AI 智能体,内置学习闭环,能从经验中创建并改进技能,支持多消息平台、定时任务、子智能体和多种运行后端,可用任意模型并通过 CLI 或 Telegram 等入口使用。
TradingAgents 是什么:用多智能体 LLM 模拟交易公司的开源框架
TradingAgents 是一个基于 LangGraph 的多智能体 LLM 金融交易研究框架,用分析师、研究员、交易员和风险管理团队的分工模拟交易公司决策流程。本文介绍它的角色设计、安装方式、LLM 提供商配置、CLI 用法、支持市场与 Python 调用方式。
llama.cpp:用 C/C++ 实现本地大模型与视觉语言模型推理
llama.cpp 是一个用 C/C++ 编写的 LLM 与 VLM 推理项目,构建在 ggml 之上,支持多种 CPU 指令集、量化方案和 GPU/NPU 后端,并提供 CLI、server 等工具。本文依据其 GitHub README 介绍项目定位、功能特点、安装方式与适用场景。
ECC:给 AI 编码代理加装一套工程化流程与工具箱
ECC 是面向 AI 编码代理的工程化流程系统,提供 71 个代理、314 个技能、钩子、记忆与安全扫描,主要支持 Claude Code,并为 Codex、Cursor 等提供适配路径。
Superpowers:给编程 Agent 装上完整开发方法论的开源技能框架
Superpowers 是一个面向编程 Agent 的开源技能框架和开发方法论,通过自动触发的技能把需求澄清、计划拆解、TDD、子 Agent 开发和代码审查串成完整工作流,支持 Claude Code、Codex、Cursor、Gemini CLI 等多种 Agent 环境。
REA:用一个 MCP 让 AI Agent 逆向分析二进制、应用与运行时行为
REA 是一个 TypeScript 编写的开源 MCP 服务,让 AI Agent 能够逆向分析原生二进制、JavaScript/Electron 应用、.NET 程序集、Android APK、网站等多种目标,分析在本地运行并附带证据说明。本文介绍它的功能范围、安装方式、运行环境与使用注意事项。
MoneyPrinterTurbo:输入主题就能生成短视频的开源 AI 工作流
MoneyPrinterTurbo 是一个用 AI 大模型和自动化工作流生成短视频的开源 Python 项目,输入主题即可自动完成脚本、配音、素材、字幕、配乐和剪辑,支持 WebUI、API、CLI 和 AI Agent 四种使用方式。






