跳到主要内容

arc dsl

arc dsl 校验、检查、格式化、生成、检视 AUP DSL 相关的产物,pages/layout.aup 这类文件用的就是这套语言。

arc dsl 处理 AUP DSL,.aup 文件(比如页面的 layout.aup)用的声明式语言。除了 lsp,每个子命令都接受一个路径(一个 .aup 文件或者一个 blocklet 目录),不填默认当前目录。

对照版本:arc 2.0.0-beta.50(commit a99fb2c37,main,2026-09-11)。复制 dump 前先跑 arc --version;钉住命令面的是 commit。

bash
arc dsl <subcommand> [path] [options]

全局选项(见 总览):--json--view--instance / -i(作用在哪个本地 ARC 实例;省略即 default),以及 --home(实例根;要指定作用在哪个实例,用 --instance)。

arc dsl lint

检查 DSL 格式和语义有效性。这是这个仓库自己合并门里跑的四项检查之一。

用法

bash
arc dsl lint [path] [options]
  • --fix:lint 之前先应用所有安全的修复
  • --fix-format:用规范格式重写 DSL 源文件
  • --fix-ids:从页面 DSL 源文件里移除没被引用的显式 id
  • --fix-locales:清理 DSL 源文件里没引用到的 locale JSON key

arc dsl validate

校验一个 .aup 文件或 blocklet 目录。合并门四项检查里的第二项。

bash
arc dsl validate [path]

示例

bash
$ arc dsl validate
Passed DSL validation
  path: /path/to/your/blocklet
  files: 368
Next: arc blocklet build /path/to/your/blocklet

成功时会打印一个 Next: 提示指向下一步该跑的命令(arc blocklet build);失败时每条问题按 ERROR <rule> path:line:col: message 的格式报出来。dsl 的子命令里只有这一个会打印 Next: 提示——lintformatgeneratedecompiledoctormigrate-i18n 都不会。

arc dsl schema

打印 AUP DSL 的语言 schema 和 primitive 元数据。

bash
arc dsl schema [path]

示例

bash
$ arc dsl schema
Passed DSL schema
  path: /path/to/your/blocklet
  root: /path/to/your/blocklet
  primitives: 63
  aliases: 12
  snippets: 4
  files: 0

这几个数字是按项目算的:一个自己定义了 primitive(通过 .scaffold/*.dsl)的 blocklet,primitives 数字会比一个普通 blocklet 高,而内置的那部分总数也会随着 DSL 语言在各个版本里新增 primitive 而变化——想看当前的准确数字,直接跑一次命令,不要把这里的任何固定数字当成一直不变的事实。

arc dsl format

格式化页面 .aup 文件。

用法

bash
arc dsl format [path] [options]
  • --check:如果格式化会改动文件就失败退出
  • --write:原地重写文件

arc dsl generate

app.aup 生成 app.json 和页面 JSON 产物。

用法

bash
arc dsl generate [path] [options]
  • --check:如果生成的产物会变化就失败退出
  • --write:原地重写生成的产物

全新的 minimal-app 脚手架零修改时,--check 目前以 5 退出(.aup/app.json.aup/pages/agent.json.aup/pages/home.json.aup/wrapper.json 上的 generated_changed)。完整检查链见 arc blocklet create

arc dsl decompile

把生成的 AUP JSON 产物反编译回 AUP DSL 源文件,是 generate 的反方向。

用法

bash
arc dsl decompile [path] [options]
  • --check:如果反编译出的 DSL 会改动文件就失败退出
  • --write:原地重写反编译出的 DSL 文件
  • --partial:能反编译的部分照写,缺失的页面产物降级成警告而不是直接失败

arc dsl doctor

把 decompile、format、regenerate-check、validate 一起跑一遍,一条命令检查 DSL 产物的健康状态。

用法

bash
arc dsl doctor [path] [options]
  • --check:如果 doctor 会改动文件就失败退出
  • --write:验证前先原地重写反编译出的 DSL 文件

同一份零修改的 minimal-app 脚手架上,arc dsl doctor 目前以 5 退出(decompile step: failed (0 files, 0 changed))。完整记录见 arc blocklet create 下的检查链。

arc dsl migrate-i18n

把精确匹配的 $t(page.key) 字符串挪进页面本地的内联 i18n 块。

用法

bash
arc dsl migrate-i18n [path] [options]
  • --check:如果迁移会改动文件就失败退出
  • --write:原地重写页面 DSL 和 locale JSON 文件

arc dsl language

检视 DSL 诊断信息、补全建议、hover 元数据,编辑器集成背后的机制。

用法

bash
arc dsl language [path] [options]
  • --line <n>:查补全/hover 用的行号(从 1 开始)
  • --column <n>:查补全/hover 用的列号(从 1 开始)

arc dsl lsp

启动一个 JSON-RPC language server,给 AUP DSL 的编辑器集成用。

bash
arc dsl lsp