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:

  1. Register native tools ue_uasset_inspect and ue_blueprint_python_edit via ctx.tools.register();
  2. When a user intent related to UE assets is detected, actively inject the tool schema and accompanying operation instructions;
  3. When the host provides the skills service, register DSH built-in operation instructions via ctx.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.

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:

  1. If id: ue-uasset-operator already exists in the patch file, only replace the name in that line, do not add a second insert block;
  2. Spaces in paths must be URL-encoded (e.g., Deepseek%20Harness%20EAC), and Windows drive paths use the file:///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

  1. The official minimal mode and minimal_mode_win inherit the two registered UE tools globally and can be called directly;
  2. Anchored Standard, when detecting a .uasset intent, actively re-adds ue_uasset_inspect and ue_blueprint_python_edit to the current tool schema; the matched turn can be called directly without waiting for unlocking;
  3. If the two tools still do not appear due to host policies, enter the elevation phase: first load ue-uasset-operator via skill_search / skill_load, then call dev_tool_search to 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:

  1. The target .uasset should usually be located in the Content directory of the project or plugin, retaining the same-named .uexp, .ubulk, .uptnl sidecar files;
  2. The project has the matching Unreal Editor installed, and PythonScriptPlugin is enabled;
  3. 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:

  1. 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.json lists the LICENSE file in the files array; please check its contents yourself to confirm the scope of authorization;
  2. Do not use bundle installation and manual insert blocks simultaneously, otherwise DSH will refuse to start due to a duplicate loader id;
  3. 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