Agent Skills
返回列表
🤖

对话系统图引擎

AI Agent 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/dialogue-systems-zohg。

技能介绍

你要解决的问题

分支对话看起来简单,实际很容易变成一堆散落的 if、文本切换和状态变量:台词写进 UI、选项逻辑和游戏循环耦合在一起,加一个分支可能要改多处;换个语言或重排剧情时,散落的字符串又会迅速变成重写。

这个技能的思路是把对话当图来管理:节点保存台词与选项,选择用来分支,条件控制选项是否出现,变量记录玩家做过什么,后续对话再读取这些状态。

它如何工作

核心流程是先定作者方式,再定义节点契约,最后接入游戏循环。

  • 选择实现路线:对话重且需要写作友好的流程时用 Ink;强节点结构、引擎 hooks 多时用 Yarn Spinner;需要完全控制或依赖尽量少时,用自定义 JSON/资源图加一个小型解释器。
  • 定义节点输出:每个节点只产出一种结果:行、选项集合、命令/副作用,或 结束/跳转。运行器负责推进图,并把行和选项交给 UI。
  • 分离变量与流程:维护布尔、数字、字符串变量仓,条件读取变量,set 写入变量;不要把叙事状态塞进 UI 组件。
  • 一开始就本地化:文本用 行 ID 从字符串表查找,显示文案再由不同 locale 提供。
  • 由游戏循环驱动:运行器就是一个状态机:当前节点 → 输出内容 → 等待输入 → 推进。
  • 逐分支验证:至少走一遍关键选择路径,检查条件是否生效、变量是否正确写入,以及每个分支是否能到达结束或合法跳转。

适用边界与注意点

  • 不要为了简单分支树发明脚本语言。如果只是行、选项、标志位,一个 JSON/资源图加几十行运行器通常更稳。
  • 不要把显示字符串直接硬编码进节点;否则本地化会变成逐条重写。
  • 不要把变量存在 UI 上,或让状态只在文本节点里临时维护;持久化叙事状态请交给存档系统。
  • 不要留下无 next、无选项且不 end 的节点,否则运行时可能静默卡住。
  • 可重访节点里的副作用要放在转换时执行,或用 seen 标志保护,避免重复扣减或重复触发。

适合做对话图、选项菜单、影响后续剧情的叙事状态,也适合在 Ink、Yarn Spinner 与自定义资源格式之间做选型。不适合做引擎 UI 控件,也不适合跨会话存档。

使用场景

  • 在 RPG 或视觉小说项目中,需要把选项菜单、条件门控和变量写入组织成图,并接入游戏循环推进节点
  • 团队准备用 Ink 写分支叙事,但不确定何时改用 Yarn Spinner,需要按节点契约和引擎 hooks 做选型评审
  • 对话脚本已经写好,但要接入游戏循环:输出当前行、展示选项、执行命令、跳转到下一节点
  • 需要避免把显示字符串写进节点,为后续多语言版本预留行 ID 与字符串表结构

适合人员

  • 负责对话系统接入游戏循环的的游戏开发者,需要在节点输出与状态机之间做工程取舍
  • 关注叙事状态与 UI 分离的系统工程师,想把变量仓、条件和持久化边界理清楚
  • 使用 Ink 或 Yarn Spinner 的技术策划,需要在写作友好与引擎 hooks 之间选择实现路线
  • 处理多语言文本的技术写作支持工程师,希望行 ID 和字符串表先于 UI 布局确定