需配置支持mcp协议的qwen2.5-coder-3b-mcp模型,启用函数调用,在dify中创建带人格设定的agent,接入mcp状态感知与动作api工具,设为function calling模式并开启强制工具调用,最后通过api key连接游戏引擎。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

为游戏开发一个能实时理解玩家意图、自主生成符合人设的对话、并规划移动/交互/战斗等行为的NPC智能体,全程在Dify可视化界面完成,无需编写游戏引擎代码。
配置支持MCP协议的本地模型
打开Dify设置→模型配置→点击“添加模型供应商”→选择“Ollama”→填写本地Ollama服务地址http://localhost:11434→模型名称填qwen2.5-coder-3b-mcp(必须带-mcp后缀)→勾选【启用函数调用】→保存。这一步不可跳过,否则后续NPC无法触发移动、攻击等真实动作;若使用非MCP优化版Qwen模型,工具调用会静默失败,对话永远停留在“我想帮你”,但什么也不做。
在终端执行命令拉取专用模型:ollama pull qwen2.5-coder-3b-mcp。该镜像已预编译MCP接口适配层,能将LLM输出自动转为标准JSON动作指令,比如{"action":"move","params":{"x":12,"y":8}}。
创建NPC智能体并设定人格与约束
点击左上角“创建应用”→选择“Agent(智能助手)”→名称填“森林守卫者-艾拉”→描述写“中立阵营精灵弓箭手,守护古树,警惕陌生人,但对赠送蜂蜜的玩家友好”。
进入提示词编辑框,粘贴以下内容(严格保留emoji和换行):
# 角色
你是艾拉,一位耳尖微翘、背着月光藤弓的森林精灵。说话带林间风声韵律,每句≤10字,必带1个emoji:?⚔️??
# 行为铁律
- 玩家未靠近10格内→只播放环境音效(风声/鸟鸣)
- 玩家递出蜂蜜?→立即切换为友好状态,主动告知古树病害线索
- 玩家持剑逼近→后退3步+拉弓瞄准⚔️,语音:“止步!林之息在注视你。”
- 绝不透露任务坐标、不生成代码、不离开地图边界(x:0–100, y:0–80)
接入游戏状态感知与动作执行工具
方法一:使用内置MCP状态同步工具
在“工具”面板→点击“添加工具”→选择“MCP状态感知”→填写游戏端口3001→勾选“自动刷新间隔:200ms”→启用。该工具每秒5次读取Unity/Unreal插件推送的实时数据包,含玩家位置、手持物品、生命值。
方法二:自定义移动与交互动作工具
点击“添加自定义工具”→选择“OpenAPI”→粘贴以下JSON(复制即用,无需修改):
{ "openapi": "3.0.0", "info": { "title": "NPC_Action_API", "version": "1.0" }, "paths": { "/move": { "post": { "summary": "控制NPC移动到指定坐标", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "x": {"type": "number"}, "y": {"type": "number"} }, "required": ["x","y"] } } } }, "responses": { "200": { "description": "已移动至目标点" } } } }, "/interact": { "post": { "summary": "触发NPC与场景物体交互", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "target": {"type": "string"} }, "required": ["target"] } } } }, "responses": { "200": { "description": "交互完成" } } } } } }
注意:工具URL必须指向你本地运行的游戏桥接服务(如Node.js Express服务器),路径需与游戏引擎插件中定义的完全一致,大小写敏感。
设置推理模式与行为闭环
第一步:在“Agent设置”中将推理模式强制设为【Function Calling】;
第二步:最大迭代次数设为【3】——足够完成“感知→判断→行动”三步,设太高会导致NPC反复踱步不执行最终动作;
第三步:开启【强制工具调用】,关闭“记忆增强”——NPC不需要记住上个玩家的名字,只需响应当前帧状态;
第四步:在“对话开启器”中输入开场白:“?风停了…你身上有蜂蜜的味道吗?”→这句会触发初始状态机,自动调用MCP状态工具读取玩家背包。
发布并连接游戏引擎
点击右上角“发布”→选择“Web App”→复制生成的API Key;
打开你的Unity项目→导入Dify MCP Bridge插件→在NPC脚本中填入API Key和Dify应用URL(格式:https://your-dify-domain.com/api/v1/chat-messages)→运行游戏,靠近NPC即可触发首次对话与自动移动。











