在右侧栏浏览目录并内联预览各类文件
26.1/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/12 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ZHIUY666/dsh-file-preview该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 81 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
🔴 安全扫描发现高危能力自动 · 静态分析源码
v2.7.0🔴 扫描:高危尚无人工评估
静态扫描发现安装期即执行代码,或命令参数由运行时变量拼接(参数来源无法静态判定,从严处理)。
安装时即执行脚本读写/删除本地文件发起外部网络请求
查看扫描证据(共 30 处,展示前 28 条)
- 读取本地文件lib/index.js:130
const st = await stat(target).catch(() => null); - 读取本地文件lib/index.js:133
const names = await readdir(target); - 读取本地文件lib/index.js:137
const s = await stat(full).catch(() => null); - 读取本地文件lib/index.js:166
const st = await stat(target).catch(() => null); - 读取本地文件lib/index.js:214
const st = await stat(target).catch(() => null); - 读取本地文件lib/index.js:249
createReadStream(target, { start: from, end: to }).on("error", () => res.destroy()).pipe(res); - 发起网络请求lib/client.js:197
const res = await fetch(url); - 读取本地文件scripts/install.mjs:25
if (!existsSync(profileDir)) { - 写入本地文件scripts/install.mjs:32
mkdirSync(targetPkg, { recursive: true }); - 读取本地文件scripts/install.mjs:47
let patch = existsSync(patchPath) ? readFileSync(patchPath, "utf8") : ""; - 读取本地文件scripts/install.mjs:47
let patch = existsSync(patchPath) ? readFileSync(patchPath, "utf8") : ""; - 写入本地文件scripts/install.mjs:53
writeFileSync(patchPath, patch, "utf8"); - 读取本地文件scripts/uninstall.mjs:23
if (existsSync(targetPkg)) { - 删除本地文件递归scripts/uninstall.mjs:24
rmSync(targetPkg, { recursive: true, force: true }); - 读取本地文件scripts/uninstall.mjs:30
if (existsSync(patchPath)) { - 读取本地文件scripts/uninstall.mjs:31
let patch = readFileSync(patchPath, "utf8"); - 写入本地文件scripts/uninstall.mjs:35
writeFileSync(patchPath, patch.replace(/^ +/, "").replace(/ {3,}/g, "\n\n"), "utf8"); - 读取本地文件scripts/verify.mjs:33
const bundleCode = readFileSync(join(REPO, "lib", "client.js"), "utf8"); - 写入本地文件scripts/verify.mjs:106
writeFileSync(samplePath, "hello dsh-file-preview\n第二行\n", "utf8"); - 写入本地文件scripts/verify.mjs:128
writeFileSync(gbkPath, Buffer.from([0xd6, 0xd0, 0xce, 0xc4, 0x0d, 0x0a])); - 写入本地文件scripts/verify.mjs:133
writeFileSync(u16Path, u16Buf); - 写入本地文件scripts/verify.mjs:144
writeFileSync(imgPath, imgBytes); - 删除本地文件递归scripts/verify.mjs:168
rmSync(tmp, { recursive: true, force: true }); - 读取本地文件scripts/verify.mjs:172
const pkg = JSON.parse(readFileSync(join(REPO, "package.json"), "utf8")); - 读取本地文件scripts/verify.mjs:174
check("pkg exports ./client", pkg.exports?.["./client"] === "./lib/client.js" && existsSync(join(REPO, "lib", "client.js"))); - 读取本地文件scripts/verify.mjs:175
check("pkg main lib/index.js", pkg.main === "lib/index.js" && existsSync(join(REPO, "lib", "index.js"))); - 读取本地文件scripts/verify.mjs:178
if (existsSync(patchPath)) { - 读取本地文件scripts/verify.mjs:179
const patch = readFileSync(patchPath, "utf8");
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 右侧栏目录浏览
- 内联预览文件
- 前进后退与自动刷新
README
由 DeepSeek 最新模型翻译生成dsh-file-preview
DeepSeek Harness (DSH) Web 右侧文件预览面板插件 — 目录浏览 / 文件预览 / 前进后退历史 / 自动刷新。
A right-side file preview panel for the DeepSeek Harness Web UI: folder browsing, file preview, back/forward history, auto-refresh.
在 DSH Web 界面的右侧列添加一个文件浏览器:可以预览文件夹内容、切换文件夹、内联预览文件文本、返回上一步,并自动刷新目录/文件变化。
Adds a file browser to the right details column of the DSH Web UI: preview folder contents, switch folders, preview files inline, navigate back, and auto-refresh on changes.
功能 Features
- 📁 目录浏览 — 文件夹优先排序,显示大小与修改时间
- 🖼️ 多类型预览 — 按扩展名自动分发渲染器:
- 图片(png/jpg/webp/gif/svg/ico/bmp/avif)直接显示
展开完整文档(README 剩余 1 节)
dsh-file-preview
DeepSeek Harness (DSH) Web 右侧文件预览面板插件 — 目录浏览 / 文件预览 / 前进后退历史 / 自动刷新。
A right-side file preview panel for the DeepSeek Harness Web UI: folder browsing, file preview, back/forward history, auto-refresh.
在 DSH Web 界面的右侧列添加一个文件浏览器:可以预览文件夹内容、切换文件夹、内联预览文件文本、返回上一步,并自动刷新目录/文件变化。
Adds a file browser to the right details column of the DSH Web UI: preview folder contents, switch folders, preview files inline, navigate back, and auto-refresh on changes.
功能 Features
- 📁 目录浏览 — 文件夹优先排序,显示大小与修改时间
- 🖼️ 多类型预览 — 按扩展名自动分发渲染器:
- 图片(png/jpg/webp/gif/svg/ico/bmp/avif)直接显示
- PDF 内嵌查看(,浏览器内建阅读器)
- 视频 / 音频内嵌播放(/,支持拖动进度 — raw 接口带 Range)
- 代码 / 文本语法高亮(复用 harness 的 CodeBlock,js/ts/py/go/rust/yaml/…)
- JSON 自动格式化;CSV/TSV 渲染为表格;Markdown 轻量渲染(标题/代码块/列表/引用)
- 其余二进制文件给出提示 + 下载链接
- 🔤 编码自动识别 — BOM 探测(UTF-8 / UTF-16LE / UTF-16BE);UTF-8 解码失败自动回退 GBK(中文 Windows 常见),标题栏显示实际编码
- 🔀 切换文件夹 — 点击目录进入、点击面包屑任意上级段跳转、↑ 上级目录
- ↩️ 返回上一步 — ← / → 浏览历史栈(每会话持久化到 localStorage),点击任意历史目录可跳回
- ⏱ 自动刷新 — 默认开启,2.5s 轮询当前目录/文件(内容未变化不重渲染);⏱ 按钮可开关,⟳ 手动刷新
- 📌 会话跟随 — 默认打开当前会话的工作目录 (cwd);每个会话独立记忆上次路径
- 原生右侧列交互:拖动分隔条调宽、窄窗口自动让步折叠
架构 Architecture
双面单包(与官方 @deepseek-ai/dsh-client-* 相同模式):
| 半面 | 文件 | 作用 |
| host(Node) | lib/index.js | HTTP 接口:/file-preview/list(目录列表)、/file-preview/read(文本读取+编码识别)、/file-preview/raw(原始字节流,带 Range/206 与 ETag/304) |
| client(浏览器) | lib/client.js | 以 priority: -1 覆盖 details 槽,渲染右侧面板;在会话头部注册 "📁" 开关按钮 |
浏览器端数据经同源 fetch("/file-preview/...") 获取;路径校验:原始路径必须为绝对路径,可选 allowList 白名单。/file-preview/read 支持 maxBytes=0(媒体预览时仅取元数据,内容走 raw 流式)。
安装 Install
要求:DSH Web profile(默认 ~/.dsh/profiles/web)。
方式一:一键脚本(推荐)
从仓库克隆后,在仓库根目录执行
node scripts/install.mjs
脚本会把包复制到 <dsh home>/profiles/node_modules/dsh-file-preview/,并在 cordis.patch.yml 追加挂载行(已存在则不重复)。
方式二:手动
1. 把包放到 profile 的 hoisted node_modules
cp -r . "$HOME/.dsh/profiles/node_modules/dsh-file-preview"
2. 在 ~/.dsh/profiles/web/cordis.patch.yml 追加
dsh-file-preview:右侧文件预览面板
- insert:
- id: file-preview
name: 'dsh-file-preview'
方式三:npm / git 依赖
npm install <this-repo-url> --prefix "$HOME/.dsh/profiles/web"
或拷进 hoisted 根
npm install <this-repo-url> --prefix "$HOME/.dsh/profiles"
安装后 重启 dsh(host 插件与浏览器插件图均在启动时组装),刷新浏览器页面。会话头部出现 📁 按钮,点击即打开右侧文件预览(或直接拖动右侧分隔条)。
配置 Configuration
cordis.patch.yml 中 file-preview 行的 config(整段替换,缺省键需写全):
- insert:
- id: file-preview
name: 'dsh-file-preview'
config:
maxReadBytes: 1048576 # 文本预览上限(字节),默认 1MB binaryCheckBytes: 4096 # 二进制嗅探样本长度
allowList: [] # 允许访问的根目录白名单;空数组 = 任意可读绝对路径
卸载 Uninstall
node scripts/uninstall.mjs # 移除包并回滚 cordis.patch.yml
或手动:删除挂载行 + 删除 profiles/node_modules/dsh-file-preview 目录
然后重启 dsh。
已知取舍 Known Trade-offs
- 右侧 details 列原有「工具调用详情」面板会被本插件替换(工具结果在聊天消息内仍可见);卸载插件后自动恢复。
- 自动刷新采用轮询(2.5s),不是文件系统事件推送。
- 绑定非回环地址(如 0.0.0.0)时,/file-preview 接口对局域网同样开放,请配合 allowList 使用。
开发与测试 Development
node scripts/verify.mjs # 冒烟测试:bundle 注册 / apply 流程 / host 路由行为 / patch 合法性
License
MIT © ZHIUY预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
ZHIUY666/dsh-file-preview
在右侧栏浏览目录并内联预览各类文件
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,350已汉化DSH
71.5
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,506已汉化DSH
71.1
AI 矢量设计工具ZSeven-W/openpencil
全球首个 AI 原生开源矢量设计工具。
★ 7,027已汉化DSH
71.1
这是你的仓库?认领条目