dsh-file-viewer:DeepSeek Harness 內的只讀文件預覽

前言

做 DSH 智能體時,經常會在對話裏引用工作區文件、日誌、CSV 或 artifact 輸出。默認做法常常是先下載,再交給本地應用打開;對圖片、PDF、JSON、源碼和大日誌,這種來回切換並不方便。

dsh-file-viewer 提供的是一個網頁內只讀預覽層:在 DeepSeek Harness 中直接打開和查看文件,不要求外部應用。它強調 Preview ≠ Execute:預覽不等於執行。

這是什麼

dsh-file-viewer 由 liguobao 維護,MIT 許可證。

它定位是 DeepSeek Harness 的只讀文件預覽插件,支持圖片、PDF、CSV、Markdown、JSON、YAML、源碼和大文件預覽。資料中的 package.json 版本號爲 0.3.1,並給出 client.platform 爲 web 的配置;資料線索也將其歸爲客戶端插件。

核心功能

下面介紹已覈實的能力。

支持的文件類型

  • 圖片預覽
  • PDF 預覽
  • CSV / TSV 表格預覽
  • 文本 / 日誌預覽
  • 源碼預覽
  • Markdown 預覽
  • JSON / JSONL 預覽
  • YAML 預覽
  • 未知類型回退

大文件策略

大文件按大小分級處理:

  • < 5 MB:整文件預覽
  • 5–50 MB:分塊處理
  • > 50 MB:頭部加載,並可繼續加載

只讀邊界

插件嚴格只讀:

  • 預覽不執行 shell 命令
  • 不執行腳本
  • 不執行宏
  • 不執行 HTML
  • SVG 通過 <img> 渲染
  • Markdown 清理後顯示

客戶端 API

插件提供 fileViewer.openFile 客戶端 API。

它可以用於:

  • 打開本地路徑
  • 打開 artifact:// locator
  • 指定行號
  • 強制指定 renderer

示例接口:

fileViewer.openFile(path, { line, renderer })

內容提供者

插件支持其他 host/client 插件註冊內容提供者,用於讀取自定義 locator,例如:

  • artifact://
  • object storage
  • remote APIs

遠程預覽依賴受信任 transport 插件的端點 allowlist。openExternal 不屬於遠程 surface。

主題適配

預覽樣式跟隨 Harness 主題自動適配明暗樣式。

版本兼容

v0.3.1 起兼容:

  • DSH v0.1.1-rc.2
  • DSH v0.1.2-alpha.1 包圖

DSH v0.1.2 alpha 包爲 host-provided peer dependencies。部分包可能尚未發佈到 npm;重生成 lockfile 時保持:

autoInstallPeers: false

安裝與啓用

已覈實資料未出現明確的 DSH 插件安裝命令。本文不憑插件名拼接安裝命令;具體安裝方式以插件倉庫或目錄頁給出的說明爲準。

# 已覈實資料未出現官方安裝命令,此處不使用未經驗證的命令

配置示例

文檔配置示例包含 enabled 和 extraRoots;默認值未完整說明。

# cordis.patch.yml / settings
- id: dsh-file-viewer
  name: dsh-file-viewer
  config:
    enabled: true
    extraRoots:
      - /srv/data

其中 extraRoots 用於增加允許讀取的目錄,例如 /srv/data。

Workspace 菜單補丁

workspace 行中的“瀏覽文件 / Browse files”入口是兼容性補丁。更新 Harness 後,需要重新運行補丁腳本:

DSH_HARNESS_SOURCE=/path/to/deepseek-harness node scripts/patch-workspace-menu.mjs

這個補丁腳本可以重複執行;當版本發生偏差時,腳本會報錯退出。

典型用法

打開本地文件

可以直接打開工作區內的文件:

const fileViewer = ctx.get('fileViewer')

fileViewer.openFile('/workspace/output/report.csv')

打開 artifact locator

也可以打開 artifact:// 類型的 locator:

fileViewer.openFile('artifact://run-42/report.csv')

指定行號

打開源碼或文本文件時,可以指定行號:

fileViewer.openFile('/workspace/src/main.ts', { line: 125 })

強制 renderer

如果希望強制使用某個 renderer,可以傳入 renderer:

fileViewer.openFile('/workspace/data.bin', { renderer: 'text' })

通過 workspace 菜單打開

經過上面的配置和補丁步驟後,可以通過 workspace 行的“瀏覽文件 / Browse files”菜單打開文件。

瀏覽器端註冊內容提供者

瀏覽器插件可以直接註冊類似 memory://preview.md 的內容提供者,並調用:

viewer.openFile('memory://preview.md')

適用場景與注意

適合以下場景:

  • 在 DeepSeek Harness 中快速查看 agent 輸出文件
  • 預覽工作區中的 CSV、JSON、YAML、Markdown、文本或源碼
  • 查看 artifact:// 指向的文件
  • 處理大日誌、大 CSV 或大文本文件
  • 讓其他 DSH 插件通過內容提供者接入預覽

使用前注意:

  • DSH 插件通常會在當前 Harness 進程權限範圍內運行;安裝前應檢查源碼、依賴與許可證
  • dsh-file-viewer 許可證爲 MIT
  • extraRoots 會擴大允許讀取的目錄範圍,應按需配置
  • workspace 瀏覽入口依賴兼容性補丁,更新 Harness 後需要重跑 scripts/patch-workspace-menu.mjs
  • DSH v0.1.2-alpha.1 相關 peer dependencies 可能尚未發佈到 npm;重生成 lockfile 時保持 autoInstallPeers: false
  • 遠程預覽依賴受信任 transport 插件的端點 allowlist

參考

  • 社區目錄頁:https://www.skillhub.cn/plugins/liguobao/dsh-file-viewer
  • GitHub:https://github.com/liguobao/dsh-file-viewer

社區目錄頁是獨立站點,不等同於 DeepSeek 或幻方官方應用商店。

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

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

小夜