DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Ark9canvas — DSH Plugin for DeepSeek Harness
← Plugins

@a9i5k4/dsh-ark9canvas

Ark9canvas

DSH image generation plugin Ark9canvas: Agent image generation (user approval required by default) + floating image generation workbench (aspect ratio/transparent background/batch/prompt library/multiple channels/generation history), supporting text-to-image/image-to-image via OpenAI-compatible imag

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add @a9i5k4/dsh-ark9canvas@0.4.1
READMECompatibilityVersions

Description

DSH image generation plugin Ark9canvas: Agent image generation (user approval required by default) + floating image generation workbench (aspect ratio/transparent background/batch/prompt library/multiple channels/generation history), supporting text-to-image/image-to-image via OpenAI-compatible image APIs.

Compatibility and provenance

Ark9canvas is published as @a9i5k4/dsh-ark9canvas and currently resolves to version 0.4.1. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
npm
Registry updated
9/20/2026

Versions

0.4.1stable
9/2/2026
0.4.0stable
9/2/2026
0.3.5stable
9/2/2026
Show 9 more versionsCollapse versions
0.3.4stable
9/1/2026
0.3.3stable
9/1/2026
0.3.2stable
9/1/2026
0.3.1stable
9/1/2026
0.3.0stable
9/1/2026
0.2.0stable
9/1/2026
0.1.2stable
9/1/2026
0.1.1stable
9/1/2026
0.1.0stable
9/1/2026

Related plugins

Loading related plugins…

Latest
0.4.1
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
139.4 kB
Files
6
Surface
web
License
BSD-3-Clause
Source
npm
Weekly downloads
86
View source ↗Project homepage ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in

Related plugins

More verified plugins in vision-media.

Tool Describe Image@linxin666/dsh-tool-describe-imageModel-facing describe_image tool for the dsh web GUI: gives a text-only model image understanding by asking a vision-language model at an OpenAI-compatible endpoint to describe one image (local path, http(s) URL, or attachment reference). Hot-pluggable — Modlens@liustack/modlensPlug-in vision for text-only LLMs, powered by the free Antigravity CLIDeepseek Ivideodeepseek-ivideoiPolloWork HyperFrames Video Studio and 27 editable video templates as a native DeepSeek Harness conversation view.Imagegen@dickpy/dsh-imagegenAI image generation plugin for the dsh web GUI: text-to-image and image-to-image through configurable provider channels (gpt-image-2 / grok-imagine-image / nanobanana series / seedream-5.0-pro / dall-e-3, with native xAI Grok Imagine, Google Nano Banana a

README

dsh-ark9canvas — Image Generation Workbench & Agent Tool for DeepSeek Harness

中文 · English · License BSD-3-Clause · pnpm add @a9i5k4/dsh-ark9canvas

v0.4.0 UPDATE — Bilingual UI (Chinese/English, one-tap switch in the panel header and Settings) and a full stroke-SVG icon set replacing emoji, matching the DeepSeek Harness visual language. Evolution roadmap: docs/ROADMAP.md. — The image workbench is now feature-complete against the reference design: aspect-ratio grid with the same quality-budget + 16px-alignment formula, transparent background, batch generation up to 10 images (independent sub-tasks, partial success still returns what finished), a prompt library with custom JSON sources, multi-channel aggregation, persistent generation logs with retry, and config import/export.

An image-generation plugin for the DeepSeek Harness Web GUI: the agent paints on request via one tool, you paint on demand in a floating workbench — and every agent-initiated generation waits for your approval by default, so nothing bills without a human nod.

The problem it solves: image APIs bill per call, yet agent-initiated generation usually runs blind — a bad prompt retries itself, a loop burns your balance. This plugin puts a human gate in the loop: the tool blocks until you approve in the panel (or denies/timeouts with a clear message and zero cost), while the workbench itself stays one click away for your own un-gated use.


Highlights in 30 seconds

Approval gate by defaultEvery agent generation waits in the panel's Approvals tab — approve, deny, or let it time out; denial and timeout never bill
One workbench, two homesFloating FAB + glass panel out of the box; auto-registers as a Better Sidebar tab when dsh-better-sidebar is installed; stacks above dsh-cua's FAB when both exist
Full size systemAspect-ratio grid (12 presets + auto) computed with the quality-budget + 16px-alignment formula; manual W×H with 16-multiple snapping; gpt-image models auto-snap to the three native sizes
Batch up to 10Each image runs as an independent sub-task aggregated into one batch — partial success still returns what finished, with per-batch ok/fail counts
Transparent backgroundOne toggle sends background:"transparent" (supported by gpt-image family)
Prompt libraryLocal favorites (☆) + custom JSON sources fetched through a host-side proxy — no CORS, no bundled third-party content
Multi-channel aggregationKeep several OpenAI-compatible relays (baseURL + key + model each), switch the active one, fetch model lists per channel
Persistent generation logsEvery batch is recorded with params and outcomes; failed batches retry with one click; multi-select delete
Bilingual UIOne-tap Chinese/English switch (panel header + Settings), initialized from your browser language
AI-friendly by designTool results return saved file paths + dimensions — never base64 blobs — unless you explicitly ask for them; references accept dataURLs or previous output paths for iterative editing

Feature tour

Approval gate — human in the loop, by default

When the agent calls ark9_generate_image, the request appears in the panel's Approvals tab with the prompt, parameters, and elapsed wait time. Approve → generation starts and bills; Deny → the tool returns a clear "user denied" message and the agent asks what to change instead of retrying; Timeout (configurable, 5–600 s) → cancelled, nothing billed. Set Settings → Ark9 生图 → 安全 to never if you want unattended auto-generation.

Workbench — five tabs

  • 生成 Generate: prompt, reference images (upload or clipboard paste), model dropdown with per-channel fetch, aspect-ratio grid / manual W×H, quality, transparent toggle, 1–10 count
  • 审批 Approvals: pending agent requests with one-click approve/deny
  • 提示词 Prompts: search, click to apply, ☆ to favorite locally; custom JSON sources ([{title, prompt, tags?}]) proxied through the host to bypass browser CSP/CORS
  • 记录 Logs: every generation with status pills (成功 / 部分成功 / 失败), retry, multi-select delete, click-to-preview
  • 说明 About: quick reference

Size system — faithful to the reference formula

Ratios compute their pixel dimensions from a quality budget (low 1K² / medium 2K² / high 4K²) with 16-pixel alignment, exactly like the reference workbench. Because the gpt-image family only accepts three native sizes (1024×1024, 1536×1024, 1024×1536), gpt-image models automatically snap the computed size to the nearest native one; other models send the raw computed size. Manual W×H with a 16-multiple alignment toggle is always available.

Iterative editing — paths, not blobs

ark9_generate_image returns saved file paths with dimensions. Pass any previous output path back via images and the plugin reads the file and runs an /images/edits multipart call — multi-turn "make the robot red" works without ever stuffing base64 into the conversation. returnDataUrl: true opts into inline base64 when a client truly needs it.

Channels — aggregate your relays

Configure multiple OpenAI-compatible channels (name + baseURL + key + default model), mark one active, fetch each channel's model list from its own /models. The active channel serves both the agent tools and the workbench; single-channel setups from older versions migrate automatically.


Engineering core (restraint by design)

  • Zero runtime dependencies beyond Node built-ins
  • Batch aggregation: count N → N independent sub-tasks (n:1 each), merged into one batch view with ok/fail counts — one slow image never blocks the others
  • Durable state: tasks and logs persist to ~/.dsh/ark9-canvas-*.json; a server restart never orphans a poll
  • Loopback-only routes: every API route rejects non-localhost callers; file routes are name-sanitized against path traversal
  • No third-party prompt content bundled: sources are user-provided URLs

Install (one command)

Prerequisite: install DeepSeek Harness and start dsh web at least once.

Run in the profile directory (~/.dsh/profiles/web):

cd ~/.dsh/profiles/web
pnpm add @a9i5k4/dsh-ark9canvas

Then edit package.json in that directory and append to the dsh.profile.bundles array:

"@a9i5k4/dsh-ark9canvas"

Restart dsh web — the 🖼️ floating button appears (or a sidebar tab, with Better Sidebar installed). Open Settings → Ark9 生图 once to add a channel (baseURL with /v1, API key, model such as gpt-image-2).

No pnpm? npm install @a9i5k4/dsh-ark9canvas works the same. pnpm v11 blocks packages published <1 day ago: set minimumReleaseAge: 0 in pnpm-workspace.yaml or pin an explicit version for same-day updates.

AI-era installation

Copy this to the AI assistant you're already using:

Install the npm package @a9i5k4/dsh-ark9canvas in the DeepSeek Harness web profile
directory ~/.dsh/profiles/web (pnpm add or npm install),
append "@a9i5k4/dsh-ark9canvas" to the dsh.profile.bundles array in package.json,
then restart dsh web. After that, open Settings → Ark9 生图 and add an
OpenAI-compatible image channel (baseURL with /v1, API key, model).

Updating

cd ~/.dsh/profiles/web && pnpm up @a9i5k4/dsh-ark9canvas

Configuration

Config file ~/.dsh/ark9-canvas.json (everything adjustable in the Settings GUI):

{
  "baseURL": "https://your-relay.example/v1",
  "apiKey": "sk-...",
  "model": "gpt-image-2",
  "quality": "high",
  "size": "1536x1024",
  "count": 1,
  "agentApproval": "always",
  "approvalTimeoutSec": 120,
  "channels": [
    { "id": "c1", "name": "relay-a", "baseURL": "https://your-relay.example/v1", "apiKey": "sk-...", "model": "gpt-image-2" }
  ],
  "activeChannelId": "c1",
  "promptSources": [
    { "id": "ps1", "name": "my prompts", "url": "https://example.com/prompts.json" }
  ],
  "outputDir": ""
}
KeyMeaning
agentApprovalalways (default) — agent generations need panel approval; never — unattended
approvalTimeoutSec5–600 s; timeout cancels without billing
channels / activeChannelIdMulti-channel aggregation; falls back to the top-level baseURL/apiKey/model when empty
outputDirWhere images are saved; empty = ~/Pictures/ark9-canvas

Tasks persist to ~/.dsh/ark9-canvas-tasks.json, generation logs to ~/.dsh/ark9-canvas-logs.json.


Structure

  • lib/index.js — Host half: two agent tools, eleven routes, OpenAI-compatible image proxy (async task protocol + batch aggregation), approval queue, persistent logs (zero runtime deps, Node built-ins only)
  • lib/client.js — Browser half: floating FAB + glass workbench (shared vanilla-DOM implementation for floating panel and sidebar tab), settings page
  • cordis.patch.yml — plugin registration row
  • docs/ROADMAP.md — evolution roadmap: DSH-host synergies (AI prompt enhancement, memory-driven styles), cost dashboard, capability registry, mask editing
  • smoke-test.mjs — offline integration test (tools / routes / approval paths, no API calls)
  • e2e-approval-test.mjs — real end-to-end generation test (bills!)

Known limitations

  • Video generation, mask/inpainting painting UI, Gemini-format calls, the infinite-canvas node editor, and WebDAV sync are out of scope (backend has no video model; config import/export stands in for sync).
  • The prompt library ships without any third-party content — add your own sources.
  • Panel-initiated (manual) generations are never approval-gated: pressing the button is the approval, and it bills.
  • Plugin-set changes require a dsh restart.

Credits

This project is built human-machine collaboratively:

  • Aik358 — project owner: product direction and engineering.
  • ZCode (GLM, Z.ai) — autonomous engineering agent: plugin implementation, protocol reverse-engineering of the async-task/media-upload relay protocol, test suites.

Release

  • GitHub: https://github.com/Aik358/dsh-ark9canvas
  • npm: @a9i5k4/dsh-ark9canvas
  • License: BSD-3-Clause · Independent implementation, contains no WorldCodes Canvas code or branding