
当 LLM 进入游戏玩法从收权到放权面向正在或打算把 LLM 接进游戏玩法的工程师。不聊模型训练不聊 prompt 技巧只聊工程权衡权力给多少、能力从哪来、延迟怎么消化。文章初衷最近做一个 AI-native 的游戏服务器框架有兴趣的可以看看(https://github.com/lamyinia/BeastServer/tree/main) 本文多数判断来自这条路上的思考和探索但全文基本不谈那个框架本身只在需要举例时出现。想谈的是一个更普遍的问题LLM 进入玩法层之后它和游戏主循环之间是什么权力关系约定的概念模型后文所有论证建立在四条约定上。它们是简化但不是过度简化——每一条都对应真实游戏架构中的不变量。游戏是一个逻辑上单线程的主循环。物理上当然可以多线程渲染线程、IO 线程、worker 池但玩法状态的变更只发生在明确定义的推进点上——tick 边界或事件处理的临界区。锁、命令队列、帧同步全是为守住这条不变量而存在的机制。LLM 是异步的外部协作者。它不在你的线程里没有帧的概念不持有状态变更权。一次推理耗时几百毫秒到十几秒且输出不确定。两者之间只有两条通道观察与影响。观察是把游戏状态的切片交给模型影响是模型的输出必须转化为主循环中的合法事件或动作才能生效。它经影响通道能走多远——这是全文的主题。延迟与失败是常态不是异常。超时、限流、幻觉、格式漂移按一定会发生来设计。0、LLM 之前被信任的不可预测在应用 LLM 之前不如把游戏 AI 之前的谱系摆出来。技术坑位现状—— 决策与行为 ——有限状态机行为选择的骨架还在只是藏进了更大的结构里行为树反射层tick 级快速反应还在且和 LLM 分层共存效用系统这么多事先做哪件的排序还在是天然的降级兜底GOAP目标导向行动规划中期规划手段到目的的动作串联被工具循环部分接管MCTS蒙特卡洛树搜索封闭动作集上的权威决策器被 LLM 部分接管—— 内容生成 ——噪声算法世界的质感与随机性没人想替换它波函数坍缩WFC硬约束的内容生成还在与 LLM 生成互补MCTS 值得多看一眼它是 LLM 决策的直系前身。围棋 AI、棋牌 bot 的结构是枚举当前局面所有合法动作 → 前向模拟 → 选期望最高的那个。LLM 选择后文会展开的结构是枚举当前局面所有合法动作 → 交给模型选一个。变的只是搜索换成了直觉。坑位没动。GOAP 占的是规划的坑位值得和 MCTS 对照着看。F.E.A.R.2005发扬的这套结构每个动作声明成前置条件 效果规划器从目标反向搜索出一条动作序列。它的现代继承者正是第一章的工具循环——多步、自主决定下一步的那种形态。一个耐人寻味的细节GOAP 的动作声明前置 效果与 function calling 的工具声明参数 schema 副作用描述结构同构——相隔二十年“怎么描述一个可执行的动作”游戏 AI 和 agent 生态给出了同一个答案。效用系统Utility AI大概是表里最陌生的一项但例子一说就懂。《模拟人生》的 Sim “饿了吃饭、困了睡觉”背后就是效用打分每个候选动作按当前需求算一个分数有多饿、床有多远选分最高的执行。行为树回答刺激来了怎么反应效用系统回答这么多想做的事先做哪件。后文它还会反复出现第三章的降级终点就是退回这套打分。噪声算法则藏着全文最重要的一个对比。Perlin 噪声生成地形、随机种子决定掉落——游戏的不可预测无处不在玩家也确实感受不到下一次掷骰子的结果。但没人担心噪声算法的信任问题。为什么游戏随机是被信任的不可预测结果不可预测但生成结果的代码是自己写的、确定性的、可审查的。LLM 是不被信任的不可预测结果来自一个外部智能输出即待验。状态机的转移条件是 if 语句行为树的优先级是自己排的MCTS 的模拟是自己跑的。这些系统确实智能但它们的不可预测性全部产自引擎自己的代码。LLM 不同它不是你的代码也不是你的玩家你却要把它的输出当真。信任问题从这时才出现。内容生成这条线上还站着一位新成员波函数坍缩WFC。按邻接规则逐格坍缩拼图块生成局部规则绝不违反的地图——近年独立游戏关卡生成的心头好。它和噪声同属被信任的不可预测规则是自己写的、可审查的。但它把内容生成的坑位分得更细WFC 是硬约束生成规则保证不破但不懂语义LLM 是软语义生成语义连贯但不保证任何硬规则。第一章生成形态的信任边界引擎只验形式正是为这个缺口设的语义交给模型硬规则留在引擎。业界主流的 agent 框架——编排器、工具循环、多智能体框架——都默认一个前提agent 拥有主循环工具是被暴露给它的资源任务跑多久由任务自己说了算。游戏恰好相反主循环是主权者一切 AI 都是嵌进循环的组件必须服从帧预算和玩法节奏。两边都叫 agent分歧只有一个问题——主循环在谁手里一、权力谱系收权与放权先给词汇表再给分界线。模型与引擎之间的交互形态常见的有三种但收权与放权的分界线不在形态上而在另一件事——编排权。先看形态。1.1 三种输出形态生成、选择、工具调用不是权力档位先钉一个容易被表格诱导出的误读这三种是输出空间的形态并列、不递进——生成和选择都默认是收权用法工具调用骑墙。真正的权力分界线不在形态在 1.2 的编排权把三者误读成放权程度递增后面的判据就会全部对不上。用四个问题去照每一种形态——输出空间谁定义信任边界在哪延迟什么结构失败怎么办生成选择工具调用输出空间schema 约束的自由数据封闭合法集开放函数签名信任边界只验形式语义靠场景容错快照验权轮数预算 工具沙箱延迟结构一次往返一次往返N 轮有上限失败形态失败也回投计数闭环丢弃 日志越权或过期轮数耗尽 / 沙箱拒绝 / 部分写入需补偿注信任边界与失败形态两行是各形态在默认用法下的常见防线工具调用骑墙——收权用法下它的防线是验证每一步见 1.2。生成模型产数据引擎只验形式。这是 LLM 应用最基础的形态generation / structured output。最小例子玩家问路边的 NPC这地方发生过什么模型生成一段符合世界观的回答。注意模型返回的是一段文本数据不是任何游戏指令——它说得再离谱引擎顶多做敏感词过滤和长度截断最坏结果是这句话不通顺游戏状态不会脏。把这档的信任边界说精确引擎验得了形式验不了语义。schema 合不合法、长度超没超、有没有敏感词——这些是形式机器可查这句话合不合世界观、人设对不对——这些是语义引擎没有能力判断。所以生成档真正的信任边界不在引擎在场景容错这个场景语义错了也不致命才走得通。叙事、建议、UGC 天然满足反过来任务结算文案、经济数值、排行榜判定理由——任何错了会写脏状态或引发纠纷的东西哪怕看起来也是文本也不能走这档。工程上值得加一道结果回投失败不抛异常也不静默丢弃而是作为错误结果走和成功同一条投递路径——发起 N 个请求最终一定收到 N 份结果玩法侧用一个计数器就能确认无泄漏、无悬挂。这个计数闭环在第三章验证一节还会回来。选择封闭合法集 请求瞬间快照验权。当模型的输出是权威动作、直接改游戏状态时——比如棋牌 bot 出牌它必须从手牌里选一张不能发明一张牌——最容易做错的事是把合法动作写进 prompt 然后相信模型不越界。它会的。这个思想在强化学习里有标准名字合法动作掩码legal action masking策略输出前把非法动作屏蔽只许在合法集里选。RL 的策略是自己写的可以事前掩码LLM 是黑盒解码器管不了它吐什么——掩码于是翻转成事后验权正确做法只有一句话请求发起的瞬间对合法动作集做快照模型返回时对照快照验权——不对照模型的自述。这个设计有三个容易做错的地方用编号别用语义别让模型抄写打出三万这样的语义字符串把合法动作编号成 “0“1“2” 让它选编号。抄错编号的概率比抄错语义低一个量级且天然规避字段格式自由发挥。局面描述里携带语义模型做的是选择”不是复述”。为什么是请求瞬间的快照推理的几秒里局面可能已经变了。若拿完成时的合法集验权会出现模型在它看到的局面下合法、在当前局面下非法的竞态。对照请求瞬间快照语义才确定它选的时候那步是合法的就认。输出契约与分发同源哪种动作 JSON 解析到哪个处理函数、输出 schema 长什么样都从同一份声明派生。手写 prompt 里的输出示例和手写的解析代码迟早各改各的。三个易错点落到代码上就这么长// 请求发起的瞬间structActionSnapshot{uint64_tversion;// 局面版本号std::vectorActionIdlegal;// 合法动作编号};// 模型返回时now 当前局面版本号std::optionalActionvalidate(constActionSnapshotsnap,ActionId id,uint64_tnow){if(std::find(snap.legal.begin(),snap.legal.end(),id)snap.legal.end()){log_reject(id,snap.version);// 越权returnstd::nullopt;// 丢弃不重试、不猜、不进状态机}if(snap.version!now){log_stale(snap.version,now);// 世界已推进returnstd::nullopt;// 作废不重映射转降级}returnresolve(snap.version,id);// 编号映射回真实动作}但认不等于直接执行。快照解决的是模型有没有越权还有一个独立的问题我等它的时候世界动没动。模型按 V 版本选出的动作回来时要面对的可能是 V′ 版本的世界——直接执行就可能把 V 合法、V′ 非法的动作写进状态越权方从模型换成了时间。两条路按玩法选一条写死局面冻结回合制、决策门等待期间本就没有别的推进点会改这个局面snap.version current_version恒成立快照验权即充分——选择形态默认就活在这类场景里3.4 的决策门正是它。局面推进实时玩法返回时先比版本不等则整次决策作废转降级3.6。不要试图把 V 版本选出的动作重新映射到 V′ 上——那等于让引擎替模型做第二次猜测。两次校验语义完全不同别合并快照验模型有没有越权版本验这步现在还算不算数。工具调用开放动作空间用预算换自由。这是 agent 生态的标准能力function calling / tool use。任务一次往返装不下时“查对局历史、总结打法、生成出场白”需要工具循环模型决定调哪个工具、读结果、走下一步循环直到给出最终输出。防线有两道轮数预算防循环失控和工具沙箱工具的执行体在引擎侧模型只能经调用间接触达状态——你注册了什么工具它就有什么能力。三种形态之间也有中间地带比如只让模型在传统决策器给出的候选集里做带理由的排序——第三章会回到它。无论哪种形态输出都要先变成机器可读的 JSON——这是三种形态共同的一层脏活。schema 约束只是软约束模型会用 markdown 代码块包裹 JSON、在前后加好的我来帮你之类的自然语言思考型模型甚至会吐出截断的前缀文本。容错解析从一段自由文本里捞出第一个完整可解析的 JSON 对象是每种形态都要写的第一道防御新近的结构化输出 API 能缓解但不能免除。这层没什么高明设计就是得认。生成与选择默认单次往返、无状态工具调用的多轮循环自带上下文——那本账连同会话记忆挪到 2.1 末尾一起算。形态不决定权力——那形态决定什么爆炸半径的默认上限。生成档的输出本身不碰状态机它是否变成状态取决于引擎拿这份数据去干什么——生成的任务文案被存进玩家日志就已经是写状态了。所以最终上限仍由引擎拿它做什么决定形态只是压低了默认档位生成的默认上限天然比选择、工具调用低一档。这也是 1.3 的伏笔叙事类 agent 放得起权不是因为叙事天然无害是因为这一档的默认半径就小。1.2 权力的分界线编排权在谁手里三种形态本身不决定权力。收权与放权的分界线只有一条流程的下一步由谁决定——编排权在引擎手里还是模型手里。这条分界在 agent 工程界已有通行词对——Anthropic 在 Building Effective Agents 一文里称为 workflows 与 agents前者由代码预定义路径编排模型后者由模型自主决定流程和工具使用。收权引擎编排。生成和选择都是典型——引擎决定何时发起、发起什么模型只是被问到时作答输出全部经引擎验证才生效。工具调用也可以是收权用法引擎按固定流程驱动工具循环每步调什么、调几轮都是代码写死的。防线是验证每一次输出。放权模型编排。下一步调什么、要不要继续交给模型自己决定编排权从系统手里交出去。防线换了一整套不再是验证每次输出而是轮数预算、工具沙箱和兜底。编排权还带走一样容易被忽略的东西失败语义。收权的失败是这次没做成——引擎知道自己在第几步状态干净天然可回滚。放权的失败是做了一半且不知道做到哪了——模型自主走过的路径引擎没有账本已发生的写操作不会自动回滚只能靠工具的事务化、日志和补偿收拾残局。这条差异在 3.6 还会回来。第0章结尾问主循环在谁手里答案在这里落地编排权就是主循环的运营权。放权端有一个已上线的实例NVIDIA 的 ACE Game Agent SDK 与 KRAFTON 用它构建的 PUBG AllyAI 队友 Ella。它的 agent 循环是事件驱动的——玩家说话或游戏事件触发工具横跨观测自身状态、队友、战况、知识查询、记忆更新每周期工具循环 3–5 轮。动作不直接执行System 1 行为树以 tick 率处理反射动作System 2 语言模型管深思熟虑的意图理解与协作。有意思的是 KRAFTON 自己的演进史。GDC 2026 上展示的还是 workflow 版系统按预定义顺序调用各组件语言模型只负责给定 prompt 的文本生成——编排权在系统手里一个标准的收权设计。之后公开的架构已转向自主 agent 版他们的原话“它开始自己选择调用哪个工具、读结果、自己决定下一步。不再是系统给它指令——模型成为了决策者。”驱动这次放权的是三个能力需求主动性没人问也开口、记忆跨局记住玩家偏好、战略建议。而组件拆分的理由极其朴素没有任何多智能体理论“拆分最实际的理由是 prompt 空间和延迟。单个 prompt 处理一切很快撞上下文上限。拆开的组件意味着各自独立的 token 预算和调用频率可以独立优化。”Action Agent 每轮必跑、Memory Agent 间歇执行、Strategic Agent 独立节奏、Proactive Agent 事件触发——四个 agent 不是一个团队是四份不同节奏的预算账本。1.3 判据一次幻觉最坏能写到谁的状态里那么收权还是放权由什么决定不是技术品味不是模型能力是一个能落到代码上的问句一次幻觉最坏能写到谁的状态里本地体验错误输出只影响一个玩家自己的观感行为树和降级链在下面接着——可以放权。小队 / 房间共享状态错误会写进几个玩家共同可见的状态——中间档可以放权但工具集必须按角色裁剪能写的状态越少越放得开。全服权威状态经济、账号、跨房间匹配——必须收权快照验权不可谈判。拿这个问句去验 PUBG Ally它是多人游戏却放了权——因为 Ella 跑在玩家自己的显卡上炸的最多是这台机器的体验工具集限定在队友角色内观测、知识查询、记忆更新碰不到经济与账号。放权不是因为 KRAFTON 胆大是这两道裁剪把幻觉半径压回了中间档以下。反过来同一个 Ella 若跑在服务端权威进程里、工具集不裁剪判据立刻翻成必须收权。同一家公司在同一个产品上从谱系的一端滑到另一端说明收权与放权不是阵营之争判据不是单机还是网游是幻觉能污染的状态范围——而范围靠两把刀裁运行位置和工具集。二、供给侧权力定了接下来是能力。agent 的三个外部依赖正好归成三条轴能调什么行动、知道什么知识、算力从哪来部署。2.1 行动轴Agent Loop 是本体MCP 是部署形态工具循环agent loop的本体是一个朴素的结构提交消息观察切片 可用工具的声明 循环 模型返回结果 若不是工具调用 → 循环结束这就是最终输出 若是工具调用 → 校验工具名在注册表里参数过 schema 生成工具执行事件投回主循环 引擎在推进点执行 handler结果回填为新消息 下一轮一个值得圈出来的细节工具的执行不在 loop 里在主循环里。handler 触达的是引擎状态按概念模型第一条状态变更只该发生在主循环的推进点——loop 负责问主循环负责做。这条分界漏掉的话工具就会在循环外的线程上直接改游戏状态单线程不变量悄悄破掉。MCPModel Context Protocol就是这个 loop 的解耦形态把 handler 搬到进程之外顺手标准化了工具的发现、描述与调用约定。primitive 是 loopMCP 只是行动能力的一种部署拓扑。由此能推出一个反直觉的判断游戏是少数进程内执行才是常态的领域。企业级 agent 生态默认工具在远处——数据库、SaaS、内部服务跨进程是常态所以 MCP 应运而生。而游戏的工具是引擎内存里的活数据查牌河、查 NPC 状态、播一段动画handler 就地执行零序列化。把这些搬出进程是自找的。所以游戏语境下 MCP 的正确角色是对接外部世界的桥查百科、查运营配置、查第三方服务而不是游戏内工具的组织方式。loop 的隐性代价是上下文膨胀。每一轮的工具调用与结果都追加进消息历史大头是工具结果——一次对局历史查询就是几千 token。循环越长窗口越胖延迟与成本同步上涨KRAFTON 把 Ally 拆成四个 agent 的头号理由prompt 空间和延迟就是它。配套的管理手法三层一次性指令用完即弃下一轮不再出现在 prompt 里大型工具结果在循环结束后折叠成一行摘要稳定内容人设、规则、世界观做成永生前缀窗口超限时做摘要压缩——何时摘、摘到多短是玩法的决定框架只提供机制。这里其实是两本账。一本是上面的窗口预算单次循环内的上下文膨胀与压缩。另一本是会话记忆多轮对话的上下文、跨局记住的玩家偏好、随存档走的 NPC 记忆——这本账的设计问题是对话历史谁持有引擎每次自己拼好完整上下文玩法全权但每处调用都要重写拼装逻辑或者由一个有状态的 Agent 对象持有、可序列化可恢复框架代劳但状态的生命周期要跟实体与存档对齐。没有免费的一边。2.2 知识轴按知识寿命固化方式三档模型需要知道游戏世界的知识。按固化发生在多早从早到晚三档蒸馏进权重版本级固化规格交给 teacher 模型蒸馏给 student。运行时零开销零延迟但一次蒸馏一次成本且知识随版本衰减——Ella 的官方文档写着她的知识截止于 41.1之后上线的道具她不认识。适合封版周期长的稳定世界。注入 prompt发版级固化规格写进 system prompt随发布更新成本最低代价是每次请求都耗 token大规格塞不进窗口。PUBG Ally 的配套做法值得借鉴先约束世界单地图、单模式、物品三档分类可用 / 可识别但不可用 / 不存在“先决定不处理什么”再谈注入。运行时检索 / RAG不固化知识活在查询里内容打补丁立刻可见代价是每次查询的延迟与检索质量。判断式一句话内容频繁打补丁的世界任何固化都会腐烂必须给模型留现场查的能力。这一档位选择和 3.3 的生成时机谱系是同构的——“知识什么时候固化与内容什么时候生成”是同一个决策的两个投影都在问这件事该在离玩家多远的地方完成。读第三章时可以用同一把尺自查。2.3 算力轴租与自有“接 LLM 逃不开 HTTP”——多数时候成立但成立的原因是商业现实而非技术必然推理算力外置在别人的机房里跨机器的默认选择就是 HTTP。通道其实一直在官方 SDKHTTP 藏在库后面、同机独立进程Unix 域套接字/共享内存、进程内推理直接链推理库、离线烘焙严格说它不是通道是没有通道——运行时根本没有模型。所以用不用 HTTP实质是算力归谁管的选型租云 API弹性、零运维代价是延迟不可控、不可预算限流和 5xx 都不受你控制。自有进程内或同机推理延迟可预算、失败语义变成进程内错误代价是容量自己扛——GPU 选型、批处理调度、显存预算都得自己做。KRAFTON 给过一组实战数据他们测过云 LLM 方案“网络延迟加推理延迟让实时小队沟通感觉太慢”最终用 2B 量化模型塞进玩家显卡剩余的显存里。注意他们否决云方案的理由不是成本是延迟不可预测——这直接验证了算力轴的定价逻辑。进程内也不等于终点形态。直接链推理库意味着 continuous batching、请求队列、显存调度全要自己长——等于自建推理调度器。务实的两步走先用独立推理进程跑通全部玩法隔离崩溃、白送批处理等部署规模值得省那一跳再换进程内。这里有一条好用的分层自检接口里看得见 status code、SSE chunk 的影子就是分层漏了。而无论租还是自有、换不换传输真正不变的是两个边界慢速非确定算力与硬实时循环之间的异步边界输出不可信的信任边界——逃不开名单上仅有的两项。三、玩法启发式LLM 加入工具箱游戏 AI 的传统本质就是启发式的组合状态机加行为树加效用加噪声叠了三十年。LLM 不是取代这个工具箱是加入它。下面这些技法没有先后之分按什么时候用组织——每一条都对应一个你已经遇到或即将遇到的问题。3.1 启发式重排让传统系统出题LLM 只答卷效用系统或任何传统决策器产出候选动作集LLM 只做重排、加理由、选风格。这是收权思想在行为层的投影模型碰不到动作空间本身只在给定集合内做偏好排序。预算最小、风险最低是实时玩法里最安全的一档。3.2 AI-LOD预算分配是第一性问题把模型预算当渲染 LOD 分主角队的 NPC 上完整推理路人 NPC 跑传统启发式。KRAFTON 系里有一组现成对照——模拟人生类的 inZOI 用 0.5B 模型做单次推理选动作、日常反思无工具循环PUBG Ally 用 2B 做带工具的迭代多步推理。同一家公司、同一模型家族按品类分配算力档位。先问谁值得上模型再问模型多聪明。3.3 生成时机谱系把等变成提前等LLM 输出不一定要在需要的那一刻生成。谱系从早到晚离线烘焙build 期生成对话树/背景故事运行时零成本→加载时进关卡时按需生成局部内容→运行时真交互→推测预生成玩家还没问就按上下文先生成好备着。延迟问题的最优解常常不是优化推理而是把生成挪到没有人在等的时刻。这根谱系正是 2.2 知识三档的镜像——那边问知识什么时候固化这边问内容什么时候生成同一个决策的两个投影。3.4 agent 时钟门与 deadline冻谁的钟模拟品类模拟人生、RimWorld 类有个独特资源虚拟时间。三种时钟并存以不同速率推进——真实时间不可暂停世界时间可暂停可加速模拟品类的变速档agent 时间可冻结——每个 Sim 自带行动队列当前动作演完、队列空了、决策下一步这个时刻就是天然的等待门。一个有趣的思想实验把主循环直接停住等 LLM 行不行这个直觉的内核是对的——门是真的deadline 是真的超时不推这个 agent 的帧也是真的——但被卡住的只能是 agent 自己的钟永远不能是世界的钟。玩家对冻结画面的容忍是几百毫秒而推理 p95 是好几秒把世界停了等待就成了 bug。正确实现是 pending 状态角色发着呆、东张西望、播思考中动画世界照常转别的角色照常生活。到 deadline 还没结果降级见 3.6。这个模式有个被验证过的祖先RTwP实时暂停——博德之门系列二十五年前就在做需要决策就自动暂停。被等的那个慢速决策者当时是人类玩家超时降级是AI 接管默认行为。从等玩家到等 LLM结构一个字没改。3.5 延迟掩盖等待本来就是玩法语言对手思考十秒是合法游戏状态——卡牌游戏甚至给 AI 人为加延迟装作思考。所以掩盖延迟的素材全是玩法母语思考气泡、idle 动画、倾听姿态、话轮中的 backchannel点头、“嗯”。加载界面是这个思路的极端形态资产没到不能进关卡是最正当的游戏在等但没人靠冻结帧等资产。一旦想让等待看起来不卡你就已经不能阻塞了——这个约束本身就逼出了正确实现。3.6 降级链从有性格退到正常但平庸LLM 超时或验权失败之后去哪模拟品类给了全品类里降级代价最低的答案退回效用打分饿了吃、困了睡。Sim 的传统决策器本来就在LLM 只是替换它——降级不是额外发明是把增强撤掉。失败的表现不是没动作是动作没那么聪明。注意降级链是收权侧的失败语义——撤掉的是增强底下的效用系统本来就是完整系统。放权侧没有把增强撤掉这个动作可撤1.2 说过它做了一半你不知道做到哪了对应的失败语义是预算封顶、沙箱圈界和事后补偿两边不通用。降级策略只有玩法自己能定义快节奏玩法宁可降级不重试慢节奏叙事重试三次都无所谓。把降级当框架的义务是 LLM 接入里最贵的一种误判。3.7 验证找不变量不找对答案非确定系统的测试不能对答案要找不变量。三个层级协议层模型是否遵守交互协议、正确使用工具——机器可查闭环层发起 N 个请求收 N 份结果计数闭环查泄漏与悬挂体验层A/B 与真人 playtest。KRAFTON 的验证栈就是这个三层自动化协议检查 → playtest A/B → 千人规模玩家反馈。非确定输出的质量门槛是不变量全部成立 体验抽样可信它注定比确定性代码的验证松所以爆炸半径的定价第一章才必须保守。结语回到开头的概念模型LLM 是一个异步的、不确定的、不持有状态变更权的外部协作者。全文讨论的其实只有一件事——它经影响通道能走多远。三章是一条完整的选型链第一章定权力边界——能不能动状态第二章定能力来源——凭什么会做第三章定时间预算——什么时候做、做不完怎么办。能不能、凭什么、什么时候——问完这三个接入方案就定了。有人会补第四问——花多少。但成本不是独立的第四轴是行动与算力的共同产物轮数 × 单次 token × 并发前三问答完这一问自己就有答案了。收权端说可以说不能动要动先过快照。放权端说你来决策预算封顶行为树在下面接着。判据从来不是哪个更先进是你的爆炸半径装得下多大的失败。而第0章的小伙伴们一个都没走行为树还在 LLM 身边以 tick 率跑着System 1效用系统还在降级链的末端兜底噪声算法还在生成没人想替换的世界质感。MCTS 和 GOAP 腾出的两个坑位——封闭动作集上的权威决策、多步规划——LLM 刚刚坐进去。游戏 AI 三十年的传统不是被替换的对象是 LLM 落地的地基。不是把游戏接进 agent是把 agent 关进游戏。如果你也在把 LLM 往玩法里接先问权力再谈智能。参考QA: How KRAFTON Built PUBG Ally, a Co-Playable Character Powered by NVIDIA ACE — NVIDIA 技术博客From Workflow-Based SLM to Autonomous Agent: Evolving PUBG Ally’s Architecture — KRAFTON AI 博客NVIDIA ACE for GamesNVIDIA Game Agent SDK — GitHubBuilding Effective Agents — Anthropic