
AI NPC别让演示效果骗了你一段 NPC 演示能顺利完成对话不等于它在游戏里可以交付。演示往往只有一名玩家、固定路线和完整网络上线后还会遇到任务状态过期、寻路失败、服务超时和玩家反复触发同一交互。把语言模型接进 NPC 时先把它当作“给出候选意图”的组件。它可以建议角色接下来是解释任务、请求澄清还是拒绝动作移动、发奖、扣除道具和写入任务进度必须由游戏逻辑校验后执行。用动作提案替代自由文本命令不要让模型返回“带玩家去城门口并发放奖励”这样的自然语言再由客户端猜测执行步骤。可以只接受一组固定动作{ intent: offer_quest, quest_id: harbor_supply, requires_confirmation: true }服务端收到提案后依次检查quest_id是否存在、玩家是否满足前置任务、该任务是否已经领取以及当前场景是否允许交互。任意一项失败都返回受控的游戏内提示不调用发奖接口。模型并不拥有修改世界状态的权限。记忆只存会影响本次决策的事实当前地点、任务阶段、最近一次选择和已经确认的关系值可以进入上下文。完整聊天记录、全地图状态和其他玩家的行为不应直接拼进提示词。需要历史信息时检索服务按角色 ID 和任务 ID 返回有限条目并标记来源版本如果检索超时NPC 可以使用预设台词继续对话但不能据此推进任务。这样做还有一个好处策划可以审阅每条可用事实而不是在长提示词中寻找隐式规则。三个必须覆盖的反例玩家在确认前切换地图。确认请求应失效不能在新场景继续发放原奖励。同一交互被连续点击。服务端用请求 ID 或任务版本去重第二次请求应返回已有结果。检索服务不可用。NPC 可以回退到“我现在无法确认这件事”的台词不能编造任务完成状态。测试时固定一组角色状态和随机种子记录模型提案、校验结果与最终动作。再分别注入缺失任务、过期版本和工具超时确认每条失败路径都不会写错存档。这些记录只能说明该构建下的行为角色数量、模型版本或工具集合改变后需要重新验证。发布前还应让策划和测试各走一遍回放。策划确认拒绝台词不会泄露未解锁任务测试确认回放中的动作 ID、任务版本和奖励流水可以对应到同一次请求。若无法从日志还原一次发奖就不应把该动作交给 NPC 自动提出同时保留人工关闭该能力的开关便于异常时切回传统行为树并把切换前后的存档兼容性列入回归用例。对运营团队而言监控重点是被规则拒绝的动作类型而不是只看对话成功率。某类提案持续被拒绝时先核对意图枚举与策划配置是否脱节再决定是否调整提示词。演示值得保留但它只是最容易成功的一条路径。真正决定 NPC 是否可靠的是候选意图能否被规则系统拒绝以及失败时玩家是否得到一致的反馈。