← 返回案例
发布:整理:元定义科技(YuanASI)解谜游戏提示生成冲突仲裁安全否决open-multi-agent

解谜游戏提示:三源仲裁与外部否决

官方 cookbook 示例

行业
游戏与文娱 · 解谜提示
来源
open-multi-agent 官方 cookbook
当前阶段
可运行示例
这是 open-multi-agent 官方 cookbook 示例,由元定义维护。它为一款点击式解谜游戏生成一条提示:机制、世界观、玩家数据三个 Agent 各读一份材料给出方案,仲裁 Agent 按「安全 > 沉浸 > 进度」折中,最后由独立的安全 Agent 对照策划规则决定放行还是否决。

场景

典型场景:玩家卡在一道谜题上,游戏要给一条提示。三方意见往往打架:剧情团队要求提示用角色口吻、只说隐喻;运营数据显示直说「看镜子」最管用;策划则把钢琴与镜子的关联定为中段剧情反转,任何指向这层关联的提示都不许出现。人工逐条权衡,折中出来的那句话仍可能把谜底说穿。

这个示例演示的是把这三方写成互相隔离的 Agent,再把最终裁决放在生成环节之外:仲裁 Agent 只看得到三份结构化产出、看不到原始材料;安全 Agent 独立读取策划规则,给出二元否决,否决时换成一句只描写氛围、不带方向的兜底提示。

方案

角色任务 DAG工具模型部署形态
mechanic-agent第 1 层,读存档 extracted-game-state.json,输出谜题进度,不写玩家可见文本tools: [],空工具注册表claude-sonnet-4-6 / anthropicnpx tsx 单次运行的本地脚本
lore-agent第 1 层,读 lore-corpus.md 的 Tier 1、Tier 2,以角色口吻给出隐喻提示同上claude-sonnet-4-6 / anthropic同上
community-agent第 1 层,读 community-aggregates.json,按卡关率与提示效果给出提示方案同上claude-sonnet-4-6 / anthropic同上
hint-arbiter第 2 层,只接收上面三份结构化产出,标出冲突并写折中提示同上claude-sonnet-4-6 / anthropic同上
safety-agent第 3 层,读 designer-constraints.json 与仲裁草稿,决定是否否决同上claude-sonnet-4-6 / anthropic同上

表中模型为示例仓库的默认配置;实际选型在方案阶段按场景确定。

示例直接构造五个 Agent,不经过任务编排:每份材料以文本注入各自的提示词,工具注册表为空,每个 Agent 只看得到分给它的那一份。第 1 层三个 Agent 在代码里依次 await 运行,第 2、3 层等上一层结构化结果到手再开始。

五个 Agent 都配了 Zod outputSchema,maxTurns 为 1,temperature 为 0.1。框架侧校验失败时会带着错误信息重问一次(src/agent/agent.ts 的 validateStructuredOutput);脚本侧的 runTimed 再给第 1 层每个 Agent 最多三次尝试,仲裁与安全 Agent 各跑一次,拿不到结构化结果就以退出码 1 结束。

策划规则里 piano-mirror-combo 的敏感度为 high、允许的方向性为 zero,受保护关联是「piano ↔ mirror」,禁止揭示物件关系、指向镜子、透露步骤;否决时的兜底是氛围描写加一句探索提醒。

结果

可运行产物与验证方式:

需要 API key。脚本头部写明前置条件是 ANTHROPIC_API_KEY 与 Node.js 20 以上,模型可用环境变量 MODEL 覆盖;运行命令 npx tsx packages/core/examples/cookbook/narrative-puzzle-hint-arbitration.ts。

控制台按三个阶段打印每个 Agent 的耗时与输出 token,随后完整打印仲裁草稿与安全审查两段 JSON,最后汇总 input / output token 数。

脚本跑 6 条运行时断言:仲裁识别出冲突、冲突列表非空、世界观 Agent 不判定解法对错、玩家数据 Agent 不给完整解法、安全 Agent 否决这次折中、否决后兜底提示类型含 atmospheric。任一不通过打印 Runtime assertion failed. 并以退出码 1 结束。

2026-09-23 在 commit 2f1d0ff 上实测:第 1 层三个 Agent 均一次通过,仲裁草稿 conflict_detected 为 true、列出 4 条冲突,安全 Agent 判定折中提示里「listen while you play」「turn toward the song」构成指向镜子的方向性暗示,veto_triggered 为 true,兜底提示类型为 vague_atmospheric_description_with_exploration_nudge;6 条断言全部 PASS,合计 input 8183 / output 8162 token,退出码 0。这次实测把示例里提交的 anthropic / claude-sonnet-4-6 换成 DeepSeek 的 deepseek-flash 运行,其余逻辑照原样。

四份输入都标注为 MOCK:存档、世界观资料、玩家数据、策划规则均为虚构,不来自真实游戏;产出是模型生成的文本,供演示与验证流程使用。

出处

来源链接核实日期
packages/core/examples/cookbook/narrative-puzzle-hint-arbitration.ts(commit 2f1d0ff)https://github.com/open-multi-agent/open-multi-agent/blob/2f1d0ff/packages/core/examples/cookbook/narrative-puzzle-hint-arbitration.ts
packages/core/examples/fixtures/narrative-puzzle-hint-arbitration/designer-constraints.json(策划规则,commit 2f1d0ff)https://github.com/open-multi-agent/open-multi-agent/blob/2f1d0ff/packages/core/examples/fixtures/narrative-puzzle-hint-arbitration/designer-constraints.json
packages/core/examples/fixtures/narrative-puzzle-hint-arbitration/community-aggregates.json(玩家数据,commit 2f1d0ff)https://github.com/open-multi-agent/open-multi-agent/blob/2f1d0ff/packages/core/examples/fixtures/narrative-puzzle-hint-arbitration/community-aggregates.json
packages/core/examples/README.md cookbook 条目(commit 2f1d0ff)https://github.com/open-multi-agent/open-multi-agent/blob/2f1d0ff/packages/core/examples/README.md
packages/core/src/agent/agent.ts(结构化输出校验与一次重问,commit 2f1d0ff)https://github.com/open-multi-agent/open-multi-agent/blob/2f1d0ff/packages/core/src/agent/agent.ts
本地实测(commit 2f1d0ff,模型换用 deepseek-flash),观察 veto_triggered: true、6 条断言 PASS 与退出码 0https://github.com/open-multi-agent/open-multi-agent/blob/2f1d0ff/packages/core/examples/cookbook/narrative-puzzle-hint-arbitration.ts

与元定义的关系

本页素材是 open-multi-agent 官方仓库里的 cookbook 示例,由元定义维护。

如果你手上有一条真实的内容生成流程,要让多路来源各自出方案、由仲裁环节折中,再按你自己的规则做一道独立的发布前否决,并接进你的内容库与运营数据,元定义对应的服务是 多智能体系统集成

最后更新

想知道类似的流程在你这边怎么落地?