Neuro SDK actions/force四级优先级详解:如何让她在说话时也立刻响应
Neuro SDK actions/force四级优先级详解:如何让她在说话时也立刻响应
在开源项目 Neuro SDK 中,actions/force 消息用于强制 Neuro 立刻从你指定的动作中做出选择。而 2025 年 12 月新增的 priority 参数,则为这条消息带来了 low / medium / high / critical 四级优先级,专门解决"Neuro 正在说话,轮到她了却迟迟不行动"的问题。🎯
actions/force 解决什么问题?
在 Neuro SDK 的 API 中,游戏通过 WebSocket 向 Neuro 发送几类消息:
actions/register:注册一批 Neuro 可以执行的动作(Action)actions/force:要求 Neuro 必须从这些动作中选一个,马上执行action/result:动作执行完毕后回传结果,让 Neuro 继续
如果你只注册动作、不发送 actions/force,Neuro 只是"知道"有这些动作,不会主动使用它们。所以回合制游戏中,轮到 Neuro 时你就需要 actions/force 来"推她一把"。
但问题来了:如果她正在和你聊天、发表情包吐槽,怎么办?默认情况下她会先把话说完才处理动作请求——在节奏紧张的游戏里,这段等待可能就让人抓狂了。这正是 priority 参数存在的意义。
完整的消息格式定义见 API/SPECIFICATION.md,
priority的更新记录见 CHANGELOG.md。
四级优先级参数一览表
priority 的取值决定了 Neuro 正在说话时,她如何响应你的强制动作请求(如果她没在说话,这个参数不起作用):
| 级别 | 她的表现 | 适用场景 |
|---|---|---|
low(默认) |
等说完话再响应 | 普通回合,不赶时间 |
medium |
会尽快收尾当前这句话 | 想让她早点结束闲聊 |
high |
立即处理,缩短当前话语后马上响应 | 回合有时限、需要抢节奏 |
critical |
直接打断语音,立刻响应 | 极端紧急情况,慎用 ⚠️ |
如何选择正确的优先级?
low(默认):礼貌等待
官方默认值。她会安安静静把话说完,然后才响应你的动作请求。适合大多数休闲回合制游戏——对话自然,但可能要等几秒到十几秒。
medium:催她早点说完
她会尽快结束当前这句话,然后响应。相当于轻轻拍一下桌子:"差不多该轮到你啦。"适合你希望减少等待、但不想打断她表达的场合。
high:缩短话语立即响应
这是"既要又要"的选项:她会被立即提示处理动作,当前话语被缩短,说完立刻响应。对于有倒计时、回合节奏快的游戏(如限时卡牌、快问快答类视觉小说),这是最平衡的选择。⏱️
critical:直接打断她
最激进的一级:她的语音会被直接中断,马上响应动作请求。官方文档特别提醒:使用 critical 要谨慎,因为可能造成突兀、生硬的中断体验。除非是"不马上行动就输掉"的关键时刻,否则不建议常规使用。
在 Unity 与 Godot SDK 中设置 priority
两个官方 SDK 都把这个参数暴露在了 ActionWindow 的强制方法里,用起来非常简单。
Unity SDK(priority 是 SetForce 的最后一个参数):
ActionWindow.Create(gameObject)
.SetForce(0, "It is your turn. Please place an O.", "", false, ActionsForce.Priority.High)
.AddAction(new PlayOAction(this))
.Register();
Godot SDK(同样的参数位置):
var actionWindow := ActionWindow.new(self)
actionWindow.set_force(0, "It is your turn. Please place an O.", "", false, ActionsForce.Priority.HIGH)
actionWindow.add_action(PlayOAction.new(actionWindow, self))
actionWindow.register()
其中 SetForce(0, ...) 的第一个参数 0 表示"注册后立即强制",query 字符串会直接告诉 Neuro 当前该做什么(推荐写清回合状态,如 "It is now your turn. Please perform an action.")。
相关源码位置:
- Unity 的优先级枚举定义:ActionsForce.cs
- Unity 的强制逻辑:ActionWindow.cs
- Godot 的优先级映射:actions_force.gd
- Godot 示例(井字棋):tic_tac_toe.gd
想要立刻响应?避开这三个坑
- 同一时间只能有一个 actions/force。官方明确警告:在另一个强制请求还没结束时再发新的,会引发问题。最简单的做法是同一时间只保留一个处于
Forced状态的 Action Window(详见 Unity/USAGE.md 的说明)。 - 动作执行后务必回传
action/result。在收到结果之前,Neuro 会一直"挂起"等待——无论优先级多高,这条不回应,后面的一切都会卡住。 - 优先级不是万能药。
priority只影响"她在说话时如何响应"。真正让 Neuro 少说废话、快速行动的根本方法,是写好state与query:把关键局面信息(推荐 Markdown 格式)讲清楚,她才能又准又快。
相关文档与源码路径
- API 规范(含
actions/force全部参数说明):API/SPECIFICATION.md - Unity SDK 使用指南:Unity/USAGE.md
- Godot 示例项目:Godot/examples/
- 社区可用的模拟测试工具 Randy(可帮你本地调试强制动作):Randy/README.md
选对这一级参数,她的反应速度就从"等我把话说完……"变成了"好,现在就来!"✨