dsh-file-viewer
キュレーションリスト掲載アーカイブ済みliguobao/dsh-file-viewer
Web UI 内でファイルを直接開いて確認できるユニバーサルファイルプレビュー。外部アプリ不要。
このリポジトリはアーカイブ済みで、読み取り専用・メンテナンス停止です。インストール前にコードをよく確認してください。
$ dsh plugin add dsh-file-viewer5
スター
0
フォーク
TypeScript
言語
MIT
ライセンス
2026-08-19
作成日
2026-09-22
最終プッシュ
README
DSH File Viewer
English | 中文
⚠️ Archived — this project is no longer maintained.
Development has stopped: no further releases, bug fixes, or compatibility updates will be published. It was verified against DeepSeek Harness through
dsh-v0.1.5-rc.1, so later Harness versions may break it — in particular the workspace "…" menu patch (scripts/patch-workspace-menu.mjs). Issues and pull requests will not be reviewed. The source stays available under the MIT license; please fork it if you want to carry the work forward.
Online: dsh.r2049.cn
A universal, read-only file preview layer for DeepSeek Harness: open and inspect files right inside the web UI — no external application needed.
Preview ≠ Execute. The viewer is strictly read-only: previewing a file never runs shell commands, scripts, macros, or HTML. SVG is rendered through
<img>, and Markdown is sanitized before display.
Supported file types
| Type | Renderer |
|---|---|
| PNG / JPG / GIF / WEBP / SVG / BMP | Image (fit, zoom, pan, dimensions) |
| PDF.js (page nav, page input, zoom, fit width/page) | |
| CSV / TSV | Data table (delimiter auto-detect, sticky header, row numbers, search, sort, column resize, windowed rows, chunked loading) |
| TXT / LOG / OUT / INI / CONF | Text (line numbers, wrap, search, font size, chunk navigation) |
| JS / TS / Python / Go / Rust / Java / C/C++ / C# / Shell / HTML / CSS / SQL / … | Code (highlight.js, read-only) |
| Markdown | Preview (sanitized) + Source |
| JSON / JSONL | Tree (expand/collapse, copy value/path) + Source |
| YAML | Source + parsed Tree |
| anything else | Fallback (metadata + Open externally / Reveal / Copy path / optional Open as text) |
How it works
- Host half (
dist/index.js) registers the/fileviewerauthenticated RPC channel and exposes both afileViewerContentprovider registry and afileViewerHostbounded service for trusted transport plugins. The viewer does not assume content lives in a local folder: other host plugins can register readers for locators such asartifact://run/report.json, object storage, generated output, or remote APIs. A boundary-checkedctx.fsprovider is installed only when that service is available; on the DSH v0.1.2+ package graph it discovers workspace roots fromctx.workspaceRegistry, live session cwd values fromctx.sessions, and native open support fromctx.sessionController. - Client half (
dist/client.js) provides thefileViewerservice (ctx.get('fileViewer')→openFile(path, { line, renderer })) and renders the viewer as aconversation.viewtab beside Chat and Trajectory. It opens from:- produced-file chips in the conversation (
conversation.chat.turnTail, priority -1 — clicking an agent-generated file previews it in-app), or - the "浏览文件 / Browse files" entry added to each workspace row's "…" menu (see the compatibility patch below).
- produced-file chips in the conversation (
- Workspace "…" menu patch (
scripts/patch-workspace-menu.mjs): the workspace browser renders its row menu from a hardcoded list with no slot hook, so this script applies guarded, idempotent edits either to adeepseek-harnesssource checkout (verified throughdsh-v0.1.5-rc.1) or to an installed@deepseek-ai/dsh-client-ui-workspaceclient bundle. It adds abrowseFilesmenu item (zh/en labels), anonSelectbranch callingwindow.__dsfvBrowseWorkspace(workspaceId), and the dictionary keys. It aborts loudly on version drift and can be re-run safely after Harness updates (DSH_HARNESS_SOURCE=/path/to/deepseek-harness node scripts/patch-workspace-menu.mjs). - Large-file strategy:
< 5 MBwhole-file,5–50 MBchunked streaming,> 50 MBhead-only with explicit "Load more / Go to end" navigation. Range reads are capped (8 MiB per call) and text/CSV rows are windowed, so a 500 MB log never lands in browser memory. - Theming: styles use
--dsw-alias-*tokens and match Harness's details panel proportions, so light/dark follow the Harness theme automatically.
Compatibility
dsh-file-viewer v0.3.4 and later support DSH v0.1.1-rc.2 plus the breaking
v0.1.2+ package graph, verified through dsh-v0.1.5-rc.1. On rc2 the host RPC
channel is registered with an explicit loopback authority and workspace
discovery uses the legacy apiProxy fallback. On v0.1.2+ the viewer
additionally uses ctx.workspaceRegistry, ctx.sessions, and
ctx.sessionController. The client metadata depends only on packages shared by
the supported graphs; their transitive dependencies provide the
generation-specific runtime services. On v0.1.2+ the viewer also accepts the
conversation.view focus request and treats its opaque focus value as a file
locator.
DSH and React packages are host-provided optional peer dependencies for this
plugin. This is required by v0.1.2+ profiles, which keep peer auto-install
disabled (autoInstallPeers: false): installing the plugin must not add or
require a second copy of the in-box platform packages. Because npm semver does
not match later prereleases such as 0.1.5-rc.1 through
>=0.1.2-alpha.1 <0.2.0, the peer ranges explicitly include
>=0.1.5-rc.1 <0.2.0.
The Workspace row Browse entry remains a compatibility patch because upstream
@deepseek-ai/dsh-client-ui-workspace has no third-party menu slot. Re-run
scripts/patch-workspace-menu.mjs after updating Harness; the script is
idempotent and aborts on version drift.
Public API
// client side, any web plugin:
const fileViewer = ctx.get('fileViewer')
fileViewer.openFile('/workspace/output/report.csv')
fileViewer.openFile('artifact://run-42/report.csv')
fileViewer.openFile('/workspace/src/main.ts', { line: 125 })
fileViewer.openFile('/workspace/data.bin', { renderer: 'text' }) // force a renderer
Provide content from another host plugin
UI・体験 の他のプラグイン
dsh-tui
by ccch1mneyyy
Claude Code 風の全画面 TUI プラグイン。鯨トップバー、リアルタイム状態行、思考ストリーミング、Esc 二連打の巻き戻し、コンテキスト進捗バーと TPS メーター搭載。npm で一発インストール
baoyu-design
by jimliu
Claude Designをローカルで動かすAgent Skillです。claude.ai/designを使わず、UIモック、プロトタイプ、スライド、ワイヤーフレームを自己完結型HTMLとして生成します。
dsh-better-sidebar
by omdsh-dev
ファイル表示・編集、ターミナル、Git、サブエージェントのページを内蔵し、サードパーティによる新規サイドバーページの登録にも対応する拡張可能なサイドバー基盤
dsh-claude-style
by nwflower
DeepSeek HarnessのWeb GUIをClaude Code Desktop風に整えるテーマ。見慣れた配色とデスクトップ感のある操作環境を提供します。
