Data-only contributions: per-model JSON registry, validation, PR CI
Contributors no longer touch site code. Model registration moves from cases.ts literals to repo-root models/<model-id>.json files (filename = model id = outputs/ folder); cases move to cases.json; cases.ts now just derives MODELS/RUNS via import.meta.glob. Parallel PRs stop conflicting because each model owns its own file. scripts/validate-data.ts runs inside `bun run build` and a new PR CI workflow: dash-only ids, required bilingual provenance note per run, declared artifacts must exist, no orphan outputs/ dirs. Also: run notes render whitespace-pre-wrap (multi-line notes, idea from PR #2), README contribution guide rewritten around the JSON template, CLAUDE.md updated, OG card refreshed for the DeepSeek merge. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e2f03163de
commit
80817b8a2b
15 files changed
+193
-10
No files matched your search
@@ -0,0 +1,20 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: oven-sh/setup-bun@v2
|
||||
- name: Install dependencies
|
||||
run: bun install
|
||||
working-directory: site
|
||||
- name: Type-check and build
|
||||
run: bun run build
|
||||
working-directory: site
|
||||
@@ -10,9 +10,10 @@ One-shot LLM eval cases by NAGI STUDIO: same prompt, different models, one attem
|
||||
|
||||
```
|
||||
outputs/<model-id>/<case-id>.<ext> 模型产出原文件(HTML / SVG),文件名 = 案例 id
|
||||
models/<model-id>.json 模型登记:label / vendor / order / 各案例运行备注
|
||||
site/ 展示站点(Vite + React + Tailwind v4 + GSAP,bun 驱动)
|
||||
site/src/data/cases.ts 案例定义:双语提示词、模型列表、运行备注
|
||||
.github/workflows/deploy.yml GitHub Pages 自动部署
|
||||
site/src/data/cases.json 案例定义:双语标题与提示词(维护者维护)
|
||||
.github/workflows/ deploy.yml 自动部署;ci.yml 对 PR 跑数据校验 + 构建
|
||||
```
|
||||
|
||||
## URL 规则 / URL scheme
|
||||
@@ -37,13 +38,34 @@ bun run dev # 同步 outputs/ 并启动 http://localhost:5173/
|
||||
bun run build # 类型检查 + 产物构建(输出到 site/dist)
|
||||
```
|
||||
|
||||
## 添加案例或模型 / Adding a case or model
|
||||
## 贡献一个模型产出 / Contributing a run
|
||||
|
||||
1. 把产出文件放进 `outputs/<model-id>/`,命名为 `<case-id>.<ext>`(如 `mythos-craft.html`)。
|
||||
2. 在 `site/src/data/cases.ts` 里登记:
|
||||
- 新模型:加入 `MODELS`(`status: 'ran' | 'pending'`)。
|
||||
- 新案例:加入 `CASES`(中英双语 `title` / `tagline` / `prompt`)。
|
||||
- 运行记录:在 `RUNS` 里登记案例 id 对应的模型 id(可附双语 `note` 运行备注;文件名不符合约定时用 `file` 覆盖)。
|
||||
3. 推送到 `main`,GitHub Actions 自动构建并部署。
|
||||
贡献**不需要改任何代码**,只涉及两类文件:
|
||||
|
||||
Drop the artifact into `outputs/<model-id>/` named `<case-id>.<ext>`, register it in `site/src/data/cases.ts` (model in `MODELS`, case in `CASES` with bilingual prompts, run entry in `RUNS` with an optional per-model `note`), then push to `main` — GitHub Actions deploys automatically.
|
||||
1. 产出文件:`outputs/<model-id>/<case-id>.<ext>`(如 `outputs/gpt-5-5-pro/pelican-cycling.svg`)。
|
||||
2. 模型登记:`models/<model-id>.json`(新模型新建文件;已有模型在 `runs` 里加一条):
|
||||
|
||||
```json
|
||||
{
|
||||
"label": "GPT-5.5 Pro",
|
||||
"vendor": "OpenAI",
|
||||
"order": 20,
|
||||
"runs": {
|
||||
"pelican-cycling": {
|
||||
"note": {
|
||||
"zh": "在哪个工具/产品里、什么思考档位、是否一次生成、是否有修复",
|
||||
"en": "Which tool, what effort level, one-shot or fixed"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
规则(CI 自动校验,不满足会挂):
|
||||
- `model-id` 只用小写字母/数字/连字符(如 `doubao-seed-2-0-pro`),文件名与 `outputs/` 目录名一致;
|
||||
- 每条 run 的 `note` **双语必填**——这是本仓库的可信度来源,必须写明产出怎么来的;
|
||||
- 声明的 run 必须有对应的产出文件。
|
||||
|
||||
提 PR 后 CI 会跑数据校验 + 构建;合入 `main` 自动部署。
|
||||
|
||||
Contributions are data-only — no code changes needed. Drop the artifact into `outputs/<model-id>/<case-id>.<ext>` and register it in `models/<model-id>.json` (schema above). CI enforces: dash-only ids matching the folder name, a required bilingual provenance `note` per run, and that every declared run has its artifact. Merges to `main` deploy automatically.
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"label": "Claude Fable 5",
|
||||
"vendor": "Anthropic",
|
||||
"order": 10,
|
||||
"runs": {
|
||||
"mythos-craft": {
|
||||
"note": {
|
||||
"zh": "在 Claude 网页版以 Fable 5 Max(最高思考强度)运行,过程中触发一次 auto compact 与工具调用上限,手动输入「继续」后完成;ID 水印与英文支持为事后在 Cursor 中用 Composer 2.5 Fast 一条提示词补加,其余均为一次生成。已知小问题:开局可能卡在一棵树里,按一下 G 即可脱身。",
|
||||
"en": "Run in the Claude web app on Fable 5 Max (max thinking effort); hit one auto-compact and the tool-call limit mid-run, finished after a manual \"continue\". The ID watermark and English support were patched in afterwards with a single prompt via Composer 2.5 Fast in Cursor; everything else is one-shot. Known quirk: you may spawn stuck inside a tree - press G once to get free."
|
||||
}
|
||||
},
|
||||
"pelican-cycling": {
|
||||
"note": {
|
||||
"zh": "在 Claude 网页版以 Fable 5 Max(最高思考强度)一次生成。",
|
||||
"en": "Generated in one shot in the Claude web app on Fable 5 Max (max thinking effort)."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"label": "Composer 2.5",
|
||||
"vendor": "Cursor",
|
||||
"order": 70,
|
||||
"runs": {
|
||||
"mythos-craft": {
|
||||
"note": {
|
||||
"zh": "在 Cursor 中以 Composer 2.5 生成;本页为修复版(改 1 行)+ 补一个小功能。问题:第 1152 行水平速度先乘 speed*dt,位移时又乘一次 dt,实际步速只有设计值(5 格/秒)的约 1/60。修复前:走路如蜗牛、跳跃下落却正常;沙漠雪地等群系与神话建筑实际走不到,体感像「切换不了场景」——游戏本无传送功能,群系需步行抵达。原因:X/Z 轴把「每帧位移」当「每秒速度」存入 velocity,与 Y 轴语义不一致。去掉一次 dt 后步行恢复 5 格/秒。另外它确实生成了精灵螺旋塔、龙神殿、天空遗迹三处景点(也画在小地图上),但原版只能徒步抵达——已补加按 G 依次瞬移到三处景点的功能,开屏说明里也加了一行。",
|
||||
"en": "Generated with Composer 2.5 in Cursor; fixed build (1 line changed) plus one small addition. Bug: line 1152 multiplied horizontal velocity by speed*dt, then displacement multiplied by dt again, leaving walking at ~1/60 of the designed 5 blocks/s. Before the fix: walking crawled while jumping/falling felt normal, and biomes or mythic structures were virtually unreachable — which read as \"scene switching is broken\" (there is no teleport; biomes are reached on foot). Cause: X/Z stored per-frame displacement in a per-second velocity field, inconsistent with the Y axis. With one dt removed walking is back to 5 blocks/s. It does generate three landmarks (Elven Spiral Tower, Dragon Temple, Sky Ruins — also drawn on the minimap) that were only reachable on foot, so a G-key cycle-teleport to them was added, with a line in the start screen."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"label": "DeepSeek-V4-Pro",
|
||||
"vendor": "DeepSeek",
|
||||
"order": 90,
|
||||
"runs": {
|
||||
"mythos-craft": {
|
||||
"note": {
|
||||
"zh": "在 Claude Code 中以 DeepSeek V4 Pro(最高思考强度)一次生成,未修复。包含 Perlin 噪声地形、WASD + 鼠标第一人称操控、12 种方块类型(含水、黑曜石、水晶、金块等)、程序化材质纹理、四种神话建筑(水晶塔、石环阵、龙骨遗迹、天空遗迹),按 G 可随机传送至神话建筑。",
|
||||
"en": "Generated in one shot via Claude Code with DeepSeek V4 Pro (max thinking effort), no fixes. Features Perlin noise terrain, WASD + mouse first-person controls, 12 block types (including water, obsidian, crystal, gold), procedural textures, and four mythic structures (Crystal Tower, Stone Circle, Dragon Skeleton, Sky Ruins). Press G to teleport between landmarks."
|
||||
}
|
||||
},
|
||||
"pelican-cycling": {
|
||||
"note": {
|
||||
"zh": "在 Claude Code 中以 DeepSeek V4 Pro(最高思考强度)一次生成。场景包含天空、海洋、沙滩、棕榈树、海鸥、完整自行车细节(辐条、链条、齿轮)以及鹈鹕(长喙、喉囊、羽翼、踩踏动作)。",
|
||||
"en": "Generated in one shot via Claude Code with DeepSeek V4 Pro (max thinking effort). Scene includes sky, ocean, beach, palm trees, seagulls, detailed bicycle (spokes, chain, gears), and a pelican (beak, gular pouch, wings, pedaling pose)."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"label": "Gemini 3.1 Pro",
|
||||
"vendor": "Google",
|
||||
"order": 40,
|
||||
"runs": {
|
||||
"mythos-craft": {
|
||||
"note": {
|
||||
"zh": "通过 AntiGravity 生成(thinking effort: high);一次生成,未发现需要修复的问题,原样展示。",
|
||||
"en": "Generated via AntiGravity (thinking effort: high); one shot, no fixes needed — shown as-is."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"label": "Gemini 3.5 Flash",
|
||||
"vendor": "Google",
|
||||
"order": 50,
|
||||
"runs": {
|
||||
"mythos-craft": {
|
||||
"note": {
|
||||
"zh": "通过 AntiGravity 生成(thinking effort: high);本页为修复版(仅改 1 行)。问题:16 张贴图按「上为原点」的行序画进 4×4 图集,UV 坐标表也按同一行序编写,但 CanvasTexture 默认 flipY=true 把采样行上下镜像(第 r 行实际采到第 3-r 行)。修复前:草地顶面显示成紫水晶、侧面采到带透明孔洞的传送门/树叶贴图,配合 alphaTest 出现大量「透明方块」,放置的方块贴图与名称完全对不上。原因:flipY 与图集行序约定不一致。加上 flipY=false 后行序对齐,地形与方块全部正常。",
|
||||
"en": "Generated via AntiGravity (thinking effort: high); fixed build (1 line changed). Bug: 16 tiles drawn into a 4x4 atlas with top-origin rows, and the UV table uses the same convention, but CanvasTexture's default flipY=true mirrors the rows on sampling (row r actually reads row 3-r). Before the fix: grass tops rendered as purple crystal, sides sampled the portal/leaves tiles with alpha holes — hence the many \"transparent blocks\" — and placed blocks never matched their names. Cause: flipY disagreeing with the atlas row convention. With flipY=false everything lines up."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"label": "GLM-5.1",
|
||||
"vendor": "Zhipu AI",
|
||||
"order": 120
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"label": "GPT-5.5 Pro",
|
||||
"vendor": "OpenAI",
|
||||
"order": 20,
|
||||
"runs": {
|
||||
"mythos-craft": {
|
||||
"note": {
|
||||
"zh": "以 GPT-5.5 Pro(开启 Extended Pro)生成;本页为修复版(仅改 1 行)。问题:14 张贴图排成 8×2 图集、第二行只画了 6 格,UV 按左上原点计算却未设 flipY=false,两行贴图上下互换采样。修复前:草地顶面显示成黑曜石(地面全黑),树叶、沙子采到未绘制的空格(大片纯黑),放置方块的贴图互相串行、颜色诡异似反色。原因:CanvasTexture 默认 flipY=true,与自上而下的图集布局不匹配。加上 flipY=false 后地形与方块颜色全部正常。",
|
||||
"en": "Generated with GPT-5.5 Pro (Extended Pro enabled); fixed build (1 line changed). Bug: 14 tiles in an 8x2 atlas with only 6 slots drawn in row two, UVs computed from a top-left origin without flipY=false, so the two rows swapped on sampling. Before the fix: grass tops rendered as obsidian (black ground), leaves and sand hit undrawn slots (large black patches), and placed blocks wore each other's textures with inverted-looking colors. Cause: CanvasTexture defaults to flipY=true, mismatching the top-down atlas layout. With flipY=false everything renders correctly."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"label": "GPT-5.5 xhigh",
|
||||
"vendor": "OpenAI",
|
||||
"order": 30,
|
||||
"runs": {
|
||||
"mythos-craft": {
|
||||
"note": {
|
||||
"zh": "全程在 Codex CLI 中生成(未使用任何 skill);本页为修复版(仅改 1 行)。问题:移动向量的 Z 分量整体差一个负号(第 979 行,正确应为 -strafe*sin - forward*cos)。修复前:运动被沿 X 轴镜像——面朝 ±X 方向时按 A/D 左右颠倒,面朝 ±Z 时 W/S 前后颠倒,体感「左右移动方向不对」。原因:Three.js 相机在 yaw=0 时朝 -Z,推导前进/侧移向量时把这个约定弄反了。给 Z 分量取负后,任意朝向下八方向移动全部正确。",
|
||||
"en": "Generated entirely in Codex CLI (no skills); fixed build (1 line changed). Bug: the movement vector's Z component had its sign flipped (line 979; correct form is -strafe*sin - forward*cos). Before the fix movement was mirrored across the X axis — A/D swapped when facing +-X, W/S swapped when facing +-Z, i.e. \"strafing goes the wrong way\". Cause: a Three.js camera faces -Z at yaw 0, and the forward/right derivation inverted that convention. Negating Z makes all eight directions correct at any heading."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"label": "Grok Build",
|
||||
"vendor": "xAI",
|
||||
"order": 60,
|
||||
"runs": {
|
||||
"mythos-craft": {
|
||||
"note": {
|
||||
"zh": "在本地通过 Grok Build(TUI)开发实现;本页为修复版(共改 3 行)。问题一:第 82 行 const WORLD_SEED = 0xAETHER,T/H/R 不是十六进制字符,整段脚本解析即抛 SyntaxError——修复前画面纯黑,只剩 HTML 文字。问题二:贴图集画在 canvas 顶部两行、UV 按左上原点计算,却未设 flipY=false,所有面采样到未绘制的黑色区域——修复前进入世界后近处地形全黑。问题三:forward 向量已指向相机朝向,按键却写成 W 减、S 加——修复前按 W 后退、按 S 前进(A/D 正常)。三处均为一行级修正,其余保持 Grok 原样。",
|
||||
"en": "Built locally with the Grok Build TUI; fixed build (3 lines changed). Bug 1: line 82 const WORLD_SEED = 0xAETHER — T/H/R are not hex digits, so the whole script threw a SyntaxError at parse time; before the fix the screen was pure black with only HTML text. Bug 2: the atlas is drawn in the top canvas rows with top-left-origin UVs but no flipY=false, so every face sampled the undrawn black region; before the fix nearby terrain rendered solid black. Bug 3: the forward vector already points where the camera looks, but W subtracted and S added — W walked backward (A/D were fine). One line each; everything else is Grok as-is."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"label": "Kimi K2.6",
|
||||
"vendor": "Moonshot AI",
|
||||
"order": 100
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"label": "MiniMax M3",
|
||||
"vendor": "MiniMax",
|
||||
"order": 110
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"label": "Mistral Medium 3.5",
|
||||
"vendor": "Mistral AI",
|
||||
"order": 80
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"label": "Qwen3.7-Max",
|
||||
"vendor": "Alibaba",
|
||||
"order": 130
|
||||
}
|
||||
Reference in new issue
Block a user