在 DeepSeek Harness 的使用场景中,Web UI 界面通常对文件交互支持有限。当需要让智能体读取特定文件内容时,直接引用路径往往不直观,或者需要用户手动上传下载。dsh-any-attachment 插件通过扩展 Web UI 的交互方式,解决了文件附加与引用的问题。
插件简介¶
这是一个由 Zenjibad 维护的 DeepSeek Harness 插件包。它允许 Web UI 用户附加任意类型的文件,并将其作为无路径的 @-mentions 插入消息草稿。代理在接收到消息后,会通过自身的工具直接读取文件,无需用户手动下载或提取。文件被存储在私有目录,不会污染工作区环境。
核心功能¶
- 无路径 @-mentions:支持任意类型文件作为无路径的
@-mentions。 - 文件浏览:在编辑器中输入
@,通过@-list浏览工作区文件。 - 上传方式:支持拖放本地文件或点击
+按钮上传。 - 图像处理:保留内置图像管道处理图片,视觉模型可直接读取。
- 存储位置:文件存储在私有目录(
$DSH_HOME/attachments-any/),而非工作区。 - 直接读取:代理通过工具直接读取文件,无特殊发送流程。
安装与启用¶
通过官方命令安装插件:
dsh plugin --profile web add https://github.com/Zenjibad/dsh-any-attachment
安装完成后,重启 dsh web 服务并刷新页面即可生效。
典型用法¶
- 浏览工作区文件:在消息输入框中输入
@,界面会列出当前会话工作区的文件(递归深度限制为 4 层)。输入更多字符可进行过滤,选择文件后,一个无路径的@name标签会被插入到草稿中。 - 上传本地文件:将本地文件拖入输入框,或点击输入框中的
+按钮。文件会被存储在私有目录,消息草稿中会出现@<stored-name>标签。 - 发送与读取:发送消息后,代理会根据标签解析出文件的精确路径(包含绝对路径),并使用工具直接读取文件内容。
适用场景与注意¶
- 适用场景:需要让智能体直接访问本地文件或工作区文件,且希望避免路径暴露或手动下载的用户。
- 限制说明:
- 单文件最大 25MB。
@-list最多显示 500 个条目,且按/分隔的相对路径排序。- 排除隐藏文件(以
.开头)和node_modules。 - 文件名仅允许 basename,不允许分隔符或驱动器字母。
- 无下载 UI,无特殊的发送流程。
总结¶
该插件通过在 Web UI 层面提供文件附加能力,让智能体能够直接获取文件上下文。它不依赖复杂的外部上传流程,也不将文件写入工作区,保持了环境的整洁。