# Roleplay 回复选项

启用后，Core 在剧情正文、State、guard 和提交诊断全部通过之后，基于同一份冻结的最终正文与角色上下文发起一次轻量结构化子代理调用。父 Agent 不再生成回复选项，`rp_commit_turn` 参数也不要求或暴露 `rp.reply-options`。生成结果继续以既有 `rp.reply-options` v1 extension 保存，因此历史事件和浏览器投影无需迁移。

每项以符合当前语境的自然表达，写成一个完整、具体且能承接当前互动的主角后续选择；根据场景自然组合主角的动作、对白、意图或观察，并可直接作为下一条消息发送。叙述部分使用第三人称，对白保留主角的自然口吻。不同选项提供不同的合理方向。数量可设置为 1–5，默认 3 条；每条长度指导可设置为 1–200 个 Unicode 字符，默认 50；每个编号还可填写不超过 40 个 Unicode 字符的方向关键词。数量、长度和关键词都是生成指导，不作为阻断剧情提交的硬校验。

- 子代理固定返回 `{ options: string[] }`。插件会 trim、丢弃空项、去重，并按配置数量截断；没有可用项时只丢弃本次回复选项。
- Provider 不支持结构化输出、30 秒超时、返回格式错误或生成失败时，核心正文与 effect 仍正常提交，并在成功结果和运行日志中记录稳定诊断码。
- 父级取消会终止整个提交；回复选项自己的超时不会终止提交。
- 回复选项单独造成 artifact 字节超限时只移除 `rp.reply-options`，不回滚核心产物。
- 每个按钮前的数字仅用于界面识别，点击时发送完整选项正文，不包含编号。
- 只消费成功提交事件中的 `rp.reply-options`；普通讨论、拒绝、失败回复、开场白和普通任务子代理回复不会生成选项。
- 删除、编辑或重新生成消息时，选项随当前有效对话回退或失效；插件不维护独立会话存储。

新配置默认启用，可在“设置 → Roleplay → 功能 → 对话”中的“回复选项”开关管理。条数、长度指导和关键词作为一组原子保存，并由新建或重新打开的 Roleplay 对话使用；旧配置缺项时沿用默认值。历史 `rp.reply-options` v1 事件仍按原格式安全回放。
