dsh-plugin-verified-search
f0909172434
Verified current-source search workflow for DeepSeek Harness
PROJECT TOPICS
PROJECT README
A general file previewer for DeepSeek Harness (dsh).
When an agent turn produces files, the produced-files row under the closing
assistant message becomes a vertical, expandable list. Clicking any produced
file opens a right-docked panel that renders it in a style matching its type:
markdown with the official MarkdownText renderer (full GFM, tables,
fenced code, and TeX math — exactly like the chat), syntax-highlighted code
(~70 languages via bundled highlight.js), csv/tsv as HTML tables, images
inline, and text/code logs as monospace plain text.
MarkdownText, micromark + KaTeX),
💻 code (highlight.js syntax highlighting with a language badge),
📊 csv/tsv (quoted-field-aware table, 500-row cap), 🖼 images, 📃 text;
known binary formats get a specific "open externally" hint.Produced · N files ▸); one click expands ALL produced files (no chip cap),
each with its type icon, name, and an ↗ external-open button.GET /mdviewer/read
and reads through the deployment's own filesystem service, so local,
sandboxed, and remote (e.g. E2B) backends all work; text is capped at 4 MB,
images at 4 MB (served as base64 data URLs), directories and binary content
are rejected.web surface, @deepseek-ai/dsh-* packages at 0.1.0-rc.x
(developed against 0.1.0-rc.6).@deepseek-ai/dsh-client-ui-deliverables row
mounted (default in dsh-web-app) — it is the source of the produced-files
turn data this plugin reads.The web profile lives at ~/.dsh/profiles/web (adjust for your profile).
cd ~/.dsh/profiles/web
pnpm add jayhe-mdviewer
Then add one row to the profile's own cordis.patch.yml (see
install/cordis.patch.example.yml):
- insert:
- id: mdviewer
name: 'jayhe-mdviewer'
Restart the dsh web process — plugin-set changes take effect on restart.
The row is simultaneously a host row and the browser-roster entry: the
dsh.clientdeclaration inpackage.jsonmakes the client bundle part ofwindow.__DSH_BOOT__automatically.
cd ~/.dsh/profiles/web
# remove the `mdviewer` row from cordis.patch.yml, then:
pnpm remove jayhe-mdviewer
Produced · N files ▸;
click to expand the full vertical list.↗ beside an entry (or in the panel header) opens the file in the
external editor instead.src/index.ts host half: GET /mdviewer/read route (webServer + fs)
src/client/index.tsx client apply: locale dicts, styles, two slot entries
src/client/deliverables.ts turn-data reading (produced paths, .md filter)
src/client/turnTail.tsx produced-files row (chain entry, priority -1)
src/client/viewer.tsx overlay panel (fetch + MarkdownText)
deliverables turn data
(populated by @deepseek-ai/dsh-client-ui-deliverables from the mutation
tools' own locations), so a produced file is listed even when the model
forgets to mention it./mdviewer/read?path=…&cwd=… and renders the response
with MarkdownText.npm install
npm run build # esbuild bundles + tsc declarations → lib/
npm run typecheck # tsc --noEmit
lib/ is committed output and shipped in the npm package, so end users never
need a build step.
package.json.npm publish (runs prepublishOnly → rebuilds lib/).dsh-plugin topic so the community can find it.CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。