面向计算机体系结构的 自动化 Idea Factory——覆盖 CPU 核、存储层次、片上互连、空间加速器、晶圆级织物 等芯片设计问题,不限于某一种互连拓扑。对照论文 Computer Architecture’s AlphaZero Moment(arXiv:2604.03312),实现 Generation + Tier0–5 Evaluation 闭环,并预留 Tier6 物理签核。
Feedback / 部署遥测层仅留接口,实现暂缓。Tier6 签核仅预留,不执行 OpenROAD/sky130。
论文 PDF 与一页解读:docs/2604.03312v1.pdf · docs/ArchAlphaZero-paper-post.html
| 层 | 状态 | 说明 |
|---|---|---|
| NDF-lite 规范 | Implemented | CTX/REQ/NNG/ACC/DOF/DEC + lint;ACC 数值解析进 T2–T4,每个门限标注来自条款还是缺省值 |
| 跨域指标契约 | Implemented | spec/metrics.py 注册表(CPU/cache、NoC、dataflow、wafer);能测但无门限 → report-only;无评估器 → Tier2 拒判(archzero acc) |
| CPU / 存储层次 | Implemented | ChampSim / gem5 / stub / dedicated 事件模型;MPKI、IPC、DRAM 带宽;new-spec --domain cache|cpu|memory |
| NoC 解析后端 | Implemented | 8×6 iso-wire mesh/torus α-β + 对分带宽模型;产出 p95/p99/goodput/利用率,不发明 MPKI 门限 |
| Generation | Implemented | 读论文、clean-room、§5.1 frontier、auto-round |
| Tier0 / Tier1 | Implemented | LLM 硬筛 + 多专家;provenance / evidence |
| Tier2 | Implemented | 沙箱 + ensemble 多数决 + spec/functional verifier;-c archzero.paper.toml 可开 ×3 |
| Tier3 directed / dedicated / noc / dataflow / wafer | Implemented | directed 机制模型;领域解析后端自动路由;晶圆良率/热密度仍不可测;-c archzero.paper.toml 开 llm_dedicated_sim |
| Tier3/4 ChampSim | Optional | 二进制缺省→UNAVAILABLE(strict_evidence);见 tools/CHAMPSIM.md |
| Tier3/4 gem5 | Scaffold | 需本机 gem5 + agent harness |
| Tier5 RTL | Implemented | pyCircuit DSL→Verilog→Verilator;缺工具→UNAVAILABLE |
| Tier6 Signoff | Deferred | 暂不实现 OpenROAD/sky130;evaluate_tier6 恒 UNAVAILABLE |
| Evolution | Implemented | MAP-Elites + reenter;失败消除度量。OpenEvolve 经 vendor/openevolve + Cursor shim |
| Corpus | Scaffold | 4 条目(含 1 条真实 PDF 示例);corpus / corpus-add-pdf / corpus-import-wiki / corpus-eval-offline;不发明成功率 |
| Scale-out | Prototype | Jaccard 去重 + LocalWorkerPool(单机) |
| Feedback 遥测 | Deferred | 暂不实现;NullFeedbackSource only |
ProblemPackage (NDF-lite)
│
▼
Comprehension → Clean-room Ideation → Frontier 扩题
│
▼
Tier0 → Tier1 → Tier2 → Tier3 → Tier4 → Tier5 ⇢ Tier6(reserved)
硬筛 对抗评审 解析模型 ChampSim 全仿真 pyCircuit RTL 物理签核
│
└── Evolution (MAP-Elites / OpenEvolve) → 回流漏斗
先看它做什么,再决定要不要配 key。以下三条命令全离线:
uv sync --extra dev
uv run archzero seed-demo # 四条离线战役:CPU/缓存(可评判)/ NoC / dataflow / 晶圆良率拒判
uv run archzero ui # http://127.0.0.1:8787/看板里默认先看 CPU / 缓存 战役(specs/demo.md:MPKI / DRAM 带宽门限来自条款,ChampSim/gem5/stub 可评判)。另外几轮演示漏斗如何对待别的芯片问题:NoC / dataflow 是 report-only(有解析模型、规范没写数值门限就不裁决);晶圆良率/热密度仍无模型,拒判而不是用 hop/d2d 冒充。
uv run archzero acc specs/demo.md # CPU/缓存:四个门限全部来自条款 → 可评判
uv run archzero acc specs/noc_low_tail_collectives.md # 互连:可测、report-only(缓存缺省门限不生效)实跑 LLM 需要 Cursor Pro 及以上(Start 计划不含 SDK)。Python ≥ 3.11,推荐 uv。
export CURSOR_API_KEY="cursor_..." # Dashboard → Integrations
uv run archzero doctor # 检查 API key / personas / sim / corpus缺 key 时 doctor 只报 warn 不退出——上面那些离线命令照常可用。
可选:uv run archzero init 写入默认 archzero.toml 并创建 .archzero/ 状态目录。
| 层 | 必需? | 依赖 | 安装 |
|---|---|---|---|
| 核心 Python | 是 | cursor-sdk、pydantic、typer…(见 pyproject.toml) |
uv sync --extra dev |
| ChampSim(T3/T4 实证) | 可选 | 主机:g++/cmake/git/curl/zip/unzip;vcpkg:fmt、cli11、nlohmann-json、bzip2、liblzma、zlib、catch2 |
JOBS=2 bash tools/setup_champsim.sh(详 tools/CHAMPSIM.md) |
| Traces | ChampSim 用 | 合成或 DPC 轨迹 | uv run python benchmarks/fetch_traces.py --synthetic |
| pyCircuit / RTL(T5) | 可选 | LLVM/MLIR 19、cmake、ninja、verilator、iverilog |
bash tools/setup_pycircuit.sh(需 sudo) |
| gem5 | 可选 / scaffold | 本机 gem5 二进制 + run_gem5.py harness |
自行安装;缺省 fail-closed |
| Tier6 / Feedback | 延期 | — | 不安装 |
ChampSim 主机包(Ubuntu/Debian)示例:
sudo apt-get install -y \
build-essential cmake ninja-build git curl zip unzip pkg-config tar ca-certificates
JOBS=2 bash tools/setup_champsim.sh若出现 fmt/core.h: No such file,说明 vcpkg 未装好或 absolute.options 过期——重新跑上述脚本即可(勿只装系统 libfmt9)。
# ChampSim + 合成 demo traces(完整依赖见 tools/CHAMPSIM.md)
JOBS=2 bash tools/setup_champsim.sh
uv run python benchmarks/fetch_traces.py --synthetic
# pyCircuit (LLVM 19 apt + pycc,建议 JOBS=2,需 sudo)
bash tools/setup_pycircuit.sh在 archzero.toml 中:
[sim]
backend = "champsim" # stub(默认)| directed | champsim | gem5
champsim_bin = "tools/champsim/bin/champsim"
traces_dir = "benchmarks/traces"
[funnel]
strict_evidence = true # 真实后端不可用时 T3+ → UNAVAILABLE,绝不假 PASS
ensemble_n = 1
use_verifiers = true
llm_dedicated_sim = false
[rtl]
pycircuit_root = "vendor/pycircuit"
pyc_toolchain_root = ".pycircuit_out/toolchain/install"
[sign]
enabled = false # Tier6 reserved论文协议更密的漏斗(ensemble×3 + directed + dedicated_sim)用旁路配置,不必改默认文件:
uv run archzero -c archzero.paper.toml run --spec specs/demo.md --through tier3 --n 5uv run archzero models
# uv run archzero models --refresh # 绕过目录缓存- 默认模型:全部 Task 默认走池 1 的
cursor-grok-4.6-high-fast(可在archzero.toml[pools].preferred_cursor改) - 池 1 Cursor Models(含量充裕):
cursor-grok-4.6-high-fast、cursor-grok-4.6、cursor-grok-4.5-high-fast、composer-2.5 - 池 2 Other Models(按 API 计价):Claude / GPT / Gemini… — 仅在
routing.routes显式指向other时使用 - SDK 别名:配置里可用
cursor-grok-4.6-high-fast;调用create_agent时会映射为grok-4.6+effort=high+fast=true(Cursor.models.list()只列出基座 id)
参数含义(--through / --n / 有无 PDF / 何时扩题与进化)见下文 CLI 参数说明。
uv run archzero spec specs/demo.md
uv run archzero run --spec specs/demo.md --through tier2 --n 8
uv run archzero report --out report.md一条命令走完「问题 → 对题 idea → 漏斗」(默认 diverge + run + report):
uv run archzero flow --spec specs/demo.md --through tier2默认漏斗形状(单 NDF、一轮 campaign):跨域发散 ~72 进 T0 → 配额保留 80 / 40 / 10。
配额见 archzero.toml 的 [quotas];T1 默认否决(tier1_advisory=false);
Tier0 默认批量硬筛(tier0_batch_size=10)。无 LLM 的 knob 网格默认关闭
(拓扑专用规格上过不了 T0 物理);需要体积时再显式开:
uv run archzero seed-library --spec specs/demo.md -o seeds/ --n 80
uv run archzero run --spec specs/demo.md --seed-dir seeds/ --no-diverge --through tier0
# 默认:只 diverge,不灌种子网格
uv run archzero run --spec specs/demo.md --through tier2跨领域发散(8 理论透镜 × 24 跨域来源 × 3 发散模式 组合矩阵,每个 cell 一次 LLM 调用):
uv run archzero diverge --spec specs/demo.md --dry-run # 只看矩阵与调用数,不花钱
uv run archzero diverge --spec specs/demo.md -o divergence/ # 默认 12 次调用 → 72 个 idea
uv run archzero run --spec specs/demo.md --diverge --through tier2默认 --cells 12 --per-cell 6(≈72)进 Tier0。加 --seed-library 才合并 knob 网格。
--lens / --domain 可白名单收窄;来源目录见 archzero/generation/domains.py。
每个 idea 的 metrics 会记下 diverge_lens / diverge_domain / diverge_mode,
方便事后统计哪类跨域最能活到最后。
Tier0 默认按 tier0_batch_size=10 批量筛查;设为 0 可恢复逐个候选一次调用。
有论文 PDF 时:
uv run archzero read path/to/paper.pdf -o insights.md
uv run archzero ideate path/to/paper.pdf --spec specs/demo.md -o candidates/
uv run archzero run --spec specs/demo.md --pdf path/to/paper.pdf --through tier4扩题后自动再跑漏斗(§5.1 auto-round;默认关闭,需显式打开):
uv run archzero run --spec specs/demo.md --n 5 \
--expand-frontier --frontier-offline --auto-round 1进化搜索(独立命令,针对已进入 Tier2+ 的候选;不会在 run 里自动执行):
uv run archzero evolve --campaign <campaign_id>
# uv run archzero evolve --campaign <id> --generations 5 --no-reenteruv run archzero doctor # API key / personas / sim / corpus 前置检查
uv run archzero seed-demo # 离线示例 campaign(无需 LLM,立刻可看漏斗)
uv run archzero campaigns # 列出 campaign
uv run archzero status <campaign_id> # 漏斗吞吐快照
uv run archzero show <candidate_id> # 机制全文 + tier 历史 + 失败归因
uv run archzero ui # 本地看板 http://127.0.0.1:8787/
uv run archzero new-spec \
--title "LLM Decode Bandwidth" \
--workload "Llama-70B decode" \
--symptom "L2 MPKI spikes" \
--constraint "<=0.5mm^2" \
--out specs/ # 脚手架生成 NDF-lite 问题包并 lint
uv run archzero export --campaign <id> --out bundles/ # 可复现产物包
uv run archzero compare <campA> <campB> # 两轮漏斗 / 失败 taxonomy 对比
uv run archzero next-questions --campaign <id> # 失败回流成下一轮开放问题(Feedback 替身)
uv run archzero frontier --spec specs/demo.md --offline # §5.1 纵向/横向/基础扩题 + 理论透镜
uv run archzero run --spec specs/demo.md --n 5 \
--expand-frontier --frontier-offline # 漏斗后自动范式扩题
uv run archzero run --resume <campaign_id> --through tier3 # 断点续跑
uv run archzero e2e --spec specs/demo.md --offline # 离线演示到 Tier5
uv run archzero reproduce bundles/<exported>/ # 校验可复现包 + stub 回放uv run archzero corpus # 状态 / coverage;scaffold 时 success_rate 恒为 null
uv run archzero corpus-add-pdf <entry_id> path/to.pdf \
--title "…" --family prefetch --label equivalent
uv run archzero corpus-import-wiki /path/to/wiki --dry-run # 仅导入原始 PDF
uv run archzero corpus-eval-offline --through tier2 --limit 3 # FakeLLM 离线批跑仓库内示例:bash tools/demo_corpus_pdf.sh(注册 docs/2604.03312v1.pdf)。细节见 corpus/README.md · corpus/EXAMPLE_WORKFLOW.md。
看板只读 Generation + Evaluation 状态(遥测层仍暂缓),便于对照论文漏斗进出量与失败模式。
中文快速入门:docs/researcher-quickstart.html(或 archzero ui 后打开 /quickstart.html)。
这是旁路模块,不装也不影响上面任何命令。 核心链路到「SOTA 方案 + report / export / compare」就已经闭环。
uv sync --extra patent # 只为 pptx 渲染;不装则 --md-only 仍可用对漏斗幸存者生成六段式交底书 + 16:9 评审 PPT:
uv run archzero patent --candidate <candidate_id> -o patents/
uv run archzero patent --campaign <campaign_id> --top 3 -o patents/
uv run archzero patent --candidate <id> --md-only # 只出 Markdown,无需 python-pptx
uv run archzero patent --candidate <id> --no-search # 跳过联网检索
uv run archzero flow --spec specs/demo.md --patent # 一条龙带专利产出的六段对应华为内部专利评审模板:
| 段落 | 数据来源 |
|---|---|
| 一、问题背景描述 | 问题包 CTX / REQ / ACC 条款原文 + LLM 归纳 |
| 二、现有技术描述 | arXiv / Semantic Scholar 检索结果 + LLM 归纳 |
| 三、本方案的技术方案 | candidate.mechanism + Tier2 的 SPECIFICATION.md / model.py |
| 四、技术保护点 | LLM 抽 3-8 条,每条标必要技术特征与从属关系 |
| 五、有益效果 | 直接读 candidate.metrics 的实测数字,对照 ACC 门限并标注证据等级 |
| 六、检索与对比 | 逐条「相同点 / 不同点 / 区别性技术特征 / 新颖性威胁等级」 |
两条诚实性约定,和漏斗 Tier5/Tier6 宁可报 UNAVAILABLE 也不假 PASS 是同一套逻辑:
- 数字只来自漏斗。 第五段的数值由
Candidate.metrics填充,LLM 只负责措辞;没跑到 Tier2 的候选会在该段直接标注「无实测指标,需补充仿真数据」。 - 检索状态会跟着走。 结果带
retrieval_status = ok | partial | offline,断网时不编造文献,封面和末页都会打「未经核实」提示。检索结果按 query hash 缓存在.archzero/prior_art/,重跑可离线复现。
专利库(而非论文库)本次不自动检索,改为产出 IPC 分类号 + 中英文检索式建议,PPT 上明确标注需在内部专利库人工执行。
ArchZero 的问题包可以是 CPU 微结构、缓存 / 存储层次、NoC、数据流加速器、晶圆级织物——漏斗按规范声明的量评分,而不是把所有芯片问题都收成 L2 预取器。
| 领域 | new-spec --domain |
漏斗现在能测什么 | 仍不能测 |
|---|---|---|---|
| CPU 核 / 缓存 / 存储 | cache、cpu、memory |
MPKI、IPC、DRAM 带宽(ChampSim / gem5 / stub) | 完整核级 RTL 时序(Tier5 仍是缓存耦合基线) |
| 片上互连 | noc |
p99 / goodput / 抖动税(解析模型,非 flit 级) | 周期精确 NoC RTL |
| 空间数据流 | dataflow |
PE 利用率、reuse、SRAM 流量(解析 mapper) | Timeloop / 脉动 RTL |
| 晶圆级织物 | wafer |
hop 时延、die-to-die BW | 良率、冗余代价、热密度 |
漏斗曾经只认四个缓存量。一份写得很好的 NoC 问题包会静默退化成 >=15% MPKI。现在:
- 指标注册表声明每个量的领域和评估器。CPU/缓存路径保持可评判;其它领域用自己的后端,缺评估器就拒判。
- 只应用规范声明的门限。 缺省的缓存数字不再拿来 fail 一份从未提过 MPKI 的规范。
- 能测但无门限 → report-only;完全不可测 → 拒判。
- ChampSim / gem5 对非 CPU/缓存 family 标
inapplicable,不发明 MPKI。
uv run archzero acc specs/demo.md # CPU/缓存:门限「规范声明」→ 可评判
uv run archzero acc specs/noc_low_tail_collectives.md # 互连:可测、report-only
uv run archzero acc specs/demo.md --registry # 完整跨域指标注册表
uv run archzero new-spec --domain cpu --title "..." ... # 与 --domain cache 同一套存储层次模板想强行按缓存门限跑非缓存问题(结论不可信):archzero.toml 里设 [funnel] strict_acc = false。
仿真后端由注册表解析(archzero.sim.registry)。[sim].backend 拼错不再静默退回 stub;第三方可通过 archzero.sim_backends entry-point 注册新评估器。
全局选项:任意子命令前可加 -c / --config path.toml(例如论文协议旁路 archzero.paper.toml)。
常用流程命令:spec → run →(可选)frontier / evolve → report。完整列表见 uv run archzero --help。
uv run archzero run --spec specs/demo.md [--pdf paper.pdf] \
--through tier2 --n 8 \
[--seed-dir candidates/] \
[--expand-frontier] [--frontier-offline] [--auto-round 1] \
[--resume <campaign_id>] [--name "..."] [--max-tokens N]| 参数 | 默认 | 含义 |
|---|---|---|
--spec |
(必填,除非 --resume) |
NDF-lite 问题包路径。Generation / Evaluation 都按其中的 CTX/REQ/ACC/DOF 执行 |
--through |
tier2 |
漏斗停在哪一层(含该层)。候选从 Tier0 起逐级评估,通过后才进下一层;到 --through 后停止。合法值:tier0…tier6(tier6 预留,会得到 UNAVAILABLE) |
--n |
10 |
本轮要生成多少个新候选(在未提供 --seed-dir 时)。有 PDF 时做 N 次 clean-room 出题;无 PDF 时做 N 次「只读问题包」独立出题。已有内容哈希重复的会被去重丢掉 |
--pdf |
无 | 可选论文 PDF。见下节「有/无 PDF」 |
--seed-dir |
无 | 若给出目录,则不再生成,改为加载其中已有候选 Markdown,直接进漏斗 |
--expand-frontier |
关 | 漏斗跑完后,按 §5.1 做范式扩题(纵向/横向/基础),从失败信号长出新问题包。默认不扩题 |
--frontier-offline |
关 | 扩题时用确定性理论脚手架,不调用 LLM(需同时开 --expand-frontier) |
--auto-round N |
0 |
扩题后,把新问题包再跑漏斗 N 轮(仅在开了 --expand-frontier 时有意义)。0 = 只扩题不回流 |
--resume ID |
无 | 续跑已有 campaign:补跑未完成 / 未硬通过 --through 的候选;可同时提高 --through |
--name |
自动 | campaign 显示名 |
--max-tokens |
无 | 本次进程可选的 Cursor 池 token 上限(写入预算配置) |
| 值 | 层 | 作用(简述) |
|---|---|---|
tier0 |
硬筛 | LLM 快速否决明显不可行 / 非目标越界 |
tier1 |
对抗评审 | 多人设质疑新颖性、正确性、可行性 |
tier2 |
解析模型 | 沙箱定量模型 + verifier;默认日常停在这里 |
tier3 |
定向/轻仿真 | directed / ChampSim 等(缺后端且 strict_evidence 时 → UNAVAILABLE) |
tier4 |
更重仿真 | 全仿真路径(gem5 等,视配置) |
tier5 |
RTL | pyCircuit → Verilog → Verilator |
tier6 |
签核 | 预留,不跑 OpenROAD |
例:--through tier4 表示候选最多评到 Tier4;没通过 Tier2 的不会被送到 Tier3/4。
--seed-dir和/或显式--seed-library→ 无 LLM 种子(体积,默认关)- 若
divergence.enabled(默认开)或--diverge→ 跨域矩阵 idea,与种子(若有)合并后再去重 - 否则若给了
--pdf→ clean-room:读论文 + 对照--spec,生成--n个机制候选 - 否则 → 仅按问题包条款 / DOF 独立生成
--n个候选
打开体积路径:--seed-library;关闭发散:--no-diverge。两者都关且无 --seed-dir 时才走 --n 独立出题。
| 场景 | 怎么跑 | Generation 行为 | 适用 |
|---|---|---|---|
| 无 PDF | run --spec specs/….md --n 8 |
只根据问题包出题;不依赖某篇基线论文全文 | 自拟问题(如 specs/noc_request_grant.md)、纯 DOF 探索 |
| 有 PDF(一次跑完) | run --spec … --pdf paper.pdf --n 8 |
Clean-room ideation:论文文本进提示,但仍要求相对问题包独立构思机制 | 对照某篇论文挖改进点,并直接进漏斗 |
| 有 PDF(分步) | read paper.pdf → ideate paper.pdf --spec … -o candidates/ → run --spec … --seed-dir candidates/ |
read 只做理解笔记;ideate 写出候选文件;run 用种子评估 |
想先审阅 insights / 候选再决定是否进漏斗 |
要点:
- PDF 不是漏斗本身的输入:Evaluation 始终以
--spec(NDF)为宪法;PDF 只影响「候选怎么生成」。 - 无 PDF 完全合法:不跑 comprehension/clean-room 论文路径即可。
read/ideate必须给 PDF;run的--pdf可选。
二者都是 漏斗之后的可选步骤,默认 run 不会自动做。
run(生成 + Tier0…through)
│
├─ 可选:--expand-frontier [--auto-round N] ← 改「问题包 / 范式」
│
└─ 另开命令:evolve --campaign <id> ← 改「已有候选机制」
扩题 frontier / run --expand-frontier |
进化 evolve |
|
|---|---|---|
| 改什么 | 问题空间:新 REQ/DOF/NNG、新范式问题包 | 解空间:在已有候选上变异 / MAP-Elites |
| 输入 | 问题包 +(可选)某 campaign 的失败信号 | 已有 campaign_id,且最好已有进入 Tier2+ 的候选 |
| 何时用 | 漏斗大量失败、发现条款有洞、要换理论透镜或换约束再搜一轮 | 已有若干过 Tier2 的机制,想在 DOF 内继续搜更好的变体 |
| 怎么调用 | 独立:archzero frontier --spec … [--campaign id] [--offline];或挂在 run:--expand-frontier;回流加 --auto-round N |
archzero evolve --campaign <id> [--generations K] [--no-reenter] |
和 run 关系 |
可嵌在同一次 run 末尾;--auto-round 会用扩出的包再开漏斗 |
不在 run 内;对已有 campaign 另跑。默认 --reenter:子代再进 Tier0…reenter_through(配置项,默认常为 tier2) |
建议节奏:
- 先
run --spec … --through tier2 --n …看吞吐与失败分类; - 失败像「问题设错了 / 范式不对」→
--expand-frontier或frontier;需要自动再评则加--auto-round 1; - 失败像「机制差一点、DOF 还没搜透」且已有 T2 幸存者 →
evolve --campaign …; - 不要指望一次
run同时隐式完成扩题和进化——必须显式打开对应开关或命令。
| 命令 | 关键参数 | 作用 |
|---|---|---|
spec PATH |
--lint/--no-lint,--register/--no-register |
校验并(默认)登记问题包;附带 ACC 可评判性警告 |
acc PATH |
--registry |
漏斗会按什么门限评判你的规范:逐项标注「规范声明 / 缺省值」,并列出无评估器的指标 |
new-spec |
--title,--workload,--symptom,--constraint,--domain {cache,noc,dataflow,wafer} |
按领域脚手架问题包骨架 |
read PDF |
-o insights.md,--personas a,b |
多专家读论文 → 笔记 |
ideate PDF |
--spec,-o dir,--n |
Clean-room 出题到目录(不跑漏斗) |
diverge |
--spec,--cells,--per-cell,--lens,--domain,--dry-run |
跨领域组合矩阵海量发散(不跑漏斗) |
flow |
--spec,--through,--cells,--patent |
一键 diverge → 漏斗 → report(--patent 默认关) |
patent |
--candidate / --campaign --top,--md-only,--no-search |
可选:六段式交底书 + 评审 PPT |
frontier |
--spec,--campaign,--offline,-o |
只做 §5.1 扩题,不跑漏斗 |
evolve |
--campaign(必填),--generations,--reenter/--no-reenter |
进化搜索 + 可选回流 |
report |
--campaign,-o report.md |
漏斗吞吐 / 失败分类报告 |
status / show |
campaign id / candidate id | 查看进度或单个机制全文 |
export |
--campaign,-o bundles/ |
可复现产物包 |
e2e |
--spec,--through,--offline/--online |
离线友好的演示路径(默认可到 tier5) |
Idea Factory 的「宪法」是一份 Markdown ProblemPackage(NDF-lite)。Generation 按条款探索,Evaluation 按条款裁决;条款 ID 应稳定,便于失败归因与跨轮复用。完整示例见 specs/demo.md;脚手架:uv run archzero new-spec …;校验:uv run archzero spec path/to/spec.md。
---
id: pp-demo-cache
title: "Demo — reduce L2 miss penalty under LLM decode traffic"
open_questions:
- Can a small predictor cut MPKI without blowing area?
decisions: []
workload: "LLM decode / token generation"
---
# <与 title 一致的标题>
### CTX-001 — Workload context
…
### REQ-001 — Miss-rate reduction
`refines: CTX-001`
…| 区域 | 规则 |
|---|---|
| YAML frontmatter | 建议含 id、title;可选 open_questions、decisions、workload 等元数据 |
| 正文标题 | # … 一级标题;条款用三级标题 |
| 条款标题格式 | ### <KIND>-<NNN> — <短标题>(— / - / : 均可) |
| 条款 ID | CTX|REQ|ACC|DOF|NNG|DEC + - + 数字,例如 REQ-001;全局唯一、创建后勿改号 |
| 精化链接 | 正文内一行 `refines: REQ-001, REQ-002`(逗号分隔多个父条款) |
| 可测标记 | ACC 可写 `measurable: true`(ACC 默认即视为可测) |
| 前缀 | 全称 | 含义 | 写什么 |
|---|---|---|---|
| CTX | Context | 问题成立的背景与边界条件 | 负载特征、基线症状、硬件信封(工艺/面积/带宽/延迟预算)、假设与场景。不写「应当达成什么」 |
| REQ | Requirement | 规范性要求(shall / must / must not) | 相对基线的目标与硬约束。用可核对的指标与阈值(如「L2 MPKI ≥15% 下降」「带宽增加 ≤5% @ iso-IPC」) |
| NNG | Non-goal | 明确不做 / 不改的范围 | 防止搜索漂移:如「不改 ISA / 不动 NoC / 不要求 OS 改动」。与 REQ 对立面互补 |
| ACC | Acceptance | 可执行的验收标准 | 怎样算通过某一 REQ:解析模型阈值、Magic Gap、仿真 workload、对比基线。应 refines 到对应 REQ,并尽量可测 |
| DOF | Degree of freedom | 合法探索空间 | 允许 Generation / Evolution 搜索的旋钮:表项大小、历史长度、机制族(prefetch vs filter)等。写开放空间,不写单一解 |
| DEC | Decision | 已冻结的设计决策 | 「为什么这样定」的沉淀;也可放在 frontmatter decisions。减少重复争论,后续轮次默认遵守 |
推荐精化树(refines):
CTX(场景 / 硬件信封)
└─ REQ(目标与约束)
└─ ACC(如何证明 REQ 成立)
NNG、DOF、DEC 通常挂在包级;DOF 可 refines 相关 CTX/REQ
- CTX → REQ:要求必须锚定在某个场景或资源信封上。
- REQ → ACC:每个重要 REQ 至少一条可测 ACC;一条 ACC 可 refine 多条 REQ。
- NNG:切开「优化空间」与「禁区」,避免工厂把非目标当自由度。
- DOF:告诉进化/出题「可以动哪里」;漏斗失败后扩题常沿着 DOF 或 NNG 边界推进。
- DEC:一旦写入,视为本 campaign 的既定事实,除非显式修订并记新 DEC。
- 一条条款一件事;短标题说明意图,正文写规范内容。
- REQ / ACC 用规范性用语:
shall/must/must not;避免「尽量」「可能更好」。 - 数字与基线成对出现:写清度量、对比对象、工作负载套件(或合成 trace 假设)。
- ACC 必须可判定:解析模型(Tier2)、stub/ChampSim/gem5(Tier3/4)等能给出 pass/fail;注明 Magic Gap 等容差。
- DOF 写维度与范围,不写具体获胜配置;具体配置属于 Candidate,不属于问题包。
- ID 稳定:交叉引用、失败 taxonomy、
next-questions都靠 ID;改文可以,改号会断链。 - 至少包含:≥1 条
REQ-*、≥1 条ACC-*(lint 强制);实践上还应有 CTX,并建议有 NNG + DOF。
archzero spec <file> / new-spec 后自动 lint,常见问题:
- 重复条款 ID
refines指向不存在的 ID- 缺少
REQ-*或ACC-* - ACC 正文难以看出可测性(无 measure/shall,且未标
measurable) - 空
title
---
id: pp-my-problem
title: "短标题:瓶颈 + 场景"
open_questions:
- 最值得先搜的 DOF 是哪一维?
---
# 短标题:瓶颈 + 场景
### CTX-001 — Workload / symptom
<负载与症状>
### CTX-002 — Hardware envelope
`refines: CTX-001`
<面积 / 带宽 / 延迟等信封>
### REQ-001 — Primary objective
`refines: CTX-001`
The mechanism shall <可量化目标> versus the unmodified baseline.
### REQ-002 — Hard constraint
`refines: CTX-002`
The mechanism must not <硬约束>.
### NNG-001 — Non-goals
Do not <明确不做的事>.
### ACC-001 — Analytic acceptance
`refines: REQ-001`
`measurable: true`
Tier2 analytic model shall show <目标>;Magic Gap ≤ 2× if sim available.
### ACC-002 — Simulation acceptance
`refines: REQ-001, REQ-002`
`measurable: true`
Stub or ChampSim/gem5 shall confirm the above on <workload>.
### DOF-001 — Search space
Open degrees of freedom: <可搜索维度列表>.archzero/ # 产品代码
llm/ # Cursor SDK 客户端、目录、路由、预算、shim
spec/ # NDF-lite
generation/ # 理解 / clean-room / frontier / 跨域发散(theories + domains + divergence)
personas/ # 评审/读论文人设(自 Gauntlet 精选迁入)
funnel/ # Tier0–5 + pipeline
analytic/ # 共享解析核
sim/ # stub | directed | champsim | gem5
corpus/ # clean-room 语料脚手架(ingest / offline batch)
evolve/ # MAP-Elites + OpenEvolve 适配
feedback/ # 遥测接口(暂缓)
report/ # 周级漏斗报告
patent/ # 可选:文献检索 + 六段式交底书 + 评审 PPT(uv sync --extra patent)
store/ # SQLite + 内容寻址产物
web/ # 本地研究员看板(stdlib HTTP + 单页 UI)
doctor.py # 运行前环境自检
cli.py # Typer 入口(uv run archzero …)
specs/demo.md # 示例问题包
corpus/ # 语料 manifest + papers/(见 corpus/README.md)
archzero.paper.toml # 论文协议旁路配置(ensemble / directed / dedicated_sim)
docs/analysis-*.md # 与外部仓库对照分析
状态目录(gitignore):.archzero/{factory.db,artifacts,transcripts,scratch}
| 来源 | 用法 |
|---|---|
| Gauntlet | 已移除 submodule。引擎(Anthropic/Gemini 脚本)未被调用;核心出题/评审/量化已在 ArchZero 用 Cursor SDK 重写。精选 personas/ 迁入 archzero/personas/ |
| openevolve | submodule vendor/openevolve;archzero evolve 经 archzero/llm/shim.py(OpenAI 兼容)转发到 Cursor。缺 submodule 时回退 MAP-Elites |
| normative_language | NDF 思想落地为 archzero/spec(轻量可运行版) |
| agentic_circuit_optimizer | Tier5:提交点等价门 + PPA 钩子(Yosys/OpenSTA 可选) |
分析文档见 docs/。
见 archzero.toml。全局可用 -c / --config 指定旁路文件(如 archzero.paper.toml)。关键项:
[pools]— 模型偏好与池划分[budget]— 池 2 token/调用上限、并发;可选cursor_pool_max_tokens(或run --max-tokens)[quotas]— 各 tier 保留名额[funnel]—strict_evidence/ensemble_n/use_verifiers/llm_dedicated_sim/tier0_batch_size(0= 逐个筛,>0 = 批量降成本)[divergence]— 跨领域发散enabled/n_cells/per_cell/lens_whitelist/domain_whitelist[patent]— 可选模块:search_enabled/max_hits/ 中文字体ea_font[sim] backend—stub(默认)/directed/champsim/gem5[rtl]— pyCircuit 根目录与 toolchain[sign] enabled— Tier6 预留,保持false[evolve] backend—mapelites(默认)/openevolve;reenter_through控制进化回流深度[routing].routes— Task →cursor/other(默认全走 cursor)
uv run pytest
uv run archzero doctor
uv run archzero models
uv run archzero corpus
uv run archzero run --spec specs/demo.md --through tier2 --n 5
uv run archzero report端到端成功标志:候选写入 SQLite、Tier0–2 有裁决、report.md 含吞吐 / 失败分类 / 两池用量。
可选:uv run pytest -m champsim(需先按 tools/CHAMPSIM.md 建二进制);uv run archzero -c archzero.paper.toml e2e --offline。
本仓库代码以 Apache-2.0 授权(含显式专利授权条款)。
论文归属原作者(Karthikeyan Sankaralingam / NVIDIA Research);本仓库为独立工程实现与对照笔记,不代表原作者立场。各 submodule / 外部仓遵循其自身许可证。