DeepSeek Harness plugin

dsh-codex-image

DeepSeek Harness plugin: Codex image generation/edit/vision tools backed by the local codex-image-bridge skill.

Jump to install

Source facts

Repository
xmasdong/dsh-codex-image
Latest update
Aug 19, 2026
Category
Tools & Capabilities
GitHub stars
1
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/xmasdong/dsh-codex-image
Plugin: dsh-codex-image
Author: xmasdong

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer4 files
README.en.mdSource · read only
README language

dsh-codex-image-bridge

> English | 中文

Give DeepSeek Harness vision: the agent can not only read and write text — it can generate images, edit images, and understand images.

What it does

CapabilityToolDescription
🎨 Generatecodex_image_generateTurn a plain-language prompt into a PNG (character art, icons, concept art, game assets…)
✏️ Editcodex_image_editTake an existing image, keep the subject/style intact, change only the details you specify, and produce a variant
👁 Understandcodex_image_describeLet the model "see" a local image: describe its content, spot rendering problems, answer questions about the picture
🔌 Checkcodex_image_auth_statusVerify the image service login so you know generation can start

Generated/edited images appear inline in the conversation result and are also saved to disk (default outputs/) for later reuse or downstream pipelines.

Installation

Prerequisites: image-service scripts available at skillDir (a directory containing scripts/, default ~/.claude/skills/codex-image-bridge, configurable), and a valid service login (node <skillDir>/scripts/cli.mjs auth should return an account).

This project is an official composition bundle — pick any of the three official install paths:

# 1. npm package (pre-built lib/, no build permission needed)
dsh plugin --profile web add dsh-codex-image-bridge

# 2. Directly from GitHub (fetches source; first install needs an
#    allowBuilds entry in pnpm-workspace.yaml to run the prepare build)
dsh plugin --profile web add github:xmasdong/dsh-codex-image#<commit-sha>

# 3. tarball (npm pack output, also no build permission needed)
npm pack
dsh plugin --profile web add ./dsh-codex-image-bridge-0.1.0.tgz

GitHub installs require the following allowBuilds grant in the profile's pnpm-workspace.yaml:

allowBuilds:
  dsh-codex-image-bridge: true

The bundle is appended to the profile's dsh.profile.bundles on install; dsh plugin --profile web remove dsh-codex-image-bridge uninstalls. Override configuration in the profile's cordis.patch.yml by row id codex-image-bridge (hot-reloaded by patch-layer HMR).

For local development without installing, use the overlay flow: dsh web --patch ./cordis.patch.yml with the plugin row referencing the source absolute path (see the header comment in cordis.patch.yml).

Configuration

Override via config: in the patch entry (defaults come from the Config schema and environment fallbacks):

FieldDefaultDescription
skillDir~/.claude/skills/codex-image-bridgeLocal scripts directory (dynamically imported from scripts/ at runtime)
outputDir''<skillDir>/outputsWhere generated PNGs are written
threadModelCODEX_THREAD_MODELgpt-5.5Codex thread model for generation/edit
timeoutMs120000Timeout for one generation/edit turn
commandCODEX_COMMANDcodexCodex CLI command
sandboxCODEX_IMAGE_SANDBOXdanger-full-accessCodex thread sandbox (must match the App's native image path)
acceptToolImagesfalseDiagnostics only: accept tool-returned PNGs (not native success)
visionModelCODEX_VISION_MODELgpt-5.5Vision model used by the describe tool
visionTimeoutMs180000Timeout for one describe turn

Development

bash setup.sh        # dev only: symlink $DSH_HOME/profiles/node_modules into node_modules
npm run typecheck    # tsc --noEmit
npm run build        # build lib/ (bundle publish artifact)
npm run smoke        # offline smoke test: loads the plugin, asserts the 4 tools register (no Codex connection)

See scripts/ and the skill's SKILL.md for real end-to-end verification (requires a Codex login).

Publishing (composition bundle)

npm login            # once
npm version patch    # or minor/major; creates the git tag
npm publish          # the prepare hook builds lib/ before publishing

The package declares its config layer via dsh.bundle.patch in package.json; cordis.patch.yml references the plugin entry by package name (dsh-codex-image-bridge), so users get all four codex_image_* tools after install. Verify in a scratch profile before publishing: dsh plugin --profile demo add ./ + dsh --profile demo --dump-config.

Design Notes

  • Outputs declare a canonical value with output.schema (JSON Schema); output.render is a pure projection to model content (text + image content block).
  • inject: ['tools', 'attachments'] — the framework guarantees both services are ready before apply runs.
  • No tool-level timeoutMs is declared: generation duration is left to the skill's internal turn timeout rather than a hard harness abort, so a Codex thread is never killed mid-flight.
  • Safety: never reads or prints local token files; tokenPresent=false does not mean generation is impossible; non-native codex.source results are reported honestly instead of being treated as success.

License

[MIT](./LICENSE) © 2026 xmasdong