read --hot — 读state.md后才叙事,绝不凭记忆猜测scripts/
├── engine.py 引擎脚本
{game_dir}/
├── game.md 世界+规则+NPC+角色(区块标记,按需读取)
├── state.md 快照(唯一真相源,每回合必读必写)
└── log.md 日志(倒序,>10条压缩)
python3 scripts/engine.py init {游戏名}
python3 scripts/engine.py setup {游戏名} \
--world '时代:宋朝\n地理:...' \
--hero '姓名:赵二狗|种族:人|职业:商人|背景:...' \
--attrs '力3敏5体4智6魅7' \
--start '兰陵城西市' \
--atmosphere '喧闹市井' \
--npcs '王掌柜|西市|正常|15|商会执事
张屠户|西市|正常|5|肉铺老板
刘寡妇|城南||10|茶馆东家
孙道人|城外|神秘|0|道士'
python3 scripts/engine.py turn {游戏名} --action '开场:来到起始地' --recent '开场叙事'
setup参数(内容支持@file从文件读取):
--world 世界设定 | --hero 角色(属性/物品自动补全) | --attrs 属性如力3敏5体4智6魅7(合计25,耐力=体质×2)--start 起始位置 | --atmosphere 起始氛围 | --npcs NPC列表(必须,至少1个)名字|位置|状态|好感|职业每回合必须按以下4步顺序执行,不可跳过任何一步:
第1步: 读取状态(必须)
python3 scripts/engine.py read {游戏名} --hot
第2步: 叙事+判定(必须在read之后)
第3步: 执行turn写入状态(必须在叙事之后,不可跳过!)
python3 scripts/engine.py turn {游戏名} --action '行动摘要' [增量参数]
turn参数(只传变化的,不传的保持原值):
--action 行动摘要(必填) | --location 新位置 | --atmosphere 新氛围 | --weather 新天气--time-advance 时间推进分钟数(短15/长30/移动15-30/事件30-60,默认15)--items 物品 | --npc-relations 关键NPC | --conflicts 冲突 | --goals 目标 | --recent 近3事--tense 紧张回合(精力-2) | --phase 新阶段第4步: 输出回复格式(必须在turn之后)
1.🎬叙事(100-800字) 判定融入叙事
2.📜任务 主线进度+支线状态(目标为空时必须补充)
3.🎭动态 NPC行动/对话
4.💡建议 2-3个方向(关联当前任务线)
5.⚙️状态变更 属性:旧→新(原因) | 含回合+精力
6.📍场景 位置+天气+即时情境
python scripts/engine.py read {游戏名} --hot # 热路径(每回合):state+scene+log前3条
python scripts/engine.py read {游戏名} --npc 老陈 # 读指定NPC
python scripts/engine.py read {游戏名} --section 世界设定 # 读任意区块
python scripts/engine.py read {游戏名} --file game.md # 读整文件
python scripts/engine.py read {游戏名} --log-n 5 # 读最近5条日志
python scripts/engine.py write {游戏名} -c 世界状态 --section-content "NPC:..."
python scripts/engine.py write {游戏名} -n 老陈 --npc-content "年龄:..."
# 规则/角色区块不可覆盖(用setup填充角色,规则永远不动)
# state/scene/日志不要用write,用turn命令
python scripts/engine.py compress {游戏名} --story '故事概要:从西市小贩起步,受王屠户指引去刘员外家当账房,目前正熟悉工作...' # 里程碑压缩(10倍数回合)
<!--§区块名§-->内容<!--§/区块名§-->
NPC用: <!--§npc:名字§-->内容<!--§/npc:名字§-->
精简数据视图(来源state.md)+检查清单
共 2 个版本