运行流程
本文描述当前系统从资源导入到玩家参与对话的完整流程。
1. 准备基础资源
先准备三类可复用配置:
api:连接定义,包含provider、base_url、api_key、modelapi_group:每个 agent 绑定的api_idpreset:每个 agent 的生成参数和提示词模块
常用方法:
api.create/api.list/api.update/api.deleteapi_group.create/api_group.list/api_group.update/api_group.deletepreset.create/preset.list/preset.update/preset.delete
如果请求没有显式传入 api_group_id 或 preset_id,而后端存在可用资源,系统会按 id 排序并自动选择第一个。
2. 创建 schema
再创建可复用的 schema 资源,用于:
- 角色私有状态
- 玩家状态
- 世界状态 seed
Schema 通过 schema.create、schema.list、schema.get 管理,字段包括:
schema_iddisplay_nametagsfields
3. 准备玩家设定
玩家设定是独立资源 player_profile,支持多份共存。
字段:
player_profile_iddisplay_namedescription
一个 session 同时只激活一个 profile,但系统里可以保存多个供后续切换。
4. 导入或创建角色卡
角色卡有两种路径:
4.1 导入 .chr
- 请求体是原始
.chr字节 - 不走 JSON-RPC,也不走 base64
- 服务端会解析归档、保存封面,并创建
character
4.2 直接创建对象
character.create- 可选
POST /upload/character:{character_id}/cover
角色内容当前主要字段:
idnamepersonalitystyleschema_idsystem_prompt
5. 创建 story resources
有了角色卡和 schema 之后,创建 story_resources:
story_resources.create
主要字段:
display_namestory_conceptcharacter_idsplayer_schema_id_seedworld_schema_id_seedlorebook_idsplanned_story
如果 display_name 省略或为空,后端会回退到 story_concept。
6. 可选:先做 Planner
如果需要一份可编辑的剧本草案,可以先调用:
story.generate_plan
编辑完成后再通过 story_resources.update 写回 planned_story。
7. 生成 story
推荐流程:
story_draft.startstory_draft.continuestory_draft.finalize
兼容的一次性封装:
story.generate
推荐 draft 流程会:
- 读取
story_resources - 必要时先内部生成
planned_story - 由
Architect先生成第一段 partial graph、初始 schema 和introduction - 把 partial graph 与
common_variables保存在服务端story_draft - 每次
story_draft.continue追加一个大纲 section story_draft.finalize校验完整图并创建最终story
最终 story 会保存:
story_idresource_idgraphworld_schema_idplayer_schema_idintroductioncommon_variables
8. 启动 session
调用:
story.start_session
输入可包含:
story_iddisplay_nameplayer_profile_idapi_group_idpreset_id
9. 运行回合
核心接口是:
session.run_turn
它通过 POST /rpc 发起,但响应是 text/event-stream。客户端先收到 ack,再收到连续的 message 事件帧。