惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

PCI Perspectives
PCI Perspectives
C
CERT Recently Published Vulnerability Notes
L
LINUX DO - 热门话题
S
Schneier on Security
C
Cybersecurity and Infrastructure Security Agency CISA
Spread Privacy
Spread Privacy
The GitHub Blog
The GitHub Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
The Exploit Database - CXSecurity.com
P
Privacy International News Feed
Y
Y Combinator Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
H
Help Net Security
S
SegmentFault 最新的问题
M
MIT News - Artificial intelligence
WordPress大学
WordPress大学
D
Darknet – Hacking Tools, Hacker News & Cyber Security
G
GRAHAM CLULEY
博客园 - Franky
P
Palo Alto Networks Blog
博客园 - 【当耐特】
T
The Blog of Author Tim Ferriss
V2EX - 技术
V2EX - 技术
Project Zero
Project Zero
T
Threatpost
博客园 - 三生石上(FineUI控件)
A
About on SuperTechFans
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
C
CXSECURITY Database RSS Feed - CXSecurity.com
Know Your Adversary
Know Your Adversary
Attack and Defense Labs
Attack and Defense Labs
N
News and Events Feed by Topic
Google Online Security Blog
Google Online Security Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Threat Research - Cisco Blogs
Recent Announcements
Recent Announcements
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
N
News and Events Feed by Topic
T
Tenable Blog
W
WeLiveSecurity
腾讯CDC
小众软件
小众软件
博客园 - 聂微东
D
Docker
Engineering at Meta
Engineering at Meta
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
H
Hacker News: Front Page
J
Java Code Geeks
Hacker News - Newest:
Hacker News - Newest: "LLM"

博客园_首页

Plist 二进制格式 Milvus 和 PGVector,哪个更好? OpenClaw 已过时?在 VS Code 中运行 Hermes Agent! 第30篇文章:一个大三计科生的自白 Manim如何在数学公式中完美显示中文? Docker 部署 RocketMQ 5 并发编程核心概念辨析 C#事务处理最佳实践:别再让“主表存了、明细丢了”的破事发生 CLI 是什么?为什么大厂突然集体卷命令行? 【从0到1构建一个ClaudeAgent】协作-自主Agent UIImageView 设置图片不生效的原因排查 最小二乘问题详解20:无先验约束下的增量式SFM自由网平差 痞子衡嵌入式:大话双核i.MXRT1180之XIP应用里借助MU实现可靠Flash IAP的方法 AI Chat 封装, SemanticKerne.AiProvider.Unified 已发布 Windows下右键编辑js文件无法打开记事本——在注册表中使用环境变量 在后台服务中使用 Scoped 服务,为什么总是报错? H200 安装驱动并使用sglang启动模型 wireshark 抓包Trap上报告警内容 我用 AI 辅助开发了一系列小工具(2):图片压缩工具 [A Primer On MC and CC] 2.1 Memory Consistency 1 - 指令重排序和 SC 模型 Oracle数据库SCN推进技术详解与实践指南 玩转控件:封装个带图片的Label控件 Claude Code 4.7 真正该升级的不是模型,而是你的工作流 前端小白一句话,AI 帮我做了个颜值拉满的桌面媒体播放器。当代码不再是门槛,一句话编程就是现实。 5. WorkBuddy: 小龙虾的灵魂三件套,让你的小龙虾不只是工具 SQLite 分片方案实战:三种分片策略的深度对比 告别简陋 UI!一款基于 Fluent Design 和基于 WinUI 的开源免费、现代化的 Avalonia UI 控件库 关于二进制排列组合枚举的总结 AI开发-python-LangGraph框架(3-27-LangGraph从零实现大模型智能决策工作流) ElasticSearch主分片和副本分片概念详解 【002】HTTPS 粗解:证书、TLS 握手与对后端配置的影响 Hermes Agent 一周暴涨五万 Star,但我劝你别急着追 明明连接的是Redis的DB0,为什么能查到DB3的数据? 【从0到1构建一个ClaudeAgent】协作-Agent团队 熟悉电子元器件之后,电子小白下一步该怎么走? MAF快速入门(23)通过C#类定义Skills .NET 高级开发 | 手写一个对象映射框架 FastAPI数据库ORM怎么选?我肝了三个Demo后,终于不再纠结了 mysqldump 参数拾遗:在遗忘与铭记之间 C# .NET 周刊|2026年3月5期 Claude code入门 - 陈彦斌 一文学习入门 ThingsBoard 开源物联网平台 GitHub 热门项目 | 2026年04月16日 如何为GIT设置全局勾子,为每次提交追加信息 Number.isFinite和isFinite与isNaN()和Number.isNaN的区别 PortSwigger SQL注入LAB2 推荐一个测试人必备的Skills,从功能到性能全搞定(附详细实操和安装下载方式) 筑基期:掌握Odoo基础核心知识点02(Odoo XML 开发方式详解) GLM模型这么火,咱们用vllm也咧一个呗! 深入理解 AbortController:从底层原理到跨语言设计哲学 字符串学习笔记 多租户系统框架的基础模块设计和分析设计 Apache SeaTunnel Zeta 为什么能做到“又快又稳”? AI开发-python-LangGraph框架(3-26-LangGraph基本概念及第一个简单样例) Vue 3 组件通信,别只会用 Props 和 Emits 了,这几个狠活儿你得看看 ElasticSearch7.X版本配置密码 用Manim实现动态交点计算--从一个动点问题说起 团结引擎+Addressable+Instant Game打包抖音小游戏 function call 实战:让 LLM 自动判断 pod 异常、调用日志工具并完成故障分析 bubseek —— 让 Agent 的足迹,变成团队的洞察 通过 C# 读取并导出 PDF 书签 如何用 GitHub Actions 实现 Steam 自动化发布 【从0到1构建一个ClaudeAgent】并发-后台任务 .NET 高级开发 | 定制 ASP.NET Core 框架 电子小白:什么是运算放大器(运放) zero2Agent:面向大厂面试的 Agent 工程教程,从概念到生产的完整学习路线 堆上的ORW HC32F460 USB CDC通信异常:非对齐访问异常排查 20260413-Hyperbridge 攻击事件:发生在默克尔山上的验证绕过 那些喊着AI 要淘汰你的人,正在靠你的焦虑赚大钱! 深度学习进阶(八)Swin Transformer 最小二乘问题详解19:带先验约束的增量式SFM优化与实现 SnapTranslate 3.0 正式发布:全局划词翻译 + 完整英语学习闭环,一站式搞定查词、记词、复习 工作的意义、工作的困难认知再思考 .NET + AI 进阶实战:基于类的技能开发 - 打造可治理的 Agent 能力模块 【从0到1构建一个ClaudeAgent】规划与协调-技能 上周热点回顾(4.6-4.12) 电子小白的工具三件套:面包板、杜邦线、万能板 单表五亿数据的查询优化 | Mysql、StarRocks 2. WorkBuddy:从“我是谁”到“帮我干活” C# 如何减少代码运行时间:7 个实战技巧 基于HelixToolkit.SharpDX 渲染3D模型 - 笺上知微 从零开始的双臂具身VLA起源及现阶段发展综述 - SkyXZ 记对 xonsh shell 的使用, 脚本编写, 迁移及调优 - pluvium27 受够了Vibe Coding的失控?换个起点,让AI事半功倍 从开始配置漏洞环境到漏洞复现流程 - 難しい 关于10年工作经验的程序员对OpenClaw的实战经验分享以及看法 - 虚无境 Any metadata 的内存布局 C# .NET 周刊|2026年3月2期 - InCerry 我帮你测过了,测试圈排名第二的 Skill 依然很牛逼 Skill Discovery | 无监督技能发现的经典工作总结 - MoonOut 上下文工程是什么?过时了么?一文讲明白! - 一枫说码 开了 TUN 模式还是直连?90% 的人都踩过这个坑 AScript扩展多种脚本语言 - rockey627 AI 学习笔记:Agent 的记忆机制 你能被装进一个文件里吗?——7 万人把同事"蒸馏"成了 AI - 我没有三颗心脏 Claude Code 通关手册(七):给 AI 装上技能包——Skills 完全指南 - 暮色之狐 在浏览器中快速编辑代码:VSCode Web 集成实践 - Newbe36524 蒸馏自己 skill?基于 Deepseek 的蒸馏器,丐版蒸馏方式,简单便捷 - To_Carpe_Diem Spring AI Aliababa和AgentScope,哪个更好? - 苏三说技术
和AI一起搞事情#7. 给游戏NPC接入Hermes?
风雨中的小七 · 2026-06-15 · via 博客园_首页

上一周一直在搞图片拆PSD图层、海报文字编辑的功能,有一阵没做游戏了,咱接着回来做中医游戏。好了不废话,这期咱们聊聊怎么给游戏NPC装个"智能大脑",顺便看看开发过程中Hook这个老朋友的新玩法。

先汇报一下进度

✅ 对话卷轴+Hermes:青木先生现在能查病案、翻背包、看进度,还会按教学大纲给你上课,触发辩证游戏,再给你的辩证打分
npc对话

✅ 炮制游戏:当归 + 黄酒炮制 -> 酒制当归
炮制

✅ 病案集:不想跟NPC聊天?行,自己选病例玩辩证游戏
病案

✅ 后端DataBase:前后端增加了数据库进行状态管理,这样可以保证npc工具查询和前端展示数据的一致性。

为什么NPC需要"智能大脑"?

虽然咱没怎么玩过游戏吧,但是也能看过游戏视频呀!那种一碰npc就只会跟你说“向东走那里有意想不到的收获。“”是一件很无聊的事情。所以我们希望NPC有自己的灵魂,同时也能根据游戏状态动态变化,最好能直接操控游戏给玩家发布任务。

Agent选型:Python才是真爱

最后选了Hermes而不是Lobster(龙虾🦞),理由简单——我熟Python。

别笑,这事儿很严肃。AI确实降低了跨语言开发门槛,但就像用翻译软件能看懂法语菜单、不代表你能跟法国大厨讨论烹饪技巧。遇到复杂问题时,母语开发效率能差3-5倍,心理压力也完全不同。

所以有些python的开源项目,真的是赢在会python的人太多了...

接入方案:从gateway接入简单快速

核心思路:把游戏当成一个聊天平台,通过Gateway接入Hermes。

Hermes是个三明治架构🥪:

┌──────────────────────────────────────────────┐
│            顶层:平台适配器层                  │
│  Telegram | Discord | Slack | WhatsApp | ...  │
│  (翻译官:把各平台事件转为统一格式)            │
└──────────────────┬───────────────────────────┘
                   ↓
┌──────────────────────────────────────────────┐
│           中间层:Gateway 核心               │
│  会话路由 | 授权鉴权 | 限流 | 定时任务        │
│  流式传输 | 媒体处理 | 审批按钮 | Hooks       │
└──────────────────┬───────────────────────────┘
                   ↓
┌──────────────────────────────────────────────┐
│           底层:AIAgent 核心                 │
│  LLM 调用 | 工具调用 | 记忆 | 会话历史        │
│  (对平台一无所知,只管思考和回答)             │
└──────────────────────────────────────────────┘

三层架构的设计,提供了可以灵活接入各个平台的Gateway层,在游戏中灵活的接入Agent的能力,只需要把游戏当做一个平台,提供对应的适配器,来处理流式消息即可。

给NPC装外挂:技能+工具

同时为了让NPC更智能,还需要为每个智能体提供外挂,包括技能、工具、每个智能体的角色文件

技能层主要是npc的日常SOP工作流,包含以下
image

而工具层会更复杂一点,因为需要完成所有游戏状态的获取和更新、触发操作,包括

  • 状态获取:获取玩家的背包、病案进度、整体学习进度
  • 状态更新:创建学习任务、触发诊断配伍游戏、记录更新记忆(这里没有完全使用hermes内置的记忆模块,因为非结构化记忆在教学场景的稳定度不满足要求)

image

工具现在还很基础,更多问题其实需要真实开始场景模拟后暴露出来再进行修复了,不过数据库已经初步接入进来,后续的调整也会更多在数据SCHEMA层所以复杂度还好。主要是记忆和任务模块的边界我还没太想好,走一步看一步吧~

Hook的花样玩法

很多人觉得Hook就是"到点执行固定脚本"——比如任务完成发个通知、调用工具前检查权限。但我觉得Hook的本质是:在AI自主决策的缝隙里,塞入人类的理性。

本质上更像是在LLM自主执行的多个行动之间通过链表的形式穿插进固定的状态和流程。

和/ultrawork的思路互补,一个是自主之中有编排,另一个是编排之中有自主,最终或者会走向统一?

并且毫无意外的是并不引入新的语法,而是就基于coding本身实现编排,毕竟这是AI当前完成最好,最容易校验的任务。

那在游戏的开发中我们用到了哪些hooks呢?

Pre-tool Hook:Key泄露拦截器

血泪教训:某天让AI帮我提交代码,结果它把我的OpenAI Key一起push到GitHub了😱。

赶紧用git-filter-repo把所有历史commit扫了一遍(⚠️ 警告:这玩意会重写Git历史,操作前务必备份!)

于是立刻马上就让CC增加了安全扫描Hook,也是最基础的“脚本型”Hook,具体的指令流程如下。

image

Hook的开发其实可以类比接入新API,先去官网拉取Hook开发规范并写入文档,这样之后开发新的hooks也不需要在查规范直接先看文档就完了,之后再开始开发hook,并E2E测试后再接入。

最搞笑的地方来了....

因为安全拦截做的太强,导致写好的hook代码本身无法commit了....

然后AI看到拦截消息,回复“我太强了”

哈哈哈哈,笑不活了.....

Post-Tool Hook:设计文档审查官

问题:让AI设计功能时,它经常被用户的提问"带偏"。

比如我说"背包数据显示不一致",AI只会修修补补解决表面问题,而不会意识到根因是缺少统一的状态管理数据库。

解决方案:加个"事后诸葛亮"的反思Hook

当检测到工具输出是对docs/superpowers/specs进行文件写入时,当自动触发审核任务。

这个Hook更复杂些,是一个“脚本型”hook,因为所有反思评估都需要在新的上下文中执行。通过脚本启动独立CC进程进行设计文档的审核,从整个设计文档需要解决的问题触发,审核文档是否有遗漏、模糊、矛盾待澄清的设计点。

AI圈其实是个圈,没过一阵就会发现历史的风又吹风回来了。所以自主虽好,但self-evaluation(reflection)在当前的模型能力下依旧有加成的。
image

这和superpowers自带的spec-review有啥区别?

  • 自带的:细节微调,像语文老师改错别字, 并且纯靠指令触发,国产模型长上文的触发概率并不高...以至于我看源码前都不知道这个功能竟然存在......
  • 我的Hook:全局审查,像技术总监做Code Review,并且通过hook强制触发
    image

Pre-Compact + Session-Start Hook:记忆交接棒

个人体验CC的compact效果比较一般,也或许不同类型的项目本就需要不同的跨session信息传递方式。

所以还是自己上手做了,好不好另说,至少肯定不会再埋怨别人,只会蛐蛐自己。

选择的方案是在compact之前同时创建“handover.md” + "STATE.md" + "PROGRESS.MD"这三个文件,还是那个思路文件持久化,作为唯一真相源,他们分别存储

  • STATE:项目状态描述,长期
  • PROGRESS:当前进行中任务状态描述,短期
  • handover.md: 简要概括STATE+PROGRESS并引用对应文档,然后给出下一步todo指令

然后再下一个session start的时候通过Prompt hook,在上下文中自动载入handover.md就行了。

所以整个Agent循环总共涉及到了以下Hook的触发流程

image

如果涉及到多个Agent并发工作,例如teammate模式之类的,注意需要配合git worktree一起使用,不然会出现更新冲突哟。