游戏里的 AI NPC 为什么能记住你:用 HelloAgents 搭一个 3 角色的多智能体社会模拟小镇
2026/9/5 0:22:52 网站建设 项目流程

游戏里的 AI NPC 为什么能记住你:用 HelloAgents 搭一个 3 角色的多智能体社会模拟小镇

【免费下载链接】hello-agents📚 《从零开始构建智能体》——从零开始的智能体原理与实践教程项目地址: https://gitcode.com/GitHub_Trending/he/hello-agents

“上次你说喜欢 Python,对吧?”这是游戏里玩家和 NPC 发生的一次真实对话,不是预设台词。Helloagents-AI-Town 是基于 HelloAgents 多智能体框架构建的社会模拟小镇:Godot 游戏客户端加 Python 后端,3 个 AI NPC 拥有双层记忆与五级好感度,回应会随你的熟悉程度变化。

跑起小镇:最小流程

环境清单

  • 系统:Windows 10/11、macOS、Linux 均可
  • 引擎:Godot 4.2 及以上——开源 2D/3D 游戏引擎,负责渲染办公室场景、角色移动和对话框
  • 语言与依赖:Python 3.10 及以上,另需一个 LLM API 密钥(OpenAI、DeepSeek、智谱等均可)

运行命令

先获取代码并进入项目目录:

git clone https://gitcode.com/GitHub_Trending/he/hello-agents cd hello-agents/code/chapter15/Helloagents-AI-Town

再配置后端、装依赖并启动:

cd backend cp .env.example .env # 把 LLM_API_KEY 改成你的密钥 python -m venv venv && pip install -r requirements.txt python main.py

后端启动后 API 监听在 8000 端口。接着打开 Godot,导入helloagents-ai-town项目(可直接导入scenes/main.tscn场景),按 F5 运行。游戏内用 WASD 移动,靠近 NPC 时按 E 打开对话框。

在小镇里过一天:看懂 3 个核心机制

搭话:角色设定与自主行为

小镇里有 3 个 NPC:Python 工程师张三、产品经理李四、UI 设计师王五。每个 NPC 都是一个独立的 Agent 实例,提示词模板包含职业、性格、爱好、说话方式四层信息。所以同一个问题,工程师会甩术语,产品经理先谈规划,设计师先聊体验。

NPC 也不是站着等人问。状态管理模块驱动它们在办公室里自主走动、工作、休息,当前状态还会写进对话上下文,刚下班和午后小憩时的语气会有差别。

深聊:双层记忆是怎么工作的

这个 NPC 对话系统背后的“记住”靠两层存储:

  • 工作记忆:只存最近 10 条对话,直接拼进提示词。快,但容量有限。
  • 情景记忆:重要对话持久化后切块,存入 Qdrant 向量数据库(一种按语义相似度检索内容的存储),元数据放 SQLite。新对话到来时按语义检索出相关记忆补进上下文,最多存 100 条,重要性低的会自动遗忘。

两层配合:近期对话走工作记忆,很久前说过的事由情景记忆找回来。另外每个 NPC 的记忆互相隔离,你跟张三聊过的内容李四不知道,避免“串话”。

表态:好感度如何随对话变化

每轮对话结束后,LLM 做一次情感分析:判断玩家态度(友好/中立/不友好)、对话质量、有没有赞美或批评,输出一个数值变化。友好对话加 1 到 10 分,批评减 3 到 15 分。

好感度 0–100 分,对应五级:陌生、熟悉、友好、亲密、挚友。等级不只是个数字,它会作为风格参数写进下一轮提示词——“熟悉”的 NPC 对“最近怎么样”只回“还行吧”,“亲密”的会多说几句,还主动问你。这就是好感度系统的完整闭环:对话、评分、累计、改变风格。

打开黑盒:代码地图

核心文件都在 Helloagents-AI-Town/ 下,分后端与游戏两侧:

  • backend/main.py:FastAPI(Python 网络框架)入口,负责路由与启动
  • backend/agents.py:NPCAgentManager 多智能体调度,每个 NPC 一个 Agent 加一套记忆管理器
  • backend/models.py:记忆与对话的数据模型
  • backend/relationship_manager.py:好感度评分与五级等级维护
  • backend/state_manager.py:NPC 状态(工作/休息/移动)管理
  • helloagents-ai-town/scripts/api_client.gd:Godot 侧 HTTP 客户端,把对话请求发往后端
  • AFFINITY_SYSTEM_GUIDE.md:好感度规则、评分区间与等级说明
  • MEMORY_SYSTEM_GUIDE.md:双层记忆的工作方式与示例

能复用的 4 个设计点

  1. 角色设定怎么写:用“职业 + 性格 + 爱好 + 说话方式”四要素做提示词模板,再注入 NPC 的实时状态(工作中/休息中),同一个人不同时段语气不同,设定效果在对话里立刻可见。
  2. 双层记忆如何设计:快的数据直接进提示词,慢的数据向量化、按需检索。“快慢分离”是智能体记忆设计里最值得搬走的思路——工作记忆层可换成任意滑动窗口,长期层可替换成别的向量库。
  3. LLM 情感评分如何驱动好感度:不写关键词规则,每轮对话后让 LLM 做一次结构化情感判断(态度、质量、倾向),映射成数值区间再累加。评分与等级是两层:数值决定等级,等级决定风格。
  4. 游戏引擎如何与 Python 后端对接:Godot 与 Python 只靠 HTTP REST 交换数据,前端只管移动、UI 和素材展示,智能全部留在后端。Godot 接入 AI 用这种分工最干净,加新功能只需加一个 API,不用改引擎代码。

写在最后

这个项目是多智能体接入游戏引擎的完整样例:客户端负责表现,后端负责记忆与好感度,机制都可解释、可改动。它适合已经了解智能体基础、想看一个能跑起来的 NPC 对话系统的读者。一个不错的下一步:跑通后只改 relationship_manager.py 里的情感评分区间,观察 NPC 对你的好感曲线如何变化。

【免费下载链接】hello-agents📚 《从零开始构建智能体》——从零开始的智能体原理与实践教程项目地址: https://gitcode.com/GitHub_Trending/he/hello-agents

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询