deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
A DSH (DeepSeek Harness) plugin: copy a file in Windows Explorer, paste it into the DSH chat input, and its real absolute path is inserted automatically — the Codex-style file reference flow, without leaving the browser.
⚠️ This is NOT an npm package. You cannot
npm installit, and it cannot be mounted incordis.yml. The two files underplugin/are function bodies for DSH'scordis_definetool (a dynamic Cordis plugin). To install, follow Install & use below.
Browsers never expose the real absolute path of a pasted file — clipboardData.files[].name only gives the basename, by security design. Codex can show full paths because it runs in a terminal, not a browser.
This plugin works around that with a simple trick: at paste time, the host half reads the Windows clipboard's file drop list (via a nested STA PowerShell process using .NET Clipboard.GetFileDropList() — works on both Windows PowerShell 5.1 and PowerShell 7+). When you Ctrl+C a file in Explorer, the clipboard keeps the full path list — so the host can recover the real absolute paths and send them back to the browser.
| Thing | Requirement |
|---|---|
| OS | Windows (PowerShell 5.1 or 7+ — both supported) |
| Browser | Chromium-based (Edge / Chrome) |
| DSH | Web GUI running on the same machine & Windows session as the files |
| Note | DSH backend must be on the same PC as the browser (localhost setup works) |
This is a dynamic Cordis plugin — no npm install needed; it lives for the current session (reload after a DSH restart if you need it again).
🪄 Zero-manual-install option: open a DSH chat, paste the contents of plugin/host-half.js and plugin/client-half.js, and say: "Install this dynamic plugin: code.host from the first file, code.client from the second, then run it." The agent defines and runs it for you.
cordis_define tool:plugin/host-half.js content into code.hostplugin/client-half.js content into code.clientidPrefix (e.g. fpst) and a name/purposecordis_run and approve the Run in the UI (the client half needs browser authorization).Ctrl+C a file (or folder / multiple files), then Ctrl+V into the DSH input box:D:\work\report.docxTip: pasting a screenshot (no file list on the clipboard) keeps DSH's original behavior — it's attached as an image, not turned into text.
Explorer Ctrl+C (file) ──► clipboard holds CF_HDROP file list
Browser Ctrl+V (composer)
│ window 'paste' listener (capture phase) takes over
▼
host.call('paste-paths', { files: [{name,size,type}] })
│
▼ host half runs (unconfined, read-only command):
│ read clipboard file list (.NET, PS 5.1 / 7 compatible) ──► real absolute paths
▼
paths inserted at the caret (space-separated, quoted when needed)
Edge cases handled:
The clipboard query runs with danger-full-access. The dynamic host half hangs under the host root context (it has no session object), so it cannot resolve a session-scoped sandbox policy; the ACL sandbox runner cannot start for the agentless fallback workspace root (its temp dir sits inside the fallback workspace). The command is fixed and read-only (pure clipboard read, no filesystem access), so running it unconfined is safe. If you want a session-scoped policy instead, resolve the policy with your session and pass sandboxPolicy explicitly.
Clipboard.GetFileDropList). macOS (osascript/pbpaste) and Linux (xclip) support could be added on the same host half.@Remote / ctx.remote), and that assembly requires an explicit /remote value import inside the DSH web composition — a build-time coupling only DSH maintainers can open for third-party packages. If that changes, an installable npm form (with dsh.client metadata) becomes a straightforward follow-up.DataTransfer/ClipboardEvent and a capture-phase listener.CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。