Native DSH plugin that turns the Doubao desktop client into an agent image tool over Chrome DevTools Protocol — watermark-free originals into the workspace, but Windows-only, UI-coupled and quota-bound.
DSH integration
Native runtime
Author-claimed
Safety audit
Unaudited
Last verified
2026-11-13
License
Not specified by the author
01What can it help you accomplish?
Generate images from a DeepSeek Harness conversation without an image API key
The original 2K-class no-watermark PNGs the Doubao desktop client holds, downloaded into the session workspace's `doubao-images/` directory
DSH users on Windows who already run the Doubao desktop app and want agent-driven image generation without pay-per-image billing
Turn a reference image into a new image (P-tu / image-to-image)
A regenerated image produced by feeding the reference file into Doubao's hidden file input and then sending the edit instruction
Users iterating on an existing picture — watercolour restyle, style transfer — from inside the agent
Batch-generate a small series in one conversation
Two to six images queued in the same Doubao conversation, archived once at the end, each result tagged when the daily quota runs out
People producing a consistent series (same character, same theme) who want to skip repeated chat switching
02How to install into DeepSeek Harness
Prerequisites
- Doubao desktop client installed and signed in, with the real binary at `D:\Doubao\app\Doubao.exe` (not the launcher `D:\Doubao\Doubao.exe`)
- Node.js 22+ — the DSH runtime already ships it and the plugin uses it for subprocesses
- Windows, because the default paths and the shortcut recipe are Windows-specific
Installation steps
- 01
Run `dsh plugin --profile desktop add "link:D:\dsh-plugins\dsh-doubao-painter"` — this writes the dependency into package.json and appends the plugin to `dsh.profile.bundles`
$ dsh plugin --profile desktop add "link:D:\dsh-plugins\dsh-doubao-painter"
- 02
If `dsh.profile.bundles` did not pick it up, add `"dsh-doubao-painter"` manually in `~/.dsh/profiles/desktop/package.json`
- 03
Restart DeepSeek Harness — the profile config tree is only assembled at startup
- 04
Start Doubao with `--remote-debugging-port=9225`, or edit the shortcut target so it always launches that way
Verify the integration
- Ask the agent "is Doubao online?" — it calls `doubao_status` and reports back
- Troubleshooting fallback: `node tools\paint.mjs "test" --json` prints the real error
03DSH integration and capability boundaries
Native DSH plugin: `lib/index.js` is a cordis plugin shell registering the doubao_paint and doubao_status tools, installed with `dsh plugin --profile desktop add "link:..."` and loaded from the profile's bundle list
doubao_paint tool
a prompt, optionally `ref_images` for image-to-image, or a `prompts` array for batch mode→`{ files: ["<workspace>/doubao-images/doubao-....png"], seconds }` with the downloaded originals
drives the Doubao desktop window: opens a chat, types the prompt and clicks the image openwrites PNGs into the session workspace under `doubao-images/`consumes the free daily image quota of your Doubao accountdoubao_status self-check
an online / offline answer for the agent's "is Doubao online?" question, so a broken setup shows up before the first render
CDP bridge (lib/bridge.mjs)
Doubao launched with `--remote-debugging-port=9225`, exposing Chrome DevTools Protocol on `127.0.0.1:9225`→a new chat, an inserted prompt, DOM polling for the generated image and the `cgen` original-URL download
creates a chat in your Doubao account unless session reuse is disabledrecords the reused conversation id in `~/.dsh/doubao-session.json`CLI fallback (`tools/paint.mjs`)
a prompt argument, plus `--ref <path>`, `--out`, `--json` or `--stdin-json`→the same images from a shell, with machine-readable JSON when asked
uses the same CDP bridge and therefore the same Doubao windowBundled Doubao skill scripts (`tools/skill.mjs`, `tools/video.mjs`)
Doubao's local skill catalogue under `%LOCALAPPDATA%\Doubao\User Data\Default\.doubao\agent_mode\workspace\.skills\`→112 skills listed, 47 with scripts; video download plus mp3 conversion runs locally without spending chat quota
runs Doubao's bundled sandbox Python on your machineimage generation and cloud media scripts still fail locally because they need runtime-injected credentials
04Who is it for? When not to use it?
Good for
- DSH users on Windows who already run the Doubao desktop app and want agent-driven image generation without pay-per-image billing
- Users iterating on an existing picture — watercolour restyle, style transfer — from inside the agent
- People producing a consistent series (same character, same theme) who want to skip repeated chat switching
Not for
- It drives the Windows Doubao desktop client over CDP, so the default executable path, the shortcut recipe and the whole flow are Windows-specific; Doubao must be launched with `--remote-debugging-port` and an already-running normal instance must be fully quit (tray → exit) first.
- The integration rides the Doubao UI: it opens image previews and new chats in your window, is serialised by a file lock, and breaks when Doubao changes its DOM or CDN template names — the fix lives in the selectors in `lib/bridge.mjs`.
- Images are billed against your Doubao account's free daily image quota, not an API key; when the quota runs out a batch stops early and every remaining entry is tagged, and how many images Doubao returns per request is up to Doubao.
05Compatibility, maintenance and safety notes
- It drives the Windows Doubao desktop client over CDP, so the default executable path, the shortcut recipe and the whole flow are Windows-specific; Doubao must be launched with `--remote-debugging-port` and an already-running normal instance must be fully quit (tray → exit) first.
- The integration rides the Doubao UI: it opens image previews and new chats in your window, is serialised by a file lock, and breaks when Doubao changes its DOM or CDN template names — the fix lives in the selectors in `lib/bridge.mjs`.
- Images are billed against your Doubao account's free daily image quota, not an API key; when the quota runs out a batch stops early and every remaining entry is tagged, and how many images Doubao returns per request is up to Doubao.
- Removing the platform watermark does not remove your disclosure duty: AI-generated content published externally still has to be marked per the applicable rules, and the README explicitly frames the plugin as cleaning up logo pollution rather than bypassing labelling.
No license in the snapshot (README ends with one `MIT` line) · no release · README evidence only, safety not audited
06Frequently asked questions
How do I install dsh-doubao-painter into DeepSeek Harness?
Run `dsh plugin --profile desktop add "link:D:\dsh-plugins\dsh-doubao-painter"`; it writes the dependency and appends the plugin to `dsh.profile.bundles`. If the bundle list did not pick it up, add `"dsh-doubao-painter"` manually in `~/.dsh/profiles/desktop/package.json`, then restart DeepSeek Harness — the profile config tree is only assembled at startup.
What does it write into the DSH workspace?
Generated images land in the session workspace under `doubao-images/` (the `outSubdir` default) and the tool returns their paths. Outside the workspace it keeps one small state file, `~/.dsh/doubao-session.json`, holding the conversation id it reuses; delete that file to force a new Doubao chat.
Why does Doubao have to be started with a debugging port?
The plugin talks to the Electron client over Chrome DevTools Protocol on `127.0.0.1:9225`. An instance started normally from the shortcut has no such port, so the README shows how to edit the shortcut target to `D:\Doubao\app\Doubao.exe` with `--remote-debugging-port=9225`. If Doubao is already running normally, quit it completely from the tray first, otherwise the new instance cannot take the port.
Is this an API integration or screen automation?
It is CDP automation of the real client: open a chat, insert the prompt into the ProseMirror input, poll the DOM for the generated image, click it open to get the `cgen` original URL, then download. That is why there is no API key and no per-image fee — and also why a Doubao redesign can break it and why only one task runs at a time (a file lock serialises them).
Can I publish the images it returns?
The plugin returns the version Doubao stores without a platform watermark, but the README's compliance note still applies: externally published AI-generated content has to be marked according to your region's rules, and the plugin does not remove that obligation. It also consumes your Doubao account's free daily image quota, and the number of images per request is decided by Doubao.
07Related DSH workflows
modlens
by liustack
Vision bridge for text-only models: paste an image, get structured JSON evidence (OCR, layout, semantics).
dsh-image-gen
by shanliuling
Adds in-chat multimodal image generation via a `generate_image` tool with multi-provider support (Gemini/OpenAI/Seedream), interactive preview, copy/download, and session-attached results.
dsh-vision-router
by ysr666
Eyes for text-only DeepSeek Harness agents: built-in free vision chain (no key) + pixel-level vision tools (Q&A, grounding, crop, pixel diff, colors, OCR, SVG trace, cutout, screenshots). One-command install, no Python, image turns work like ordinary tool-calling turns.
agent-vision-toolkit
by anionex
Vision toolkit and skills that give text-only LLMs eyes — multi-image understanding, image Q&A, OCR, frontend UI restoration and GUI automation, with optional agent integration.
08Data and sources
把本机 **豆包桌面客户端**的生图能力接进 DeepSeek Harness:
lib/index.js cordis 插件壳:注册 doubao_paint / doubao_status
dsh plugin --profile desktop add "link:D:\dsh-plugins\dsh-doubao-painter"
This page is generated from the project’s public documentation, repository metadata and a structured parse of DSH Plugins; last verified on 2026-11-13. Found an error? Submit a correction.
Best DeepSeek Harness Plugins
Twelve plugins worth installing first — picked from the whole catalog, across every category.
