DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

File Drop Attachments Persisted — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
F

dsh-file-drop-attachments-persisted

File Drop Attachments Persisted

DSH 插件 dsh-file-drop-attachments-persisted

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:dsh-plugins/dsh-file-drop-attachments#ab483beed871c81b22071156b917738954cc19e1
README兼容性版本

说明

DSH 插件 dsh-file-drop-attachments-persisted

兼容性与来源证明

File Drop Attachments Persisted 以 dsh-file-drop-attachments-persisted 发布,当前版本为 1.0.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/9/11

版本

1.0.0stable
2026/9/11

相关插件

正在加载相关插件…

最新版
1.0.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
GPL-3.0-only
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/9/11
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 memory-context 分类下经过校验的插件。

Mnemondsh-mnemon面向 DeepSeek Harness 的可组合三层记忆控制平面:持久化运行时上下文、可搜索的项目文档、可插拔的长期记忆、受保护的策略、WebUI 和无头工具。Memory@furongjun1999/dsh-memory灵枢(Lingshu·líng shū)DeepSeek Harness 插件:完整大脑——长期记忆/知识飞轮/自我认知/递归反思接入 DSH,对话自动沉淀进 md_cg 认知图(md 文档)Rewind Plugindsh-rewind-plugin同窗口内对话回退并恢复工作区文件Meow Memorymeow-memoryDeepSeek Harness 的跨会话项目记忆:七层 SQLite 记忆、首轮快照注入、每条消息的关键词命中、memory_remember/search/project 工具、带 reflection-fold UI 的自动反思,以及由空闲触发的梦境整合

README

DSH File Drop Attachments

A persistent DSH Web plugin that keeps native image previews and renders non-image drops as file attachments.

Features

  • PNG, JPG, JPEG, WebP, and GIF files stay in the native image preview rail.
  • Missing image MIME types are recovered from the file extension.
  • Other dragged or pasted files are rendered as compact attachment cards with filename, extension, vector type icon, and remove action.
  • When the browser hides the source path, the Host matches a unique workspace file by name, size, and SHA-256 content before using its real path.
  • Files outside the workspace fall back to a local copy under ~/.dsh/file-drop-attachments/ and are explicitly marked 副本 in the card and [附件副本] in model text.
  • Fallback uploads are same-origin, filename-sanitized, session-isolated, and limited to 64 MiB per file.
  • Draft attachments are retained per session while switching conversations.
  • Historical durable image refs are sent as an extension-bearing cache alias under %DSH_HOME%\file-drop-attachments\image-cache\... instead of repeated image bytes; the alias is a hard link to %DSH_HOME%\attachments\v1\objects\... when supported, and images in the unresolved current request suffix remain native image content.
  • The plugin is mounted by the profile startup composition.

Compatibility

Verified against both client-runtime generations:

  • DSH 0.1.0-rc.6 (web profile): the composer was a <textarea> inside [data-input-scroll].
  • DSH 0.1.2-rc.1 (desktop profile): the composer is a contenteditable Lexical editor inside the same region, and the send affordance is the primary-action button. Opening a card uses remote.session.openWorkspacePath, falling back to the older workspaces.openPath.

sessionId is a standard prop of session-scoped slots in both generations — dsh-client-web-react set it explicitly in 0.1.0, and dsh-client-ui-session's builtin source provides props: ["sessionId"] in 0.1.2. The plugin also passes it through its own inject(sessionId), which spreads the same value and survives a runtime that stops providing it.

IME discipline

inputActions.setDraft is not a text edit: the host clears the draft, rebuilds it, and parks the caret at the end. Running that rewrite during an IME composition commits the pre-edit text and selects it, so the next keystroke replaces the character the user just typed. Every plugin-owned draft write therefore goes through the composition gate:

  • whenIdle for bookkeeping writes (the sentinel that keeps the send affordance live).
  • whenSettled for the submit-time write, which also re-checks at fire time so a composition opening in between is never written into.
  • Enter during a composition is never claimed: the plugin declines the key and leaves the candidate window to the IME.
  • Cmd/Ctrl+Enter keeps the composer's own submit mode; the plugin only folds the attachment lines in and lets the composer send.

Install

The repository ships the prebuilt client bundle, so a GitHub source install is enough. One command installs the plugin and mounts it into the profile:

dsh plugin --profile web add github:dsh-plugins/dsh-file-drop-attachments

The command forwards to pnpm inside the profile directory and then reconciles dsh.profile.bundles against the installed state. This package declares dsh.bundle.patch (cordis.patch.yml), so the resolved dependency joins the bundle stack and the profile boot mounts it — no profile file is edited by hand. Restart DSH Web afterwards so the Host and Client plugin graph is rebuilt.

To install a local checkout while developing:

git clone https://github.com/dsh-plugins/dsh-file-drop-attachments.git
dsh plugin --profile web add file:./dsh-file-drop-attachments

To remove it:

dsh plugin --profile web remove dsh-file-drop-attachments-persisted

Migrating a hand-mounted profile

Earlier revisions were mounted by hand: a link: dependency in the web profile plus a file-drop-attachments insert row in the profile's own cordis.patch.yml. Delete that insert row, then switch to the bundle channel — with the manual row still present the plugin mounts twice (two Host halves, two composer rails):

dsh plugin --profile web remove dsh-file-drop-attachments-persisted
dsh plugin --profile web add github:dsh-plugins/dsh-file-drop-attachments

Offline install

For a machine without git access, unpack the repository anywhere and run the bundled installer. It copies the files under $DSH_HOME/plugins, links that copy from the web profile, registers it in dsh.profile.bundles, drops a legacy hand-written mount row if one is present, and then runs the profile's package manager:

powershell -ExecutionPolicy Bypass -File ./install.ps1

Restart DSH Web afterwards, exactly as with the dsh plugin path. Add -NoInstall when the dependency is already linked and only the files and the profile registration need refreshing.

License

GPL-3.0-only. See LICENSE.