这是从 WorldOfOldcraft-build-kit.zip 解出的全部内容。
它不是一个成品游戏,而是一套交给 AI 代理、让它独自在长会话里从空 Unity 工程造出一款魔兽风格 MMO 可玩切片的启动套件:任务书、工作规则、强制不停机的钩子、四个生产技能、上一个项目沉淀的经验库、辅助脚本,以及定义最终画面长什么样的已批准概念图。
先把最重要的事说清楚:这个包能给你什么,不能给你什么。
箱子里的东西分四层:要做成什么(Docs/TASK.md,31 KB 的完整规格)、怎么做(CLAUDE.md,10 条硬规则)、怎么让代理别停下来(dot-claude/ 里两个 Python 钩子)、以及做出来的东西该长什么样(Docs/concepts/approved/ 25 张已经人工挑过的概念图)。
《World of Oldcraft》——一款用 Unity 6000.5.9f1 + URP 做的经典奇幻 MMORPG 可玩 MVP。美术定位原文是"经典 World of Warcraft(2004),重制版":同样风格化的手绘世界、同样略带棱角的低多边形造型与夸张体态、同样的界面布局,只是更清晰漂亮。项目自述为非商业粉丝作品、单机、无服务器无联网。核心诉求一句话:2005 年玩过 WoW 的玩家,必须在五秒之内感到宾至如归。
| 维度 | 规格 |
|---|---|
| 地图 | 约 1 × 1 km 地形;主路 800–1200 m,徒步穿越 3–5 分钟 |
| 可玩身体 | 6 种族 × 男/女 = 12 个,共享一套动画 |
| 等级 | 1–5 级 |
| 职业 | 6 个,每族绑定一个;每职业自动攻击 + 2 个技能(P0)+ 第 3 个(P1) |
| 性能目标 | 1440p 城内 ≥ 60 FPS |
| 画布预算 | 角色 12–25k 三角面;怪物 4–12k;主建筑 ≤ 30k;道具 0.3–5k;树木 2–8k |
| 贴图 | 主角/主建筑 2K,道具 1K,小道具 512 |
| 耗尽预算 | fal.ai 硬上限 100 美元;Higgsfield 约 10,000 积分(首选生成器) |
真正难的不是"生成一个模型",而是让代理在几十小时、几十次上下文压缩之后还记得自己在干什么、还不跑偏、还不停机。这个包里最有价值的设计恰恰不是任务书,而是那套把状态强制写进磁盘、把会话锁死不让人停的机制(见 05)。
224 个文件的完整分布,以及它们被安装到 Unity 工程的哪个位置。
按体积算反过来:图片占 48 MB / 49 MB,全部文字加起来不到 1 MB。这是一个视觉资产包,文档是附件。
| 包内路径 | 安装到 | 作用 |
|---|---|---|
CLAUDE.md | 工程根 | 代理每次启动/压缩后第一个读的文件 |
dot-claude/ | .claude/ | 钩子 + 技能,随工程走 |
mcp.json | .mcp.json | Unity / Blender / Higgsfield 三个 MCP 服务器,路径由安装器填充 |
env.example | .env | 安装器唯一拒绝覆盖的文件 |
Docs/refs/manifest.json | 同左 | 安装器据此联网抓 70 张参考图 |
scripts/animation/ | 同左 | 安装器据此联网下载 90 条 Mixamo 动画到 Assets/_Source/Mixamo/ |
包内不含 70 张风格参考图,也不含 90 条 Mixamo 动画。安装器在跑的时候会去 warcraft.wiki.gg、Hugging Face(钉死 revision 7f134bc7…)等站点拉取。断网安装会缺这两大块——参考图缺失只影响风格判断,动画缺失会直接卡死 M2 角色里程碑。
19 个章节里真正决定成败的三块:观众会看到的九步体验、六种族绑定职业的设计、以及全部资产与预算的技术边界。
TASK.md §1 把整个项目压缩成九个必须"能用且好看"的时刻。这就是验收时真正被检查的东西:
动态主视觉图 + World of Oldcraft 标志 + 账号/密码 + Login + 音乐
灯光舞台上的角色、种族背景、右侧角色列表、巨大的 Enter World 按钮;单服务器,无服务器列表
六种族 × 男/女,每族自带职业;少量自定义项、Randomize 名字、Accept
绘制风加载图 + 进度条 → 画面溶解 → 区域名金色大字淡入
带修道院的森林山谷,正是已批准概念图的氛围
选定目标、自动攻击 + 每职业至少 2 个技能,真实特效与音效、浮动战斗数字、怪物受击与死亡
几次击杀后金色光柱升起 + 号角,等级提升
道路离开森林、石桥过河、穿过金色田野;步行穿越 3–5 分钟;田野旁一小片闹鬼林地(P1)
道路尽头是小石城的城门;走进去:石头街道、带喷泉的广场、卫兵、商贩、镇民
这是本项目最反常规的设计决定:没有"选职业"这一步。种族和职业是绑死的,每个种族只有一种玩法、一把武器。这样 12 个身体只需覆盖 6 套动作集,把动画成本压掉一半。
| 种族 | 职业 | 武器 | 身高 男/女(米) | 已批准设定图 |
|---|---|---|---|---|
| Human 人类 | Warrior | 双手巨剑 | 1.85 / 1.75 | v2_human_C_Enano |
| Dwarf 矮人 | Protector | 单手剑 + 圆盾 | 1.35 / 1.30 | v2_dwarf_C_Egpt |
| Night Elf 暗夜精灵 | Ranger | 长弓 + 箭袋 | 2.15 / 2.05 | v2_nightelf_C_Egpt |
| Orc 兽人 | Warrior | 单手剑 + 圆盾 | 2.05(驼背) / 1.90 | race_orc_A |
| Undead 亡灵 | Mage | 法杖 | 1.80 / 1.70 | race_undead_B |
| Bull-folk 牛头人 | Healer | 图腾法杖 | 2.50 / 2.30 | v2_bullfolk_B_Egpt |
设定图有原版(race_*)和职业编辑版(v2_*_E*)两代。README 裁定:武器和服装以职业编辑版为准,脸、头发、身体以原版为准。这条规则说明作者已经预见到"重画一张图会把脸也改掉"的问题。
| 职业 | 种族 · 武器 | 资源 | 技能 1(P0) | 技能 2(P0) | 技能 3(P1) |
|---|---|---|---|---|---|
| Warrior | 人类 · 巨剑 | 怒气 | Mortal Strike 致死打击 | Whirlwind 旋风斩 | Battle Shout 战斗怒吼 |
| Protector | 矮人 · 剑盾 | 怒气 | Shield Bash 盾击(短眩晕) | Thunder Clap 雷霆一击(范围减速) | Shield Block 盾牌格挡 |
| Warrior | 兽人 · 剑盾 | 怒气 | Heroic Strike 英勇打击 | Charge 冲锋(带尘土拖尾) | Battle Shout 战斗怒吼 |
| Ranger | 暗夜精灵 · 弓 | 专注 | Aimed Shot 瞄准射击(读条) | Arcane Shot 奥术射击(瞬发紫箭) | Multi-Shot 多重射击 |
| Mage | 亡灵 · 法杖 | 法力 | Fireball 火球术(弹道 + 爆炸) | Frost Nova 冰霜新星(冰环定身) | Frostbolt 寒冰箭(减速) |
| Healer | 牛头人 · 图腾杖 | 法力 | Lightning Bolt 闪电箭 | Healing Wave 治疗波(金绿光柱) | Healing Totem 治疗图腾 |
Frost Nova 的技能描述写的是"冰环定身"、Frostbolt 是"减速",两处都要求真实控制效果而不只是特效。
起点是一张已批准的区域鸟瞰图(v2_zone_overview_west_N)和配套的手绘区域地图(v2_zonemap_west_Nref)。地理被钉死:
尺度全部写死:门高约 2.6 m(风格化放大)、路宽约 6 m、轴心在底部、模型朝 +Z。地图四周用山或悬崖封闭。
Unity 6000.5.9f1 · URP · 线性色彩空间 · Forward+ · 只用新 Input System · Run in Background 必须开 · Unity Terrain 最多 8 个绘制层
Boot → FrontEnd(登录/选角/建角)→ Loading → World
种族/职业/技能/怪物/NPC 全部走 ScriptableObject;角色存档为 JSON,写在 Application.persistentDataPath
经典方案:W/S 前后、A/D 转身、Q/E 横移、空格跳、滚轮缩放、左键拖拽转镜头、右键转身、Tab 循环目标、数字键放技能、Esc 清目标
§2 直接点名不做:服务器列表、多区域、副本、组队、交易、拍卖、天赋、专业、坐骑、完整背包与装备系统、法术书与天赋窗、死亡跑尸、昼夜循环、天气、复杂任务链。这些只有全部 P0 和 P1 通过后才允许碰。对长会话代理来说,这条"不做"清单可能比"要做"清单更值钱。
18 项验收条目和 7 个里程碑。这是代理唯一被允许用来判断"做完了没有"的依据。
| # | 时刻 | 通过条件 | 级别 |
|---|---|---|---|
| 1 | 登录界面 | 动态主视觉图、World of Oldcraft 标志、账号/密码框、Login 按钮、音乐;Login 进入选角 | P0 |
| 2 | 角色选择 | 角色站在灯光舞台上、种族背景、右侧列表(名字/等级/职业)、Enter World、Create、Delete、旋转;角色跨启动持久化。观感需与已批准 mockup 一样好 | P0 |
| 3 | 角色创建 | 6 个种族按钮、性别、显示该族职业、实时 3D 预览、2 种发型、按种族/性别的发色与肤色、带 Randomize 的名字、Accept/Back、每族一个背景。观感需与 mockup 一样好 | P0 |
| 4 | 角色 | 全部 12 个身体看起来像已批准设定图、风格统一、动画正确(无断肢、无滑步)、正确握持武器 | P0 |
| 5 | 加载与进入世界 | 绘制风加载界面 + 进度条、溶解进入世界、金色区域文字 | P0 |
| 6 | 操作与镜头 | 经典方案、平滑第三人称、不穿入地形或墙体 | P0 |
| 7 | 战斗 | 六职业全覆盖:选定目标、自动攻击、两个带冷却的技能、资源条、每次攻击与技能都有特效和音效、浮动战斗文字、受击反应、怪物死亡 | P0 |
| 8 | 升级 | 击杀给经验、金色光柱、号角、等级与属性提升 | P0 |
| 9 | 世界路线 | 森林山谷+修道院 → 河流石桥 → 金色田野 → 石头城门;符合已批准概念图与区域地图;步行 3–5 分钟 | P0 |
| 10 | 石头城 | 带雕像的城门、城墙、可行走石街、带喷泉广场、至少 4 类 NPC(卫兵/商贩/任务发布人/镇民) | P0 |
| 11 | HUD | 玩家与目标框、带技能与冷却扫动的动作条、经验条、施法条、圆形小地图、带系统消息的聊天框、姓名板 | P0 |
| 12 | 性能 | 在所有者机器上 1440p 城内 ≥ 60 FPS | P0 |
| 13 | 任务 | 一个带黄色"!"的任务发布人、击杀任务、羊皮纸对话框、任务追踪器、带"?"的交付与奖励 | P1 |
| 14 | 第三技能 | 每职业第三个技能,带特效与音效 | P1 |
| 15 | 闹鬼林地 | 田野旁的闹鬼区域,有自己的怪物与氛围音 | P1 |
| 16 | 少量假玩家 | 6–12 个用角色系统构建的"玩家"在路上游走、在城中站立,头顶有名字 | P1 |
| 17 | 可进入的旅店 | 城中一栋能走进去的建筑 | P1 |
| 18 | 附加 | 拾取窗与背包、小动物、假玩家聊天、黄昏光照、表情动作 | P2 |
第 2、3、4、9 项的条件里都写着"看起来像已批准的 mockup / 概念图"。这类条目机器无法自证,所以规则强行规定:代理不许给自己打分,必须由一个新上下文的评审代理对比截图打分(见 11)。
| 里程碑 | 内容 | 放行条件 |
|---|---|---|
| M0 准备 | 读完所有资料;写 PLAN.md、TODO.md、STYLE_BIBLE.md、MAP.md;初始化 git;每个工具做一次廉价冒烟调用;摆好故事相机与截图工具 | 每个工具都有响应,计划已提交 |
| M1 灰盒闭环 | §1 的整条路径用占位物打通:登录、选角、建角、加载、可操作胶囊体、灰盒山谷/桥/田野/城、一个占位怪、HUD 骨架 | 黄金路径驱动端到端通过。从这里开始游戏必须永远可玩 |
| M2 角色 | 人类男性先走完整条管线进游戏;然后全部 12 个身体 + 发型 + 武器;选角与建角用最终美术 | 评审代理把 12 个身体与已批准设定图逐一对比;两个界面与 mockup 对比 |
| M3 战斗 | 六职业的自动攻击与两个技能、特效与音效、怪物、升级 | 验收测试第 1 轮 |
| M4 世界 | 地形、植被、山谷、桥、田野、城门与城内;雾、后处理、天空、水;城中 NPC | 验收测试第 2 轮;P0 全绿或进行中 |
| M5 打磨 | 修评审出来的最弱环节、镜头与动画手感、音频、性能 | P0 全绿 |
| M6 展示 | Windows 构建、黄金路径录像、电影式飞越、进度延时摄影与分镜、REPORT.md | §19 交付物齐全 |
从 M1 起,每一次提交都要能跑通整条黄金路径(登录 → 建角 → 进世界 → 战斗 → 升级 → 进城)。如果改动弄坏了它、20 分钟内修不好,就必须回滚并重新排队。这是"宁可少做也不许坏"的工程纪律。
项目禁止用"完成"这种模糊说法,只承认四个词:
这个包里最独特、也最容易被忽略的部分:一套确保代理不会自己停下来的机制,和一个把整套东西铺进 Unity 工程的安装器。
目标是一个跨天、几十小时、几十次上下文压缩的长任务。而 Claude Code 的正常行为是"任务告一段落就结束回合"。keep_working.py 注册在 Stop 钩子上,利用 Claude Code 的一个语义:Stop 钩子以退出码 2 结束,就是"阻止停止",并把 stderr 的内容当作理由回灌给模型。
.claude/ALLOW_STOP 文件 → 退出码 0,允许停止.claude/session_window.json 里的 until 时间戳已过期 → 退出码 0两者都不满足时,写一段指令到 stderr 并退出码 2。
所有者尚未结束本次会话。不要停止。
如果你丢了上下文,按 CLAUDE.md 第 1 节执行。
从 Docs/TODO.md 取下一项。
如果它为空,运行验收测试(TASK.md §2),
把最薄弱环节的修复加入队列,然后继续。
持续截图记录进度(TASK.md §18)。
机制上没有任何东西阻止代理自己创建 ALLOW_STOP。.gitignore 也只是让它不进版本库。整套"不许停"建立在"代理会遵守 CLAUDE.md 第 2 节"之上——而那条规则写的是"不要自行结束会话,由所有者结束"。要真正停下,人得手动 Esc 关掉会话,或提前写好 ALLOW_STOP / session_window.json。
长会话必然被反复压缩。第二个钩子 after_compact.py 挂在 SessionStart 的 compact 和 resume 两个 matcher 上,每次压缩或恢复后往上下文里打印一段带 UTC 时间的指令,强制代理重读状态文件再继续。这和 CLAUDE.md 第 1 节的"每次启动/重启/压缩后按顺序读五个文件"是同一道保险的两半。
install_kit.ps1(Windows PowerShell,$ErrorActionPreference="Stop")按九步把套件铺进一个空的 Unity 工程:
递归复制六个目录;dot-claude/ → .claude/,mcp.json → .mcp.json。CLAUDE.md 和 requirements.txt 强制覆盖。
若套件缺 Docs/concepts,从上级 card 目录按 selection.json 回填 approved 与 candidates。
解析 mixamo_core_set.json,把 90 个 motion_id 一次性传给下载脚本,落到 Assets/_Source/Mixamo/。失败仅告警。
跑 scripts/refs/fetch_refs.py,抓取并转成 WebP(质量 88)。失败仅告警。
唯一拒绝覆盖的既有文件。传入 -FalKey 时用正则只改写 FAL_KEY= 那一行。
替换 {{UNITY_MCP_SERVER_DIR}}、{{BLENDER_MCP_COMMAND}}、{{BLENDER_EXE}}。
传 -FalBudgetUsd 或 -HiggsfieldCredits 时,同步改写文档正文里的金额,让文档与实际一致。
逐行查重后追加 .env、.claude/ALLOW_STOP、.claude/session_window.json、Docs/owner-desktop-timelapse/。
输出人工需要做的收尾操作提示。可重复运行,已存在的东西保留。
host-tools/ 里的 desktop_timelapse.ps1、stop_desktop_timelapse.ps1、make_desktop_timelapse.ps1 用 ffmpeg 定时截整个桌面再合成 mp4,是给所有者录制"制作过程"用的,不在代理的职责范围内(README 明确写 "for you, not for the agent")。停止脚本按 PID 且校验进程名为 ffmpeg 才杀——这条来自 PIPELINE_LESSONS 里"一次无差别 kill 干掉了无关编辑器"的教训。
把整个 World of Oldcraft 构建套件安装进一个(空的)Unity 工程目录:复制文档/脚本/钩子、重命名隐藏配置文件、下载 Mixamo 动画与风格参考图、填充 MCP 路径占位符、写好 .gitignore。
在宿主机上用 ffmpeg 的 gdigrab 每隔 N 秒截一张全屏,存为编号 JPG,形成一天一目录的桌面延时摄影;文件头明确注明这是给 owner 记录 agent 工作过程用的,不是给 agent 用的。
把 desktop_timelapse.ps1 拍的 JPG 序列编码成 mp4 延时视频,默认自动挑 Downloads 里最新的会话目录。
按 running.pid 精确停掉后台运行的 ffmpeg 截帧进程,符合 CLAUDE.md “只按 PID 杀进程”的纪律。
把两个 Python 钩子挂进 Claude Code 生命周期,并把 Stop 钩子的连续拦截上限抬到 1000,这是“agent 不许自己停下来”机制的开关盒。
作为 Claude Code 的 Stop hook,在 owner 未明确结束会话前拒绝 agent 停止:exit 2 拦截停止并把 stderr 文本作为理由回灌给 agent。
在上下文被 compact 或会话 resume 后,向 agent 注入一段再锚定指令,防止长会话压缩后忘记工作规程。
声明 agent 工作时要连的三个 MCP 服务器:Unity 编辑器桥、Blender 桥、Higgsfield 云桥;带三个由安装脚本填充的路径占位符。
唯一的密钥载体模板:只含一个 FAL_KEY 空值;被安装脚本复制为 <Target>\.env 且永不回写覆盖。
安装 agent 侧 Python 工具链的三个依赖,供 generate.py / download_mixamo.py / fetch_refs.py / 钩子使用。
机器可读的套件装箱单:列出打包的 skills、文档、脚本,以及由安装器负责下载的两类外部资产。
按 Docs/refs/manifest.json 的清单从原始出处下载第三方 WoW 风格参考截图/粉丝图,统一转存为 WebP——套件有意只发货清单不发图(版权考虑)。
从 prompts JSON 批量调 fal.ai 生图(含 edit 模型),并发下载结果,产出人工评审用 HTML 报告——agent 走 fal.ai 备用生成路线时的统一入口。
按精确 motion_id(UUID) 从 Hugging Face 数据集 Linzhan/Mixamo-Animations-Characters 拉取 Mixamo 动画 FBX 文件,带完整的完整性校验与下载凭证——只做获取,不做重定向/导出。
用无头 Blender 把一批 .glb/.gltf 的枢轴移到包围盒底部中心,让生成模型进引擎后能直接“落地”——对应 CLAUDE.md 批量后台 Blender 处理里的 re-pivot 工序。
把 TASK.md §18 规定的进度截图合成为带字幕的延时视频和分镜总览图,供 owner 与 Reviewer 快速回看开发过程。
为经典 MMO 切片精选的 90 条 Mixamo 动画的采购清单:钉死数据源与版本,按 10 个用途组分类,安装器据此驱动 download_mixamo.py 批量拉取。
【安装流程(install_kit.ps1,Windows PowerShell,$ErrorActionPreference=\"Stop\")】① 校验/创建 -Target 目录并转绝对路径;$Kit 取脚本所在目录。② 复制:CLAUDE.md、requirements.txt 直接强覆盖复制;Copy-Tree 递归复制 Docs、knowledge、processes、projects、scripts、host-tools 六个目录;dot-claude/ 重命名复制为 .claude/,mcp.json 重命名为 .mcp.json。③ 文本模式回退:若套件缺 Docs\\refs 或 Docs\\concepts,从其父目录(card 文件夹)补 refs 清单和 concepts/images/*.webp→candidates,并按 selection.json 的 approved+recommended 把选中图复制进 Docs\\concepts\\approved。④ Mixamo:套件内若有 mixamo-fbx/ 就整体复制到 Assets\\_Source\\Mixamo;否则仅当目标没有 *.fbx 时,解析 scripts\\animation\\mixamo_core_set.json(90 个 clip、10 个 group、钉死 HF revision),把全部 motion_id 作为 --motion-id 传给 python scripts\\animation\\download_mixamo.py 下载;失败仅 Write-Warning 提示先 pip install 再重跑。⑤ 风格参考:Docs\\refs\\manifest.json 存在且目录无 *.webp 时运行 scripts\\refs\\fetch_refs.py 下载并转 WebP(q88);失败仅警告。⑥ .env:仅当目标不存在时从套件 .env 或 env.example 复制生成——绝不覆盖已有 .env;传 -FalKey 时用正则覆写 FAL_KEY= 行(UTF8 无 BOM)。⑦ 占位符与预算改写:对 CLAUDE.md、.mcp.json、Docs 全部 *.md 替换 {{UNITY_MCP_SERVER_DIR}}、{{BLENDER_MCP_COMMAND}}、{{BLENDER_EXE}};-FalBudgetUsd≠100 或 -HiggsfieldCredits≠\"10,000\" 时在文档正文里同步改写预算数字。⑧ 追加 .gitignore:.env、.claude/ALLOW_STOP、.claude/session_window.json、Docs/owner-desktop-timelapse/(逐行查重,不重复追加),最后打印下一步操作指引。安装器唯一拒绝覆盖的既有文件是 .env;其余 Copy-Item -Force 会覆盖目标同名文件。 【\harness(让 agent 一直跑下去的框架)】.claude/settings.json 把 CLAUDE_CODE_STOP_HOOK_BLOCK_CAP 抬到 1000,并注册两类钩子:Stop 钩子运行 keep_working.py——它先吞掉 stdin JSON,然后检查 $CLAUDE_PROJECT_DIR/.claude/ALLOW_STOP,存在即 exit 0 放行停止;否则解析 .claude/session_window.json 的 \"until\" ISO 时间戳,已过期即 exit 0;两者皆无则向 stderr 写入“owner 未结束会话,不许停:按 CLAUDE.md §1 重读状态、取 Docs/TODO.md 下一项、TODO 空则跑 TASK.md §2 验收并补弱项、继续截图 TASK.md §18”并 exit 2——Claude Code 对 Stop 钩子 exit 2 的语义是阻止停止并把 stderr 作为理由回灌给模型,配合 BLOCK_CAP=1000 可连续拦截上千次。owner 结束会话的手段就是创建 ALLOW_STOP 文件或让 session_window.json 的 until 过期。SessionStart 钩子在 matcher \"compact\" 和 \"resume\" 时运行 after_compact.py,向上下文打印一条带 UTC 时间的指令:先重读 CLAUDE.md、PLAN.md、TODO.md、DEVLOG.md 最后三条、STATS.json 再继续当前 milestone 并补进度截图,用于长会话压缩后的状态重锚定。ALLOW_STOP 与 session_window.json 均被 .gitignore 排除,agent 若自己创建它们也不会入库(但机制上不阻止 agent 自造 ALLOW_STOP——这是信任 agent 的软约束,不是硬防线)。 【配套工具链】宿主机侧三个 ps1 是 owner 专用桌面监控:desktop_timelapse.ps1 用 ffmpeg gdigrab 每 -Every 秒截屏存 JPG(running.pid 防重入,-Hidden 后台化),make_desktop_timelapse.ps1 用 libx264/yuv420p/crf20 合成 mp4,stop_desktop_timelapse.ps1 按 PID 且校验进程名为 ffmpeg 才杀。agent 侧脚本:generate.py 是 fal.ai 批量生图器(16 个模型端点、5 并发、产出 images/+results.json+report.html 评审页);download_mixamo.py 按 UUID 从钉死 revision 的 HF 数据集拉 FBX(二进制头校验、sha256、拒覆盖不同内容、原子写、downloads.json 凭证);center_glb_bottom.py 无头 Blender 把 GLB 枢轴移到包围盒底心;make_timelapse.py 把 Docs/progress 截图合成带字幕延时视频与分镜图;fetch_refs.py 按 manifest 抓参考图(双 Referer 变体、3 次重试、幂等跳过)。 【安全轨与硬编码假设】安全轨:.env 永不覆盖、密钥不落 git(.gitignore 覆盖 .env/ALLOW_STOP/session_window.json);Mixamo 与 refs 下载全部幂等且拒绝覆盖冲突文件;stop 脚本只按 PID 杀且验进程名;keep_working.py 对坏配置 fail-closed(宁可拦死不误放)。硬编码/假设:整套是 Windows 向——默认 C:/GIT/unity-mcp-server、Blender 5.1 安装路径、%USERPROFILE%\\Downloads\\Oldcraft-desktop-timelapse、gdigrab 抓屏、依赖 PATH 上的 python/node/ffmpeg/blender;unity MCP 桥端口固定 7890;higgsfield 端点固定 https://bridge.higgsfield.ai/mcp 且鉴权走 CLI 登录而非环境变量;100 USD fal 上限只存在于文档文案替换层面,generate.py 代码里没有预算熔断;安装器假设 Target 基本是空工程,非空时 -Force 复制会覆盖目标里同名文档。
四个技能、九篇经验、九篇流程、六篇前项目档案。这部分才是"怎么真的做出一个能用的 3D 角色"的答案。
分诊台。不含产能,只把任务分派到正确路线。强制三条全局纪律。
角色原画 → 3D 参考。8 阶段 3 闸门,把一张角色图展开成严格正面的部件包。
绑定 → 动画 → Unity 交付。管线末端,负责 FBX 干净导出与重导入验证。
执行层 + 预算守门。所有生成调用的统一出入口,带收据与去重。
"技术完成、视觉验收、引擎集成"是三件必须分开报告的事实——生成了 mesh 不等于有骨骼,导出了 FBX 不等于接了 Animator。这条规则直接对应 CLAUDE.md 第 7 节的四状态词表。
这是整个包里技术含量最高的一段流程。它解决的是"图生 3D 时,模型看到的永远是一张乱七八糟的立绘"这个核心问题:
"有界重试"是关键词——4.5 阶段的重试次数有上限,避免代理在同一个部件上无限循环烧钱。
不产生任何素材,只负责分诊:给定一个 3D 任务(参考图、生成网格、材质、程序化重建、游戏动画),决定走哪条 API/技能路线,并规定跨会话续接生成作业的纪律。
把需求和本地参考图变成"已下载、已审核"的素材:优先用 fal.ai MCP,MCP 读不到本地文件时改用自带的 Python 队列客户端 scripts/fal_job.py;是本项目 100 USD fal 预算的实际执行技能。
把一个角色图(任意姿势任意风格)扩展成可拼装的严格正面参考包:2K 严格正面 A-pose 主图 + 三视图补充 sheet + 逐部件严格正面拆件 + 可选 side/back 多视图 + 每资产 360° 视频,供下游 Tripo/Hunyuan/Rodin/Pixal3D 图生 3D 使用;V3 增加视觉分类器反 3/4 漂移校验。
对交付的 3D 角色做蒙皮、可编辑 action 动画、修订、回放、烘焙和经过验证的 Unity 交付;源自 2026-09-09 验收的 Overlord Wolf 工作,是 3D 管线末端的动画/交付所有者。
定义整条管线唯一母图的生成 prompt:全白背景 2K 严格正面 A-pose 全身图,后续所有部件提取都以它为参照。
给用户的视觉辅助:一张 16:9 图内横排 front/side/back 三个正交投影 + 配饰单独铺开标注,供部件确认 gate 指认和多视图姿态参照。
四个身体必需部件的逐件严格正面提取 prompt,保证与 2A 母图同角度从而接缝可拼。
左右成对物品的提取规则:成对同框、特写裁切,但两件必须处于同一严格正面角度。
六类配饰的严格正面提取模板;配饰是历史漂移最重的类别,此文件是 V2 教训的落点。
把头发从头部剥离为独立严格正面参考图,供专门的毛发 3D 管线使用,避免图生 3D 模型把头发糊成与头融合的块。
为 Gate 2 批准的部件生成严格正交 side/back 视图;同样是正交视图,3/4 在此同样被禁止。
生成 Blender/Marmoset turntable 式参考视频:相机锁死、主体自转 360°,是成本最高、也最容易被视频模型的电影化倾向毁掉的阶段。
定义每张严格正面/多视图输出的结构化验尸 prompt:分类器输出 JSON verdict,驱动有界自动重试环,是 V3 修补 V2 加强负面词仍挡不住 3/4 漂移缺口的机制。
列出 2026-09-15 验证过的 fal.ai MCP 工具面、按阶段给出必备入参,规定队列恢复动作和凭据头格式边界。
规定概念探索、忠实编辑、材质、mesh、运动参考五类任务的 prompt 写法和交付前人工评审清单。
说明如何把整个 fal-ai-generation 文件夹复制到其他项目并完成 MCP 与 Python 两条链路的连接。
给出一个不花钱的排练脚本和一条真实生成后的续接命令序列,教会 agent receipt→status→result 的标准节奏。
一个中性的文生图输入文件,演示 text-to-image endpoint 的字段形状,无私有美术与真实账户 URL。
演示编辑 endpoint 的输入形状:prompt 显式声明只改什么、保住什么,参考图字段留占位符。
不依赖 MCP 的独立 Python 客户端:本地文件上载、队列提交、状态轮询、结果下载,全部围绕一份可续接的 job.json receipt 设计,核心目标是防重复扣费。
fal_job.py 的全部运行时依赖,刻意保持最小。
用 unittest + Mock 固化 fal_job.py 的每条防扣费/防误判行为,使这些纪律在后续修改中不可回归。
全部来自所有者前一个 Unity 项目 Overlord(2026 年 3–9 月)和若干代理基准测试。价值在于这些数字是真实返工换来的。
记录 owner 对 AI 3D 资产生成(Customuse MCP + fal.ai)的默认决策,避免每次重新询问模型选择;定义了被锁定的烘焙降面管线(bake-down pipeline)。
记录经实测的图像生成 API 细节、模型轮换策略、3D 参考图的 prompt 默认值和报告规范,直接可用于本项目的概念图/贴图生成。
定义获取 Mixamo 动画 FBX 的标准路径:本地缓存 → HuggingFace 公共档案 → 精确 UUID 下载器;最后才请求 owner 手动下载。Overlord 的 Archer、Urs、mounted General 已验证此路线。
最大的经验文件(367 行):从 Overlord 已批准的 Wolf、Scorpid、Skeleton Warrior、Urs、Dryad 等交付中沉淀的 Blender 绑定、权重、烘焙、导出、播放与评审的可复用教训。测试环境 Blender 5.1.0。
从 Wild Skeleton、Human Swordsman、Human Archer、Urs、Mounted General 五轮 owner 评审中汇总的作者决策与评审纪律,规定 carry pose、步态、重心转移、转场修复和交付习惯。
记录 Wolf 90 度转向 clip 集成进 Unity 的具体规则:相位匹配表、转向出口混合、与双足标准的差异,以及 FBX 100x 缩放导致的包围盒误报。
自动化输入测试把真实键盘鼠标锁死的事故复盘与恢复协议;CLAUDE.md 第 8 节明确引用,是本项目所有自动化 Play Mode 测试必须逐字复用的规则。
owner 批准的直立单位(人类/骷髅/双足 Urs)转向-行进相位匹配集成标准,含每角色一次性配置流程和 2026-09-19 批准的五角色共享数值档案。
把 2026-03-15~09-15 的 170 卡 Workspace 注册表审计结果编成 8 个已选交接模块的路由索引(图像生成、角色表、fal.ai、Higgsfield、img2threejs、材质烘焙、动作参考、Blender 动画导出),说明存储与发现结构。
每篇经验文档都写着同一句话的意思:"这些数值是那次交付的标定,不是通用默认值"。期望代理继承的是方法和纪律,具体数字要针对新角色重新标定。
规定在 Blender 动画制作之前如何用 AI 视频生成挑选运动参考:确定用途/演员/相机、批准起始姿势、按固定配方生成候选、评审归档、以及生成人体版本供视频动捕的默认方法。
2026-09-09 由 Overlord Wolf 生产确立的主工作流:检查输入与定义输出、可恢复工作区、网格/骨骼准备、蒙皮压力测试、按参考 block 动作、精修、派生游戏 clip、烘焙运行时副本、导入验证与 Unity 交接。
面向 YouTube 内容的风格化女性英雄角色概念流程:目的定义 → 2-3 个原型并行 → 参考锚点 → 每原型 3 条提示词 → 生成迭代 → 编辑提示词 → 终选;是概念探索文档,不是 3D 生产默认值。
2026-09-11 基于 Mariel Cartwright 的 GDC Skullgirls 谈话改编的润色阶段:在支撑力学与游戏事件时刻锁定后、最终烘焙前,提升普通游戏速度下动作的可读性与预备/释放/冲击对比。
规定 Higgsfield 的两种执行界面(CLI 与 Blender 原生回调)如何发现状态、恢复任务、留存凭证,并列出观察到的模型 ID;强调不要把可用的 Blender 回调换成名字相似的 CLI 调用。
经 `scripts/image-gen/generate.py` 走 fal.ai 的批量参考图迭代流程:对象规划→每对象 3 变体→HTML 报告→owner 反馈循环→终稿入 data/final/,含命名规范与 edit 工作流。
针对 3D-ready 图像的提示词知识库:风格锚定、60/30/10 色彩、材质语言、剪影可读性、角色/道具分型提示词与常见修正对照表。
按『请求的输出』路由到正确入口与执行依赖的总地图,取代原 Flux-only 工具表;是 processes/3d-ai 其余文档与 .claude/skills 的索引。
owner 2026-09-15 设定的默认:新生成/下载的视频经保守 H.264 重压缩后轻量存储并出具收据,避免 provider 原片与多份大副本长期堆积。
把 2026-09-09 owner 批准的 Wild Wolf 整条 Blender 动画制作过程固化为可复用知识的总索引:十步成功序列、四剪辑交付契约、脚本快照地图与验证证据清单。
下一批角色动画开工前的入口文件:11 个单位的当前可编辑源与交付包索引表、批次重启检查清单、Set Pose 评审新标准、Dryad v12 状态,以及备份受阻等挂起事项。
2026-09-10 owner 批准的 Wolf rev07 九剪辑组合,作为所有『转向跟随朝向』的地面四足动物的动画与控制器契约:clip 组成、planted turn 与 heading 曲线的数学约定、验收标准。
2026-09-11 应 owner 要求对 GDC 2014 动画训练营演讲《Making Fluid and Powerful Animations For Skullgirls》(21:06)做的带时间戳分析,并推导出 3D/RTS 适配的『美学打磨 pass』。
把 Urs 批准的『90 度两步转向』方法推广到 Human Archer、Swordsman 与三具骷髅共 10 条 Idle Turn 剪辑的源/导出交接:时序契约、controller_motion 侧车格式、Unity 接收方步骤与验证数字。
owner 批准的狼 90 度左/右转向补充包(Export/Turn90_01/)的绑定与集成交接:两剪辑契约、Generic/Copy-From-Avatar 绑定步骤、heading 曲线施加规则、交付验证与未完成的 gameplay 工作。
包内实测 0 个 .fbx / .blend / .glb。Overlord 的模型、骨骼、动画一条都没带过来,只带走了契约、教训和验收标准。真正给 Oldcraft 用的动画来源是另外那 90 条 Mixamo 片段。
这四个技能是套件里技术含量最高、也最容易被当成"配置文件"划过去的部分。它们不是四个并列工具,而是一条按生产阶段切分的流水线:一个分诊台 + 三个执行者。
分诊台
入口 · 全流程
不产生素材,只决定走哪条路
参考包生产
概念图 → 3D 生成之间
239 行 + 9 个提示词模板
绑定与动画
网格 → 引擎之间
129 行
生成执行层
贯穿全程
78 行 + 队列脚本
理解这一点,后面所有看起来偏执的规则就都说得通了。character-sheet-pipeline 的自我说明开门见山:
这个技能解决的是图生 3D 管线里最难的一个问题:让分别生成的部件还能拼回去。
单张图生 3D 的模型(Tripo、Hunyuan、Rodin、Pixal3D)在喂给它一张干净的严格正面 A-pose 图 + 孤立部件参考时,效果远好于喂一张"英雄姿势的帅图"。但手工做出这套参考包,熟练的人也要 30–60 分钟。这个技能把那段时间压成"一次调用 + 三个人工闸门"。
技能的原文用三段排比来钉这条规则:
每一个身体部件、每一个成对物件、每一个配饰,都必须在正对镜头角度生成,与严格正面 A-pose 朝向一致。
绝不"3/4 外视角",绝不"英雄角度",绝不"好看的展示镜头"。
如果模型坚持要出 3/4,就加强反 3/4 措辞重试。绝不交付 3/4 部件。
理由很具体:3/4 生成的部件和严格正面的部件拼不回去。缝对不上、衣服穿不上、帽子戴不上去。技能自己承认"模型会这么干"("it will")。
旧版本靠加强提示词措辞,但实测配饰仍然会漂。V3(2026-05-19)加了 Stage 4.5:每一张严格正面输出在验收前,先过一个视觉分类器,逐项打勾六个二元检查。
| 检查项 | 含义 |
|---|---|
body_axis_dead_front | 主体纵轴是否垂直于镜头(两侧等宽) |
no_three_quarter | 是否完全没有前后之间的 3/4 旋转 |
no_body_twist | 是否没有对立式平衡、胯部扭转、肩部扭转、头部相对胸腔转动 |
no_hero_angle | 是否在平视眼高、零透视戏剧感 |
no_partial_back | 是否完全看不到背面(能看见任何背面就不算严格正面) |
framing_clean | 是否白底孤立、完整可见、关键几何没被裁掉 |
六项全部通过
→ 接受,继续管线
1–2 项轻微失败,但仍可作正交参考
→ 接受,警告写入 manifest
第 1、2、3、5 项任一明确失败
→ 拒绝,进入下面的重试循环
这是一个成熟度很高的设计:把一个已知的、可复现的失败模式,从"靠提示词祈祷"变成"有检测、有重试上限、有降级路径、有审计记录"。
三个闸门全部服务于成本控制。Stage 6 的原文是"360 视频是最贵的一步。计算积分:1 个全身 + N 个部件。把成本给用户看,请求批准。"
| 阶段 | 首选 | 备用 | 为什么 |
|---|---|---|---|
| 2A 母图 @2K | Nano Banana Pro | Nano Banana 2 | 2K 正面正交参考下的角色一致性最强。明令禁止这一步用 GPT-Image-2/2.5 |
| 2B 三视图 @16:9 | GPT-Image-2.5 | GPT-Image-2 → Seedream V5 Lite | GPT-Image 系在"一张图里排多个分格投影并保持同一角色身份"上更强 |
| Stage 4 部件 @2K | Nano Banana Pro | Nano Banana 2 | 和 2A 同模型 —— 一致性优先于"每步都用最强的" |
| Stage 4.5 验证 | 宿主图像检查 / 已配置视觉 API | — | 本技能只提供评分标准,不含部署好的分类器服务 |
| Stage 5 多视图 | Nano Banana Pro | Nano Banana 2 | 同 Stage 4 |
| Stage 6 360 视频 | Seedance 2.0(orbit 模式) | Veo | 用户要求时可用 Kling |
管线中途换模型会引入风格漂移,破坏下游的 3D 重建。所以宁可每步都用同一个模型。Stage 2B 是唯一例外 —— 因为它只是"给人看的辅助图",不是部件提取的输入;母图(2A)才是。
反模式清单和正面规则一样有价值,因为它记录了实际踩过的坑:
源动画批准、导出验证、引擎内实际集成,必须作为三个独立事实报告。
在 Blender 里编辑片段,不等于接好了 Animator,也不等于接好了游戏内的伤害事件。
这条规则直接对应 Oldcraft 的四状态词表(implemented / agent-verified / pending owner review)。配套的硬性验收项:
.blend 必须存成 Material Preview + 中性棚光,不能留 Workbench/Solid 贴图显示当最终审阅状态Set Pose 是硬性要求。每一次动画审阅都要提供已批准的 Set Pose 工具、命名真实的关节控制器、独立调整道具的能力,以及"保存姿势参考 / 返回动画"的工作流。并且明确:任何求解器或播放计时器都不允许覆盖手动摆的姿势。
duration = (last_frame - first_frame) / fps
配套警告:"只改 fps 会改变运动速度;转换片段时要在时间上重采样。" 攻击接触帧在整体节奏缩放时要保持同一归一化比例。
狼的 1.7 秒、接触比例 39/51、导出 4 个片段 —— 原文明确写:"这是一个工作示例。请从下一个任务里选择数值和命名,而不是把这些设置当作每个角色的默认值。"
这条纪律在四个技能里反复出现,是整套文档最有价值的设计之一。
另外,每个新角色包默认包含 Run Turn Left/Right 和 Idle Turn Left/Right(所有者 2026-09-17 的决定)。直立单位用已批准的 90 度 Idle 转身:更宽的后撤步,后脚离地前先有明确的躯干旋转。这些转身从已批准的姿势派生,通常不需要新的运动参考。
在 Oldcraft 里 fal.ai 有 100 美元硬上限,所以这个技能的定位很明确:它不是"怎么生成得更好看",而是"怎么不重复花钱、怎么在被中断后还能接上"。
image_urls / image_url / aspect_ratio / image_size / resolution / 时长 —— 每个端点都不同。原文:"不要给每个模型塞同一个参数对象。"submit_job。立刻把 endpoint、request ID、返回的状态/结果 URL 和输入参数存到任务目录。check_job 轮询 → get_job_result 取结果。processing 是正常态,不是失败COMPLETED 的结果里仍然可能藏着 provider 错误scripts/fal_job.py 每个作业写一份 receipt(job.json),已存在的 receipt 会阻止再次提交。这是防止重复扣费的机械锁,不依赖代理记得。密钥绝不打印;凭据和原始签名链接不得进入可分享的报告。
3d-production-routing 只有 38 行,却是四个技能里密度最高的。
参考图 / 生成网格 / 材质集 / 程序化模型 / 运动参考 / 可编辑动画 —— 六种不同的工件。原文:生成了网格,不等于确立了蒙皮、游戏拓扑、烘焙贴图或可用的导出。
Higgsfield 的 job type 和 fal 的 endpoint name 是两套不同的标识符,即使可见模型名很像。并且:旧脚本的默认值、厂商技能的默认值,都不能覆盖用户已经做出的选择。
或 provider 自己的登录。附带一条共享边界:出现在目录里,不等于获准发布用户的项目、媒体、账户历史或全部已装技能。
文件里散落着这样的句子:
这些技能是从作者的主仓库里抽出来复用的,带着"被复制到别处也要成立"的设计意识 —— 哪些是通用方法、哪些是本仓库特有策略,正文里被显式标注了出来。这也解释了为什么技能的相对链接指向 ../../../knowledge/ 和 ../../../processes/:在原仓库里它们是同级目录,Oldcraft 套件把它们一起复制了过来,链接才仍然成立。
| 技能 | 适配情况 |
|---|---|
character-sheet-pipeline | 直接命中需求。TASK.md §6.1 的要求就是"从已批准设定图做出严格正面 A-pose 图(加侧背视图),头发和武器单独提取",并明确点名要遵循这个技能 |
blender-game-animation | 直接命中需求。对应 TASK.md §6.4–6.5 的绑定与动画路线 |
fal-ai-generation | 可用且必要。Oldcraft 首选 Higgsfield,fal 只做备选并带 100 美元硬上限 —— 这个技能正好是那个预算的守门人 |
3d-production-routing | 可用,但它的默认上下文不是 Oldcraft,需要按项目调整路线表 |
character-sheet-pipeline 的设计前提是交互式的:三个闸门的措辞都是"等待明确批准再继续"。
而 Oldcraft 的 CLAUDE.md §2 写的是:"所有者不可用。绝不提问,也绝不等待答复。"
技能说"等批准",项目规则说"绝不等待",两条规则直接对撞。Oldcraft 的副本其实打了一个补丁("复用当前任务里已经给出的授权范围;检查点解决的是新选择,而不是把同一个问题再问一遍"),TASK.md 也有对应处理(把预算写死在文档里,由代理自行判断)。但这仍然是一条需要代理在 M0 阶段主动裁决并记入 DECISIONS.md 的冲突 —— 否则最坏的情况是代理卡在 Gate 1 等一个永远不会来的答复。
| 技能 | 路径 | 作用 | 行数 | 体积 |
|---|---|---|---|---|
| 3d-production-routing | 3d-production-routing/SKILL.md | 分诊路由:决定一个 3D 任务走哪条路线 | 38 | 2.2 KB |
| character-sheet-pipeline | character-sheet-pipeline/SKILL.md | 8 阶段 3 闸门,角色原画 → 严格正面参考包 | 239 | 19.2 KB |
| └ | character-sheet-pipeline/prompts/01a_apose_front.md | 模板 2A:严格正面 A-pose 母图 | 35 | 3.1 KB |
| └ | character-sheet-pipeline/prompts/01b_character_sheet.md | 模板 2B:三视图补充设定图 16:9 | 54 | 4.4 KB |
| └ | character-sheet-pipeline/prompts/02_parts_body.md | 模板 Stage 4:身体必需件(躯干/腿/臂/头) | 46 | 4.1 KB |
| └ | character-sheet-pipeline/prompts/03_parts_paired.md | 模板 Stage 4:成对件(手/靴) | 45 | 3.7 KB |
| └ | character-sheet-pipeline/prompts/04_parts_accessory.md | 模板 Stage 4:配饰(帽/武器/背包/披风) | 59 | 5.0 KB |
| └ | character-sheet-pipeline/prompts/05_parts_hair.md | 模板 Stage 4:头发(默认提取) | 49 | 3.1 KB |
| └ | character-sheet-pipeline/prompts/06_multiview.md | 模板 Stage 5:逐件侧视 + 背视 | 76 | 5.3 KB |
| └ | character-sheet-pipeline/prompts/07_360_video.md | 模板 Stage 6:360 度转盘视频(最贵的一步) | 64 | 4.2 KB |
| └ | character-sheet-pipeline/prompts/08_3q_classifier.md | 模板 Stage 4.5:反 3/4 视觉分类器 + 升级重试措辞 | 132 | 8.0 KB |
| blender-game-animation | blender-game-animation/SKILL.md | 绑定 → 动画 → 烘焙 → 验证过的 Unity 交付 | 129 | 11.9 KB |
| fal-ai-generation | fal-ai-generation/SKILL.md | 生成执行层 + 预算守门 + 收据去重 | 78 | 4.8 KB |
| └ | fal-ai-generation/references/mcp-workflow.md | 参数示例与作业恢复 | 93 | 4.6 KB |
| └ | fal-ai-generation/references/prompting-and-review.md | 概念 / 编辑 / 材质的提示词决策 | 49 | 2.6 KB |
| └ | fal-ai-generation/references/setup.md | 换一台机器时的连接方式 | 52 | 2.6 KB |
| └ | fal-ai-generation/examples/WALKTHROUGH.md | 不花钱的预演 + 正式生成命令 | 34 | 1.6 KB |
| └ | fal-ai-generation/examples/concept.json | 概念生成的输入示例 | — | 331 B |
| └ | fal-ai-generation/examples/edit.json | 编辑生成的输入示例 | — | 374 B |
以上 19 个 markdown / json 文件已全部译为中文,见 中文翻译 一节。中文译文保留英文提示词原文(否则提示词就没法用了),只翻译说明性文字。
这 25 张图是整个项目唯一不容争辩的东西。TASK.md 的措辞是:代理必须先逐张打开它们,之后每一次生成都要以它们为输入和风格锚点,"不匹配已批准概念的资产,在进场之前就要修好或换掉"。
鼠标悬停放大,点击看全图。
logo_oldcraft_A.webp
race_bullfolk_B.webp
race_dwarf_C.webp
race_human_C.webp
race_nightelf_C.webp
race_orc_A.webp
race_undead_B.webp
v2_biome_farmland_N.webp
v2_biome_haunted_N.webp
v2_bullfolk_B_Egpt.webp
v2_city_human_G.webp
v2_city_human_inside_N.webp
v2_city_stone_inside_N.webp
v2_city_stone_inside_W.webp
v2_dwarf_C_Egpt.webp
v2_human_C_Enano.webp
v2_nightelf_C_Egpt.webp
v2_start_valley_N.webp
v2_transition_farmland_N.webp
v2_ui_charcreate_N.webp
v2_ui_charselect_fix_G.webp
v2_ui_hud_N.webp
v2_ui_login_G.webp
v2_zone_overview_west_N.webp
v2_zonemap_west_Nref.webp全部是中灰纯色背景的风格化 3D 渲染立绘,无文字无水印 —— 这是刻意的,因为它们要直接喂给图生 3D 模型。灰色背景是生成管线的硬要求。






同一批角色,只改武器和服装配色。这是项目解决"重画一张图会把脸也改掉"的办法,也是判断哪个文件对哪一部分有权威的依据。




按玩家从出生到进城的顺序排列。注意这批图画风并不统一 —— 有的接近 2004–2010 年的 WoW 引擎截图,有的偏手绘卡通,过渡段最"玩具低模"。落地前必须先写 STYLE_BIBLE.md 把它们统一(见 11)。








这四个界面是 P0 验收第 1、2、3、11 项的直接比对对象,措辞都是"看起来要和 mockup 一样好"。布局元素需要照抄,但画面里的文字不能照抄(见 11 的第 2 条发现)。







v2_zone_overview_west_N 是 3D 渲染鸟瞰(用作登录动画与加载图的底图),v2_zonemap_west_Nref 是羊皮纸手绘世界地图(用作游戏内 UI)。两张图地理完全同构:城在西南、紫雾墓地在西北、红顶教堂在东北、麦田风车在中南、河流东西横贯、两座桥跨河、群山围住北缘与东缘。
129 张候选,晋升 25 张。这个目录是选型过程留下的化石层,读它能还原出作者到底怎么挑的。
我把两个目录做了交集:approved 里除 README.md 外的 25 个文件全部存在于 candidates 里,没有一张是"新生成"的。这是一条干净的晋升链路,也意味着没有任何已批准图是不可追溯的。
| 命名特征 | 含义 | 出现在 |
|---|---|---|
_A / _B / _C | 同一提示词的重试或变体 | 种族表、logo、lineup、旧 UI |
_G / _N / _W | 模型 id —— 同一提示词喂三个模型做对比 | v2 世界图与 v2 UI |
_Nref | reference-conditioned,以某张已定稿图为参考再生成 | 区域地图 |
_Egpt / _Enano | 做职业编辑时用的模型 | 4 张 v2_* 角色表 |
v2_ 前缀 | 第二代精修,时间戳 20:36–21:39(v1 是 18:39) | 全部最终方案 |
一个可以直接看出来的规律:_G 出小图(约 200 KB、1088×608、插画感强),_N / _W 出 2752×1536 高清图(380 KB–1 MB)。作者最终几乎一致地选了 _N。
logo 经历过三轮命名竞争:Elderhold Online → Realms of Eldmoor → World of Oldcraft,最后在 Oldcraft 内部 A/B 二选一取 A。前两个名字的 4 张 logo 全部躺在候选目录里。
东区地图(v2_zonemap_east_Nref、v2_zone_overview_east_N)已经生成好了,但 MVP 只做西区,东区整套留作扩展。这是主动砍范围,不是做不出来。
峡谷、雪原、矮人城、兽人城都生成过,因为不在"森林→农田→鬼林→城"这条主线上而被搁置。
分析这批落选稿时可以直接看到:ui_charcreate_A 的种族按钮上出现 Gnome / Tauren;ui_charselect_B 出现 Blackrock Spire / Orgrimmar / Thunder Bluff / Stormwind / Ironforge;ui_hud_A 的小地图出现 Silverpine Road。而 TASK.md §3 与 CLAUDE.md §6 都明确要求"提示词禁品牌词,含真实游戏 logo 或名称的输出必须拒绝"。
但要注意一个关键限定:商标词并不是 v1 与 v2 的分界线。已批准的 v2_ui_charselect_fix_G 画面里同样写着 Stormwind / Ironforge / Dun Morogh,v2_ui_login_G 同样带着 WoW 1.12.1 的版本串。这里真正发生的事情是:v1 被 v2 在完成度上取代(v2 分辨率更高、布局更完整),而"商标词"这条规则从 v1 到 v2 都没有被执行过。详见 第 11 节第 1 条。
这是完整未删减的生成记录。被采纳的 25 张用金色边框标出,其余为落选。鼠标悬停放大。
biome_canyon_A.webp
biome_canyon_B.webp
biome_farmland_A.webp
biome_farmland_B.webp
biome_haunted_A.webp
biome_haunted_B.webp
biome_snow_A.webp
biome_snow_B.webp
city_dwarf_A.webp
city_dwarf_B.webp
city_human_A.webp
city_human_B.webp
city_human_inside_A.webp
city_human_inside_B.webp
city_orc_A.webp
city_orc_B.webp
lineup_all_A.webp
lineup_all_B.webp
logo_elderhold_A.webp
logo_elderhold_B.webp
logo_eldmoor_A.webp
logo_eldmoor_B.webp
logo_oldcraft_A.webp
logo_oldcraft_B.webp
race_bullfolk_A.webp
race_bullfolk_B.webp
race_bullfolk_C.webp
race_dwarf_A.webp
race_dwarf_B.webp
race_dwarf_C.webp
race_human_A.webp
race_human_B.webp
race_human_C.webp
race_nightelf_A.webp
race_nightelf_B.webp
race_nightelf_C.webp
race_orc_A.webp
race_orc_B.webp
race_orc_C.webp
race_undead_A.webp
race_undead_B.webp
race_undead_C.webp
start_valley_A.webp
start_valley_B.webp
transition_canyon_A.webp
transition_farmland_A.webp
transition_haunted_A.webp
transition_snow_A.webp
ui_charcreate_A.webp
ui_charcreate_B.webp
ui_charselect_A.webp
ui_charselect_B.webp
ui_hud_A.webp
ui_hud_B.webp
ui_login_A.webp
ui_login_B.webp
v2_biome_canyon_G.webp
v2_biome_canyon_N.webp
v2_biome_canyon_W.webp
v2_biome_farmland_G.webp
v2_biome_farmland_N.webp
v2_biome_farmland_W.webp
v2_biome_haunted_G.webp
v2_biome_haunted_N.webp
v2_biome_haunted_W.webp
v2_biome_snow_G.webp
v2_biome_snow_N.webp
v2_biome_snow_W.webp
v2_bullfolk_B_Egpt.webp
v2_bullfolk_B_Enano.webp
v2_city_dwarf_G.webp
v2_city_dwarf_N.webp
v2_city_dwarf_W.webp
v2_city_human_G.webp
v2_city_human_N.webp
v2_city_human_W.webp
v2_city_human_inside_G.webp
v2_city_human_inside_N.webp
v2_city_human_inside_W.webp
v2_city_orc_G.webp
v2_city_orc_N.webp
v2_city_orc_W.webp
v2_city_stone_inside_G.webp
v2_city_stone_inside_N.webp
v2_city_stone_inside_W.webp
v2_city_stone_square_G.webp
v2_city_stone_square_N.webp
v2_city_stone_square_W.webp
v2_dwarf_C_Egpt.webp
v2_dwarf_C_Enano.webp
v2_human_C_Egpt.webp
v2_human_C_Enano.webp
v2_nightelf_C_Egpt.webp
v2_nightelf_C_Enano.webp
v2_start_valley_G.webp
v2_start_valley_N.webp
v2_transition_canyon_G.webp
v2_transition_canyon_N.webp
v2_transition_canyon_W.webp
v2_transition_farmland_G.webp
v2_transition_farmland_N.webp
v2_transition_farmland_W.webp
v2_transition_haunted_G.webp
v2_transition_haunted_N.webp
v2_transition_haunted_W.webp
v2_transition_snow_G.webp
v2_ui_charcreate_G.webp
v2_ui_charcreate_N.webp
v2_ui_charcreate_fix_G.webp
v2_ui_charselect_G.webp
v2_ui_charselect_fix_G.webp
v2_ui_hud_G.webp
v2_ui_hud_N.webp
v2_ui_login_G.webp
v2_ui_login_N.webp
v2_zone_overview_east_N.webp
v2_zone_overview_west_N.webp
v2_zonemapA_G.webp
v2_zonemapA_N.webp
v2_zonemapB_G.webp
v2_zonemapB_N.webp
v2_zonemap_east_G.webp
v2_zonemap_east_N.webp
v2_zonemap_east_Nref.webp
v2_zonemap_west_G.webp
v2_zonemap_west_N.webp
v2_zonemap_west_Nref.webp
zonemap_A.webp
zonemap_B.webp























70 条风格参考的目录清单。这是理解"经典、重制版"这个美术目标最直接的入口。
我实测过:Docs/refs/ 目录下只有 manifest.json 一个文件,70 张图一张都没有。它们由安装器联网抓取(主要来自 warcraft.wiki.gg 和 Internet Archive 的 Wayback Machine)。所以这份 JSON 是"要抓什么"的清单,不是"抓到了什么"的结果。
| 分类 | 原始 key | 数量 |
|---|---|---|
| 高清重制目标 | hd-target | 14 |
| 游戏内 UI | ui | 12 |
| 生物 | creatures | 9 |
| 前端界面 | frontend | 8 |
| 艾尔文森林 | elwynn | 7 |
| 暴风城 | stormwind | 6 |
| 北郡 | northshire | 5 |
| 闪金镇 | goldshire | 5 |
| 部落区域 | horde | 4 |
| 世代 | 数量 |
|---|---|
| 2004 原版 | 31 |
| 现代客户端 | 18 |
| 2019 怀旧服 | 10 |
| Unity 粉丝重制 | 3 |
| UE5 粉丝重制 | 3 |
| 官方概念画 | 3 |
| UE4 粉丝重制 | 2 |
| 域名 | 条目数 |
|---|---|
warcraft.wiki.gg | 44 |
web.archive.org | 10 |
blizzardwatch.com | 4 |
images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com | 3 |
static.wikia.nocookie.net | 2 |
d3kjluh73b9h9o.cloudfront.net | 2 |
bnetcmsus-a.akamaihd.net | 1 |
cdn-wow.mmoui.com | 1 |
i.imgur.com | 1 |
st.renderu.com | 1 |
i.ytimg.com | 1 |
{
"file": "frontend/login-screen-vanilla-dark-portal.webp",
"category": "frontend",
"subject": "Vanilla login screen (Dark Portal) with login UI",
"what_to_take_from_it": "Layout: WoW logo top-left, Account Name/Password boxes +
Login button centred inside the portal, small red buttons
bottom-left/right, version text bottom-left; palette of
fire-orange portal, black stone, red glowing statue eyes.",
"era": "vanilla 2004",
"source_page": "https://warcraft.wiki.gg/wiki/Login_screen",
"image_url": "https://warcraft.wiki.gg/images/Login_screen_Vanilla.jpg",
"credit": "Blizzard Entertainment (screenshot via warcraft.wiki.gg)"
}
what_to_take_from_it 这一字段写得很具体 —— 不是"参考这张图的氛围",而是逐条列出要抄哪一个 UI 元素、抄它的什么颜色。这让代理能在一张截图里精确定位可复用的设计,而不至于整张照搬。
70 条里有 56 条直接署名为暴雪娱乐的截图,4 条经第三方媒体转载(Blizzard Watch 的 2010 年截图库),其余 10 条是粉丝重制作品与画师署名。TASK.md §3 对它们的用法划了硬边界:只能作为 2D 概念图的风格参考,绝不能当贴图用,绝不能作为 3D 生成的直接输入,也绝不能进入最终构建。hd-target 分类(14 条)是其中最接近目标观感的一批 —— 尤其是一个用 Unity URP 做的艾尔文森林粉丝重制,被文档点名为"最接近目标的一条参考"。
以下是我逐张打开图片、逐份文档比对之后发现的十六处问题,并由一个独立代理在文件系统上复核过。前三处是已批准的权威文件与任务书规则之间的真实矛盾——代理在 M0 阶段一定会撞上它们。
证据 v2_ui_charselect_fix_G 画面里直接写着 Stormwind(服务器名)、Ironforge、Dun Morogh(角色所在地),角色卡是 Thorin 60 级战士 / Elira 48 级法师 / Kael 32 级圣骑士 / Sarya 28 级盗贼 / Brom 20 级猎人。v2_ui_login_G 左下角写着版本串 "Version 1.12.1 (5875) (Release) / Sep 10 2006" —— 那是 WoW 1.12.1 补丁的字面版本号。v2_city_stone_inside_N 里有一块 "THE LION'S PRIDE" 招牌。
为什么重要 TASK.md §3 写"用你自己的地名和 NPC 名;构建里不许出现暴雪 logo 或名称";CLAUDE.md §6 写"拒绝任何出现真实游戏 logo 或名称的输出"。而同一份任务书又要求"界面看起来要和这些 mockup 一样好"。代理会同时收到"照抄这个布局"和"不许出现这些名字"两条指令。值得注意的是:被淘汰的 v1 界面稿恰恰是因为画面里有 Gnome / Tauren / Orgrimmar 而被拒的 —— 说明这条标准在 v1 用得很严,到 v2 就没有再执行。
证据 v2_ui_charcreate_N 左侧是 8 个种族头像的两列网格(对应 WoW 原版八大种族),右侧羊皮纸职业说明写的是 Mage(法师),而画面中央预览的角色是一个持剑的暗夜精灵 —— 按 TASK.md §5.1,暗夜精灵的职业应该是 Ranger 游侠。
为什么重要 TASK.md §5.1 明确规定 6 个种族、每族绑定一个职业。这份 mockup 是在"六族六职业"这个设计决定之前生成的,从未按新规则返工。验收第 3 项的通过条件是"6 个种族按钮…显示该种族的职业",与 mockup 直接矛盾。
证据 角色卡上的等级是 60 / 48 / 32 / 28 / 20,还有一个"Stormwind City"的所在地字段。
为什么重要 TASK.md §9.2 规定等级 1–5,§1 规定"一个服务器,显示它的名字,没有服务器列表"。验收第 2 项要求的列表字段是"名字、等级、职业"。
证据 把八张并排看:v2_start_valley_N 和 v2_city_human_inside_N 接近 2004–2010 年的 WoW 引擎截图;v2_biome_* 和 v2_city_stone_inside_* 明显偏手绘卡通;v2_transition_farmland_N 最"玩具低模",几何面块感最强。
为什么重要 TASK.md §4 要求"保持一种一致风格,拒绝破坏风格或比例的资产",并且明确要在任何生成之前先写出 STYLE_BIBLE.md。当八张权威参考本身就不一致时,代理必须先自己做一个统一裁决并记录下来,否则后续每一张生成都会从不同的锚点出发。这是 M0 阶段最容易低估的一项工作。
证据 race_human_C 和 race_dwarf_C 每张画了 4 个身体(2 男 2 女、两种肤色/发色);其余四族每张只画男女各 1 个。
为什么重要 验收第 4 项要求"全部 12 个种族/性别身体看起来像已批准设定图",但人类和矮人的设定图给的是 4 选 2 的选项,没有说明多出来的两个变体是该舍弃、还是该做成肤色选项。TASK.md §5.2 确实提到"肤色(色调或贴图替换)",但没把两件事连起来。
证据 原版 race_bullfolk_B 是红袍 + 蓝光水晶杖;职业编辑版 v2_bullfolk_B_Egpt 是绿袍 + 绿光藤叶杖。
为什么重要 README 的裁定是"武器和服装以职业编辑版为准,脸/发/身体以原版为准"。这条规则在本例中会造成歧义:袍子的颜色算"服装"(取绿)还是算"身体外观"?需要一次明确决策。
证据 processes/ 里的文档默认的图像端点是 fal-ai/nano-banana-2 及其 edit 版;TASK.md §15 的工具表只列 fal-ai/nano-banana-pro 和 openai/gpt-image-2.5/*。另外 knowledge/3d-gen-preferences.md 把 Meshy 7 重打贴图列为可对比选项、把 Customuse 当作锁定管线,而 TASK.md §15 明确写着 "Avoid: Meshy retexture",且只授权 Higgsfield Tripo H3.1 与 fal Tripo P1 直出。
为什么重要 这是一份从旧项目继承的文档与一份新写的任务书之间的正常漂移。CLAUDE.md 第 1 节规定 Docs/TASK.md 是权威,但这批流程文档被四个技能直接链接引用 —— 代理读到哪一份就按哪一份执行。建议在 M0 就把这份差异固化成一条决策记录。
证据 PIPELINE_LESSONS.md §7 把自己的风险清单第一条写成:"跨种族体型的 Humanoid 重定向,在仓库里从未验证过 —— Overlord 只用 Generic rig,四个身体共享一套动画集是最冒险的美术任务。"
为什么重要 而当时的做法(第 48 行)是"只用 Generic,从未使用 Humanoid Avatar,即使在 Mixamo 人类模型上"。World of Oldcraft 有 6 种差别巨大的体型(矮人 1.30 m 到牛头人 2.50 m),任务书 §6.5 要求"优先用 Humanoid avatar + 一个共享 Animator Controller,撑不住就在 Blender 里逐身体烘焙"。这条路线要在第一个身体上尽早试,失败了整条角色管线要改道。
证据 PIPELINE_LESSONS.md §7:"没有任何已验证可用的自动绑骨服务。Higgsfield 的 3d_rigging 和 bl_import_motion 都只是目录里列着、没实测过。"Mesh2Motion、Cascadeur、Animate Anything 三个方案的历史评价是"一直差一点成功,然后崩溃"。
为什么重要 3d_rigging 是任务书 §15 的首选路线,但在经验文档里它是未验证的。回退方案是在 Blender 里手工绑定(每个生物 1–2 小时),这会直接限制生物种类数量。
证据 机制上没有任何东西阻止代理自己创建 .claude/ALLOW_STOP 然后体面地结束会话。.gitignore 只让它不进版本库。
为什么重要 整套长会话设计建立在"代理会遵守 CLAUDE.md 第 2 节"之上。要真停,人得手动关会话或提前写好放行文件。这是有意的设计选择,不是漏洞 —— 但使用者需要知道这条线在哪。
证据 安装器是 PowerShell 脚本,参数示例是 C:\GIT\WorldOfOldcraft、C:\Program Files\Blender Foundation\...,还有 winget install 的说明;host-tools/ 三个脚本依赖 ffmpeg 的 gdigrab 桌面抓取设备。
为什么重要 整套工具的原始运行环境是 Windows。在 macOS 或 Linux 上需要自己重写安装步骤(没有 PowerShell 的 gdigrab 等价物,其余步骤都是纯复制 + 下载,可以手工照做)。
证据 dot-claude/skills/character-sheet-pipeline/prompts/01a_apose_front.md(母图模板)要求 "Arms angled ~45° down-and-out";而 processes/3d-ai/prompting.md 写的是 "arms held at 30 degrees",knowledge/image-gen-lessons.md 也写 "arms 偏离身体 30°"。
为什么重要 TASK.md §10 的 A-pose 管线同时引用了这两套文档。手臂角度直接决定图生 3D 出来的模型能不能正常绑定 —— 30° 与 45° 是两个不同的目标姿态。代理必须在 M0 阶段做一次明确裁决并写进 DECISIONS.md。
证据 根目录 requirements.txt 是 fal-client>=0.5(无版本上限);而 dot-claude/skills/fal-ai-generation/scripts/requirements.txt 是 fal-client>=0.13.2,<1 加 python-dotenv>=1,<2。
为什么重要 KIT_README 的安装步骤只让你装根目录那一份。而 fal_job.py 文档里声称的队列 API 行为是按 0.13.x 描述的 —— 按 README 装出来的环境对 fal 客户端行为没有任何版本保证,而这正是消耗 100 美元预算的那条通路。
证据 KIT_CONTENTS.json 的 scripts 数组只登记了 3 个脚本,漏掉实际存在的 scripts/refs/fetch_refs.py 与 scripts/capture/make_timelapse.py;links_not_copied 声明为空数组,但文档里确实存在断链引用(workspace_video_optimize.py、processes/project-mcp.md、.agents/skills/img2threejs、scripts/shared/report_style.py —— 最后这个被 knowledge/image-gen-lessons.md 引用而该目录并不存在)。
为什么重要 这不是致命问题,但它说明这份清单是手写的、没有校验过。不要把它当作可信的完整性依据;以文件系统实况为准。
证据 scripts/image-gen/generate.py 内置的模型注册表有 14 个 key,除任务书列出的 Nano Banana 与 GPT-Image 系列外,还包含 grok-imagine-2、seedream-v4、seedream-v5-pro 等 —— 其中 Seedream V5 Pro 不在 TASK.md §15 的授权清单内。默认参数是 --model nano-banana-2、--workers 5。
为什么重要 一个"顺手就能用"的脚本里躺着任务书没授权的模型,对追求预算纪律的项目是个小隐患。使用该脚本时必须显式传 --model(PIPELINE_LESSONS 第 21 行也确实这么要求)。
证据 已批准的角色设定图大多是 1024×768,界面稿是 1088×608,只有 v2_*_Enano 系列是 2400×1792。而 TASK.md §14 要求主角与主建筑贴图做到 2K。
为什么重要 这不是缺陷 —— 概念图的定位本来就是风格锚点与生成输入,不是贴图来源。但如果误把它们直接当贴图用,会得到明显糊掉的表面。2K 贴图必须由生成管线重新产出。
这个包在工程纪律上做得非常扎实:黄金路径必须永远可玩、代理不许给自己打分、失败的尝试要保留、报不出的数字写"未记录"而不是 0。它真正的薄弱处集中在美术权威文件的时代错位 —— 那几张界面 mockup 是在"六族六职业、自创地名、1–5 级"这些决定敲定之前生成的,之后没有返工,却在验收条款里被要求"一模一样地还原"。这是 M0 阶段最值得优先处理的一件事。
核心文档已全文译为简体中文,与原文件一一对应,放在 zh/ 目录下。
| 译文 | 原文 | 体积 | 内容 |
|---|---|---|---|
CLAUDE.zh.md | CLAUDE.md | 10 KB | 代理的工作规则全文:10 条硬规则。每次启动或压缩后第一个要读的东西。 |
TASK.zh.md | Docs/TASK.md | 31 KB | 完整任务书 19 章:使命、MVP 九步、18 项验收表、六族职业表、世界路线、工具与预算、里程碑、交付物。 |
KIT_README.zh.md | KIT_README.md | 8.6 KB | 给人看的说明:套件构成、一次性环境准备、安装命令、启停方式、预算与授权。 |
KICKOFF.zh.md | Docs/KICKOFF.md | 2.1 KB | 四段可直接粘贴的提示词:启动 / 崩溃恢复 / 给镜头报进度 / 收尾冻结。 |
PIPELINE_LESSONS.zh.md | Docs/PIPELINE_LESSONS.md | 23 KB | 前项目血泪教训浓缩:工具清单、生产路线、Unity/Blender 陷阱、长会话框架经验、给提示词的前 15 条规则、已知风险。 |
SKILLS-OVERVIEW.zh.md | (分析总结,非翻译) | 17 KB | 四个技能的分析总结:流水线分工、最高法则、8 阶段 3 闸门、模型路由理由、八条反模式、与项目的适配度与规则冲突。 |
| 译文 | 原文 | 说明 |
|---|---|---|
skills/3d-production-routing/SKILL.zh.md | 3d-production-routing/SKILL.md | 分诊路由,38 行 |
skills/character-sheet-pipeline/SKILL.zh.md | character-sheet-pipeline/SKILL.md | 角色表管线主文档,239 行 |
skills/character-sheet-pipeline/prompts/*.zh.md (9 个文件) | character-sheet-pipeline/prompts/*.md | 9 个提示词模板(01a–08) |
skills/blender-game-animation/SKILL.zh.md | blender-game-animation/SKILL.md | 绑定与动画,129 行 |
skills/fal-ai-generation/SKILL.zh.md | fal-ai-generation/SKILL.md | 生成执行层,78 行 |
skills/fal-ai-generation/references/*.zh.md (3 个文件) | fal-ai-generation/references/*.md | 3 份参考文档 |
skills/fal-ai-generation/examples/*.zh.* (4 个文件) | fal-ai-generation/examples/* | 2 个输入示例 + 演练 |
这些技能里含有会被直接复制去执行的英文提示词(prompt skeleton、negative 清单、{CHARACTER_DESCRIPTION} 这类模板占位符)。这些内容在译文里保持英文原样不动,中文只作紧邻的说明。把提示词译成中文就没法用了 —— 项目的皮肤是英文提示词,这一点在 CLAUDE.md 里也写死了。
保持英文原样的是:文件路径、代码标识符、MCP 工具名、Unity 与 Blender 的 API 和导入参数、模型与端点 id、CLI 命令、品牌名、资产车道名,以及 implemented / agent-verified / pending owner review 这套状态词。六种族与六职业在首次出现时保留英文并附中文,之后统一用中文。每个译文文件开头都有一行 HTML 注释标明它是机器翻译及其源文件路径。
| 原文 | 译文 | 说明 |
|---|---|---|
owner | 所有者 | 项目的发起人,也是唯一有权结束会话的人 |
lane | 车道 / 工作线 | 多代理并行时的一条独立工作流,每条独占一类资源 |
Integrator | 集成者 | 主循环,唯一有权改动打开中的 Unity 编辑器的代理 |
gold path | 黄金路径 | 登录→建角→进世界→战斗→升级→进城 这条必须永远可跑通的主线 |
gate | 闸门 / 关卡 | 里程碑或流程里的强制检查点,不过不许继续 |
greybox | 灰盒 | 用基础几何体搭的可玩结构,美术资产之前的第一步 |
fixture | 夹具 | 跑在 Play Mode 里、把结果写成 JSON 的自动化检查 |
harness | 运行框架 | 钩子 + 夹具 + 黄金路径驱动的总称 |
role edit | 职业编辑 | 同一角色的武器/服装重绘版本 |
face_limit / decimate | 保持原文 | 生成与减面的参数名,不译 |
以下文件保持英文原样,因为它们是给机器读的而非给人读的,改动反而会破坏引用关系:
SKILL.md 及其 8 个提示词模板(这些是代理执行时直接加载的指令文本)knowledge/、processes/、projects/ 下的 24 篇参考文档(由技能按需链接,路径与文件名必须一致)Docs/refs/manifest.json(70 条参考的字段值直接进入生成提示词)README.md(种族与职业的权威对应表,代理会逐字引用)这些文档的内容要点已经在本报告第 06 节做了中文提炼,需要时可以参考那里的逐文件摘要。
一个独立代理在文件系统上重新核对本报告的全部结论后给出的补正。
| 项目 | 值 |
|---|---|
| approved概念图webp | 25 |
| approved目录文件总数(含README) | 26 |
| candidates概念图webp | 129 |
| approved∩candidates文件名交集 | 25 |
| 交集内容逐字节相同 | 25/25 |
| md | 47 |
| py | 9 |
| json | 7 |
| ps1 | 4 |
| txt | 2 |
| env.example(无扩展名计1) | 1 |
| kit文件总数 | 224 |
| kit目录数 | 32 |
| kit内容字节合计 | 50414335 |
| Docs/refs图片数 | 0(仅 manifest.json 45,069 B) |
| refs条目 | 70 |
| refs分类 | hd-target 14 / ui 12 / creatures 9 / frontend 8 / elwynn 7 / stormwind 6 / northshire 5 / goldshire 5 / horde 4 |
| refs年代 | vanilla 2004=31, modern=18, classic 2019=10, fan remake Unity=3, UE5=3, UE4=2, concept art=3 |
| refs署名含Blizzard Entertainment | 56 |
| fal_job.py行数 | 214 |
| test_fal_job用例数 | 8 |
| mixamo_clips | 90 |
| dot-claude/skills文件数 | 22 |
| scripts下py文件数 | 5 |
| install_kit.ps1行数 | 114 |
| hooks脚本行数 | keep_working.py 36 + after_compact.py 9 |
| kit内cs_unity_prefab_fbx_glb文件 | |
| 断链引用 | workspace_video_optimize.py、processes/project-mcp.md、.agents/skills/img2threejs、scripts/shared/report_style.py、projects/overlord/skeleton-animation/* 均实测不存在 |
| world概念图尺寸 | 8张中7张2752x1536,v2_city_human_G为1088x608,实测一致 |
| v1/v2候选mtime | v1=2026-09-24 18:39, v2=20:36–21:39,与lane说法一致 |
该 9-lane digest 的事实密度和准确率很高:我逐条抽查了文件数(224)、扩展名分布(webp 154/md 47/py 9/json 7/ps1 4/txt 2/env.example 1)、approved 25 与 candidates 129 及 25 个交集(全部逐字节相同)、refs 无图片且 manifest 70 条的分类/年代/域名计数、fal_job.py 214 行与全部防扣费机制、mixamo 90 clips 与 Dryad UUID 一致性、8 张世界概念图尺寸、v1/v2 mtime 世代、各断链文件、TASK §15 白名单/Avoid 表等,均与原始文件相符。需要修正的硬错误只有一处(测试用例 8 个写成 9 个),另有三处措辞夸大或不精确(refs Blizzard 署名 56 而非约 57、'逐字复用'、negatives 约 25 而非 23),一处实质性误导(把'含暴雪商标词'当 v1 UI 落选实质理由,而已批准的 v2_ui_charselect_fix_G 画面内仍含 Stormwind/Ironforge/Dun Morogh 与狮徽,我已实际打开该图核实)。最大缺口是覆盖面:安装与运行基础设施整层(install_kit.ps1、hooks、settings/mcp/env/根 requirements、5 个 scripts、KIT_CONTENTS.json、host-tools)没有任何 lane 覆盖,且报告没有点明'kit 内 0 行代码 0 个 3D/场景文件、全部产物靠运行时生成与下载'这一定性事实,以及 A-pose 30°/45° 两套文档冲突、根与技能 requirements.txt 的 fal-client 版本约束冲突、KIT_CONTENTS.json 漏登记两个脚本这几处 kit 内部不一致。整体评级:主干可信可引用,基础设施层需补写后再发布。