deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
English · 中文
A dsh plugin that adds a Files (文件) tab to the conversation window. Pick the tab and the session area becomes a VSCode-style explorer: a file tree of the current workspace on the left, and a file viewer on the right.
Built as a fully out-of-tree plugin — the deepseek-harness source stays untouched. It registers into the same conversation.view ring as the shipped Trajectory tab, serves the tree and file contents over its own HTTP routes (ctx.webServer), and is styled entirely with the dsh design tokens (--dsw-*) and ui-primitives components.
Install the plugin from npm (published as @dsh-mixxed/dsh-client-ui-filesystem-manager):
dsh plugin --profile web add @dsh-mixxed/dsh-client-ui-filesystem-manager
The package declares dsh.bundle (its bundled cordis.patch.yml), so dsh plugin add automatically appends it to the profile's dsh.profile.bundles layer stack and the plugin mounts on the next boot — no manual cordis.patch.yml editing.
Restart the profile (new plugins are discovered at boot), open a session, and click the 文件 / Files tab.
pnpm install
pnpm run typecheck
pnpm test
pnpm run build
npm pack # produces dsh-mixxed-dsh-client-ui-filesystem-manager-<version>.tgz
dsh plugin --profile <name> add ./dsh-mixxed-dsh-client-ui-filesystem-manager-<version>.tgz
conversation.view ring (order 20, after Trajectory).md) rendered through the house MarkdownText (no line numbers)connection/reset clears the caches; tab re-entry is instantctx.fs and enforces canonical containment — no raw path from the browser is ever trusteddsh --profile <name> --dump-config | Select-String ui-filesystem-manager
The composed config shows the ui-filesystem-manager row, and $DSH_HOME/profiles/<name>/package.json lists @dsh-mixxed/dsh-client-ui-filesystem-manager under dsh.profile.bundles (auto-appended by dsh plugin add).
End-to-end (boot the profile on a spare port, then):
dsh --profile <name> --port 3800 # in one shell
node scripts/e2e.mjs # drives Chrome: tabs → tree → expand → viewer
Tune the read caps from your profile's own cordis.patch.yml — the user layer is applied after the bundle layer, so an id-targeted patch overrides the bundled mount row:
- id: ui-filesystem-manager
name: "@dsh-mixxed/dsh-client-ui-filesystem-manager"
config:
maxTextBytes: 524288 # text file cap before "file too large" (default 512 KiB)
maxImageBytes: 8388608 # image byte cap for the inline viewer (default 8 MiB)
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。