/* Echo-Memory project page — EN / ZH strings */ window.ECHO_I18N = { en: { "meta.title": "Echo-Memory | Echo Team", "meta.description": "Echo-Memory: A controlled study of memory mechanisms in action-conditioned world models.", "nav.home": "Home", "nav.overview": "Overview", "nav.design": "Design", "nav.checkpoints": "Ckpt", "nav.eval": "Eval", "nav.evidence": "Qual", "nav.findings": "Results", "nav.updates": "Updates", "nav.bibtex": "BibTeX", "nav.developer": "Dev Guide", "nav.github": "GitHub", "nav.menu": "Menu", "lang.toggle": "中文", "lang.current": "EN", "lang.switch": "Switch language", "hero.badge": "Echo Team · Joy Future Academy, JD · June 2026 · CC BY 4.0", "hero.title.line2": "A Controlled Study of Memory in Action World Models", "hero.subtitle": "When the camera leaves and returns, which memory keeps the same world instead of a plausible but different scene?", "hero.cta.paper": "Paper", "hero.cta.pdf": "PDF", "hero.cta.ckpt": "Checkpoints", "hero.cta.code": "Code", "hero.metric.stars": "GitHub Stars", "hero.metric.forks": "Forks", "hero.note": "Controlled memory ablations on a shared Wan action-to-video stack — reproducible rows, evaluation scripts, and qualitative revisit panels.", "hero.authors.summary": "Authors & affiliations", "hero.affiliations": "HKU · Joy Future Academy, JD · CUHK · PKU · Fudan · Tsinghua · HKUST · UMich", "overview.kicker": "01 · Overview", "overview.title": "One backbone, one protocol — only memory changes.", "overview.lead": "Echo-Memory holds the video backbone, training recipe, and data protocol fixed, and swaps only the memory module. The goal is to separate replay fidelity from return memory when the camera leaves and comes back to the same place.", "overview.b1": "Shared stack — chunk-wise action-conditioned world generation on Wan.", "overview.b2": "Controlled variable — Context, Compression, Spatial, or State-Space memory.", "overview.b3": "Three probes — replay metrics, in-domain 180° loop, open-domain edited return.", "overview.b4": "Release — ablation scripts, GT replay, revisit assets, and paper-aligned figures.", "overview.fig.cap": "Controlled memory study over chunk-wise action-world generation. Click to expand", "overview.fig.alt": "Echo-Memory framework overview", "design.kicker": "02 · Memory Design", "design.title": "Context · Compression · Spatial · State-Space", "design.lead": "All variants plug into the same write–read interface; we only change what is stored and how history is retrieved. A no-memory I2V floor re-generates from the first frame as a lower bound.", "design.context.title": "Context", "design.context.body": "Raw recent frames at K = 1, 5, or 20 chunks — tests whether longer windows alone stop drift.", "design.compression.title": "Compression", "design.compression.body": "Learned compact tokens at ratio r = 4 — history without growing raw-frame storage.", "design.spatial.title": "Spatial", "design.spatial.body": "Explicit spatial read/write state — targets layout, object pose, and viewpoint carry.", "design.ssm.title": "State-Space", "design.ssm.body": "Block-wise SSM updates — recurrent carry beyond short context windows on revisit.", "design.fig.cap": "Four memory families under a shared write–read interface. Click to expand", "design.fig.alt": "Memory design matrix", "ckpt.kicker": "03 · Checkpoints", "ckpt.title": "Paper baselines on Hugging Face", "ckpt.lead": "Wan 2.1 1.3B memory rows — epoch-0, 30,000 steps, static in-domain pool. Released weights: Echo-Team/Echo-Memory", "ckpt.th.family": "Family", "ckpt.th.row": "Paper row", "ckpt.th.path": "HF path", "ckpt.th.steps": "Steps", "ckpt.label.download": "Download", "ckpt.label.eval": "In-domain eval (Echo-Memory repo)", "ckpt.note": "Keep the row folder in CKPTenv/memory_baseline_runtime.py infers memory flags from the path. Full index: doc/checkpoints.md.", "eval.kicker": "04 · Evaluation", "eval.title": "Replay · In-domain revisit · Open-domain return", "eval.lead": "Each branch asks a different question: Can the model reconstruct the past? Can it close a loop in-domain? After an edited first frame, does it return to the same world?", "eval.replay.title": "Replay", "eval.replay.body": "PSNR, SSIM, LPIPS on chunk-wise reconstruction — measures short-horizon pixel fidelity.", "eval.indomain.title": "In-domain", "eval.indomain.body": "180° trajectory loop closure with VLM-assisted scoring on held layouts.", "eval.opendomain.title": "Open-domain", "eval.opendomain.body": "Edited first frames and 45° return probes — stresses object identity and scene persistence.", "eval.dynamic.title": "Dynamic SpatialVID", "eval.dynamic.body": "Training and inference wrappers are public; the dynamic eval protocol is TODO.", "eval.fig.cap": "Replay health vs. return memory under the same stack. Click to expand", "eval.fig.alt": "Three-branch evaluation summary", "evidence.kicker": "05 · Qualitative Evidence", "evidence.title": "Return probes expose identity drift.", "evidence.lead": "Qualitative panels follow a simple diagnostic: first frame → leave the view → revisit tail. We compare whether memory restores the same object, pose, background, and camera geometry — not merely a plausible new scene.", "evidence.chip1": "Memory Results", "evidence.chip2": "Open-Domain Sweep", "evidence.chip3": "Identity Anchors", "evidence.cap1": "Representative memory comparisons across variants. Click to expand", "evidence.dynamic.note": "SpatialVID previews use one selected training scene and the same first frame, prompt, and GT camera trajectory for a 5-second first-chunk replay across all six rows.", "findings.kicker": "06 · Main Conclusions", "findings.title": "Replay quality ≠ memory quality.", "findings.lead": "Replay metrics and return probes do not always agree — a model can look sharp on reconstruction yet fail when the camera returns. Rankings reorder once identity under revisit is measured.", "findings.b1": "Raw context — more history helps open-domain return more than replay alone.", "findings.b2": "Compression — compact tokens can preserve replay while losing identity on return.", "findings.b3": "Spatial vs. SSM — explicit state and block-wise SSM trade off layout carry and long-horizon stability.", "findings.b4": "Takeaway — treat replay as a health check, not the final memory benchmark.", "findings.fig.cap": "Rank shift from replay to return — replay is not the final memory score. Click to expand", "updates.kicker": "07 · News & Roadmap", "updates.title": "Release notes and next steps.", "updates.news": "News", "updates.roadmap": "Roadmap", "updates.news0": "SpatialVID support added: dynamic training/inference recipes, 5-second first-chunk replay previews, and dynamic eval marked as TODO.", "updates.news1": "Echo-Memory released: paper on arXiv (PDF), project page, public code, replay/revisit eval assets, and baseline checkpoints on Echo-Team/Echo-Memory.", "updates.models": "Models", "updates.eval": "Eval", "updates.rm1": "Wan 2.1 1.3B backbone and training recipes", "updates.rm2": "Four memory families — Context, Compression, Spatial, State-Space", "updates.rm3": "Dynamic training pool — SpatialVID subset export & settings", "updates.rm4": "Paper checkpointsEcho-Team/Echo-Memory", "updates.rm5": "Wan 2.2 + multi-scale 5B / 14B", "updates.re1": "Dynamic eval beyond static replay/revisit", "updates.re2": "More revisit probes and scoring presets", "community.title": "Community", "community.lead": "Join the Echo-Memory WeChat group for release updates, checkpoint questions, and maintainer coordination.", "community.qr.alt": "Echo-Memory WeChat group QR code", "community.qr.caption": "Echo-Memory 交流群 · scan to join (QR refreshes periodically)", "bibtex.kicker": "08 · Citation", "bibtex.title": "BibTeX", "bibtex.lead": "Echo-Memory: A Controlled Study of Memory in Action World Models (June 2026). Licensed under CC BY 4.0. Cite the arXiv preprint below.", "bibtex.arxiv": "arXiv", "bibtex.source": "Source", "bibtex.doi": "DOI", "bibtex.arxivid": "arXiv ID", "bibtex.pdf": "PDF", "bibtex.license": "License", "bibtex.copy": "Copy", "bibtex.copied": "Copied", "bibtex.failed": "Failed", "footer.copy": "© Echo Team · Joy Future Academy, JD", "footer.pp": "Project Page", "zoom.hint": "Click to expand", "backtop": "Back to top", "lightbox.close": "Close", "lightbox.label": "Expanded figure", "dev.meta.title": "Echo-Memory Developer Guide", "dev.meta.description": "Echo-Memory development guide — workflows, eval, and Cursor vibe coding.", "dev.kicker": "Development · Cursor", "dev.title": "Developer Guide", "dev.subtitle": "Hands-on coding, training, eval, and Cursor vibe coding for Echo-Memory.", "dev.back": "← Back to project page", "dev.s1.title": "1. What this guide is", "dev.s1.body": "
  • README — paper overview, quick start, checkpoints, community.
  • This guide — workflows, project Cursor skills, Agent tips.
  • doc/ — dataset & checkpoint reference.
  • .cursor/skills/ — Agent skills for train / eval / release.
  • ", "dev.s2.title": "2. Environment & paths", "dev.s2.intro": "Set these before training or eval:", "dev.s2.body": "
  • Static in-domain pool — default root above; see doc/dataset_preprocessing.md.
  • Dynamic training pool — e.g. data/dynamic-memory-dataset; see doc/dynamic_dataset_preprocessing.md.
  • CheckpointsEcho-Team/Echo-Memory; index in doc/checkpoints.md.
  • ", "dev.s3.title": "3. Code map", "dev.s3.table": "
    PathRole
    .cursor/skills/Cursor Agent skills (train / eval / release)
    train/memory_baselines_basic/Spatial / SSM / compression ablations
    train/context_learning/Context K=1/5/20 recipes
    eval/v2/Replay, loop closure, open-domain revisit
    env/memory_baseline_runtime.pyCheckpoint → memory profile
    diffsynth/Wan backbone & training stack
    docs/GitHub Pages (project + this guide)
    ", "dev.s4.title": "4. Common workflows", "dev.s4.trainLabel": "Train one memory row (from repo root):", "dev.s4.evalLabel": "Smoke eval with a HF checkpoint:", "dev.s4.note": "Keep the row folder name in CKPT so runtime picks the correct memory profile.", "dev.s5.title": "5. Cursor vibe coding", "dev.s5.intro": "Use Cursor Agent (Composer) with the project skills below.", "dev.s5.skillsTitle": "Project skills", "dev.s5.skills": "
    SkillUse when
    echo-memory-agentScope prompts, rules, skill index
    echo-memory-trainMemory baselines & context training
    echo-memory-evalReplay / revisit & HF quick checks
    echo-memory-releasegh-pages, i18n, checkpoints doc

    Paths: .cursor/skills/<name>/SKILL.md — invoke in chat, e.g. use echo-memory-eval to …

    ", "dev.s5.body": "
  • Scope prompts — memory family, script, eval branch (replay / in-domain / open-domain).
  • Entry scripts — e.g. run_spatial_memory_baseline.sh, eval/v2/run_basic_replay_gt.sh.
  • Rules — optional .cursor/rules/echo-memory.mdc for pool naming & public doc constraints.
  • Ask mode — trace checkpoint mapping or read diffsynth/ without edits.
  • ", "dev.s5.promptLabel": "Example prompt", "dev.s5.prompt": "Add a quick check that downloads context_k1 from Echo-Team/Echo-Memory\nand runs eval/v2/run_basic_replay_gt.sh with the static in-domain pool.\n\nTrace env/memory_baseline_runtime.py spatial_mem → inject flags;\nsummarize in doc/checkpoints.md.", "dev.s5.note": "Public repo hygiene: never commit upload bash, internal benchmark names, or machine paths. WeChat QR → project page & README only.", "dev.s6.title": "6. Site & release (maintainers)", "dev.s6.intro": "After editing docs/index.html, docs/style.css, or docs/i18n*.js:", "dev.s6.body": "HF weights: Hugging Face UI or hf upload (maintainers only). Bilingual project page: docs/i18n.js + docs/i18n-runtime.js.", "dev.s7.title": "7. Checklist", "dev.s7.l1": "Smoke eval with one HF checkpoint before tagging a release.", "dev.s7.l2": "Verify doc/checkpoints.md matches HF folder names.", "dev.s7.l3": "Public docs use Echo pool names — no internal paths or benchmark codenames.", "dev.s7.l4": "Run publish_gh_pages.sh after site changes; spot-check EN/中文 on the live page.", "dev.footer": "Repo mirror: doc/DEVELOPER.md · Community QR on project page" }, zh: { "meta.title": "Echo-Memory | Echo Team", "meta.description": "Echo-Memory:动作条件世界模型中记忆机制的对照研究。", "nav.home": "首页", "nav.overview": "概览", "nav.design": "设计", "nav.checkpoints": "权重", "nav.eval": "评测", "nav.evidence": "证据", "nav.findings": "结论", "nav.updates": "动态", "nav.bibtex": "引用", "nav.developer": "开发者手册", "nav.github": "GitHub", "nav.menu": "菜单", "lang.toggle": "EN", "lang.current": "中文", "lang.switch": "切换语言", "hero.badge": "Echo Team · Joy Future Academy, JD · 2026 年 6 月 · CC BY 4.0", "hero.title.line2": "动作世界模型中记忆机制的对照研究", "hero.subtitle": "当镜头离开再返回时,哪种记忆能让模型守住同一个世界,而不是生成一个看似合理却不同的场景?", "hero.cta.paper": "论文", "hero.cta.pdf": "PDF", "hero.cta.ckpt": "模型权重", "hero.cta.code": "代码", "hero.metric.stars": "GitHub Stars", "hero.metric.forks": "Forks", "hero.note": "在共享 Wan 动作到视频栈上进行可控记忆消融——可复现实验行、评测脚本与 revisit 定性面板。", "hero.authors.summary": "作者与单位", "hero.affiliations": "HKU · Joy Future Academy, JD · CUHK · PKU · Fudan · Tsinghua · HKUST · UMich", "overview.kicker": "01 · 概览", "overview.title": "同一骨干、同一协议——只换记忆模块。", "overview.lead": "Echo-Memory 固定视频骨干、训练配方与数据协议,仅替换记忆模块,以区分镜头离开再返回时的回放保真度回归记忆。", "overview.b1": "共享栈 — 基于 Wan 的分块动作条件世界生成。", "overview.b2": "对照变量 — Context、Compression、Spatial 或 State-Space 记忆。", "overview.b3": "三类探针 — 回放指标、域内 180° 闭环、开放域编辑后回归。", "overview.b4": "开源内容 — 消融脚本、GT 回放、revisit 资产与论文对齐图表。", "overview.fig.cap": "分块动作世界生成上的可控记忆研究。点击放大", "overview.fig.alt": "Echo-Memory 框架概览", "design.kicker": "02 · 记忆设计", "design.title": "Context · Compression · Spatial · State-Space", "design.lead": "各变体接入同一 write–read 接口,仅改变存储内容与历史检索方式。无记忆 I2V 下限仅从首帧重生成。", "design.context.title": "Context", "design.context.body": "保留 K = 1 / 5 / 20 块原始帧 — 测试更长窗口是否足以抑制漂移。", "design.compression.title": "Compression", "design.compression.body": "比率 r = 4 的紧凑 token — 在不膨胀原始帧存储的情况下保留历史。", "design.spatial.title": "Spatial", "design.spatial.body": "显式空间读写状态 — 针对布局、物体位姿与视角携带。", "design.ssm.title": "State-Space", "design.ssm.body": "Block-wise SSM 更新 — 在 revisit 上超越短上下文窗口的递归携带。", "design.fig.cap": "共享 write–read 接口下的四类记忆。点击放大", "design.fig.alt": "记忆设计矩阵", "ckpt.kicker": "03 · 模型权重", "ckpt.title": "Hugging Face 论文 baseline", "ckpt.lead": "Wan 2.1 1.3B 记忆行 — epoch-030,000 steps、静态 in-domain 训练池。已发布权重:Echo-Team/Echo-Memory", "ckpt.th.family": "家族", "ckpt.th.row": "论文行", "ckpt.th.path": "HF 路径", "ckpt.th.steps": "步数", "ckpt.label.download": "下载", "ckpt.label.eval": "域内评测(Echo-Memory 仓库)", "ckpt.note": "请在 CKPT 中保留行目录名 — env/memory_baseline_runtime.py 会从路径推断 memory 配置。完整索引:doc/checkpoints.md。", "eval.kicker": "04 · 评测", "eval.title": "回放 · 域内 revisit · 开放域回归", "eval.lead": "三个分支回答不同问题:能否重建过去?域内能否闭环?编辑首帧后能否回到同一个世界?", "eval.replay.title": "回放", "eval.replay.body": "分块重建的 PSNR / SSIM / LPIPS — 衡量短程像素保真。", "eval.indomain.title": "域内", "eval.indomain.body": "180° 轨迹闭环与 VLM 辅助评分。", "eval.opendomain.title": "开放域", "eval.opendomain.body": "编辑首帧与 45° 回归探针 — 考察物体身份与场景持续性。", "eval.dynamic.title": "动态 SpatialVID", "eval.dynamic.body": "训练和推理 wrapper 已公开;动态评测协议暂列 TODO。", "eval.fig.cap": "同一栈上的回放健康度 vs. 回归记忆。点击放大", "eval.fig.alt": "三分支评测概览", "evidence.kicker": "05 · 定性证据", "evidence.title": "回归探针暴露身份漂移。", "evidence.lead": "定性面板遵循简单诊断:首帧 → 离开视角 → revisit 尾部。我们比较记忆是否恢复同一物体、位姿、背景与相机几何,而非仅生成合理的新场景。", "evidence.chip1": "记忆结果", "evidence.chip2": "开放域扫描", "evidence.chip3": "身份锚点", "evidence.cap1": "各变体的代表性记忆对比。点击放大", "evidence.dynamic.note": "SpatialVID 预览来自一个精选训练场景;六组使用相同首帧、prompt 与 GT 相机轨迹做 5 秒 first-chunk replay。", "findings.kicker": "06 · 主要结论", "findings.title": "回放质量 ≠ 记忆质量。", "findings.lead": "回放指标与回归探针并不总一致 — 重建可以很 sharp,但镜头返回时仍可能失败。一旦测量 revisit 下的身份一致性,排名会重排。", "findings.b1": "原始 Context — 更长历史对开放域回归的帮助大于单纯回放。", "findings.b2": "Compression — 紧凑 token 可保回放但在回归时丢失身份。", "findings.b3": "Spatial vs. SSM — 显式状态与 block-wise SSM 在布局携带与长程稳定性间权衡。", "findings.b4": "要点 — 将回放视为健康检查,而非最终记忆 benchmark。", "findings.fig.cap": "从回放到回归的排名变化 — 回放不是最终记忆分数。点击放大", "updates.kicker": "07 · 新闻与路线图", "updates.title": "发布说明与后续计划。", "updates.news": "新闻", "updates.roadmap": "路线图", "updates.news0": "SpatialVID 支持已加入:动态训练/推理脚本、5 秒 first-chunk replay 预览,以及 dynamic eval TODO。", "updates.news1": "Echo-Memory 发布:论文上线 arXivPDF),同步发布项目页、公开代码、replay/revisit 评测资产,以及 Echo-Team/Echo-Memory baseline 权重。", "updates.models": "模型", "updates.eval": "评测", "updates.rm1": "Wan 2.1 1.3B 骨干与训练配方", "updates.rm2": "四类记忆 — Context、Compression、Spatial、State-Space", "updates.rm3": "Dynamic training pool — SpatialVID 子集导出与设置", "updates.rm4": "论文权重Echo-Team/Echo-Memory", "updates.rm5": "Wan 2.2 + 多尺度 5B / 14B", "updates.re1": "静态 replay/revisit 之外的 动态评测", "updates.re2": "更多 revisit 探针与评分预设", "community.title": "社区交流", "community.lead": "扫码加入 Echo-Memory 微信群,获取发布更新、权重使用与维护协调信息。", "community.qr.alt": "Echo-Memory 微信群二维码", "community.qr.caption": "Echo-Memory 交流群 · 扫码加入(二维码会定期更新)", "bibtex.kicker": "08 · 引用", "bibtex.title": "BibTeX", "bibtex.lead": "Echo-Memory: A Controlled Study of Memory in Action World Models(2026 年 6 月)。许可:CC BY 4.0。请使用下方 arXiv BibTeX 引用。", "bibtex.arxiv": "arXiv", "bibtex.source": "来源", "bibtex.doi": "DOI", "bibtex.arxivid": "arXiv ID", "bibtex.pdf": "PDF", "bibtex.license": "许可", "bibtex.copy": "复制", "bibtex.copied": "已复制", "bibtex.failed": "失败", "footer.copy": "© Echo Team · Joy Future Academy, JD", "footer.pp": "项目页", "zoom.hint": "点击放大", "backtop": "回到顶部", "lightbox.close": "关闭", "lightbox.label": "放大图表", "dev.meta.title": "Echo-Memory 开发者指南", "dev.meta.description": "Echo-Memory 开发指南 — 工作流、评测与 Cursor 协作编程。", "dev.kicker": "开发 · Cursor", "dev.title": "开发者指南", "dev.subtitle": "Echo-Memory 实战开发、训练评测与 Cursor 协作编程。", "dev.back": "← 返回项目页", "dev.s1.title": "1. 本指南定位", "dev.s1.body": "
  • README — 论文概览、快速上手、权重、社区。
  • 本页 — 工作流、项目 Cursor skills、Agent 技巧。
  • doc/ — 数据集与权重参考。
  • .cursor/skills/ — 训练 / 评测 / 发布类 Agent 技能。
  • ", "dev.s2.title": "2. 环境与路径", "dev.s2.intro": "训练或评测前设置:", "dev.s2.body": "
  • Static in-domain pool — 默认路径见上;详见 doc/dataset_preprocessing.md
  • Dynamic training pool — 如 data/dynamic-memory-dataset;详见 doc/dynamic_dataset_preprocessing.md
  • 权重Echo-Team/Echo-Memory;索引见 doc/checkpoints.md
  • ", "dev.s3.title": "3. 代码地图", "dev.s3.table": "
    路径作用
    .cursor/skills/Cursor Agent 技能(训练 / 评测 / 发布)
    train/memory_baselines_basic/Spatial / SSM / 压缩消融
    train/context_learning/Context K=1/5/20 配方
    eval/v2/回放、闭环、开放域 revisit
    env/memory_baseline_runtime.py权重 → 记忆配置
    diffsynth/Wan 骨干与训练栈
    docs/GitHub Pages(项目页 + 本指南)
    ", "dev.s4.title": "4. 常用工作流", "dev.s4.trainLabel": "训练一条 memory 行(仓库根目录):", "dev.s4.evalLabel": "用 HF 权重做 quick eval:", "dev.s4.note": "CKPT 路径需保留行目录名,以便 runtime 匹配记忆配置。", "dev.s5.title": "5. Cursor 协作编程", "dev.s5.intro": "使用 Cursor Agent(Composer)配合下方项目 skills。", "dev.s5.skillsTitle": "项目 Skills", "dev.s5.skills": "
    Skill适用场景
    echo-memory-agentPrompt 范围、Rules、技能索引
    echo-memory-trainMemory baseline 与 Context 训练
    echo-memory-eval回放 / revisit 与 HF quick check
    echo-memory-releasegh-pages、i18n、权重文档

    路径:.cursor/skills/<name>/SKILL.md — 在对话中引用,如 use echo-memory-eval 来 …

    ", "dev.s5.body": "
  • 明确范围 — memory 家族、脚本、评测分支(replay / in-domain / open-domain)。
  • 入口脚本 — 如 run_spatial_memory_baseline.sheval/v2/run_basic_replay_gt.sh
  • Rules — 可选 .cursor/rules/echo-memory.mdc 约束池命名与公开文档。
  • Ask 模式 — 追踪 checkpoint 映射或阅读 diffsynth/,不改代码。
  • ", "dev.s5.promptLabel": "示例 Prompt", "dev.s5.prompt": "添加 quick check:从 Echo-Team/Echo-Memory 下载 context_k1,\n用 static in-domain pool 跑 eval/v2/run_basic_replay_gt.sh。\n\n追踪 env/memory_baseline_runtime.py 如何把 spatial_mem\n权重映射到 inject 标志,并在 doc/checkpoints.md 摘要说明。", "dev.s5.note": "公开仓库规范: 勿提交上传脚本、内部 benchmark 名、本机路径。微信群二维码仅在项目页与 README。", "dev.s6.title": "6. 站点与发布(维护者)", "dev.s6.intro": "修改 docs/index.htmldocs/style.cssdocs/i18n*.js 后:", "dev.s6.body": "HF 权重:网页或 hf upload 更新(仅维护者)。项目页双语:docs/i18n.js + docs/i18n-runtime.js。", "dev.s7.title": "7. 检查清单", "dev.s7.l1": "发版前用至少一个 HF 权重跑 quick eval。", "dev.s7.l2": "确认 doc/checkpoints.md 与 HF 目录名一致。", "dev.s7.l3": "公开文档使用 Echo 池命名 — 无内部路径或 benchmark 代号。", "dev.s7.l4": "改站点后运行 publish_gh_pages.sh,检查线上 EN/中文 切换。", "dev.footer": "仓库副本:doc/DEVELOPER.md · 社区二维码见 项目页" } };