3. 让 Rowan 说话,并提供行动建议
使用上一课的完成稿。把开场拆成三个字符串:长凳、Rowan 的口头邀请、干燥的土壤。每个段落都是不含换行的单个字符串。创建 ID 为 rowan 的角色读者卡,让对话对应一个有名字、公开可见的说话者。
把说话者绑定到准确文字
Section titled “把说话者绑定到准确文字”对话标注指向段落索引 1(索引从零开始)、该段落准确 UTF-8 字节的 SHA-256、角色 rowan 和完全一致的引文。occurrence: 1 表示第一次匹配。这份示例将整段都写成一句带引号的台词,便于后续增加 VN 表演。
改变标点、空格或语言之后,都要重新计算摘要。在解压目录运行:
python3 -c 'import json,hashlib; p=json.load(open("start/pack.json",encoding="utf-8")); print(hashlib.sha256(p["entries"][0]["opening"][1].encode()).hexdigest())'Windows 将 python3 换成 py -3。把结果粘贴到标注的 paragraph_digest。计算的是段落正文,不是 JSON 外层引号或转义形式,因此中文和英文开场的摘要不同。
选择建议如何出现
Section titled “选择建议如何出现”| 模式 | 作者提供什么 | 预期行为 |
|---|---|---|
disabled |
count: 0,items 为空 |
不显示运行时行动建议 |
semantic_match |
非空的作者选项池,数量为 1–3 | 服务从作者选项中选择相关项,不生成这个选项池 |
inline_llm |
数量为 1–3,不提供作者选项 | 服务随正文生成适合当前语境的建议 |
下载包中的 variants/disabled、variants/semantic_match 和 variants/inline_llm 是三份完整的替代方案。分别检查其中的 pack.json,再把选定的 suggestions 对象复制到草稿。完成稿使用 inline_llm。建议只是可选行动,不代表行动已经发生,也不能因此增加状态值。
将修订号设为 4。结构上的预期结果:三份变体都通过。私有试玩时的预期:Rowan 的台词对应正确角色;关闭模式没有建议;作者选项模式从已有池中选取。若说话者标注丢失,检查角色卡、引文、出现次数与摘要。不要以为原始 Schema 校验能够发现过期的文字锚点。
在本地检查作品
在解压目录中创建环境并安装一次固定版本的依赖,然后检查两份文件。修改之后再次检查起始稿。每课都可以使用相同命令。
macOS / Linux
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python check.py start/pack.json
.venv/bin/python check.py finished/pack.jsonWindows PowerShell
py -3 -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt
.venv\Scripts\python.exe check.py start/pack.json
.venv\Scripts\python.exe check.py finished/pack.json完成稿的预期输出: Structural check passed: Creator Pack 0.3 随后显示确切 Schema SHA-256。这是结构检查,不代表服务准入或真实试玩通过。
完成稿中的可用片段
此片段直接取自经过检查的下载文件,并非完整 Pack。请在 start/pack.json 中修改相应字段,或对照 finished/pack.json。
{
"suggestions": {
"mode": "inline_llm",
"count": 3
},
"text_annotations": [
{
"paragraph_index": 1,
"paragraph_digest": "40eb0ef118aa124b355441af29117777486647b83045096a0150a3e7c88d5ca4",
"annotations": [
{
"kind": "dialogue",
"actor_id": "rowan",
"quote": "“还没关门呢。愿意和我一起看看这个小家伙吗?”",
"occurrence": 1
}
]
}
]
}查询相关字段: entries · reader_cards