前言¶
在 DeepSeek Harness(DSH)里让智能体操作 Unreal Engine,需要把 Epic 在 UE 5.8+ 提供的 Model Context Protocol(MCP)服务接到 DSH 的 MCP 客户端上。不借助专用插件时,通常要手写 cordis.patch.yml 里的 insert 块,指定 streamable-http 传输和本地 URL;端点写错、端口被占用或编辑器未启动时,往往只会得到空的工具列表,缺少可操作的诊断信息。
dsh-unreal-engine(维护者 yeee-eh)走 DSH 的 bundle 频道:插件自带 cordis.patch.yml 完成挂载,并在 设置 → 虚幻引擎 提供端点自动探测与手动解析,把「装上、接上、能用」收敛到设置页和少量安装步骤。本文介绍其定位、能力与安装用法,事实以 GitHub 仓库 README 为准。
这是什么¶
dsh-unreal-engine 把 Unreal Engine 5.8+ 的内置 MCP 服务接入 DeepSeek Harness。数据流可以概括为:
DSH agent ──[dsh-mcp-client]──> UE 5.8 内置 MCP server ──> 编辑器
DSH 官方自带 Epic 官方自带
↑
本插件:设置页 + 端点探测
插件当前版本为 0.1.0(见 package.json),许可证 MIT,要求 Node.js >= 20。运行时刻意不打包 MCP SDK 与 React,分别复用 DSH 自带的 @modelcontextprotocol/sdk / @modelcontextprotocol/client 与客户端 shell 的 React,避免重复实例导致 hooks 异常。
核心功能¶
设置页与端点探测¶
打开 设置 → 虚幻引擎 后可:
| 操作 | 说明 |
|---|---|
| 自动探测并保存 | 从 8000 端口起逐个尝试真正的 MCP 握手(非仅探端口),找到则保存 |
| 手动输入 | 探测失败时粘贴 UE Output Log 整行或直接填端口号 |
| 结果区 | 显示 Toolset 数量、meta 工具名、协议版本(均来自真实握手) |
手动输入可识别例如:
LogModelContextProtocol: Starting MCP server on port 8000 (override with -ModelContextProtocolPort=N)
LogHttpListener: Created new HttpListener on 127.0.0.1:8000
http://127.0.0.1:8000/mcp
8000
上述格式会收敛为 http://127.0.0.1:8000/mcp。
配置持久化在 $env:DSH_HOME/unreal-engine.json,供宿主进程在启动时读取(浏览器侧 settings 文档在启动时读不到,而 MCP 客户端恰在启动时连接)。
Bundle 挂载,无需改用户级补丁¶
与 dshmarket、dsh-chat-manager 等相同,本插件通过 bundle 自带 cordis.patch.yml 挂载;用户的 ~/.dsh/cordis.patch.yml 应保持为空(仅 []),卸载时不必手改用户 YAML。
诊断与规范¶
tools/ue5-dsh-doctor.mjs:五段链路连通性诊断(零依赖,可通过npm run doctor调用)。skills/unreal-mcp/:UE 操作规范(需手动复制到$env:DSH_HOME/skills/)。lib/mcp-client-loader.mjs:在多个解析根上尝试新旧 MCP 包名;失败时列出每次尝试原因,而非单纯的MODULE_NOT_FOUND。
改端口(环境变量)¶
MCP URL 在补丁里通过 !!js 读环境变量,缺省为 UE 默认:
url: !!js "process.env.DSH_UNREAL_MCP_URL || 'http://127.0.0.1:8000/mcp'"
改端口可不编辑 YAML,在启动 DSH 前设置:
$env:DSH_UNREAL_MCP_URL = 'http://127.0.0.1:8123/mcp'
dsh --profile web
已知限制:设置页保存的端点与上述 !!js 行目前不联动;若探测到非 8000 端口,除在设置页保存外,还需设 DSH_UNREAL_MCP_URL。保存设置后须重启 DSH,因 dsh-mcp-client 仅在启动时连接并注册工具。
安装与启用¶
README 建议优先让 DSH / AI 按文档协助安装;下面为仓库中的标准步骤。命令使用两个占位符,需先在当前 PowerShell 会话中设置:
| 占位符 | 含义 |
|---|---|
$env:DSH_HOME |
DSH 配置根,通常 C:\Users\<用户名>\.dsh |
$RepoRoot |
本插件源码目录(本地已有源码的路径) |
if (-not $env:DSH_HOME) { $env:DSH_HOME = "$env:USERPROFILE\.dsh" }
$RepoRoot = 'C:\path\to\dsh-unreal-engine'
1、让 profile 能解析到包¶
cd $env:DSH_HOME\profiles\web
pnpm add file:$RepoRoot
若不想改动 package.json,可在共享层建目录连接:
New-Item -ItemType Junction `
-Path "$env:DSH_HOME\profiles\node_modules\dsh-unreal-engine" `
-Target '$RepoRoot'
包应放在 profiles/node_modules(共享层),而非仅 profiles/web/node_modules,否则 dsh --profile sdk 等 profile 可能报 Cannot find package 'dsh-unreal-engine'。
2、登记到 bundles¶
编辑 $env:DSH_HOME\profiles\web\package.json,在 dsh.profile.bundles 中加入 dsh-unreal-engine:
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"...",
"dsh-unreal-engine"
],
"patchReload": "live"
}
}
只有出现在 bundles 里,DSH 才会应用包内的 cordis.patch.yml。README 说明:在部分已安装 DSH 版本(如 0.1.5-rc)中,reconcileProfilePlugins 虽能读 dsh.bundle 自动登记,但可能未被调用,因此这一步目前常需手动完成。若 dsh 在 PATH 上,也可使用 dsh plugin --profile web add <包>(会代为登记)。
3、确认 home 补丁为空¶
$env:DSH_HOME\cordis.patch.yml 应仅为 []。若仍有 unreal-engine / mcp-unreal 的 insert 块,应删除,避免重复 id 导致加载失败。
4、校验并重启¶
dsh --profile sdk
能安静退出(exit=0、无输出)表示插件树可加载。随后重启 DSH。
通过打包分发¶
维护者可在源码目录执行:
cd $RepoRoot
npm pack --pack-destination ..\dist
得到例如 dsh-unreal-engine-0.1.0.tgz。对方安装示例:
cd $env:DSH_HOME\profiles\web
pnpm add D:\Downloads\dsh-unreal-engine-0.1.0.tgz
仍需手动把 dsh-unreal-engine 加入 dsh.profile.bundles,然后重启 DSH。对方环境须能解析 DSH 自带的 MCP 客户端模块,否则探测会报「无法解析 MCP 客户端模块」,应依据插件输出的诊断定位。
典型用法¶
UE 侧一次性准备¶
- UE 编辑器 → Edit → Plugins → 搜索
ModelContextProtocol→ 启用 → 重启编辑器。 - Window → Output Log,在底部输入框执行:
ModelContextProtocol.StartServer
- 确认日志出现
Created new HttpListener on 127.0.0.1:8000。
DSH 侧连接¶
- 完成上文安装与 bundles 登记,重启 DSH。
- 打开 设置 → 虚幻引擎,使用 自动探测并保存;失败则粘贴日志行或端口号后保存。
- 再次重启 DSH,使 MCP 客户端按新端点注册工具。
- 在会话中通过 DSH agent 使用已注册的 UE MCP 工具(具体工具名以握手结果区显示为准)。
可选:将 skills/unreal-mcp/ 复制到 $env:DSH_HOME\skills\,便于 agent 遵循仓库内的 UE 操作说明;需要排查时运行 node tools/ue5-dsh-doctor.mjs 或 npm run doctor。
适用场景与注意¶
适合谁:已在用 DSH 做智能体工作流、并在 UE 5.8+ 中启用官方 MCP 插件的开发者;希望避免手写 cordis.patch.yml、需要可视化探测与诊断的场景。
权限与安全:插件以当前 DSH 进程权限运行,会读写 $env:DSH_HOME 下配置(如 unreal-engine.json),并通过 MCP 驱动本机 UE 编辑器。安装前请阅读仓库源码与 MIT 许可证,以及 NOTICE.md 中关于 UE EULA 与商标的说明。
卸载要点:从 bundles 移除包名后执行 dsh plugin --profile web remove dsh-unreal-engine(或等价 pnpm remove);若使用 junction 则删除对应目录;可选删除 $env:DSH_HOME\unreal-engine.json。无需改用户 cordis.patch.yml。
生态说明:DSH 社区插件目录(如 SkillHub 上的条目)为独立站点,与 DeepSeek / 幻方无官方从属关系;本文不代表官方背书。
结尾¶
dsh-unreal-engine 把 UE 5.8+ 内置 MCP 与 DSH 的 dsh-mcp-client 之间的接线工作收成 bundle 安装与「虚幻引擎」设置页:探测、持久化与诊断都围绕真实 MCP 握手。若你正在 DSH 里编排游戏引擎相关智能体,可从目录页与仓库 README 的安装、UE 准备和已知限制三章对照环境逐项核对。
- 目录页:https://www.skillhub.cn/plugins/yeee-eh/dsh-unreal-engine
- GitHub:https://github.com/yeee-eh/dsh-unreal-engine