Skip to content

dsh-file-path

Verified

dsh-file-path · v0.1.0 · MIT · Web UI

DeepSeek Harness plugin: drag unsupported files into the composer as workspace path references

Install

dsh plugin add dsh-file-path

Confirm the layer applied with dsh --profile default --dump-config — see the install guide.

Source

Published to npm without a public repository. Inspect the package contents before installing.

Tags

Creators

Readme

dsh-file-path

English

一个 DeepSeek Harness(dsh)插件:让 Web 输入框接受 dsh 内置附件不支持的文件 ——PDF、压缩包、Office 文档、任意二进制文件——并把它们转成工作区路径引用插入, 而不是作为消息附件上传。

这是一个社区插件,不是 DeepSeek 官方插件,与 DeepSeek 无关联、也未获得其背书。

为什么需要它

dsh 第一版附件只接受 PNG、JPEG、WebP、GIF。把 PDF 拖进输入框时,目前会提示 “仅支持图片”并丢弃文件。浏览器出于安全原因不会把拖入文件的真实磁盘路径暴露给网页 ——即使这个网页由本地 CLI 提供也不行。

dsh-file-path 利用 dsh 本身就是本地进程这一事实补上缺口:

  1. 把非图片文件拖入或粘贴进输入框;
  2. 插件浏览器端读取文件字节,调用本地 dsh 进程上的 filePathBridge/importFile RPC;
  3. 宿主端把文件写入当前会话工作区(默认 .dsh-files/<文件名>, 重名自动追加 -1-2 后缀);
  4. 输入框自动插入得到的工作区相对路径,模型用普通文件工具即可读取。

输入框工具行还有一个回形针按钮:打开对话框手动输入绝对路径或相对当前工作区的路径, 直接引用模型本来就能读到的文件,无需复制。

安装

打包并安装构建产物:

npm run build
npm pack
dsh plugin --profile web add ./dsh-file-path-0.1.0.tgz

或安装已发布的 npm 版本:

dsh plugin --profile web add dsh-file-path

或从 git 安装(prepare 脚本会现场构建;pnpm ≥10 首次会要求你允许执行构建脚本, dsh 会打印需要复制的 allowBuilds 片段):

dsh plugin --profile web add github:<you>/dsh-file-path#<commit-sha>

然后照常启动:

dsh --profile web --port 3080

web profile 自带 Web 应用组合包。自定义 profile 需要保证 dsh.profile.bundles 中在 dsh-file-path 之前有 @deepseek-ai/dsh-web-app

使用

  • 拖入或粘贴非图片文件:弹出导入对话框,显示文件名与保存位置;点击 “导入并插入路径”后,文件复制进工作区并插入路径。
  • 点击输入框工具行的回形针按钮:手动输入路径并插入(绝对路径或相对工作区路径均可)。
  • 受支持的图片(PNG/JPEG/WebP/GIF)保持 dsh 原有图片行为;混合拖入时,图片照常走 默认图片通道,只有非图片部分打开导入对话框。

配置

组合包补丁插入一行宿主插件。可在 profile 的 cordis.patch.yml 或任何更后的层覆盖:

- id: file-path
  config:
    importSubdir: .dsh-files   # 单个相对目录名
    maxFileBytes: 104857600    # 单个导入文件的解码后字节上限
  • importSubdir 必须是单个相对目录名(不能含 /\..);非法值会在插件 加载时响亮失败。
  • maxFileBytes 必须是正整数。浏览器端会在上传前提示超限文件;宿主端对同一限制 做权威校验。

实现结构

  • 宿主端lib/index.js):自包含的 Cordis 服务,注册为 ctx.filePathBridge。 它为 filePathBridge/importFilefilePathBridge/describe 注册严格的 Typert Remote 描述符,线缆输入在两侧都经过 schema 校验。importFile 解析 当前活跃会话的工作区,解码 base64 载荷,用临时文件加 rename 的方式写入 importSubdir 之下,并返回工作区相对路径。
  • 浏览器端lib/client.js):一个 dsh.client 模块,挂载两个 Remote 方法、 注册双语词典,并向 conversation.input.right 槽位贡献一个按钮。捕获阶段的 document 监听器接管包含非图片文件的拖放与纯文件粘贴;纯图片批处理完全放行, 混合批处理中的图片会重新派发给默认输入框监听器。

安全说明

  • RPC 只写入当前活跃会话自己的工作区,且限制在配置的单个 importSubdir 目录段内;文件名中的路径穿越字符会被剥离。
  • dsh Web 传输的 loopback/浏览器信任防线同样作用于 /api/filePathBridge/*
  • 安装插件意味着允许其代码在本地 dsh 进程内执行。和安装任何插件一样,请审阅源码 并锁定版本。

开发

需要 Node >=22.19

npm install
npm run check        # typecheck + 测试 + 构建
npm test             # 宿主服务与输入框控件测试
npm pack             # 构建后的 tarball

构建脚本(scripts/build.mjs)产出 ESM 宿主端和 window.__ModuleLoader__.load CJS 工厂形式的浏览器端;tsclib/types 下产出声明文件。

许可证

MIT