2.1 KiB
2.1 KiB
后端创作 Agent LLM Turn 公共化 2026-04-25
背景
RPG、大鱼吃小鱼、拼图三条创作 Agent 后端 turn 已经统一使用 platform-llm,但在 api-server 内仍重复维护以下流程:
- 检查
LlmClient是否可用。 - 构造
system + user两段消息。 - 调用
stream_text并从增量 JSON 中抽取replyText给 SSE 前端。 - 从模型最终文本中截取并解析 JSON。
- 把模型调用失败、JSON 解析失败映射成中文业务错误。
这些逻辑属于 turn 级基础设施,不应散落在不同玩法文件里;但各玩法的 prompt、anchor pack 解析、stage 推进、SpacetimeDB finalize 写回仍是领域逻辑,不在本轮合并。
目标
- 新增
api-server内部公共模块creation_agent_llm_turn。 - 公共化流式 JSON turn 调用、非流式 JSON turn 调用、
replyText增量解析、最终 JSON 截取解析。 - 大鱼、拼图、RPG Agent turn 复用公共调用骨架。
- 保留各玩法原有结果结构、中文错误文案和持久化写回契约。
非目标
- 不统一 RPG、大鱼、拼图的 prompt。
- 不统一三类 anchor pack / draft profile schema。
- 不改变 SpacetimeDB reducer/procedure 或 session 表结构。
- 不改变前端 SSE contract。
落地边界
server-rs/crates/api-server/src/creation_agent_llm_turn.rs- 提供
stream_creation_agent_json_turn(...)。 - 提供
request_creation_agent_json_turn(...)。 - 提供
parse_json_response_text(...)与extract_reply_text_from_partial_json(...)。
- 提供
custom_world_agent_turn.rs- 保留 RPG 动态状态判断、八锚点解析、结果写回。
- 将正式单轮生成和状态识别的 LLM 请求改走公共模块。
big_fish_agent_turn.rs/puzzle_agent_turn.rs- 将 LLM 流式请求和 JSON 解析改走公共模块。
- 继续保留玩法自己的 anchor pack 解析和 quick fill 规则。
验收
cargo test -p api-server中相关 turn 单测通过。cargo check -p api-server不引入新的编译错误。- 编码检查通过。