Saltar al contenido principal
L

dsh-file-resource

liznee/dsh-file-resource

Private local file attachments for DeepSeek Harness with native images and bounded document reading.

Instalar

dsh plugin --profile web add github:liznee/dsh-file-resource

README

dsh-file-resource

CI

DeepSeek Harness Web 的本地文件输入插件。在输入框原有的 + 菜单顶部增加 attach,并用分隔线与 Harness 原生命令区分;不会再增加一个单独按钮。

image image

选择图片时继续使用 Harness 官方图片附件流程。选择文档时,插件在本机解析并保存为会话隔离的私有资源,模型只在需要时通过一个受限读取工具按页、幻灯片、工作表、分块或搜索结果读取。界面不会伪造或显示“请读取某个文件”的用户消息。

功能

  • 一个文件选择器同时接收图片、文档、文本和常见代码文件,可多选。
  • 文档以紧凑卡片显示在圆角输入框内部,文件名自动截断,并显示真实上传进度与本地解析状态。
  • 卡片右侧的灰色圆形 × 可以取消正在进行的上传或移除文件。
  • 只有文件、没有输入文字时,可直接使用 Harness 原有发送按钮。
  • 图片仍由 Harness 原生预览、删除、持久化和多模态模型流程处理。
  • 文档解析完全在本机完成;上传或解析本身不会调用模型,也没有遥测。

支持格式

类别格式
Harness 原生图片PNG、JPEG、WebP、GIF
文档PDF、DOCX、XLSX、PPTX、ODT、ODS、ODP、RTF、EPUB
文本与代码TXT、Markdown、CSV、TSV、JSON/JSONL、XML、HTML、YAML、日志、配置、SQL,以及常见 JS/TS/Python/Java/C/C++/C#/Go/Rust/Ruby/PHP/Shell/PowerShell/CSS 文件

限制:旧二进制 DOCXLSPPT 不支持,请先另存为 DOCXXLSXPPTX。PDF 读取文字层;纯扫描件不会自动 OCR,避免后台下载识别模型、额外占用 CPU 或把内容发给第三方。

安装

要求与当前 DeepSeek Harness 一致:Node.js 22.19+24+v0.1.0 已在 DeepSeek Harness 0.1.1-rc.1 上验证。

从 npm 安装固定版本:

dsh plugin --profile web add dsh-file-resource@0.1.0

也可以直接安装对应的 GitHub Release:

dsh plugin --profile web add github:liznee/dsh-file-resource#v0.1.0

安装后运行 dsh --profile web --dump-config,输出中应出现 # == dsh-file-resource。随后重启 dsh web,从输入框左下角的 + 选择 attach

升级时,将上述安装命令中的 0.1.0 替换为准备安装的新版本。卸载命令:

dsh plugin --profile web remove dsh-file-resource

本地开发安装:

npm install
npm run build
dsh plugin --profile web add C:\absolute\path\to\dsh-file-resource

本地存储与清理

默认缓存位于 $DSH_HOME/resources/dsh-file-resource/v1;未设置 DSH_HOME 时位于 ~/.dsh/resources/dsh-file-resource/v1。插件不会把副本或 Markdown 转换文件写进当前项目,也不会改动原文件。

  • 单文件上限:50 MiB。
  • 单次选择上限:20 个文件、合计 200 MiB。
  • 总缓存上限:1 GiB,按内容 SHA-256 去重。
  • 派生文本使用 gzip 压缩,并与原文件一起计入缓存上限。
  • 达到上限时只按 LRU 清理已经发送的旧资源;正在编辑的文件不会被后台淘汰。
  • 已解除引用的对象保留最多 7 天,启动时执行回收;没有常驻扫描器或清理定时器。

Token 与性能

文档全文不会直接塞进系统提示词。插件固定增加一个读取工具;按 Harness 自带的“4 字符约 1 token”估算,它的 schema 约为 188 tokens。文件索引约为:1 个文件 79 tokens、5 个文件 165 tokens、20 个文件 490 tokens。真正的文档内容仅在模型调用 read_uploaded_resource 时进入上下文,默认每次最多返回 8,000 字符,硬上限 24,000 字符。

发布前的小型真实文件基准:Host 冷导入约 12 ms、约 1.6 MiB 堆增量;DOCX/XLSX/PPTX 通常在 3–35 ms 内完成,PDF 第一次加载解析器约 0.1–0.6 秒。主机插件包约 51 KiB;PDF.js 只在第一次处理 PDF 时延迟加载。数据取决于机器和文件复杂度。

安全与隐私

  • 浏览器接口要求同源请求和插件专用请求头,资源 ID 与会话绑定。
  • 扩展名、声明类型和文件魔数交叉验证,拒绝伪装的可执行文件。
  • ZIP/Office 文件限制条目数、展开体积和压缩比,防止解压炸弹。
  • PDF.js 固定为已修复版本,并显式关闭 PDF 脚本与动态求值;限制页数与图片像素预算。
  • 文件内容中的指令一律被提示为不可信数据。
  • 插件不包含统计、遥测或第三方上传。只有用户发送消息后,所选模型提供方才会按正常 Harness 流程收到模型实际读取的内容。

安全问题请按照 SECURITY.md 私下报告;不要在公开 Issue 中披露可利用细节。

验证

npm test
npm run test:coverage
npm audit --omit=dev
npm run pack:check

当前测试覆盖文件选择、真实进度、取消、会话隔离、配额、缓存回收、恶意 ZIP 防护,以及真实 DOCX/XLSX/PPTX/PDF/ODF/EPUB/RTF 解析。

English

dsh-file-resource adds a unified attach entry to the existing DeepSeek Harness Web + menu. Images continue through Harness's native attachment pipeline. Documents are parsed locally into session-scoped, content-addressed resources and exposed to the model through one bounded read tool; no synthetic user message is shown.

Supported documents: PDF, DOCX, XLSX, PPTX, ODT, ODS, ODP, RTF, EPUB, plus common text and source-code formats. Legacy DOC/XLS/PPT files and automatic OCR for image-only PDFs are intentionally unsupported.

Install with:

dsh plugin --profile web add dsh-file-resource@0.1.0
# or: dsh plugin --profile web add github:liznee/dsh-file-resource#v0.1.0

The plugin has no telemetry or third-party file upload. See the Chinese sections above for cache limits, token estimates, security controls, and performance measurements.

License

MIT © liznee

Plugins relacionados