DeepSeek Harness 插件

UndeadSheep/dsh-file-preview#dsh-file-preview

Star 数 ★ 0 分类 UI 增强 收录于 2026-08-18

Web 客户端悬浮文件预览窗:懒加载文件树、CodeMirror 预览与窗内编辑保存、Markdown 与图片预览、Quick Open 搜索,以及点击会话中的路径直接打开。

安装

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

dsh plugin --profile web add github:UndeadSheep/dsh-file-preview#path:/packages/dsh-file-preview

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 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, …); dir nodes carry empty children, which the browser half fills lazily by calling listDir again when a directory is expanded.

Config

Key Default Meaning
maxFileBytes 2097152 Maximum UTF-8 byte length the preview will read
maxImageBytes 5242880 Maximum byte length of an inline image the preview will read

Workspace config files (read per Session, optional)

  • preview.config.jsonindentSize, useTabs, pollInterval, fontSize (with .prettierrc / package.json#prettier fallback for indent knobs)
  • preview-theme.jsonkeyword, string, number, comment, tag, function, type, variable, background, foreground
  • .vscode/settings.jsoneditor.tokenColorCustomizations and workbench.colorCustomizations are read as a fallback theme

Known limitations

  • Preview is text-only; binary or oversized files return not-text / too-large.
  • Syntax highlighting is a lightweight hand-written tokenizer (not highlight.js / TextMate), and a prettier engine cannot be embedded.
  • Auto-refresh is polling (pollInterval), not a real file watcher.

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →