为某个事件设计"可玩的情节图"——由若干情节 beat(旁白/独白/对话/选择点)与带解锁条件的有向边组成,effects 是唯一写状态处,按严格 JSON 模板写入 /project/scenes/<event_id>.json。当需要生成或修订某个事件的内部情节时使用。
日本語の概要は準備中です。原文の説明を表示しています。
基于故事大纲与世界设定,把故事细化为"网状的事件图"——声明全局状态变量 + 事件节点 + 带解锁条件的有向边,按严格 JSON 模板写入 /project/events.json。当需要生成或修订事件图时使用。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
把弱格式大纲细化成一张网状的事件图写入 /project/events.json。事件图是"细化版的大纲",
由三部分组成:全局状态变量声明 + 事件节点 + 事件之间的有向边。
核心心智(务必理解,否则会建错模型):
in_seclusion == false,或那条路径干脆不存在。read_file /project/intent.md(创作意图)、/project/outline.md(故事大纲,事件图是它的细化)、/project/world.json(世界设定——事件的参与角色/地点要引用其中卡片的 id);再 ls /project/materials 并逐个分页读全素材(默认只读前 100 行,用 offset 续读至末尾;素材可能多份、也可能为空)。flag/enum)而非裸数值,scalar 仅用于细腻刻画,尽量不作硬解锁门槛。type(主线/可选/结局),用 characters/locations 引用 world.json 的卡片 id。至少要有一个 ending 结局节点。set 达成的 flag/enum 里程碑;scalar 门槛须落在范围内,并能自然写到。label 并检查条件覆盖。
无条件兜底是降低死路风险的推荐做法,但条件已覆盖全部可达状态时不强制添加。/project/events.json:
write_file 创建。read_file 读全现有内容,再用 edit_file 只改该改的部分,保留其余既有内容(含用户手改),不要整体重写。/project/meta.json,也不要给事件节点加 effects 字段(那是场景层的事)。{
"state_variables": [
{ "id": "rel_master", "name": "与师傅的关系", "type": "enum", "allowed": ["敌对", "中立", "盟友"], "initial": "中立", "description": "随剧情选择变化的师徒关系" },
{ "id": "in_seclusion", "name": "是否闭关", "type": "flag", "initial": false, "description": "一旦闭关,将错过部分支线" },
{ "id": "power", "name": "武力", "type": "scalar", "min": 0, "max": 100, "initial": 1, "description": "修为水平,仅作刻画/排序" }
],
"nodes": [
{ "id": "ev-start", "title": "入门", "summary": "主角拜入门派,初见同门。", "type": "mainline", "characters": ["char-1"], "locations": ["loc-1"] },
{ "id": "ev-master", "title": "见师傅", "summary": "前往拜见师傅,态度将影响关系。", "type": "mainline", "characters": ["char-2"], "locations": ["loc-2"] },
{ "id": "ev-seclusion", "title": "闭关", "summary": "选择闭关苦修,错过见师傅的时机。", "type": "optional", "characters": ["char-1"], "locations": [] },
{ "id": "ev-end", "title": "出师", "summary": "学有所成,离派远行。", "type": "ending", "characters": ["char-1"], "locations": [] }
],
"edges": [
{ "id": "e-1", "source": "ev-start", "target": "ev-master", "condition": { "var": "in_seclusion", "op": "==", "value": false }, "label": "去见师傅" },
{ "id": "e-2", "source": "ev-start", "target": "ev-seclusion", "label": "直接闭关苦修" },
{ "id": "e-3", "source": "ev-master", "target": "ev-end", "label": "" },
{ "id": "e-4", "source": "ev-seclusion", "target": "ev-end", "label": "" }
]
}
字段说明(严格契约,系统会拒绝不合规的输出并要求你修正):
state_variables / nodes / edges。id/name/type/allowed/min/max/initial/description,且须类型自洽:
type 只能是 flag(布尔)/ enum(离散标签)/ scalar(数值)。flag:initial 为 true/false,不要写 allowed/min/max。enum:必须有非空 allowed,initial 取自 allowed,不要写 min/max。scalar:必须同时声明整数 min/max;initial 如填写也必须是范围内整数,全部 condition value
和后续 scene 的所有 set/add value 都必须是整数。不支持无界或小数 scalar,不要写 allowed。id 在状态变量内唯一。id/title/summary/type/characters/locations,不得新增 effects 等字段:
type 只能是 mainline/optional/ending;至少有一个 ending。id 在节点内唯一;characters/locations 是字符串数组,元素应是 world.json 里对应卡片的 id。id/source/target/condition/label:
source/target 必须是已存在的节点 id,且不能相等(禁止自环)。condition(可选)只含 var/op/value:var 必须是已声明的状态变量 id;
flag/enum 只能用 ==/!=(enum 的 value 取自 allowed);scalar 可用 >/>=/</<=/==/!=,但变量必须双侧有界且 value 为范围内整数。label:出度>1 时呈现给玩家的选项文案;出度=1 可留空。state_variables/nodes/edges 三个键?是否有至少一个 ending?source/target 是否都存在、无自环?condition 引用的变量是否已声明、运算符与取值是否匹配其类型?world.json 里真实存在的角色/地点卡片 id?是否误给节点加了 effects?写入完成后,只向上层回一段简短摘要(状态变量数 / 节点数 / 边数 + 一句话主线与主要分支),不要复述完整 JSON。
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
为某个事件设计"可玩的情节图"——由若干情节 beat(旁白/独白/对话/选择点)与带解锁条件的有向边组成,effects 是唯一写状态处,按严格 JSON 模板写入 /project/scenes/<event_id>.json。当需要生成或修订某个事件的内部情节时使用。
日本語の概要は準備中です。原文の説明を表示しています。
从小说/策划案原文与故事大纲中抽取并组织结构化世界设定,按"子类型分组的统一卡片"JSON 模板写入 /project/world.json。当需要生成或修订世界设定时使用。
日本語の概要は準備中です。原文の説明を表示しています。
常见叙事结构模板(三幕/英雄之旅/起承转合等),用于把创作意图与素材组织成节奏合理的"弱格式故事大纲",以自由 Markdown 写入 /project/outline.md。
日本語の概要は準備中です。原文の説明を表示しています。