Files
Genarrative/docs/technical/BIG_FISH_PROMPT_MODULE_EXTRACTION_2026-04-28.md
2026-04-28 19:36:39 +08:00

3.7 KiB

大鱼吃小鱼提示词脚本拆分 2026-04-28

背景

大鱼吃小鱼当前在 server-rs/crates/api-server/src/big_fish.rsserver-rs/crates/api-server/src/big_fish_agent_turn.rs 中同时承载了三类不同职责的提示词:

  1. Agent 聊天阶段的草稿生成提示词。
  2. 结果页主图 / 生图提示词。
  3. 结果页动作关键帧提示词。

这会带来两个直接问题:

  1. 聊天共创脚本和正式资产脚本混在路由业务文件中,后续继续调词时很容易顺手改到状态编排逻辑。
  2. 大鱼吃小鱼已经明确要求“草稿编译”和“结果页资产工坊”分离,如果提示词仍散落在业务实现里,后续很容易再次把动作资产逻辑误塞回 compile action。

本轮目标

把下面三类提示词显式拆到独立 prompt 脚本中:

  1. 草稿生成提示词。
  2. 生图提示词。
  3. 动作提示词。

并保持以下边界不变:

  1. 不改变 Big Fish 的会话表、草稿表、资产表结构。
  2. 不改变 compile action 只编译草稿、不串行生成资产的现有口径。
  3. 不改写当前中文提示词语义,只做脚本落位和调用收口。

落位方案

新增文件:

server-rs/crates/api-server/src/prompt/big_fish.rs

该文件统一收口:

  1. BIG_FISH_AGENT_SYSTEM_PROMPT
  2. build_big_fish_agent_prompt(...)
  3. build_big_fish_level_main_image_prompt(...)
  4. build_big_fish_level_motion_prompt(...)
  5. build_big_fish_stage_background_prompt(...)
  6. BIG_FISH_DEFAULT_NEGATIVE_PROMPT
  7. BIG_FISH_TRANSPARENT_ASSET_NEGATIVE_PROMPT

同时把 prompt/mod.rs 补齐为正式导出入口,和现有:

  1. puzzle_image.rs
  2. character_visual.rs
  3. character_animation.rs
  4. scene_background.rs

保持同一层级。

调用边界

1. 草稿生成

server-rs/crates/api-server/src/big_fish_agent_turn.rs

改为只负责:

  1. 调用公共 LLM turn 执行器。
  2. 解析 replyText / progressPercent / nextAnchorPack
  3. 组装 finalize input。

不再内联维护大段 system prompt / output contract / chat prompt 拼接逻辑。

2. 生图与动作

server-rs/crates/api-server/src/big_fish.rs

改为只负责:

  1. 读取当前 session 与 draft。
  2. 根据 asset_kind 构造正式资产上下文。
  3. 调用 DashScope 出图。
  4. 下载、后处理、持久化并写入资产绑定。

主图、动作关键帧、背景图的正式提示词脚本都从 crate::prompt::big_fish 引入,不再内联在路由业务脚本中。

为什么三类脚本要继续分开

草稿生成提示词

它的职责是把玩法灵感收束成:

  1. 玩法承诺
  2. 生态视觉主题
  3. 成长阶梯
  4. 风险节奏

它面向的是 LLM 的结构化共创,不面向图片模型。

生图提示词

它的职责是把已经落库的等级蓝图翻译成“单体鱼形主图”的正式图片提示词。

它面向的是透明背景主体资产,需要强调:

  1. 单体主体
  2. 透明背景
  3. 中心构图
  4. 不出现 UI / 场景 / 多主体

动作提示词

它的职责是把等级蓝图和动作槽位翻译成“静态关键帧预览图”的正式图片提示词。

它和主图区别在于:

  1. 需要显式带入 motion_key
  2. 需要区分 idle_float / move_swim
  3. 需要强调动作方向和关键帧姿态

因此不能继续复用同一段文本拼接后靠 if 分支临时改句子。

本轮验收

  1. 大鱼吃小鱼草稿生成提示词已从 big_fish_agent_turn.rs 抽离。
  2. 大鱼吃小鱼主图、动作、背景提示词已从 big_fish.rs 抽离。
  3. 路由业务文件只保留编排、鉴权、调用与错误映射职责。
  4. 新增 prompt 文件具备最小测试覆盖。
  5. npm run check:encoding 通过,确保新增中文文档与 Rust 注释未被写坏。