Preface¶
When processing Unreal Engine projects in DeepSeek Harness (DSH), a common dilemma is: faced with binary assets like .uasset, the model can only make do—using strings to extract strings, opening hex editors to guess the structure, or writing parsing scripts on the fly. .uasset relies on sidecar files like .uexp and .ubulk, so these approaches are both slow and unreliable.
dsh-UEAssetsOperator targets this problem. Below is an introduction on how this plugin enables DSH to directly inspect Unreal assets and edit blueprint nodes via Unreal Python, instead of letting the model parse binary data on its own.
What is it¶
dsh-UEAssetsOperator is an Unreal Engine .uasset inspection and blueprint node editing plugin for DeepSeek Harness (DSH), maintained by QSWWLTN and hosted on GitHub. package.json shows the current version is 1.3.0, type: module, with the entry point at lib/index.js.
DSH’s philosophy is “everything is a plugin”; plugins register tools and skills via the Cordis mechanism. The core actions of this plugin are three steps:
- Register native tools
ue_uasset_inspectandue_blueprint_python_editviactx.tools.register(); - When a user intent related to UE assets is detected, actively inject the tool schema and accompanying operation instructions;
- When the host provides the
skillsservice, register DSH built-in operation instructions viactx.skills.register().
lib/index.js exports three members: name, inject, and apply. No additional npm runtime dependencies are required.
Core Functions¶
Intent Detection and Tool Injection¶
When user messages contain .uasset / .uproject / /Game/..., explicit intents like Blueprint / DataTable (including “蓝图” and “数据表”), or the session involves asset names like BP_* in the UE project directory, the plugin will actively inject two tool schemas and the complete ue-uasset-operator operation instructions, guiding the model to directly call the native tools.
Three Inspection Modes¶
ue_uasset_inspect supports three modes, allowing you to select the overhead as needed:
| Mode | Behavior |
|---|---|
resolve |
Only resolves .uproject, UE version, and virtual package paths; does not launch UE |
registry |
Reads types, tags, dependencies, and references via Asset Registry; default mode |
load |
Loads UObject, additionally reads selected properties and metadata |
Bounded Path Resolution¶
Asset path resolution always performs a bounded search starting from the session working directory or the root of the nearest .uproject. It disables find /, drive roots, or full scans of the entire engine directory. When the workspace does not match, the tool reports the missing path instead of expanding the scan range on its own.
Compatibility with Skills and Minimal Hosts¶
The skills/ue-uasset-operator directory saves the PowerShell launcher, Unreal Python inspector, restricted blueprint editing scripts, and reference documentation. Hosts providing the skills service will register these instructions with the plugin; minimal hosts providing only tools can still use the two native tools.
Installation and Enablement¶
The plugin includes a cordis.patch.yml bundle, supporting both bundle installation and EAC manual insert methods. Do not use both methods simultaneously, otherwise DSH will refuse to start due to a duplicate loader id.
Bundle Installation (Recommended)¶
When the environment has dsh CLI and pnpm installed, first clone the repository to a fixed directory, then install it to the target profile:
git clone https://github.com/QSWWLTN/dsh-UEAssetsOperator.git X:\Tools\dsh-UEAssetsOperator
dsh plugin --profile my-profile add X:\Tools\dsh-UEAssetsOperator
This command writes the plugin to the profile’s dependencies and automatically writes to dsh.profile.bundles.
The README mentions that after publishing to npm, you can also install by package name:
dsh plugin --profile my-profile add @deepseek-dsh-desktop/dsh-ue-uasset-operator
EAC Manual Insert¶
The EAC installer does not include pnpm, so the profile patch method should be used. First, clone the repository to a fixed directory:
git clone https://github.com/QSWWLTN/dsh-UEAssetsOperator.git X:\Tools\dsh-UEAssetsOperator
Then, add an insert block in C:\Users\<username>\.dsh\profiles\web\cordis.patch.yml:
- insert:
- id: ue-uasset-operator
name: 'file:///X:/Tools/dsh-UEAssetsOperator/lib/index.js'
Takes effect after restarting EAC. This entry point has no additional npm runtime dependencies; Cordis, tool, and skill registries are provided by the EAC host.
Two details need attention:
- If
id: ue-uasset-operatoralready exists in the patch file, only replace thenamein that line, do not add a second insert block; - Spaces in paths must be URL-encoded (e.g.,
Deepseek%20Harness%20EAC), and Windows drive paths use thefile:///X:/...format with three slashes.
Launching Independent DSH with External Patch¶
During development, you can save the same insert block as ue-assets.patch.yml and then launch an independent DSH:
dsh web --patch X:\Tools\ue-assets.patch.yml --host 127.0.0.1 --port 0
After starting, confirm that ue-uasset-operator is loaded in the plugin manifest, and the model can then call the two UE tools.
Typical Usage¶
Tool Visibility in Different Host Modes¶
- The official minimal mode and
minimal_mode_wininherit the two registered UE tools globally and can be called directly; Anchored Standard, when detecting a.uassetintent, actively re-addsue_uasset_inspectandue_blueprint_python_editto the current tool schema; the matched turn can be called directly without waiting for unlocking;- If the two tools still do not appear due to host policies, enter the elevation phase: first load
ue-uasset-operatorviaskill_search/skill_load, then calldev_tool_searchto unlock.
The precise unlock parameters for dev_tool_search are as follows:
{"toolNames":["ue_uasset_inspect","ue_blueprint_python_edit"]}
The tool will appear starting from the next turn. Note: Do not concatenate the two tool names into a free-text query—the search in this mode requires all keywords to hit the same tool simultaneously; concatenation will result in no matches.
Prerequisites¶
Confirm the following three points before use:
- The target
.uassetshould usually be located in theContentdirectory of the project or plugin, retaining the same-named.uexp,.ubulk,.uptnlsidecar files; - The project has the matching Unreal Editor installed, and
PythonScriptPluginis enabled; - The plugin will not automatically modify
.uproject.
Applicable Scenarios and Notes¶
This plugin is suitable for developers who frequently view UE asset structures and perform blueprint node editing in DSH workflows, especially for users who are already using EAC or dsh CLI to manage profiles.
Please note before installation and use:
- The plugin runs with the current dsh process permissions; check the source code before installation. As of the writing of this article, the repository materials do not explicitly state the license type, but
package.jsonlists theLICENSEfile in thefilesarray; please check its contents yourself to confirm the scope of authorization; - Do not use bundle installation and manual insert blocks simultaneously, otherwise DSH will refuse to start due to a duplicate loader id;
- URL-encode paths when they contain spaces.
Development and Verification¶
After modifying the plugin code, run tests in the plugin directory:
npm test
The test script is node --test.
Conclusion¶
dsh-UEAssetsOperator encapsulates .uasset inspection and blueprint node editing into DSH native tools. Combined with intent injection and bounded path resolution, it saves the model from the detour of manually parsing binary assets. If you are building agent workflows related to UE projects, it is worth a try.
- Community Plugin Directory: https://www.skillhub.cn/plugins/QSWWLTN/dsh-UEAssetsOperator
- GitHub Repository: https://github.com/QSWWLTN/dsh-UEAssetsOperator