Web 客户端悬浮文件预览窗:懒加载文件树、CodeMirror 预览与窗内编辑保存、Markdown 与图片预览、Quick Open 搜索,以及点击会话中的路径直接打开。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:UndeadSheep/dsh-file-preview#path:/packages/dsh-file-preview
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
该插件的 README 只有英文版本。
Workspace file-preview host half: a Typert Remote (filePreview) that lists the
workspace tree, reads/writes text files, and resolves the preview theme and config for
the browser half.
The browser UI lives in a separate package:
@undeadsheep/dsh-client-ui-file-preview.
Remote surface
| Method | Request | Result |
|---|---|---|
listDir |
{ sessionId, path } |
Ok<FileTreeNode[]> | Rejected |
readFile |
{ sessionId, path } |
Ok<{ path, content }> | Rejected |
readImage |
{ sessionId, path } |
Ok<{ path, mimeType, data }> | Rejected |
writeFile |
{ sessionId, path, content } |
Ok<{ path }> | Rejected |
readTheme |
{ sessionId } |
Ok<{ colors, bg, fg }> |
readConfig |
{ sessionId } |
Ok<{ indentSize, useTabs, pollInterval, fontSize }> |
Business results use the repo's { ok: true, value } | { ok: false, error: { code, ... } }
convention; the generated ./remote face wraps them in the RemoteResult carrier.
Wire codecs are generated from the @Remote method types by typert codegen — there is
no hand-written schema file.
listDir lists a single directory (path = '' for the workspace root) and skips
heavy/noise directories (node_modules, .git, .next, .ssh, …) plus sensitive
filenames (.env*, id_rsa*, *.pem, *.key, …). A single listing is capped at
1000 children. Dir nodes carry empty children, which the browser half fills lazily
by calling listDir again when a directory is expanded. readFile / readImage /
writeFile also refuse those sensitive paths, so typing them in Quick Open does not
bypass the tree filter.
Config
| Key | Default | Meaning |
|---|---|---|
maxFileBytes |
2097152 | Maximum UTF-8 byte length the preview will read or write |
maxImageBytes |
5242880 | Maximum byte length of an inline image the preview will read |
Workspace config files (read per Session, optional)
preview.config.json—indentSize,useTabs,pollInterval,fontSize(with.prettierrc/package.json#prettierfallback for indent knobs)preview-theme.json—keyword,string,number,comment,tag,function,type,variable,background,foreground.vscode/settings.json—editor.tokenColorCustomizationsandworkbench.colorCustomizationsare read as a fallback theme
Known limitations
- Preview is text-only (plus raster
png/jpeg/gif/webp); binary, SVG-as-image, or oversized files returnnot-text/too-large. Astatwith nosizeis refused rather than reading the whole file into memory. Writes use the same byte cap as text reads. listDirreturns at most 1000 children per directory.- Symlink following after
resolveis the hostctx.fsimplementation's responsibility; this plugin re-resolves search children againstworkspaceRootbut cannotrealpathon its own. - Syntax highlighting is a lightweight hand-written tokenizer (not highlight.js / TextMate), and a prettier engine cannot be embedded.
- Auto-refresh is polling (
pollInterval, clamped 500–60000 ms), not a real file watcher.
链接
同类插件
zhu1090093659/dsh-web#packages/dsh-task-board★ 8262
侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
zhu1090093659/dsh-web#packages/dsh-web-all★ 8262
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。
omdsh-dev/DSH-better-sidebar★ 3943
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。
ccch1mneyyy/dsh-TUI★ 3913
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 3793
右下角常驻的小鲸鱼挂件:余额、今日已用与每轮对话消耗(含峰谷价),余额预警与今日预算的泡泡内容都可编辑;泡泡点击序列模块化自定义,支持并列加权 A/B、随机台词与随机图片;内置 30+ 厂商模板(OpenAI / OpenRouter / Kimi / 硅基流动 / 方舟 / 智谱 / MiniMax 等),按模型查余额与订阅额度;另有任务结束音效、导入音频、自定义角色与资源管理。数据全在本机,无遥测。
Devin-AXIS/deepseek-design#deepseek-idesign★ 1414
可视化设计工作室,支持网站、App 原型、海报、信息卡、报告和杂志的模板创建、元素编辑、选区级 AI 草稿衔接与导出。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。