DeepSeek Harness (dsh) went public beta and open source on August 13 with one design bet: everything is a plugin — models, tools, skills, sessions, sandboxes, storage, loops, scheduling and UI can all be composed and swapped. Six days later, v0.1.0-rc.8 shipped its first major update: 14 changes, with multimodal input as the headline. Vision-capable models can now take images natively, text-only models get a tool-layer vision fallback (OCR, color stats, pixel scans), and Claude Code and Codex can be installed on demand as subagents.
Here is what actually changed and how to put it to work today.
What landed in rc.8
The DeepSeek model adapter now supports configurable native image requests. Commands like /goal and /plan accept mixed image + text input, and the @ menu can reference local files and existing sessions, so screenshots and past context can be pulled straight into a task.
- Multimodal input: native image requests for vision-capable models;
/goal,/planand the@menu handle images, files and sessions. - New subagents: Claude Code and Codex install on demand as Profile Bundles. Codex adds non-interactive permission mode and multiple named instances in a single task.
- Windows: PTY terminals get persistent PowerShell sessions, enabled by default in the Minimal preset.
Fixes worth knowing: oversized images or accumulated image payloads no longer kill model requests; cancelling a stream keeps the already-rendered prefix in follow-up prompts and forks; custom OpenAI-compatible gateways with request-format differences now work and return reasoning content.
Turn on native image input
Install and launch the Web UI:
npx @deepseek-ai/dsh web
# Web UI: http://127.0.0.1:3080For a vision-capable model, declare image input in the adapter config — the community pattern is to list the model's input types explicitly:
# adapter/model config (schema shifts fast in pre-release, check the docs)
model:
input: [text, image] # allow native image requests
Once enabled, drop a screenshot straight into /goal or /plan, or use the @ menu to attach a local file or a previous session to the current task.
Vision for text-only models: the tool-layer fallback
The interesting part is what happens when the model has no vision at all. When read_image fails, the harness degrades to a tool chain: OCR the text, count color ratios, scan pixel rows, read metadata (dimensions, color mode) — then hand the structured evidence to the text model, which reconstructs what the image probably shows.
This works well for structurally clear images: PPT slides, flowcharts, UI screenshots, tables. It degrades on real photos and complex spatial scenes. The design point is worth noting: perception does not have to live in the base model — tools can do part of the seeing.
The community had already explored this before rc.8: dsh-vision, dsh-vision-toolkit, modlens, dsh-auto-vision, dsh-subagent-vision, and pi2dsh (bridging pi-vision). Native multimodal support and these tool-layer approaches now complement each other.
Claude Code and Codex as on-demand subagents
Both are now installable as Profile Bundles — pull them in only when a task needs them. Codex supports non-interactive permission mode and multiple named instances, so one task can run several Codex workers with different roles. Subagent reportDelivery now wakes the parent task as soon as a subagent reports back, instead of waiting for the full round.
# illustrative profile config
subagents:
codex-worker-a:
provider: codex
permission: non-interactive
codex-worker-b:
provider: codex
permission: non-interactiveWindows, fixes, and what to try next
Windows PTY terminals now keep a persistent PowerShell session (default in the Minimal preset), so commands no longer rebuild the terminal environment every time. web_search runs concurrent queries, the SQLite backend is faster for read/write/fork with smaller storage (the format is incompatible — back up before upgrading), and the Python SDK now covers all four built-in Agent Presets plus rg/glob search and MCP stdio dependencies.
Three things worth trying this week:
- Screenshot-to-code on a vision model: drop a UI screenshot into
/goaland have it scaffold the implementation. - Bug triage with evidence: paste an error screenshot; let the OCR fallback extract the message and coordinates on a cheap text-only model.
- Split roles across subagents: Codex writes, Claude Code reviews, inside the same harness task.
If you are shopping for a vision-capable base model to pair with this, GPT-5.6 Sol's vision gains are worth a look, and the open-source deep research guide covers similar agent-orchestration patterns for research workflows.
Resources
- GitHub: deepseek-ai/deepseek-harness (MIT)
- Release notes: dsh-v0.1.0-rc.8
- Community: DeepSeek Harness Discord, plugin topic dsh-plugin