deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
A DSH profile bundle for sessions running models that cannot accept image input (DeepSeek and similar). Instead of the native "the current model does not support images" rejection, the plugin runs the following pipeline:
.dsh-vision-bridge/);agent/pre-step channel) into
a [图片桥接] instruction carrying the image paths;vision_glance, fuzzy-selectable such
as glance / ground / detect, matched against the agent's actual
toolset) and answer from its analysis — the tool-call card and its result
appear in the conversation;llm.streamWithRegistration — the dispatch funnel behind both
llm.stream and the agent loop's prepared-call path — to strip image blocks
(including images nested inside tool results), replacing them with a
placeholder before a text-only adapter serializes the conversation.Sessions whose agent preset matches excluded presets (default minimal,
the two-tool preset) are NOT bridged: their images are replaced with the
original "model does not support images" notice text. The preset a session
runs is resolved the same way DSH itself resolves it: the newest
agent-preset/selected event wins, with the creation-time header as fallback.
dsh-host-apiproxy's prompt RPC rejects image messages before they enter
the session when llm.resolveModelInfo().inputModalities lacks image
(that is the banner shown in the UI).UNSUPPORTED_CONTENT on any message containing
image blocks at serialization time.This plugin intervenes at three layers:
| Layer | Mechanism |
|---|---|
| Admission | Patches llm.resolveModelInfo so bridged models report an image input modality |
| Current message | agent/pre-step materializes the image and injects the vision-tool instruction |
| History | Patches llm.streamWithRegistration (the shared dispatch funnel) to strip image blocks before adapter serialization |
| Setting | Default | Meaning |
|---|---|---|
| Enable vision bridge | on | Off = restore native DSH blocking entirely |
| Vision tool (fuzzy input) | vision_glance |
The tool the model must call; fuzzy-matched against the agent's real toolset |
| Custom prompt (optional) | empty | Extra instruction passed to the vision tool |
| Bridge models | deepseek-official*,deepseek* |
provider[:model] patterns, * wildcards |
| Excluded session presets | minimal |
Multi-select + extra wildcard patterns; matched sessions are NOT bridged (original blocking text) |
Configuration is persisted through the DSH settings service (namespace
vision-bridge); it survives restarts.
ctx.shell with base64 on stdin (no huge
command lines): bash (base64 -d) on Linux/WSL, PowerShell
([IO.File]::WriteAllBytes) on native Windows — the shell flavor is
auto-detected once (Write-Output probe + resolveExecutable('pwsh')
fallback).danger-full-access sessions run without a sandbox backend; confined
sessions run inside the workspace fence when a backend exists.skill tool; the minimal preset does not
(it is excluded by default).Unzip the bundle, then add it to a profile:
unzip dsh-vision-bridge.zip -d dsh-vision-bridge
dsh plugin --profile web add ./dsh-vision-bridge
(dsh plugin forwards to pnpm in the profile directory. Alternatively, copy
the extracted folder into the profile's node_modules/@dsh-external/ and
reconcile plugins.)
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。