dshbase

插件目录 / UI & Skins / dsh-any-attachment

dsh-any-attachment

已验证 · 实测可装 Zenjibad

✓ 持续维护

查看 GitHub ↗ ← 返回插件目录

1Stars
0Forks
0未关闭 issue
—语言
2026-08-14最近推送
跨平台平台

功能简介

dsh bundle: attach any file type in the DeepSeek Harness Web UI — text-likes inline, binaries as workspace path references, rasters via the built-in pipeline

✅
我们的评价
可用 — 实测通过,早期项目

dsh bundle: attach any file type in the DeepSeek Harness Web UI — text-likes inline, binaries as workspace path references, rasters via the built-in pipeline 实测能干净安装、正常启动。早期项目,但功能可用。

「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。

README

dsh-any-attachment

A DeepSeek Harness (dsh) plugin bundle that lets the Web UI attach files of any type as pathless @-mentions: type @ to pick a workspace file, or drop a file (or use the + button) to tag it into your message — the agent then reads the file itself with its own tools. Mentions carry the name only, never a path. Raster images keep flowing through the built-in image pipeline. No changes to the harness repo, and nothing is written into your workspaces.

How mentions work

  • @-list: in the composer, type @ and a menu shows the session workspace's files, recursively and flat (src/main.ts, docs/guide.md, …). Type more to filter; pick one and a pathless @name chip is inserted into the draft.
  • Drop / + button: drop a local file onto the composer (or click +) and it is stored privately; the draft gains an @<stored-name> chip — no path, no drive letter.
  • Send as usual (Enter or the send button) — every mention chip resolves to its exact file location in the sent message (@name (C:\...\absolute\path)), so the agent reads the file directly instead of guessing where it lives.
  • Raster images (png/jpeg/webp/gif) still route to the built-in image pipeline (vision models see them).
  • Files live under $DSH_HOME/attachments-any/ — private, never dumped into a workspace.

Install

dsh plugin --profile web add https://github.com/Zenjibad/dsh-any-attachment

Restart dsh web, then hard-refresh the page.

Limits

Guard Value
Max bytes per file 25 MB
@-list depth 4 levels below the workspace root
@-list entries 500 (sorted, /-separated relative paths)
@-list exclusions hidden (.-prefixed) entries and node_modules
Name basename only; traversal, separators, drive letters rejected
Storage private store under $DSH_HOME/attachments-any, never a workspace

How it works

  • Host (lib/): registers an RPC channel /attachments-any (authority trusted-host, same LAN fence as /api). list { sessionId } walks the session workspace recursively and returns relative paths; upload validates base64/size/name, writes into the private store, and returns the stored name (deduped with -2 suffixes). A system-prompt section tells the agent that a referenced @name lives at ./<name> relative to its working directory, or in the private store otherwise.
  • Client (client/): composer + button (conversation.input.left), a capture-phase drop handler, and an @file input-trigger source (workspace autocomplete, pathless picks). Rasters route through createDraftImages/addImages; everything else uploads via the channel and the mention @<name> is appended to the composer draft via inputActions.setDraft.

The agent reads the file at the resolved path with its own tools — no extraction, no download UI, no special send flow.

Test

node --test

License

MIT

安装

🧩 让 Agent 自动装(推荐)

装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:

dsh plugin add dshbase-catalog

然后对 agent 说「帮我装 dsh-any-attachment」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。

该插件是 GitHub 源码(未发 npm)——直接从仓库装:

Web profile:

dsh plugin --profile web add github:Zenjibad/dsh-any-attachment

Headless(CLI)profile:

dsh plugin --profile headless add github:Zenjibad/dsh-any-attachment

实测报告

验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。

安全:尚未扫描——我们的每日静态扫描将很快覆盖它。

分享徽章

UI & Skins 里更多

浏览全部 7819 个插件 →