编排循环
DSH 聊天智能体担任 GM。角色、记录员、世界/剧情作者、图片呈现者、编年者和建议生成器都是有边界的一次性子智能体。固定 persona 与工具表应形成可缓存前缀,变化的场景数据只放在本次任务说明中。
普通回合
- 验证输入并组装场景。
- 必须先调用
judge_action,逐条检查世界规则和用户规则。 - 可先显示很短的场景预览。
activate_characters选择可参与角色,得到结构化意图、可选台词和投入程度。resolve_round记录结果、公开状态、移动和物品操作;高投入且失败的角色最多重试一次。- 代码验证移动和物品操作,提交可见状态,运行触发器,并把本轮加入持久记录队列。
- 在
maxRounds内继续,或调用narrate。 - 检查已接受台词恰好出现一次、原文不变且顺序正确;两次修复失败后由引擎修正载荷。
- 通过
<roleplay-output>JSON 交给渲染器,并且只记录一次回合。
/ooc 是独立回合,必须先 ooc_ruling,不能激活角色 ;合法裁定后的强制变化仍需通过普通验证、记录、感知和快照流程。
后台边界
旁白完成就是用户可见的完成点。记录、整合、离场行动、建议和图片随后运行。读取或修改故事状态的步骤先调用 TurnEngine.settle;待处理工作写入数据库,因此重启、回退和分支不会静默丢失它。
触发器在回合开始、每轮提交后和跳时后执行。cue 只发给受众;beat 必须由旁白明确处理,并按设置过期。
runChild 创建私有工具作用域、验证 submit_result、限制调用次数,并提醒未提交就停止的子智能体。工具必须在代码中执行权限和一致性规则,提示词不是安全边界。
扩展时替换最小的边界,并保持错误语义、取消、输出 Schema 和生命周期。新增阶段要覆盖普通回合、OOC、重试、回退、分支、取消、热重载和提示前缀稳定性。