puzzle单机实现

This commit is contained in:
2026-04-24 20:41:24 +08:00
parent 88bd4f36e9
commit 0940a1945c
6 changed files with 716 additions and 152 deletions

View File

@@ -192,6 +192,9 @@ Agent 在这一玩法里不负责实时玩法裁决,它只负责 3 件事:
3. 会总结,不只会追问
4. 会补缺,不会平均盘问
5. 进度基于真实锚点完成度,而不是机械轮次
6. 当会话至少完成 `2` 轮后,工作区必须提供 `补充剩余关键字` 快捷动作。
- 该动作只向 Agent 发送“请补充剩余关键字。”,由后端 Agent 根据当前锚点补齐缺失关键词。
- 前端不得自行推断成长阶梯、风险节奏或视觉母题,也不得直接改写锚点状态。
## 7.3 大鱼吃小鱼玩法的 4 个最小高杠杆锚点
@@ -948,6 +951,12 @@ Agent 在这一玩法里不负责实时玩法裁决,它只负责 3 件事:
5. `src/services/big-fish-*`
- 前端 client、adapter、view model
后端字段边界要求:
1. LLM 输出、HTTP 响应和前端交互契约可以使用 `camelCase`,例如 `nextAnchorPack``gameplayPromise``ecologyVisualTheme`
2. 写入 SpacetimeDB 的 `anchor_pack_json``draft_json``asset_coverage_json``snapshot_json` 必须序列化 Rust 领域结构,字段名保持 `snake_case`
3. `api-server` 负责在 LLM/HTTP 边界显式翻译字段名,不能把前端响应层 JSON 直接透传为 SpacetimeDB 持久化 JSON。
---
## 22. 平台内脚本命名规范

View File

@@ -91,6 +91,16 @@
10. 游戏画面必须显示作者信息和关卡名。
11. 前端只负责表现和交互输入,逻辑、数据、关卡裁决、推荐计算、状态存储全部放到 `server-rs` 后端,由 `Axum + SpacetimeDB + OSS` 方案承接。
### 第一版单机例外说明 2026-04-24
为了先把拼图玩法跑通,第一版运行态采用单机本地版本,作为上面总原则的阶段性例外:
1. Agent 会话、结果页草稿、正式候选图生成、封面确认、发布、作品读取,仍然全部走 Rust 后端。
2. 进入拼图玩法后的 `run` 只在前端本地内存中存在。
3. 交换、拖动、通关判断不写回后端。
4. 关闭玩法后不保留本次运行态,不做断点续玩。
5. 后续如果要做跨端续玩、多端同步或排行榜,再把运行态真相源收回后端。
---
## 4. 明确不做
@@ -191,7 +201,10 @@
1. 优先接住创作者的画面灵感,而不是立刻列问卷。
2. 每轮只追问当前最影响图片生成质量的 `1` 个问题。
3. 当创作者已经说出足够信息时,优先总结,不重复追问。
4. 在进入结果页前,至少确认:
4. 当会话至少完成 `2` 轮后,工作区必须提供 `补充剩余关键字` 快捷动作。
- 该动作只向 Agent 发送“请补充剩余关键字。”,不在前端补数据、不伪造锚点状态。
- Agent 收到后应优先补齐仍为 `待补充` / 空值的锚点关键词,并保持每次回复清爽直接。
5. 在进入结果页前,至少确认:
- 一句题材承诺
- 一个主要视觉主体
- 一组气质描述
@@ -294,6 +307,12 @@ interface PuzzleAnchorPack {
2. 创作者选择 `1` 张作为正式图
3. 正式图确定后,写回作品主图
后端落地契约:
1. `api-server` 写入 SpacetimeDB 的候选图 JSON 必须使用 `module-puzzle::PuzzleGeneratedImageCandidate` 持久化结构。
2. 持久化字段名保持 Rust 侧 `snake_case`,例如 `candidate_id``image_src``asset_id``actual_prompt``source_type`
3. 面向前端的 HTTP 响应仍由 `shared-contracts` 单独映射为 `camelCase`,不能把响应层字段名直接写入 SpacetimeDB JSON。
## 7.6 拼图图片资产要求
拼图图片的正式资产要求: