DeepSeek Harness 插件

dsh-any-attachment

让 DSH 网页以无路径 @提及 附加任意类型文件:可从 @ 菜单挑选工作区文件,或拖入输入区,Agent 直接读取。

跳到安装方式

来源信息

GitHub 仓库
Zenjibad/dsh-any-attachment
最近更新
2026年8月20日
分类
界面增强
GitHub stars
0

安装

默认先复制一段 Prompt,让 Agent 读页面和仓库;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读页面和仓库。

请先不要安装。阅读这个 DeepSeek Harness 插件,说明它解决什么问题、会访问哪些文件、网络或密钥,以及如何安装和卸载。

插件页面:https://deepseekplugins.org/zh/plugins/Zenjibad/dsh-any-attachment
GitHub:https://github.com/Zenjibad/dsh-any-attachment
插件名:dsh-any-attachment
作者:Zenjibad
安装命令:dsh plugin --profile web add github:Zenjibad/dsh-any-attachment

确认前不要执行安装命令。

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器3 个文件
README.md来源说明 · 只读预览

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

GuardValue
Max bytes per file25 MB
@-list depth4 levels below the workspace root
@-list entries500 (sorted, /-separated relative paths)
@-list exclusionshidden (.-prefixed) entries and node_modules
Namebasename only; traversal, separators, drive letters rejected
Storageprivate 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](LICENSE)