dsh-rfiles:爲 DSH 遠程 Web 界面補上文件上傳與下載

前言

在 DeepSeek Harness(DSH)裏跑 Agent 時,工作區文件和會話附件往往要在宿主側處理;若通過配對的遠程 Web 界面操作,原先缺少清晰的上傳、下載入口,手機或另一臺電腦上的文件很難按會話送進 Agent,也不便把 workspace 裏的產物拉回本機。dsh-rfiles 是裝在 DSH 宿主 上的 bundle 插件,爲 Web GUI 增加 文件(Files) 面板,提供分塊可續傳上傳、發送給 Agent、僅保存到工作區、工作區文件瀏覽下載,以及會話日誌 ZIP 導出;與 @linxin666/dsh-remote-web-ui 配套使用,不修改 DSH 核心。本地桌面使用 Web GUI 時不必安裝遠程 UI 插件。

這是什麼

  • 名稱:dsh-rfiles(npm 包名,倉庫 Aperops/dsh-rfiles)
  • 維護者:Aperops
  • 分類:聯網工具(社區目錄 SkillHub 條目)
  • 版本(資料記載):0.1.0;許可證 GPL-3.0-only
  • 定位:宿主側插件,註冊 rfiles 路由與小部件;傳輸與鑑權沿用 DSH 連接,路徑限制在會話工作區內。

核心功能

能力 行爲概要
發送給 Agent 多選文件、分塊進度;上傳完成後將真實附件與可選文字排隊到選定會話
只存入工作區 默認寫入 <workspace>/.uploads/,不發送提示;同名文件自動改爲 name (n).ext
拍照 / 相冊 依設備能力;PNG/JPEG/WebP/GIF 且 ≤ 20 MiB 可走圖片附件,其餘爲文件收據
下載工作區文件 目錄與麪包屑,每層最多 500 項;優先瀏覽器原生下載,另有 fetch/Blob 兜底
會話日誌 ZIP 調用 DSH 會話導出接口(含選定會話、子會話與附件對象),非整工作區打包
中斷上傳續傳 瀏覽器續傳記錄與宿主暫存仍在時,從已確認字節偏移繼續

面板會列出活躍會話,首次默認選最新會話。上傳、發送、下載前請覈對面板上的會話選擇器,不要假設它與當前對話視圖始終一致。

默認限制(可在 profile 的 cordis.patch.yml 覆蓋):8 MiB/塊、2 GiB/單文件、10 GiB 暫存預算;暫存目錄默認 $DSH_HOME/rfile-transfers/<uploadId>/。

環境與要求

dsh-rfiles 0.1.0 的 package.json 聲明:

  • DSH >=0.2.1-rc.3
  • Node.js >=22.19.0

安裝位置是實際運行 Web GUI 的 DSH 宿主 profile。配對遠程使用時,需另行安裝並配置 @linxin666/dsh-remote-web-ui 並完成設備配對。

插件在 DSH 進程權限下運行;安裝前建議閱讀倉庫源碼與 GPL-3.0-only 許可條款。

安裝與啓用

在 設置 → 插件(Settings → Plugins) 中從 npm 安裝 dsh-rfiles 並確認 bundle 已啓用。也可使用 CLI(若 profile 不是 web,請替換):

dsh plugin --profile web add dsh-rfiles

其他來源(無需構建):

# 已發佈的 Release 包
dsh plugin --profile web add \
  https://github.com/Aperops/dsh-rfiles/releases/download/v0.1.0/dsh-rfiles-0.1.0.tgz

# 源碼倉庫或本地包
dsh plugin --profile web add git+https://github.com/Aperops/dsh-rfiles.git
dsh plugin --profile web add /path/to/dsh-rfiles-0.1.0.tgz

bundle 內 cordis.patch.yml 會註冊 rfiles 插件行,一般無需手改 patch。安裝後重啓 DSH,刷新本地或配對遠程頁面,打開會話,點擊右下角 文件(Files)。0.1.0 面板按鈕爲中文。

可選配置示例(用戶 cordis.patch.yml 層):

- id: rfiles
  config:
    chunkBytes: 8388608
    maxFileBytes: 2147483648
    stagingBytes: 10737418240
    uploadDir: .uploads
    transferRoot: '' # 默認 $DSH_HOME/rfile-transfers

典型用法

上傳併發送給 Agent

  1. 打開 文件 → 上傳,覈對會話,保持 發送給 Agent。
  2. 選擇文件或 拍照 / 相冊;選完後自動開始上傳。
  3. 上傳完成時文件仍在宿主暫存區,尚未進入 Agent 隊列。
  4. 填寫可選說明,點擊 發送給 Agent;圖片是否被模型接受取決於模型能力。

只保存到工作區

  1. 選文件前切換到 只存入工作區。
  2. 上傳完成後查看條目上的保存路徑(默認 .uploads/)。
  3. 此模式不發送附件或提示;若要附件流程,切回 發送給 Agent 並重新選文件。

中斷後續傳

在同一瀏覽器/站點、同一會話、同一模式下重新選擇同一文件,或點 重試。匹配依據文件名、大小與最後修改時間,記錄自最後更新起 24 小時內有效;宿主暫存也必須仍在。取消上傳會清隊列並嘗試刪除當前暫存,不能當暫停用。

下載與日誌 ZIP

  1. 切到 下載,確認會話。
  2. 瀏覽工作區點擊文件觸發原生下載;遠程鏈接帶 /remote 前綴。
  3. 若導航被攔截或僅有請求頭配對憑據,用文件行 ⤓ 或 ZIP 旁的 通過請求保存。
  4. 下載會話日誌 ZIP 導出會話;不能在工作區面板裏刪除、重命名或任意目錄打包。

適用場景與注意

適合:依賴配對遠程 Web UI、需要大文件分塊上傳與續傳、要把文件以附件形式送進 Agent,或要從會話工作區/導出 ZIP 拉回設備的 DSH 用戶。

注意:

  • 上游 dsh-remote-web-ui 與 DSH 版本演進後,部分能力可能由原生界面覆蓋;升級後應在實際設備上驗證上傳、下載與 ZIP,再決定是否停用插件。
  • 遠程端到端 HTTP Range 是否可用取決於代理與隧道;資料不承諾遠程下載斷點續傳。
  • 卸載插件不等於清理 .uploads/ 工作區文件;暫存目錄需單獨確認後再刪。

常見排查:無 文件 按鈕時檢查 profile 是否啓用 bundle 並重啓;401/403 時檢查配對與 /remote/api/rfiles.*;上傳 409 offset-mismatch、413 分別對應偏移同步與配額。

結尾

dsh-rfiles 在不動 DSH 核心的前提下,爲遠程 Web 場景補齊文件傳輸與會話導出入口;安裝與行爲以倉庫 README 爲準。目錄頁:https://www.skillhub.cn/plugins/Aperops/dsh-rfiles;源碼與詳細說明:https://github.com/Aperops/dsh-rfiles。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜