deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
A dual-face DeepSeek Harness plugin that makes each produced-file chip in the 「产物」/ "Produces" row (the row of file chips under assistant messages) open a small dropdown menu with per-file actions: open the file, copy its path, reveal it in your native file browser, or open a terminal cd'ed into the file's directory.
open -R, selects the file),
Linux file manager (xdg-open on the parent folder), Windows Explorer
(explorer /select,).x-terminal-emulator / gnome-terminal /
konsole on Linux, or cmd on Windows. Every trigger opens a fresh
window (each action gets its own terminal, no extra permissions needed).role="menuitem" and the chips expose aria-haspopup /
aria-expanded.node:child_process; the client uses only the platform's react seed.web), i.e. dsh web.>= 22.6.0.# Install from GitHub (pnpm git spec; #main pins the default branch):
dsh plugin --profile web add github:yumm007/dsh-reveal-files#main
Building from source. GitHub installs build the package during install; pnpm asks once for an
allowBuildsgrant, then proceeds. If it does (or if the build is blocked), add the package toallowBuildsin your profile'spnpm-workspace.yamland re-run the command. A prebuilt npm release skips this step entirely.
dsh plugin forwards the arguments to pnpm inside the profile directory and
then reconciles dsh.profile.bundles. Because the package declares
dsh.bundle.patch, it joins the profile layer stack automatically — no manual
editing of cordis.yml is required.
After installation, restart the web profile:
dsh web
The plugin loads as a bundle on boot: the Host half registers the
POST /api/reveal-files and POST /api/show-in-terminal routes and the
client half mounts the drop-down menu in the produced-files row.
write / edit /
mutation tool result in a turn).The plugin row in cordis.patch.yml accepts:
- insert:
- id: dsh-reveal-files
name: 'dsh-reveal-files'
config:
enabled: true # register the reveal route (default true)
revealTimeoutMs: 10000 # per-command timeout, ms (default 10000)
Override these in the profile's own cordis.patch.yml if you need to.
| Layer | File | Responsibility |
|---|---|---|
| Host | lib/index.js |
Cordis plugin row dsh-reveal-files (injects webServer and sessions) and registers POST /api/reveal-files (reveal) and POST /api/show-in-terminal (frontmost terminal cd). Runs open -R / xdg-open / explorer /select, and osascript / terminal emulators per platform, resolves relative paths against the session cwd, and returns JSON results. |
| Client | client/client.js |
Web module (window.__ModuleLoader__.load), registered by the harness client module system. Claims the conversation.chat.turnTail chain with priority: -1 and a select that reads the turn's deliverables data (the same vocabulary the built-in row uses), then renders the chips row plus the two icon buttons. |
priority: -1?The turn-tail slot is a chain: entries are tried in ascending priority order
and the first non-null select result wins. The built-in produced-files row
registers at priority 0. Registering at -1 places this plugin's entry
first, so the reveal icon is rendered while keeping identical file-detection
behavior. Without the explicit priority, the two entries would tie at 0 and
the built-in row would silently win.
dsh plugin --profile web remove dsh-reveal-files
The reconcile step also drops the package from dsh.profile.bundles; restart
the web profile afterwards.
For local development against a checkout, install it from disk and re-run
the add after each edit — the profile's dependency is a hard link, so the
installed code follows your working tree:
dsh plugin --profile web add file:/absolute/path/to/dsh-reveal-files
# after editing: dsh plugin --profile web add file:/absolute/path/to/dsh-reveal-files
# or force a reinstall: pnpm --dir ~/.dsh/profiles/web install --force
The web server serves the client bundle from disk with a rev-hashed URL, so a refresh picks up client changes; Host route changes require a restart.
See CHANGELOG.md.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。