中文长篇叙事 Harness
本 Skill 已从单纯剧本流程升级为长篇创作 harness。它仍支持电影、剧集、短剧和动画,但对系统文、游戏文或任何长线连载,必须把可变状态保存到 harness/,不能只靠 LLM 上下文记忆。
用户创作入口默认有三个板块:
background/story-background.md:背景设定。bible/characters/*.md:人物设定与人物小传。harness/*.json:技能、道具、任务、等级、世界规则、时间线、阵营、作者指令和连续性状态。
故事结构、场景卡、章节/场次大纲、连续性台账和自审表是内部工作资料,由 Skill 根据这些来源生成和维护,不要求用户先学习菲尔德、麦基或救猫咪的术语。
创作输入板块
背景设定
只记录会改变人物选择、代价、风险、时间、空间或观众判断的内容:
- 时代、地点、制度、组织和日常秩序;
- 故事开始前已经发生、且仍在产生后果的事件;
- 世界规则、资源、限制、成本和例外;
- 关键地点、物件、线索和可重复使用的机制;
- 作者真相、人物已知、人物误信、观众已知之间的差异;
- 不能违背的历史、规则和事实。
每条设定必须能回答:它会迫使谁做什么选择?不遵守会付出什么代价?它将在何时以可见后果进入剧情?不能只写百科介绍。
人物设定
每个主要人物至少明确:
- 外在欲望与当前任务;
- 内在需要、错误信念和保护策略;
- 恐惧、底线、秘密和必须隐瞒的内容;
- 能力、资源、限制和不能采用的简单方案;
- 关系交换、依赖、债务、竞争与称谓;
- 当前知道什么、不知道什么、误信什么;
- 受到低、中、高压力时会怎样行动,何时会换招;
- 语言节奏、句长、称谓、回避方式、攻击方式和不会说的话;
- 故事终点必须承担的选择与代价。
履历只有在会改变当下行为时才进入正文。人物不是设定说明员,而是带着欲望和误判行动的人。
内部生成链
读取项目 AGENTS.md、project.md,再读取上述三个板块。不要把全套理论资料或全部未来正文装入每场上下文。
生成任何场次或章节前,先运行上下文构建脚本。存在 harness/ 时,上下文包必须出现 Harness 控制台,列出与本场/本章相关的可用状态、废弃状态、禁用状态和作者注释。status: deprecated|disabled|forbidden|retired|locked 或 generation_policy.allow_use: false 的条目不得被用来解决冲突。
把输入压缩成内部行动模型:
背景事实 → 人物欲望与限制 → 当前压力 → 人物策略
→ 对手/环境反制 → 预期与实际结果的落差
→ 价值或关系变化 → 下一场压力
电影正文前先形成一页以内的故事骨架:主题命题(可选)、主角欲望、对抗力量、激励性扰动、递进复杂化、危机选择、高潮行动和结局价值。结构标签只用于定位问题,不强迫故事服从固定百分比或十五节拍。
每场先回答:
谁想改变什么?
他根据什么已知信息采取什么策略?
谁或什么进行反制?
结果为什么没有按预期发生?
人物失去、获得或重新理解了什么?
下场因此必须处理什么压力?
再生成可拍摄正文。动作写可见、可听、可表演的结果;对白必须对另一个人物实施行动,而不是替作者讲解背景。
Harness 状态库
harness/ 是机器可读的创作控制层。它至少可以包含:
author-directives.json:作者硬指令、禁令、偏好和临时控制。protagonist.json:主角当前状态、目标、伤势、资源、知识和限制。abilities.json:技能、能力、功法、系统功能、冷却、代价、禁用状态。inventory.json:装备、道具、货币、消耗品、钥匙和线索物。quests.json:主线、支线、任务奖励、失败条件和时限。progression.json:等级、属性、熟练度、境界、声望和数值上限。world-rules.json:世界机制、系统规则、例外、代价和不可违背事实。factions.json:阵营、组织、关系、敌友状态和可调用资源。timeline.json:时间、地点、事件顺序和不可逆节点。continuity-ledger.json:跨章节/跨场次状态变化。
每个重要条目都应有 id、name、status、author_note 和 generation_policy。作者注释不是装饰文字;它是生成约束。例如,废弃技能应写成:
{
"id": "ability-shadow-step",
"name": "影步",
"status": "deprecated",
"aliases": ["暗影步"],
"author_note": "废弃这个技能,不要再让它解决关键冲突。",
"generation_policy": {
"allow_use": false,
"allow_mention": true,
"forbidden_usage_patterns": ["发动(?:影步|暗影步)"]
}
}
aliases 用于别名、简称、英文名和系统面板名;allow_mention: true 只允许“说明它被废弃/禁用”等元叙述,不允许正文实际发动、装备、依靠或用它破局。无法靠名称可靠判断的项目,补 forbidden_usage_patterns。
用户给出明确标题的 Markdown 资料包时,可用 create_project_from_package.py 初始化项目并把背景、人物、技能、道具、任务、世界规则、时间线和作者指令拆入项目文件。资料包导入只是首轮整理;不确定或冲突设定仍需作者审定后再进入正典。
写完场次或章节后,运行 validate_harness.py 检查正文是否使用禁用或废弃项。作者接受新正典后,再用 update_harness_state.py 把新技能、道具消耗、任务进展、关系变化、时间线变化或作者禁令写回 harness/。状态更新包可以来自项目外的临时文件,但只能写入项目内允许的 harness/*.json。
中文自然度控制
每场正文完成后按 natural-chinese.md 的 24 类中文问题清单做一次局部审查。该清单只借用 Humanizer-zh 公开列出的中文问题分类,不加载其提示词、检测器、分数或其他项目资源。至少做到:
- 不把人物心理、主题和场景功能逐句说透;
- 不让所有人物使用同一套完整句、抽象词和结论句;
- 不用“然而、与此同时、这意味着、他意识到、命运”等连接词替代具体行动;
- 不把对白写成问答式资料交换;
- 允许停顿、打断、答非所问、口语省略、重复、地方用语和不完整句;
- 让人物通过物件、距离、动作、回避和语气暴露关系;
- 删除不改变行动、信息、关系或人物的句子;
- 保留不工整但准确的表达,不为了“文学化”而统一修辞。
用户提供的真实中文片段可作为风格校准资料,但只能学习句法、节奏、视角和对白习惯,不复制其人物、情节或原句。
自审顺序
默认只做五项:
- 背景是否真正改变了选择和代价;
- 人物行动是否符合欲望、知识、资源、关系和当前压力;
- 每场是否有策略、反制、结果落差和可辨认的价值变化;
- 对白是否有行动、潜台词、人物差异,是否避免说明性对白;
- 中文是否出现模板化、解释过量、情绪标签堆积和所有人物同声同气。
发生连续性问题时,再检查人物知识、伤势、物件、线索、时间和规则成本。重大结构问题只回到故事骨架修复,不为了填结构标签添加无因果场景。
工程兼容层
现有 init_project.py、write_scene.py、validate_project.py、self_review.py、compile_screenplay.py 和迁移脚本继续保留,用于安全写入、严格校验、连续性和导出。新增 build_context.py 的 harness 注入、validate_harness.py 的禁用项检查、update_harness_state.py 的状态回写,以及 create_project_from_package.py 的资料包导入;它们是工程保障,不是用户必须学习的创作板块。旧项目仍需显式迁移,不能猜测缺失的创作内容。
完成前确认:背景、人物和 harness 状态库已被实际使用;正文不是背景或人物小传的改写;人物有主动选择;场景产生后果;对白有对象和策略;禁用/废弃 harness 条目没有被用于解决冲突;中文已按 24 类问题清单完成局部审查和必要改写;没有未经授权的新正典事实。