A3L 是一门 AI-first 紧凑语言,也是一个可安装的 Agent Skill。它把较长的结构化结果整理成易扫读、类 PPT 的单文件 HTML 汇报:Agent 只需编写很短的非 JSON A3L 源码,由编译器确定性地生成完整页面,并用一个产物链接加短文本 fallback 完成交付。
一条命令安装自包含的 a3l skill,并交互选择支持的 Agent 和安装范围:
npx skills add agent-dance/A3L --skill a3l需要仍在安全支持期内的 Node.js 22 或更高版本。
全局、非交互安装:
# Codex
npx skills add agent-dance/A3L --skill a3l --global --agent codex --yes
# Claude Code
npx skills add agent-dance/A3L --skill a3l --global --agent claude-code --yes安装后新开一个 Agent 会话。遇到较长的状态报告、项目评审、计划、对比、流程、仪表盘、发布说明、风险、决策或复盘时,skill 应优先生成类 PPT 汇报;也可以明确要求:用 A3L 把结果做成类 PPT 总结。 很短的回答、代码、原始命令输出、错误堆栈和明确要求 Markdown 的任务仍使用文本。
成功时只交付一个 HTML 链接和短 fallback,不再复制一份完整 Markdown:
View: dist/present/<topic>.html
<短 fallback 摘要>
平台专用命令和源码仓库 fallback 见 一分钟安装。
A3L 有三类不同的 token 指标,不能混用:
- A3L → HTML 展开比:衡量一小段 A3L 能生成多少 HTML。仓库内
o200k_base语料当前报告460.45x源码到 HTML 展开比;它证明了紧凑编写和渲染器复用能力,不是 Markdown 节省结论。 - 语义等价格式 A/B:把等价 Markdown 报告与“A3L 源码 + 短产物交付”对比。仓库内 12 场景全部保留原始事实,短/中/长报告的 P50 输出节省分别为
24.02%、30.79%、34.19%;生成 HTML 不计入节省。这是确定性格式证据,不是真实 Agent 结果。 - 真实 Agent A/B:验证实际 Agent 是否正确触发 skill、生成产物、保留事实、避免误触,并相对自己的 Markdown baseline 减少完整任务输出。只有跨 Agent 门禁通过后,才能宣称普遍的 Agent 节省。
输入上下文也是实际成本。当前格式基准中的 SKILL.md 为 858 个输入 token:在中/长报告语料上,共享上下文到第 9 份报告才摊销到不亏,第 116 份后才达到 30% 有效节省。完整假设和逐场景结果见 reports/agent-token-ab.md。
npm run bench:tokens 复现展开比,node scripts/agent-token-ab.js 复现确定性 Markdown A/B,npm run claude:eval 复现 Claude 行为实测。
项目自带两张生产级展览页,全部由 A3L 自己编译而成。点任意截图即可用 htmlpreview.github.io 在浏览器里打开真实交互页面,无需任何安装。
A3 内置能力展览馆 50 个 capsule · 点卡片即弹出实时预览 + 原始 A3L 源码对比 在线预览 ↗ · 完整长图 · 原始 HTML |
A3 价值与生产级证据 Token 压缩、三层数据、覆盖矩阵、验证体系,所有数据来自可重复脚本 在线预览 ↗ · 完整长图 · 原始 HTML |
两张展览页都是单文件 HTML,由 npm run build:showcase 生成;上方的在线预览链接通过 htmlpreview.github.io 路由,任何人都能直接在 GitHub 上点开,无需克隆仓库。
A3L 代表 Agent Abstract Assembly Language:
- Agent:优先服务 AI Agent,而不是优先服务人类手写。
- Abstract:表达高于原始 HTML/CSS/JS 的 UI 和开发意图。
- Assembly:像汇编一样短、紧凑、面向编译器。
- Language:它是一门有确定编译边界的独立 DSL。
A2UI 给 A3L 的核心启发是架构层面的:把结构、状态、动作声明式拆开。A3L 保留这种分离思想,但用更短的符号语法替代 JSON,因为 JSON 会在 key、引号、逗号、花括号上消耗大量 token。
生产级 A3L 优先从 capsule 开始:一个高层意图 opcode 可以编译出完整 HTML/CSS/JS。
!counter#app"Counter"
运行精确的“源码到生成 HTML”展开基准:
npm run bench:tokens当前 o200k_base 结果显示所有 production capsule case 都超过 20x 展开目标,详见 reports/token-report.md。这项基准没有把 A3L 与等价 Markdown 答案对比。
A3L 现在采用三层扩展模型:
- Lower:精确表达一次性的 HTML/CSS/state/event。
- Middle:26 个自闭环可复用组件,可以嵌入自定义布局。
- Upper:完整页面或页面流程模板,现在由中层组件加少量 lower glue 组合而成。
更多说明:
- 架构模型:
docs/ARCHITECTURE.md - 内置能力全貌:
docs/COMPONENT_CATALOG.md - 设计系统研究:
docs/DESIGN_SYSTEM_RESEARCH.md - 三层压缩率数据:
reports/layer-report.md
当 AI 需要精确控制结构、样式、状态和事件时,仍然可以使用 lower-layer A3L:
=t"Counter"
main#app.app(h1"A3L Counter" p#read($n) button#inc.btn"+")
.app{w:360;mx:a;mt:18vh;p:28;ta:c;bg:#fff;br:16}
.btn{p:10/18;bd:0;br:999;bg:#111827;c:#fff;cur:p}
$n=0
#inc@click{n++;#read.txt=n}
编译:
npm test
node bin/a3c.js examples/capsule-counter.a3 -o dist/counter默认输出一个自包含文件:
index.html
a3c 每次编译后都会打印 A3L 源码到生成 HTML 的精确 token 数据。它是展开/复用指标,不是 Markdown A/B 节省。如果明确需要三文件 bundle,可以使用:
node bin/a3c.js examples/capsule-counter.a3 --bundle -o dist/counter-bundle!counter#app"Counter":生产 capsule。=t"Title":metadata。main#id.class(...):HTML tree。.class{p:24;br:8}:带别名的 CSS。$n=0:state。#btn@click{n++;#out.txt=n}:event action list。
正式 MVP 语法和别名表见 docs/SPEC.md。
给通用 Agent 使用的短提示面见 docs/AI_AUTHORING_GUIDE.md。
npm test
npm run bench:coverage
npm run bench:layers
npm run agent:smoke
npm run ai:smokenpm run ai:smoke 会调用本机 codex exec,给它短需求并要求它独立写 A3L,然后编译、校验输出和压缩率。最新结果保存在 reports/ai-smoke.md。
完整生产门禁:
A3L_CODEX_BIN=/path/to/codex \
A3L_EVAL_JUDGE=codex-default \
A3L_EVAL_JUDGE_COMMAND=scripts/codex-judge-provider.js \
npm run verify:prod生产门禁在没有真实判分器时会主动失败,不会悄悄退回 mock。源码仓库提供 Codex 与 Claude Code 两种适配器,也可以换成任何遵循文档所述 JSON stdin/stdout 协议的可执行程序。仅运行真实判分 Skill 门禁可使用 npm run skill:eval:prod:codex 或 npm run skill:eval:prod:claude;Claude 版本更适合较慢的手动或定时验证。
编译器使用成熟的 Node.js runtime 和 node:test。唯一 dev dependency 是 @dqbd/tiktoken,用于使用 o200k_base 做真实 tokenizer 计量。
标准 skill 入口是 skills/a3l/SKILL.md;编译器 runtime 已包含在同一目录中,因此冷安装后的 skill 不依赖目标工作区存在本仓库的 bin/、src/ 或 node_modules/。
优先使用上方一命令 Skill 安装。agent-adapter/ 下的片段只用于源码仓库或没有 Skill 发现能力的 Agent。所有入口遵循同一决策:较长、结构化、适合类 PPT 汇报的结果使用 A3L;保留精确证据;没有合适 capsule/compiler 或编译失败时,回退为简洁 Markdown。
本地顺滑查看:
npm run serve:present
# 打开 http://127.0.0.1:41731/present/<topic>.html手动 smoke test:
echo '!status#app"Adapter Ready"[state=Ready ok=1 warn=0 fail=0 next="Use A3L for structured summaries"]' | node bin/a3present.js -公开 A2UI 文档描述的是 JSONL/JSON-oriented protocol,包含组件目录以及 UI 结构和状态分离。A3L 继承分离原则,但把 JSON 替换成紧凑源码形式,并通过 target-neutral IR 为未来的 shell、Node、React、Python 等 emitter 留出扩展路径。
参考: