跳转到内容

3. 让 Rowan 说话,并提供行动建议

使用上一课的完成稿。把开场拆成三个字符串:长凳、Rowan 的口头邀请、干燥的土壤。每个段落都是不含换行的单个字符串。创建 ID 为 rowan 的角色读者卡,让对话对应一个有名字、公开可见的说话者。

对话标注指向段落索引 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 外层引号或转义形式,因此中文和英文开场的摘要不同。

模式 作者提供什么 预期行为
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.json

Windows 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

下一课