Skip to content
dsh.fish
Bundle

dsh-paste-files

Paste or drop files into the DSH composer: saves them under the current workspace and inserts the paths into your draft.

Source
lhh666-6
License
MIT
Updated
Updated 3 days ago

Readme

# dsh-paste-files

> GitHub: https://github.com/lhh666-6/dsh-paste-file
>
> npm: `dsh-paste-files`

把文件通过「粘贴 / 拖放 / 选择文件」保存到当前 DSH workspace,并在输入框中插入对应的 workspace 相对路径,方便模型用 DSH 自带的文件读取工具继续处理。

## 行为

- 在 composer 左侧增加一个 **粘贴文件** 按钮,可以多选文件。
- 在输入框内粘贴文件、或把文件拖进窗口时:
  - 如果只有图片,保留 DSH 原生图片附件行为,不拦截。
  - 只要包含非图片文件,就拦截该次粘贴/拖放,把所有文件上传并保存到当前会话 workspace。
- 保存位置:`<当前 workspace>/pasted-files/<时间戳>-<短随机>-<文件名>`。
- 保存完成后,把 workspace 相对路径以行内代码形式插入当前输入框草稿,例如:

  ```text
  `pasted-files/1724320000000-report.pdf`
  ```

## 架构

- **Host 面**:注册 `/_dsh-paste-files/upload` 路由,根据 `sessionId` 从 DSH SessionStore 读取当前会话 `cwd`,把上传的原始字节写入该 workspace。
- **Client 面**:注册到 `conversation.input.left` slot,提供按钮、文件选择器,以及 document 级 capture 阶段 paste/drop 监听。

## 开发

```sh
npm install
npm run typecheck
npm run build
```

## 安装

```sh
# npm 安装(推荐,预构建)
dsh plugin --profile web add dsh-paste-files
dsh plugin --profile desktop add dsh-paste-files

# 或直接从 GitHub 安装
dsh plugin --profile web add github:lhh666-6/dsh-paste-file
dsh plugin --profile desktop add github:lhh666-6/dsh-paste-file
```

安装后重启 DSH(或切换一次 profile)生效。

## 限制

- 浏览器无法从剪贴板拿到文件的绝对路径,因此插件采用「上传到 workspace 再插入相对路径」的方案。
- 当前默认单文件上限 64 MiB。
- 只是为了把文件变成模型可读的路径,不是向模型协议新增通用二进制附件。

Install

dsh plugin --profile web add github:lhh666-6/dsh-paste-file

Profile: web

  • This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source