图片识别
Image routing for text-only models in DeepSeek Harness (DSH).
이것은 DeepSeek Harness(DSH) 플러그인입니다. 이 사이트는 GitHub README, 설치 정보, 유지보수 상태, 공개 보안 시그널을 모아 보여줍니다.
업스트림에서 중국어 README를 제공하지 않아 저장소 원본 내용을 표시합니다.
dsh-vision-tool
Image routing for text-only models in DeepSeek Harness (DSH).
Text-only models (e.g. deepseek-v4-flash) cannot see images. This bundle gives
them eyes in two coordinated steps:
vision-prompt— shadowsPOST /api/session.prompt. When the active session model does not support image input, pasted images are persisted as content-addressed attachments and rewritten in place into text prompts that carry the full attachment reference JSON. Any other request (no image, or a model that already supports images) is forwarded unchanged, with the official/apitrust fence (DNS rebinding / cross-site defense) reimplemented.vision-tool— registers a globalanalyze_imagetool. The model calls it with the attachment reference (or a local filepath); the tool routes the image to a vision model and returns its text answer.
Verified end-to-end: paste an image → attachment persisted → model calls
analyze_image → vision model describes the image.
Install
Requires the dsh CLI (see package and install a plugin).
# from npm (once published)
dsh plugin --profile <name> add dsh-vision-tool
# straight from a git host (pin a commit; no build step needed — pure ESM)
dsh plugin --profile <name> add github:<you>/dsh-vision-tool#<sha>
# or from a local tarball
pnpm pack
dsh plugin --profile <name> add ./dsh-vision-tool-0.1.0.tgz
The bundle's cordis.patch.yml inserts two rows: vision-tool and
vision-prompt. Restart the profile afterwards:
dsh --profile <name>
Verify the layer landed without booting:
dsh --profile <name> --dump-config # look for the "# == dsh-vision-tool" layer
Configuration
Credential (required)
The tool resolves KIMI_CODE_API_KEY — from $DSH_HOME/.credentials.yaml or an
environment variable of the same name. Get the key from your
Kimi Code subscription page (sk-kimi- prefix).
# $DSH_HOME/.credentials.yaml
KIMI_CODE_API_KEY: sk-kimi-...
Switching vision models
The defaults target kimi-for-coding at https://api.kimi.com/coding/v1.
Override the row in your profile's cordis.patch.yml (a patch replaces the
whole config, so restate every key you keep):
- id: vision-tool
name: dsh-vision-tool
config:
baseURL: https://api.kimi.com/coding/v1
model: kimi-for-coding
apiKeyEnv: KIMI_CODE_API_KEY
maxImageBytes: 20971520
timeoutMs: 120000
Note:
kimi-for-codingonly acceptstemperature: 1(anything else is rejected with HTTP 400). The tool hard-codestemperature: 1as its default and is not configurable for this model. Other OpenAI-compatible vision endpoints generally work as long as they accepttemperature: 1.
Supported inputs
attachment— full reference JSON injected by the paste-rewrite mechanism ({"attachmentId":"sha256:...","mediaType":...,"bytes":N,"width":N,"height":N}). Pass it verbatim; do not strip fields.path— local image file (absolute, or relative to the session cwd).- Formats:
png/jpg/jpeg/webp/gif. Local files up tomaxImageBytes(default 20 MB). Attachments are bounded by the harness attachment store limits.
Security
vision-promptreimplements the official/apitrust fence: loopback /trustedHostshost check,sec-fetch-siteandOriginchecks.- Request bodies are capped at 160 MB (413 otherwise), matching the harness http-bridge default.
- Any failure degrades to passthrough — the original request is forwarded unchanged, never swallowed or mangled.
- The tool only reads the attachment you reference and your configured credential; it never stores prompt or image content beyond the attachment store the harness itself maintains.
Diagnostics
Both plugins append to $DSH_HOME/vision-trace.log:
handle: rewrite result = REWRITTEN
vision-tool: execute: resolve KIMI_CODE_API_KEY -> source=file len=72
License
보안 및 설치 증거
이 점수는 공개 저장소 메타데이터와 이 사이트에 등록된 설치 증거에만 기반하며, 코드 보안 감사와 다릅니다.
공개 플러그인 카탈로그에서 왔으며, 공개 GitHub 저장소로 연결됩니다.
저장소가 MIT 라이선스를 선언했습니다.
최근 180일 내 코드 업데이트가 있습니다.
재현 가능한 정확한 설치 메타데이터가 아직 등록되지 않았습니다. 저장소 설명에 따라 직접 확인하세요.
검사한 패키지 메타데이터에 설치 라이프사이클 스크립트가 선언되지 않았습니다.