wertyq111/dsh-paste-preview ↗★ 1

dsh-paste-preview

支持向纯文本模型发送剪贴板图片并预览 适合使用纯文本模型但仍需处理图片输入和视觉预览的任务。

套件
dsh-paste-preview
相容性
待驗證
版本
0.1.0
授權
MIT
最近更新
2026年9月17日

安裝

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:wertyq111/dsh-paste-preview

dsh-paste-preview

简体中文

A DeepSeek Harness (dsh) web plugin that makes pasted images usable with text-only models, without losing the visual preview.

What it does

  • Paste → thumbnail. Pasting an image into the composer shows a thumbnail in the attachment rail (click to zoom) instead of inserting a file path.
  • Text-only models still get the image. When the selected model does not accept image input, the image is re-wrapped as a plain file attachment. dsh stores it and hands the model a read-only path, so tools such as modlens_read_image can read it. Vision-capable models keep dsh's native image path.
  • Thumbnails in sent messages. Images that went through the file path render as zoomable thumbnails in the conversation history, including after a reload.
  • Drag-and-drop and images added from the file picker are rerouted the same way.

Install

dsh plugin add dsh-paste-preview

Restart dsh afterwards.

Using it together with @liustack/modlens

modlens has its own paste-to-path feature that intercepts pastes first. Turn it off in your profile's cordis.patch.yml:

- id: modlens
  config:
    pasteToPath: false

This is not shipped in the plugin's own patch on purpose: a patch that targets a missing entry id makes dsh fail at startup for anyone without modlens.

How it decides

The browser asks GET /dsh-paste-preview/verdict?model=. The host answers takeover: true only when every model whose name or id appears in the label declares text-only input. modlens' own "(modlens vision)" wrappers are ignored so they cannot veto the model they wrap. Unknown or unresolvable models answer false, which keeps the native behaviour.

HTTP routes

RoutePurpose
GET /dsh-paste-preview/verdictWhether pastes for the current model should be rerouted
GET /dsh-paste-preview/fileReads back a stored image attachment for thumbnails (sha256 id, png/jpg/webp/gif only, ≤ 32 MB)
GET /dsh-paste-preview/debugLists providers, models and their input modalities

All routes go through dsh's connection.requestRejection check and answer 401 to unauthenticated requests. Stored files are read through the dsh attachment store, which re-verifies the name, size and digest.

Limitations

  • Sent-message thumbnails are attached to dsh's built-in file cards, which expose no public slot. The attachment reference is read from the rendered component's props. If a future dsh release changes that structure, the plain file card is shown instead; nothing breaks.
  • Right after sending, before the message is persisted, the plain card may show briefly.

Development

pnpm install
pnpm test

License

MIT