Files
jev-match-game/scripts/build-script-review.ts
T

89 lines
3.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 剧本评审包生成:把评审简报 + 完整性快照 + 三份母文档合成一个文件,
* 供上传给 ChatGPT / 其他 AI 做外部评审。
*
* 运行:pnpm script:review
* 输出:docs/script/review-bundle.md(生成物,内容更新后重跑本脚本刷新)
*/
import { readFileSync, writeFileSync } from 'node:fs';
import { join, dirname } from 'node:path';
import { fileURLToPath } from 'node:url';
const ROOT = join(dirname(fileURLToPath(import.meta.url)), '..');
function readDoc(rel: string): string {
return readFileSync(join(ROOT, rel), 'utf-8');
}
const today = new Date().toISOString().slice(0, 10);
const HEADER = `# 《苍梧疑冢》剧本评审包
> 生成时间:${today}(由 pnpm script:review 从仓库母文档自动合成)
> 本文档供外部 AI 评审使用,包含:评审简报 → 当前完整性快照 → 三份母文档全文。
---
## 一、这是什么
一款互动叙事("影游")交友产品的第一季剧本。核心机制:用户以"时空档案馆采集员"身份
玩考古探险剧情,**剧情中的选择和语音讲述被用来实测人格**(7 维度:依恋类型、冲突处理
风格、价值观、情绪稳定性、风险偏好、文化底蕴、择偶偏好),后续用于伴侣匹配。
因此剧本同时承担两个职责:① 作为互动小说要好看;② 作为心理测量工具要有效。
## 二、请评审什么(按优先级)
1. **无正确答案铁律**:每个选择点的选项之间,是否存在社会赞许性上的"最优解"?
如果有玩家能轻易看出"选这个显得我更好"的选项,请逐条指出。
2. **分支完整性**:是否存在死路(选了某选项后剧情断裂)、逻辑矛盾
(前后文信息冲突)、变量引用错误(某旗标从未被设置却被读取)。
3. **测量有效性**:各选择点声称承载的人格维度,其选项差异是否真的能区分该维度?
有没有选项名义上测 A 维度、实际上更测 B 维度的错位?
4. **叙事质量**:节奏、NPC 声口一致性、悬念铺设;指出任何出戏、拖沓或工具化的段落。
5. **合规**:主角方必须始终是记录/保护者(不是盗墓);指出任何可能被理解为
鼓励破坏文物、盗掘的表述。
6. **可玩性 > 测量的优先级冲突**:指出任何"为了测量牺牲剧情自然度"的明显痕迹。
请逐章给出:严重问题(必须改)/ 建议改进 / 亮点(值得保留)。
## 三、当前完整性快照(${today})
- **Act 1(第 1-3 章)**:剧本完成并已灌装进引擎数据(18 个选择点、4 个语音讲述点、
全部预写场景变体),本包内含全文。
- **自适应支线**(Jev 置信度低时动态插入的 5 条支线 × 2 变体):剧本完成,本包内含全文;
引擎的条件插入逻辑未实现。
- **Act 2(第 4-6 章)/ Act 3(第 7-9 章)**:只有弧线大纲(见故事框架第 2 节),
剧本未写。
- **已知留白**:解谜点的"三档提示"机制只有设计没有完整实现剧本;C2-06 的二级选项
未建模(剧本已注明叙事化处理)。
---
---
# 母文档 1:故事框架(设定、NPC、弧线、选择点地图、测量规则)
${readDoc('docs/story-framework.md')}
---
---
# 母文档 2:Act 1 正式剧本(第 1-3 章全文)
${readDoc('docs/script/act1.md')}
---
---
# 母文档 3:自适应支线剧本
${readDoc('docs/script/adaptive-branches.md')}
`;
const outPath = join(ROOT, 'docs/script/review-bundle.md');
writeFileSync(outPath, HEADER, 'utf-8');
const lines = HEADER.split('\n').length;
const chars = HEADER.length;
console.log(`✓ 评审包已生成:${outPath}`);
console.log(`✓ 规模:${lines} 行 / ${chars} 字符(约 ${Math.round(chars / 1.8)} tokens 量级,注意评审模型的上下文上限)`);