构建通过本身不能证明应用 surface。用一条短链路,并记录每一步实际证明了什么。
验收链
| 步骤 | 命令 | 证明 | 不能证明 |
|---|---|---|---|
| DSL | arc dsl validate <dir> | 声明的 AUP/DSL 源可解析 | 运行时行为或 HTTP 200 |
| Package 契约 | arc blocklet check [dir] --profile <p> | 满足 recipe/profile 要求 | 浏览器布局 |
| 约定扫描 | arc blocklet dev [dir] | 检测到的内容类型 / mount / 索引提示 | 正在提供服务 |
| 构建 | arc blocklet build [dir] | 写入了 dist/ 与 AFS/flat manifest | 读者看到了目标页 |
| Inspect | arc blocklet inspect <dir> | Package 身份 + 文件列表(+ 发布状态) | UX 正确 |
| 本地运行 | arc blocklet run / service start --blocklet | 可观察本地 surface | 远程部署健康 |
arc blocklet check
arc blocklet check ./demo-basic
arc blocklet check ./demo-min --profile minimal-appCLI 接受的 profile:basic(默认)、minimal-app、agent-workspace、support-community。
已验证输出:
Passed blocklet check (basic)
dir: /…/demo-basic
AUP pages: (none)
web sections: 0
agents: 0
settings files: 0
Passed blocklet check (minimal-app)
dir: /…/demo-min
AUP pages: agent, home, settings
web sections: 1
agents: 1
settings files: 5arc blocklet validate 是 check 的别名(措辞更偏校验)。
脚本化时用 JSON:
arc blocklet check ./demo-min --profile minimal-app --jsonarc dsl validate(与 lint)
arc dsl validate ./demo-min
# Passed DSL validation
# path: /…/demo-min
# files: 16arc dsl lint 可能在脚手架输出上报告格式漂移:
Failed DSL lint (3 changed)
ERROR format_changed .aup/app.aup: File is not formatted. Run arc dsl format --write.需要干净 lint 时用 arc dsl format --write <dir>。check 仍可通过而 lint 报 format_changed——它们回答不同问题。
arc blocklet build
arc blocklet build ./demo-basic
arc blocklet build ./demo-min已验证:
Published 1 file(s) → /…/demo-basic/dist
.afs/manifest.json (http-mount protocol)
blocklet.dist.json (flat manifest)
instance: stateless
Published 20 file(s) → /…/demo-min/dist
.afs/manifest.json (http-mount protocol)
blocklet.dist.json (flat manifest)
instance: requires /instance DID Space| 参数 | 默认 | 含义 |
|---|---|---|
--output <dir> | <dir>/dist | 输出目录 |
--dry-run | false | 只计算 manifest,不写盘 |
--clean | true | 写入前清理输出 |
不要手改 dist/。除非发布流程明确要求生成物,否则不要提交它(本站 blocklet 对 dist/ 与 .web-cache/ 做了 gitignore)。
构建 demo-basic 后的 .afs/manifest.json 片段示例:
{
"afs": "1.0",
"type": "readonly-tree",
"files": [
{
"path": "blocklet.yaml",
"size": 107,
"contentType": "text/yaml",
"sha256": "aeb371c705d2…"
}
]
}arc blocklet inspect
arc blocklet inspect ./demo-basic
arc blocklet inspect ./demo-min已验证形态:
Blocklet: demo-basic (demo-basic)
path: /…/demo-basic
version: 0.1.0
did: did:blocklet:demo-basic
status: published
files: 1 (107 bytes)
blocklet.yaml (…)
Blocklet: demo-min (demo-min)
path: /…/demo-min
version: 0.1.0
did: did:blocklet:demo-min
status: published
files: 20 (4468 bytes)
.afs/preflight.json
.aup/app.aup
…status: published 在此表示本地存在 dist/ 产物,供 inspect/list 使用——不是远程 DID Space 或 Cloudflare 部署成功。
arc blocklet dev
arc blocklet dev ./demo-basic
# Blocklet: /…/demo-basic
arc blocklet dev ./demo-min
# Blocklet: /…/demo-min
# Content type: aup
# Index: pages → /
# Mount: agents/app-agent → /agents/app-agent
# Mount: pages → /pages把 dev 当作目录约定报告,不是服务器。
arc blocklet list
arc blocklet list .已验证:
Blocklets under /…:
demo-basic v0.1.0 [published]
path: demo-basic
demo-min v0.1.0 [unpublished]
path: demo-min成功 build 后该 package 的状态会变为 published。
记录一次验收笔记
对重要变更保留短记录:
arc --version- 确切的
checkprofile 与结果 build文件数 +instance:行- 本地 URL 与 HTTP/浏览器结果
- 明确说明远程发布未纳入测试(或已纳入及目标)
CLI 手册:arc blocklet。诊断模式:测试与诊断。