Chuyển đến nội dung chính

dsh-file-path

Đã xác minh

dsh-file-path · v0.1.0 · MIT · Giao diện web

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

Cài đặt

dsh plugin add dsh-file-path

Xác nhận layer đã áp bằng dsh --profile default --dump-config — xem hướng dẫn cài plugin.

Mã nguồn

Phát hành lên npm mà không có repository công khai. Hãy kiểm tra nội dung package trước khi cài.

Thẻ

Tác giả

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