ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

给游戏 NPC 接入 Hermes?

给游戏 NPC 接入 Hermes? 上一周一直在搞图片拆PSD图层、海报文字编辑的功能有一阵没做游戏了咱接着回来做中医游戏。好了不废话这期咱们聊聊怎么给游戏NPC装个智能大脑顺便看看开发过程中Hook这个老朋友的新玩法。先汇报一下进度✅ 对话卷轴Hermes青木先生现在能查病案、翻背包、看进度还会按教学大纲给你上课触发辩证游戏再给你的辩证打分✅ 炮制游戏当归 黄酒炮制 - 酒制当归✅ 病案集不想跟NPC聊天行自己选病例玩辩证游戏✅ 后端DataBase前后端增加了数据库进行状态管理这样可以保证npc工具查询和前端展示数据的一致性。为什么NPC需要智能大脑虽然咱没怎么玩过游戏吧但是也能看过游戏视频呀那种一碰npc就只会跟你说“向东走那里有意想不到的收获。“”是一件很无聊的事情。所以我们希望NPC有自己的灵魂同时也能根据游戏状态动态变化最好能直接操控游戏给玩家发布任务。Agent选型Python才是真爱最后选了Hermes而不是Lobster龙虾理由简单——我熟Python。别笑,这事儿很严肃。AI确实降低了跨语言开发门槛但就像用翻译软件能看懂法语菜单、不代表你能跟法国大厨讨论烹饪技巧。遇到复杂问题时母语开发效率能差3-5倍心理压力也完全不同。所以有些python的开源项目真的是赢在会python的人太多了...接入方案从gateway接入简单快速核心思路把游戏当成一个聊天平台通过Gateway接入Hermes。Hermes是个三明治架构┌──────────────────────────────────────────────┐ │ 顶层平台适配器层 │ │ TG | Discord | Slack | WhatsApp | ... │ │ 翻译官把各平台事件转为统一格式 │ └──────────────────┬───────────────────────────┘ ↓ ┌──────────────────────────────────────────────┐ │ 中间层Gateway 核心 │ │ 会话路由 | 授权鉴权 | 限流 | 定时任务 │ │ 流式传输 | 媒体处理 | 审批按钮 | Hooks │ └──────────────────┬───────────────────────────┘ ↓ ┌──────────────────────────────────────────────┐ │ 底层AIAgent 核心 │ │ LLM 调用 | 工具调用 | 记忆 | 会话历史 │ │ 对平台一无所知只管思考和回答 │ └──────────────────────────────────────────────┘三层架构的设计提供了可以灵活接入各个平台的Gateway层在游戏中灵活的接入Agent的能力只需要把游戏当做一个平台提供对应的适配器来处理流式消息即可。给NPC装外挂技能工具同时为了让NPC更智能还需要为每个智能体提供外挂包括技能、工具、每个智能体的角色文件。技能层主要是npc的日常SOP工作流包含以下而工具层会更复杂一点因为需要完成所有游戏状态的获取和更新、触发操作包括状态获取获取玩家的背包、病案进度、整体学习进度状态更新创建学习任务、触发诊断配伍游戏、记录更新记忆这里没有完全使用hermes内置的记忆模块因为非结构化记忆在教学场景的稳定度不满足要求工具现在还很基础更多问题其实需要真实开始场景模拟后暴露出来再进行修复了不过数据库已经初步接入进来后续的调整也会更多在数据SCHEMA层所以复杂度还好。主要是记忆和任务模块的边界我还没太想好走一步看一步吧~Hook的花样玩法很多人觉得Hook就是到点执行固定脚本——比如任务完成发个通知、调用工具前检查权限。但我觉得Hook的本质是在AI自主决策的缝隙里塞入人类的理性。本质上更像是在LLM自主执行的多个行动之间通过链表的形式穿插进固定的状态和流程。和/ultrawork的思路互补一个是自主之中有编排另一个是编排之中有自主最终或者会走向统一并且毫无意外的是并不引入新的语法而是就基于coding本身实现编排毕竟这是AI当前完成最好最容易校验的任务。那在游戏的开发中我们用到了哪些hooks呢Pre-tool HookKey泄露拦截器血泪教训某天让AI帮我提交代码,结果它把我的OpenAI Key一起push到GitHub了。赶紧用git-filter-repo把所有历史commit扫了一遍⚠️ 警告这玩意会重写Git历史操作前务必备份于是立刻马上就让CC增加了安全扫描Hook也是最基础的“脚本型”Hook具体的指令流程如下。Hook的开发其实可以类比接入新API先去官网拉取Hook开发规范并写入文档这样之后开发新的hooks也不需要在查规范直接先看文档就完了之后再开始开发hook并E2E测试后再接入。最搞笑的地方来了....因为安全拦截做的太强导致写好的hook代码本身无法commit了....然后AI看到拦截消息回复“我太强了”哈哈哈哈笑不活了.....Post-Tool Hook设计文档审查官问题让AI设计功能时它经常被用户的提问带偏。比如我说背包数据显示不一致AI只会修修补补解决表面问题而不会意识到根因是缺少统一的状态管理数据库。解决方案加个事后诸葛亮的反思Hook当检测到工具输出是对docs/superpowers/specs进行文件写入时当自动触发审核任务。这个Hook更复杂些是一个“脚本型”hook因为所有反思评估都需要在新的上下文中执行。通过脚本启动独立CC进程进行设计文档的审核从整个设计文档需要解决的问题触发审核文档是否有遗漏、模糊、矛盾待澄清的设计点。AI圈其实是个圈没过一阵就会发现历史的风又吹风回来了。所以自主虽好但self-evaluationreflection在当前的模型能力下依旧有加成的。这和superpowers自带的spec-review有啥区别?自带的细节微调像语文老师改错别字, 并且纯靠指令触发国产模型长上文的触发概率并不高...以至于我看源码前都不知道这个功能竟然存在......我的Hook全局审查像技术总监做Code Review并且通过hook强制触发Pre-Compact Session-Start Hook记忆交接棒个人体验CC的compact效果比较一般也或许不同类型的项目本就需要不同的跨session信息传递方式。所以还是自己上手做了好不好另说至少肯定不会再埋怨别人只会蛐蛐自己。选择的方案是在compact之前同时创建“handover.md” STATE.md PROGRESS.MD这三个文件还是那个思路文件持久化作为唯一真相源他们分别存储STATE项目状态描述长期PROGRESS当前进行中任务状态描述短期handover.md: 简要概括STATEPROGRESS并引用对应文档然后给出下一步todo指令然后再下一个session start的时候通过Prompt hook在上下文中自动载入handover.md就行了。所以整个Agent循环总共涉及到了以下Hook的触发流程如果涉及到多个Agent并发工作例如teammate模式之类的注意需要配合git worktree一起使用不然会出现更新冲突哟。
返回列表