Introduction¶
In the DeepSeek Harness (DSH) Web GUI, image attachments may encounter two types of restrictions: the model side does not declare image input, and the upstream side does not support image parts. @dsh-external/dsh-image-unlock is a DSH external plugin used to allow image attachments and textify image blocks, making the attachment path available to the vision skill for processing.
Below we introduce its positioning, core capabilities, installation methods, enabling switching methods, and the patch issues that need attention.
Plugin Positioning¶
@dsh-external/dsh-image-unlock is maintained by FrostLeafKEE and is licensed under MIT.
Its one-sentence positioning is: remove the image input restrictions of the DeepSeek Harness Web GUI, allowing image attachments to be usable under upstream (Console Go) that does not support images.
It itself does not replace the vision model, nor does it guarantee that the target model can directly recognize images. Actual image recognition requires cooperation with claude-vision-skill.
Core Capabilities¶
The plugin mainly does two things: allow image attachments and convert image blocks into text tokens.
-
Remove image input restrictions in the DeepSeek Harness Web GUI.
-
Add to
llm-pi-aimodels that have not declaredinput:
defaultInput: [text, image]
- Textify durable image blocks into:
[图片附件: <名称>]
-
The attachment path is handed over to
claude-vision-skill/vision.jsfor MIME identification by sniffing magic numbers. -
Instantly switch between textifying or using native image parts based on the existence of the
claude-vision-skilldirectory. -
Support adding configuration in the plugin entry of the profile
cordis.patch.yml:
textifyImages
skillDir
- After reinstalling or upgrading, you can re-run the patch script:
node scripts/patch-pi-ai.mjs
Wherein, the defaultInput patch only affects models that have not declared input and is not affected by the skill switch. Textification only affects the opencode-go route; other pi-ai routes remain unchanged.
Installation¶
You can install from GitHub:
dsh plugin --profile web add https://github.com/FrostLeafKEE/dsh-image-unlock.git
You can also install from a local directory. The <本插件目录> in the command needs to be replaced with the actual plugin directory:
dsh plugin --profile web add <本插件目录>
After installation, you also need to insert the image-unlock plugin entry in the profile’s cordis.patch.yml and execute the code patch once:
node scripts/patch-pi-ai.mjs
Enable and Switch¶
The plugin switches behavior via the location of the claude-vision-skill directory.
When enabling the skill flow, keep the claude-vision-skill directory under .agents/skills. At this time, the plugin will textify image blocks, and the attachment path is handed over to claude-vision-skill/vision.js for processing.
When disabling the skill flow, move the claude-vision-skill directory out of .agents/skills. At this time textification is turned off, and the request goes through the native image part path. If the target model or upstream does not support image parts, image recognition may still fail.
Controlled by a flag at runtime:
globalThis.__dsh_image_unlock_textify
Textification only happens when this flag is true. The flag is cleared when the plugin entry is disabled, the plugin is removed, or the claude-vision-skill directory does not exist.
Configuration Override¶
In the profile’s cordis.patch.yml, you can set in the additional configuration of the image-unlock plugin entry:
textifyImages: true
To force textification off, you can set:
textifyImages: false
If you need to specify the skill directory location, you can configure:
skillDir
Notes¶
- This plugin applies code patches to the local
node_modules. Afterpnpm installor upgrading@deepseek-ai/dsh, the patches may be lost and need to be re-executed:
node scripts/patch-pi-ai.mjs
-
The plugin only allows image attachments and textifies them, it does not change the model’s own image input capability.
-
Textification only affects the
opencode-goroute; otherpi-airoutes remain unchanged. -
The plugin runs with the permissions of the current
dshprocess. Before installation, you should check the source code, installation path, and the MIT license.
Links¶
GitHub: https://github.com/FrostLeafKEE/dsh-image-unlock