DSH HUB
HomePlugin StoreRankingsPublish Guide
Plugin source
Back to catalog

Anionex /

dsh-vision-toolkit

Verified

让纯文本模型更好地做视觉任务的DeepSeek Harness插件:带意图的图片问答、长截图 OCR、UI 还原等|DeepSeek Harness-native integration for agent-vision-toolkit: image Q&A, long-screenshot OCR, UI restoration, grounding, pixel diff, Artifacts, and Web UI.

★ 518 Stars26 Forks5 IssuesN/A Community rating0 Confirmed installs
View on GitHubProject homepage
READMESource: main@57e83172

DSH Vision Toolkit — native visual engineering for text-only DeepSeek Harness agents

DSH Vision Toolkit

English | 中文

Recommended by dshfind dshfind score: 94 — highest-rated plugin X: @anion_ex Release v0.1.11 Verified: 233 tests

License: MIT Node.js ^22.19 or >=24 Python 3.11+ DSH Web and Headless profiles

Give your DSH agent eyes

Drop in a screenshot and let a text-only DeepSeek Harness agent inspect it, read it, locate elements, extract assets, rebuild interfaces, and measure whether the result matches.

DSH Vision Toolkit packages agent-vision-toolkit as a native DSH plugin. You get focused image Q&A, OCR, original-pixel coordinates, UI restoration, pixel comparison, downloadable results, and a Web Settings panel without assembling scripts by hand.

dsh plugin --profile web add @anionex/dsh-vision-toolkit

The npm package includes the visual toolkit snapshot and uses a managed runtime by default. Normal installation does not require a source checkout or an agentVisionToolkitPath.

Upstream toolkit: Anionex/agent-vision-toolkit · Project website: agent-vision.anionex.me

What you can do

Goal What the agent can deliver
Understand a screenshot Focused answers, visual descriptions, multi-image comparison, and OCR
Find an interface element Original-image pixel coordinates with an optional labeled preview
Rebuild a page from a reference Screenshot rendering, region-by-region diagnosis, and measurable iteration
Extract a usable asset Cropped images, transparent foregrounds, dominant colors, or editable SVG
Read a long screenshot Auditable chunks, Markdown output, manifests, and resumable OCR runs
Verify a visual result A difference percentage, ranked mismatch regions, heatmap, and JSON report

You can use remote vision only where it adds value. Cropping, tracing, pixel comparison, color analysis, foreground extraction, and HTML screenshots run locally.

See it in action

The first example is a live DSH Web view. The next two examples come from the same agent-vision-toolkit lineage packaged with this plugin, and the last shows the workflow inside a live DeepSeek Harness Web session. See the asset provenance record for source details.

DSH view example

DSH Web session view in which a text-only DeepSeek-V4-Flash (Vision Toolkit) model answers a question about a pasted banner image.

A live DSH Web view: the user pastes a brand-banner screenshot, and the text-only model answers what the image contains through the DeepSeek-V4-Flash (Vision Toolkit) image-input variant.

Infographic restoration: screenshot to editable HTML/CSS

Upstream reference screenshot of a three-stage model-training infographic. Upstream editable HTML and CSS reconstruction of the model-training infographic.

Left: source screenshot. Right: the editable HTML/CSS result from the upstream infographic-restoration reference.

UI restoration: sketch to working interface

Upstream hand-drawn JupyterLab workspace used as a UI restoration reference. Upstream JupyterLab-style working interface reconstructed from the hand-drawn reference.

Left: hand-drawn input. Right: the upstream reconstructed interface; the complete method lives in the UI restoration playbook.

Image Q&A and screenshot-guided debugging

DSH Web session in which a text-only agent answers a focused question about a UI reference image. DSH Web session in which the agent uses a screenshot comparison to diagnose mismatched UI fields and recommend vision_pixel_diff.

Left: intent-aware image Q&A in DSH Web. Right: a DSH Web screenshot-debugging turn that lists the concrete UI differences and continues toward vision_pixel_diff. The upstream workflow source is the same agent-vision-toolkit reference.

DSH Vision Toolkit brings this workflow into DSH, where the result can become a file, a coordinate, a measured comparison, or the next step in the same session.

From a rough match to pixel-perfect

The included UI-restoration workflow starts with an intentionally inaccurate HTML implementation. Vision Toolkit measures a 6.04% difference, points to the worst regions, and helps drive the next iteration. The final render reaches an exact 0% difference at 1200 × 720.

Initial UI restoration candidate before Vision Toolkit iteration, with measurable layout and styling differences from the reference. Final UI restoration output reproduced by the checked-in workflow with zero pixel difference from the reference.

Start Result
Reference image A working HTML implementation you can open and edit
First comparison 6.04% difference across the visible problem regions
Final comparison 0% difference at 1200 × 720

Why it feels different

  • Ask for the thing you need. “Where is the submit button?” and “Why does this screenshot differ from the reference?” lead to focused visual work instead of a generic caption.
  • Get evidence you can use. The agent returns coordinates, OCR, measurements, JSON, and files you can open or pass to the next step.
  • Keep the workflow in DSH. Credentials, Settings, Artifacts, Web cards, and Headless results live alongside the rest of your session.
  • Use local tools when you can. Crop, trace, pixel comparison, color analysis, foreground extraction, and HTML screenshots do not consume a vision API request.
  • Repeat the loop. Reference image → implementation → screenshot → pixel diff gives UI work a measurable finish line.

Start in three steps

Use DeepSeek Harness 0.1.0-rc.6 or a compatible later 0.1.x release. The plugin prepares its managed runtime on first use.

dsh plugin --profile web add @anionex/dsh-vision-toolkit
dsh plugin --profile headless add @anionex/dsh-vision-toolkit
  1. Restart your Web profile and open Settings → Vision Toolkit.
  2. New installations use the built-in free Gemma 4 provider, so you can run Test API connection and Test vision model without an API key. To use another provider, edit the endpoint/model/protocol and provide its DSH Credential.
  3. In a conversation, paste an image or put it in the workspace, invoke /vision-tools, and ask for a concrete visual task.

If you use an older DSH launcher, the profile may need nodeLinker: hoisted and autoInstallPeers: false before installation. Current launchers repair these settings for you.

Local crop, trace, pixel, color, foreground, and HTML operations do not require a visual API credential.

Community Group

Join the agent-vision-toolkit community group to exchange usage tips, share feedback, and suggest improvements.

QR code for the agent-vision-toolkit community group

No local path is required. Keep the default runtime.mode: managed for the normal npm installation. The optional runtime.agentVisionToolkitPath setting is only for developers or controlled deployments that deliberately use an external pinned checkout.

Technical architecture

How it works

flowchart LR
    User["Workspace image or local HTML"] --> Skill["vision-tools Skill"]
    Skill --> Activate["Agent-scoped activation"]
    Activate --> Tools["10 independent vision_* tools"]
    Tools --> Runtime["Shared VisionToolkitRuntime"]
    Credentials["DSH Credentials"] --> Runtime
    Settings["Web Settings and health"] --> Runtime
    Runtime --> Upstream["Pinned agent-vision-toolkit"]
    Runtime --> Remote["Configured vision API"]
    Upstream --> Result["Text, coordinates, JSON"]
    Remote --> Result
    Runtime --> Artifacts["Workspace Artifacts"]
    Result --> Session["Reconstructable Session log"]
    Artifacts --> Web["Preview, download, or open file"]

Tool definitions call one runtime; the runtime validates paths, limits, credentials, cancellation, and deadlines before dispatching to the pinned upstream snapshot or configured vision provider endpoint. Web presentation consumes the same structured results and Artifact descriptors, so it does not change Headless behavior. Health, connection testing, and version inspection stay in Settings rather than model tool schemas.

Tools

Tool Execution Structured result Artifact delivery
vision_glance Remote vision API Description, targeted answer, OCR, or multi-image comparison None
vision_ground Remote vision API; optional local preview Target, original-image dimensions, and pixel boxes Optional labeled PNG
vision_detect Remote vision API; optional local preview Numbered element inventory and original-image pixel boxes Optional numbered PNG
vision_trace Local pinned vtracer pipeline SVG geometry status, path count, scale, and size SVG
vision_crop Local Pillow pipeline Applied pixel box, dimensions, format, and clamp status PNG or JPEG
vision_pixel_diff Local NumPy/Pillow pipeline Difference percentage and ranked grid regions PNG heatmap and JSON report
vision_long_screenshot_ocr Local split/audit; remote OCR unless splitOnly=true Chunk boundaries, reuse state, completion state, and run directory Markdown, manifest, boundary audit, chunk PNGs, and OCR sidecars
vision_extract_foreground Local pinned extraction pipeline Selected box, component counts, foreground coverage, and dimensions Transparent PNG
vision_dominant_colors Local pinned color analysis Extracted palette or pixel-backed candidate ranking None
vision_html_screenshot Local Chrome/Chromium/Edge adapter Authorized source facts, viewport, and rendered dimensions PNG

The plugin does not reimplement visual algorithms. Its DSH-owned layer validates paths and limits, resolves credentials, calls the pinned upstream scripts with argv vectors, parses their exact output contracts, classifies failures, describes files, and projects results to the model and Web client.

Advanced model behavior

Progressive model exposure

Runtime readiness is profile-wide, but the ten visual execution schemas are Agent-scoped. Before an Agent loads vision-tools, the plugin contributes only the small vision_toolkit_activate bootstrap; the visual tools are absent from that Agent's request schema. A successful call to the standard skill tool with name="vision-tools" mounts all ten tools automatically for the next model step and hides the bootstrap. A direct /vision-tools invocation injects the Skill instructions; if the visual tools are still absent, those instructions require one vision_toolkit_activate call. Activation affects only that Agent, restores when the Session contains durable evidence matching the bundled Skill version, and lasts until the Agent or plugin is disposed.

Health checks, connection testing, and plugin/upstream version inspection are administrative Web Settings operations. vision_toolkit_health and vision_toolkit_version are not model tools and never enter an Agent's schema, including after visual-tool activation.

Image-input variants for text-only models

Text-only model routes get sibling model-selector entries named <model> (Vision Toolkit) under a matching provider group. DSH cannot pass a pasted attachment's local path through its native image block, so the default paste flow copies each image into the session workspace and inserts its absolute path into the model-visible message. The DSH model can then call vision_glance (or another visual tool) with that path, using the same focus-hinted bridge and [vision model description] channel markers as agent-vision-toolkit. The session log contains the durable path reference and the UI keeps the paste record.

A variant is still registered automatically for every model the host positively declares text-only (for example the DeepSeek chat family), but automatic switching is opt-in. With the default autoSwitch: false, a text-only session uses the paste-to-path flow so the DSH model receives a usable absolute path. If autoSwitch: true is explicitly enabled, the browser switches to <model> (Vision Toolkit) and the server-side image-input variant rewrites native image blocks into descriptions. The host's verdict uses the exact model route the browser read from the live model catalog, with the selector label as fallback; unconfirmed or image-capable routes keep the native flow.

Description conversion needs the configured vision provider and its credential when the opt-in image-input variant is used; when the runtime is not ready or a read fails, the wire block degrades to the upstream-compatible [vision unavailable: ...] note instead of failing the turn. The bridge does not treat injected context files as the current user intent, and it uses the latest assistant paragraph when a tool-fetched image is being described. Disable variants with imageInputVariants.enabled: false, restrict the wrapped routes with imageInputVariants.providers, or opt into native attachment switching with imageInputVariants.autoSwitch: true.

Requirements

  • DeepSeek Harness with a Web or Headless profile and pnpm available to dsh plugin.
  • Python 3.11 or newer. Managed mode creates an isolated environment, so users do not install the upstream CLI or Python packages manually.
  • Network access on the first managed-runtime activation unless the exact packages in runtime/requirements.lock are already available in the configured package cache.
  • The built-in free Gemma 4 provider is ready for vision_glance, vision_ground, vision_detect, and non-split-only long-screenshot OCR. A DSH Credential is required only when a custom OpenAI-compatible or Anthropic endpoint is configured. Local tools remain usable without either provider.
  • Chrome, Chromium, or Edge only for vision_html_screenshot; all other tools remain available when no supported browser is installed.
  • PNG, JPEG, GIF, or WebP inputs inside the session workspace or an explicitly configured allowedDirs root.

Install and lifecycle

Install

Install the bundle into each profile that should expose it:

dsh plugin --profile web add @anionex/dsh-vision-toolkit
dsh plugin --profile headless add @anionex/dsh-vision-toolkit
dsh --profile web --dump-config | grep vision-toolkit
dsh --profile headless --dump-config | grep vision-toolkit

Restart a long-lived Web profile after installation. The host discovers the built browser bundle from package.json's dsh.client declaration at process startup; the legacy top-level dshClient field is not scanned.

The first managed start verifies the packaged upstream manifest and atomically prepares an isolated environment under DSH_HOME/cache/dsh-vision-toolkit. Only after preparation succeeds does the plugin publish the same-version vision-tools Skill and activation bootstrap; each Agent receives the execution tools only after loading that Skill. An initial preparation failure leaves the Web Settings repair surface available but exposes neither model capability nor a misleading Skill.

Disable and re-enable

Set the bundle row to disabled: true in a profile patch or overlay:

- id: vision-toolkit
  disabled: true

Remove the flag or set it to false to re-enable the plugin. Disposal first cancels plugin-owned visual operations, then removes every Agent-scoped tool, the bootstrap, and the Skill; reactivation prepares the configured runtime before any model capability becomes visible. User configuration and completed Artifacts remain intact.

Upgrade

Migrating from the retired @dsh-external/dsh-vision-toolkit: the npm package now lives under the @anionex scope. If you installed the retired package, do not run update on it — that account cannot publish this release. Migrate to the new package name and restart the Web profile:

dsh plugin --profile web remove @dsh-external/dsh-vision-toolkit
dsh plugin --profile web add @anionex/dsh-vision-toolkit

After restarting, Settings → Vision should report plugin version 0.1.11. The built-in free provider is selected automatically; custom providers still use the configured DSH Credential.

For a registry installation, update the dependency through the profile package manager:

dsh plugin --profile web update @anionex/dsh-vision-toolkit
dsh plugin --profile headless update @anionex/dsh-vision-toolkit

For a local path installation, run add again against the replacement checkout or tarball. Settings remain in the profile's Settings provider. A candidate runtime is fully validated and prepared before it is persisted and made active; a failed or obsolete concurrent candidate cannot replace the current serving generation.

Uninstall

dsh plugin --profile web remove @anionex/dsh-vision-toolkit
dsh plugin --profile headless remove @anionex/dsh-vision-toolkit

dsh plugin remove removes both the dependency and its bundle layer. The profile no longer exposes the activation bootstrap, Agent-scoped Vision Toolkit tools, or Skill entries. Managed cache data may be deleted separately when no profile uses the package; it is not active configuration and cannot register anything by itself.

Configure

The bundle defaults to the managed runtime. A profile patch can override the provider and limits:

- id: vision-toolkit
  config:
    provider:
      baseUrl: https://vision.anionex.me/v1
      credential: ANIONEX_FREE_VISION
      model: gemma-4-26b-a4b-it
      protocol: openai
      anthropicThinking: omit
      userAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
    language: zh
    timeoutMs: 60000
    maxImageBytes: 4194304
    maxImagePixels: 20000000
    concurrency: 4
    runtime:
      mode: managed
    allowedDirs: []
    imageInputVariants:
      enabled: true
      providers: []
      autoSwitch: false

Configuration fields

Field Default Contract
provider.baseUrl https://vision.anionex.me/v1 Built-in free OpenAI-compatible endpoint; custom providers may use another base URL, normalized without trailing slashes
provider.credential ANIONEX_FREE_VISION Read-only built-in reference for the free service; custom providers use a DSH Credential reference, never a secret value
provider.model gemma-4-26b-a4b-it Multimodal model name sent to remote tools
provider.protocol openai openai sends Chat Completions requests; anthropic sends native Messages requests
provider.anthropicThinking omit Anthropic thinking field. omit sends no thinking field and has the broadest compatibility. Use disabled or adaptive only when the selected model documents that mode; restore omit first if the provider returns HTTP 400.
provider.userAgent browser-compatible default User-Agent sent by vision requests and explicit connection tests; override it for provider or proxy compatibility
language zh Vision output language: zh or en
timeoutMs 60000 Whole-operation deadline, 1000-600000 ms; each tool may request a narrower override
maxImageBytes 4194304 Encoded-byte limit per input image; the built-in free service accepts up to 4 MiB
maxImagePixels 20000000 Decoded-pixel limit per input image; the built-in free service accepts up to 20,000,000 pixels
concurrency 4 In-flight operations per session, 1-16
runtime.mode managed managed uses the packaged snapshot; external accepts only the exact pin
runtime.agentVisionToolkitPath unset Required in external mode; exported exact snapshot or clean pinned Git checkout
runtime.python unset Optional Python 3.11+ bootstrap/interpreter override
allowedDirs [] Additional realpath-resolved input roots; the session workspace is always allowed
imageInputVariants.enabled true Register image-input variant entries for text-only model routes in the model selector
imageInputVariants.providers [] Restrict wrapped upstream routes by provider id; empty wraps every eligible route
imageInputVariants.autoSwitch false Opt into automatically switching a text-only session to its image-input variant on paste; the default false keeps the DSH-compatible paste-to-path flow

Credentials

The built-in free provider uses the fixed ANIONEX_FREE_VISION reference and does not accept or store a user API key. If you change the endpoint, model, or protocol to a custom provider, the write-only API key field unlocks; saving a non-empty value writes it under the advanced Credential name reference. Headless deployments can pre-provision that custom reference in $DSH_HOME/.credentials.yaml.

Settings store only the reference, never the value. The browser does not receive a stored value, and a successful save clears the field instead of echoing it. Remote operations resolve the reference once per call and inject the value only into that subprocess environment. The plugin excludes user .env files, checkout .env files, PYTHONPATH, PYTHONHOME, VIRTUAL_ENV, and user site-packages so ambient Python or upstream configuration cannot override the selected DSH provider. Logs, errors, tool results, Artifact metadata, and Settings responses never contain the secret.

Built-in free service limits

The public service is shared and intended as a zero-configuration default, not an unlimited private endpoint. Limits are enforced by the proxy and returned as OpenAI-style errors with a reason code and readable message; rate-limit responses also include Retry-After and request-quota headers.

Limit Current value
Per client 100 requests per UTC day
Global service 400 requests per UTC day
Burst 20 requests per 60 seconds
Image bytes 4 MiB per image
Decoded pixels 20,000,000 per image
Output 512 tokens maximum

Managed runtime and optional external runtime

Managed mode verifies vendor/agent-vision-toolkit/UPSTREAM_MANIFEST.json, prefers uv, falls back to venv plus pip, installs exact versions from runtime/requirements.lock, coordinates concurrent preparation with a heartbeat lock, and publishes a staged environment only after all probes pass.

Most users should stop at managed mode. It is included in the npm package and prepares the pinned Python environment for you.

The optional external mode is for plugin development or controlled deployments that already maintain the exact upstream checkout:

- id: vision-toolkit
  config:
    runtime:
      mode: external
      agentVisionToolkitPath: /opt/agent-vision-toolkit
      python: python3.12

The path must be an exported copy matching the packaged manifest or the root of a clean Git checkout at bc9803d7d6300c864d17460ecbb33540b26638e0. Modified tracked files and untracked files are rejected because they can change or shadow the pinned Python behavior.

Web Settings

The Web profile registers a Vision Toolkit Settings section for the provider URL, Credential reference, model, OpenAI/Anthropic protocol, Anthropic thinking mode, User-Agent, language, timeout, byte/pixel limits, concurrency, runtime mode, Python override, external source path, and allowed directories. It also shows plugin/upstream versions, the active runtime generation, non-secret Credential configured/source/writable facts, runtime paths, health results, and Artifact-route availability.

The Plugin updates card checks the profile's configured npm registry for a newer @anionex/dsh-vision-toolkit release. Update and restart installs that exact confirmed version into the current DSH profile, verifies the installed package, starts an independent restart helper, and gracefully restarts DSH Web; the open page waits for the replacement process and reloads after the new plugin version is serving. The action is same-origin, fixed to this package, serialized, and unavailable for link:, file:, workspace, git, URL, transitive, ambiguous, read-only, or missing-pnpm installations so local development sources are never overwritten. A restart can interrupt work that is currently running, so the UI requires an explicit confirmation.

Save and apply validates the complete value, prepares the candidate Python/upstream runtime, commits the Settings revision, and only then atomically switches generations. A rejected candidate leaves the previous generation serving and is reported separately from a genuinely unavailable runtime. Reload always restores the authoritative saved value, even when its revision did not change, so a rejected browser draft is discarded. If initial startup cannot prepare a runtime, the Settings route remains available so a valid configuration can make the first generation operational. A stale browser revision receives a conflict instead of overwriting a newer save; reload before retrying. A read-only Settings provider allows inspection and health checks but disables saves.

Run health check performs local checks only. Test API connection is an explicit action that sends the configured Credential to GET /models; OpenAI uses Bearer authentication, while Anthropic uses x-api-key and anthropic-version. That lightweight probe uploads no image and creates no completion. Test vision model separately sends the bundled assets/vision-model-test.png through the same multimodal runtime path as vision_glance; it creates one real completion and is the authoritative check that the selected endpoint, credential, model, protocol, and upstream account can process images. The Vision model health card displays a dedicated Verified, Not tested, or Test failed tag, so an HTTP 200 response from /models is not presented as a successful image test. Plugin load and ordinary Settings reads never make either request.

Health, connection testing, and plugin/upstream version inspection are administrative Web Settings capabilities rather than model-facing tools, so their schemas never occupy an agent request.

Artifacts and presentation

Artifact-producing tools write only under <workspace>/.dsh-vision-toolkit/artifacts, either as one validated file or an atomically committed run directory. Each model-visible descriptor contains the path, filename, MIME type, kind, description, source tool, preview intent, and byte size, so Headless agents can reuse the path in later calls without browser support. Before a traced SVG is committed, the runtime parses it as XML: standard declarations and comments are accepted, while doctypes, malformed or multi-root documents, a non-SVG namespace, and reported path/byte mismatches are rejected.

When the Web HTTP host is present, presentation-only metadata adds signed capability URLs for preview and download without altering the canonical tool result. Every read revalidates the signature, managed-root fence, path components, regular-file status, size, device/inode identity where available, extension, and MIME. SVG responses use a sandboxed no-resource CSP and the client renders them in a sandboxed iframe. Without an HTTP host, the same cards retain Open file through openFile and show the descriptor instead of inventing an inaccessible URL.

Usage patterns

Basic calls

vision_glance images=["screenshot.png"] query="What error is shown?"
vision_ground image="screenshot.png" target="the send button" preview=true
vision_detect image="screenshot.png" category="buttons" preview=true
vision_crop image="screenshot.png" region="1067,841,1108,881"
vision_trace image="icon.png" color=true output="icon.svg"
vision_pixel_diff original="reference.png" rebuilt="actual.png" runName="comparison"
vision_long_screenshot_ocr image="page.png" mode="general" jobs=2
vision_extract_foreground image="logo.png" mode="color"
vision_dominant_colors image="screen.png" region="0,0,600,300" top=8
vision_html_screenshot source="implementation.html" width=1200 height=720

Common workflows are vision_ground → vision_crop → vision_glance, vision_ground → vision_crop → vision_trace, and reference image → vision_html_screenshot → vision_pixel_diff. Grounding and detection boxes always use original-image pixels (x1/y1/x2/y2).

UI restoration example

The checked-in UI restoration example renders a reference, an intentionally inaccurate first implementation, and the final implementation through vision_html_screenshot, then compares both candidates through vision_pixel_diff:

npm run example:ui-restoration
npm run example:ui-restoration:write

The committed evidence records an initial 6.04% difference across six non-zero worst regions and a final 0% difference with no non-zero worst region. Check mode reproduces the tool path and verifies the committed assets; write mode intentionally refreshes the evidence.

Troubleshooting

Symptom Resolution
Model "..." does not support image input. (attachment-error) The image used DSH's native model-attachment channel, so a text-only model rejected the turn before the Skill or Vision Toolkit could run. With image-input variants enabled this is rare: pasting normally auto-switches the session to the <model> (Vision Toolkit) variant. If variants are disabled or auto-switch is off, use DSH Paste Input's attachment button, paste, or drop flow so the file is copied into the session workspace and represented by a path, then invoke /vision-tools. Restart the Web profile and reload the page after installing or upgrading either browser plugin.
Credential reported missing Paste the key into Web Settings API key, keep the advanced Credential name aligned with provider.credential, save, then rerun health. Headless deployments can provision the same reference in $DSH_HOME/.credentials.yaml. Local-only tools do not need it.
Runtime preparation fails Read the Settings runtime error, verify Python 3.11+, package-cache/network access, disk permissions, and the exact external pin. Save only after correcting the candidate; the active generation remains intact.
Chrome is not found Install Chrome, Chromium, or Edge or configure an environment where one is discoverable. Only vision_html_screenshot is unavailable.
macOS displays a keychain dialog Confirm the current built adapter is installed and no stale external html_shot/headless Chrome process is running. Current launches use a mock keychain and disposable profile; cancel the dialog rather than resetting the login keychain.
Input or output path is rejected Move the file into the session workspace or add an intentional real directory to allowedDirs; remove escaping symlinks. Outputs accept a filename, not an absolute or nested path.
Vision service returns 401/403 Replace the Credential value or select the correct reference and endpoint. Errors remain redacted.
Vision service returns 429 Retry after the provider's rate-limit window or lower concurrency. The plugin does not silently switch providers.
Operation times out or is cancelled Raise timeoutMs within 1000-600000 ms, reduce image/chunk work, or rerun after cancellation. The subprocess/request is stopped with the operation.
Settings save reports a conflict Reload the section to obtain the current revision, reapply the intended edit, and save again.
Settings is read-only Change the active Settings provider or edit the owning profile configuration; the plugin cannot bypass provider writability.
Artifact preview is unavailable Use Open file or the model-visible path. Preview/download URLs exist only while a Web HTTP route is attached.

Development and verification

pnpm install --frozen-lockfile --trust-lockfile
pnpm run verify:portable
pnpm run build
pnpm test
pnpm run example:ui-restoration
pnpm pack --dry-run

pnpm run verify:portable is the dependency-free portable verification gate: it validates the vendored snapshot, package metadata and exports, committed JavaScript syntax, README links and images, required facade files, social-preview dimensions, and the dry-run tarball. The full TypeScript build and test suite run from this standalone checkout against the locked DSH 0.1.0-rc.6 registry packages; the client build also has a separate compiler face that resolves the packages' public exports without internal path aliases. The real Profile acceptance runs when compatible dsh and pnpm commands are on PATH, and CI requires that path instead of silently skipping it.

pnpm run build verifies the vendored manifest before emitting JavaScript, declarations, and the loader-compatible Web client. The package commits lib/, so installation from a checkout does not require a consumer-side build. The keyless real-profile test installs into a clean DSH_HOME, boots Headless, executes all five P0 tools plus representative P1 local/remote tools through real tool calls, verifies disable and re-enable behavior, and uninstalls the bundle. See the requirements traceability reference for the implementation and verification home of every P0/P1 requirement.

Update the upstream snapshot only through pnpm run upstream:sync -- <checkout>, inspect the source and license, regenerate the manifest, and update the adapter compatibility tests and committed lib/ in the same change. The runtime never fetches upstream main.

Project status and scope

Version 0.1.11 is the current public npm release. The product focuses on screenshot understanding, visual grounding, OCR, asset extraction, UI restoration, and pixel-level verification in DSH Web and Headless profiles. Web upload, drag-and-drop, camera/video/audio/document ingestion, interactive box editing, automatic GUI clicking, service clusters, model routing, model voting, and cross-session vision caches remain outside the current product.

Maintainer scope note

The stable ctx.visionToolkit service and capability-discovery API remain unpublished until an independent plugin becomes a real consumer. This keeps the public integration surface tied to a tested use case rather than an unvalidated ecosystem contract.

Community and About

  • Read CONTRIBUTING.md before proposing code, protocol, or upstream-snapshot changes.
  • Use GitHub Issues for reproducible bugs, focused feature requests, and usage questions; use SUPPORT.md to choose the right channel.
  • Report vulnerabilities privately through the process in SECURITY.md, never in a public issue.
  • Follow releases and compatibility notes in CHANGELOG.md.
  • Optional sponsorship is described transparently in FUNDING.md; support does not purchase roadmap priority or private support.
  • Use the upstream project website and repository for the general toolkit, cross-harness integrations, visual-task playbooks, and reference runs.
  • Star, share, contribute to, or sponsor agent-vision-toolkit if its algorithms or methods save time; DSH-specific bugs and integration requests belong in this repository.

agent-vision-toolkit was created by Anionex. This repository maintains its native DeepSeek Harness integration: DSH owns lifecycle, security, structured schemas, Credentials, Artifacts, and Web presentation, while the upstream project remains the home of the visual algorithms and reusable playbooks.

If you would like to follow my future work, follow me on X or GitHub.

License

The plugin is MIT-licensed. The packaged agent-vision-toolkit snapshot retains its upstream MIT license in vendor/agent-vision-toolkit/LICENSE and remains the sole implementation of its visual algorithms.

—/ 5

No ratings yet

Verified DSH bundle

Commit 57e831720fe5

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

APIPublish GuideAbout