DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Copy File Path — DeepSeek Harness 插件(DSH Plugin)
← Plugins
C

dsh-copy-file-path

Copy File Path

DSH 插件:在 dsh Web 交付文件卡片的「⋯」菜单中添加“复制相对路径”和“复制绝对路径”。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:Meowrium/dsh-copy-file-path#b32dccb51a4b1d974f5b8bc735d7ad17cca6122f
README兼容性版本

兼容性与来源证明

Copy File Path 以 dsh-copy-file-path 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/9/19

版本

0.1.0stable
2026/9/19

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/9/19
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

继续浏览 productivity-workflow 分类下经过校验的插件。

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Client Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。Web All@linxin666/dsh-web-allDSH Web UI 全家桶聚合插件:一键安装全部功能插件(task-board / git-graph / pet / remote-web-ui / web-ui-settings / skin-center / community-plugins / compat shim)。compat 桥接层已并入本包(src/client),无需独立 compat npm 包。Agent Teams@nanmicoder/dsh-agent-teamsAgentTeams for DeepSeek Harness:通过自然语言驱动多智能体团队协作(队长、成员、具有依赖关系的任务、消息传递),并在 Web GUI 中提供树状监视器

README

dsh-copy-file-path

中文说明 / Chinese README

Adds Copy relative path and Copy absolute path to the delivered-file card menu of the DeepSeek Harness (dsh) web UI.

At the end of a turn, dsh shows the files that turn delivered as cards. Each card has an Open button and a ⋯ menu holding Open in default app and Show in File Explorer / Open containing folder. This plugin appends two more rows to that menu:

RowCopies
复制相对路径 / Copy relative paththe path relative to the session workspace
复制绝对路径 / Copy absolute paththe absolute host path

A click copies the value and shows a short confirmation pill with what was copied.

⋯  ┌──────────────────────────┐
   │ ↗  Open in default app   │  ← shipped by dsh-client-ui-deliverables
   │ ▤  Show in File Explorer │
   │ ⧉  Copy relative path    │  ← this plugin
   │ ⧉  Copy absolute path    │  ← this plugin
   └──────────────────────────┘

Install

dsh plugin --profile web add github:Meowrium/dsh-copy-file-path

Then restart dsh web and hard-refresh the page (Ctrl+Shift+R) — the host mounts the bundle at startup and the browser shell rebuilds its client modules.

Why this needs a plugin

Those menu rows are a hard-coded items array inside @deepseek-ai/dsh-client-ui-deliverables, rendered by the @deepseek-ai/dsh-client-ui-primitives Menu (a role="menu" list portalled to document.body). There is no slot, registry or hook for extra rows, and a shadowing plugin would have to reimplement the whole card.

So this plugin post-processes the DOM instead — the same technique as dsh-mermaid: no core patch, no monkey-patching of React internals. It watches for that portal, and while a delivery card's chevron is expanded (aria-expanded="true") it clones the last row, relabels it, gives it a copy icon and owns the click. The injected rows are plain DOM: the click handler stops propagation so the React root never sees the event, and the popup is dismissed through the same outside-pointerdown path a real click elsewhere would use.

Where the two paths come from

Nothing is guessed and nothing is rewritten — every value is taken from what dsh itself already has:

ValueSource
Absolute paththe card's preview-button title, i.e. exactly what dsh resolves and opens (resolveWorkspacePath(cwd, file.path)). Copied verbatim, separators untouched.
Relative paththe path the turn declared to the present tool, recovered from the card's own aria-labels ({path} 的更多文件操作 / More file actions for {path}). If the declaration was itself absolute, it is recomputed against the workspace root.
Workspace rootderived from that (absolute, declared) pair — exact by construction. The client session store (sessions.list) is only the fallback, for cards whose labels carry no declared path.

If a value cannot be established, that row is simply not offered — an unusable path is never copied.

Compatibility

  • dsh web UI with delivered-file cards. Tested against 0.1.6-alpha.1 on Windows; not verified against older lines (the dsh.client / bundle shape is shared with the 0.1.5 line, but that is untested here).
  • No runtime dependencies. The browser half uses the DOM plus the optional locale and sessions client services: inject is empty, so the plugin still loads — English labels and card-derived workspace root — when either service is absent.

Tests

Both harnesses run without a dsh instance:

node test/paths.test.mjs        # 35 assertions on the path helpers

test/fixture.html reproduces the delivery card plus the primitives menu portal (structure read from the shipped 0.1.6-alpha.1 code), loads lib/client.js through a stub module loader and runs 23 checks in a real browser: injection and label language, both copied values, menu dismissal, no event leakage into the React container, a negative control (an unrelated popup gets nothing), idempotence, and full teardown. Open the file in a browser — results render on the page and in document.title.

Limitations

  • Only the delivered-file card menu is covered. The "Files changed" chips and the sidebar file tree have no menu of their own, so they are untouched.
  • The menu belongs to a shipped component: a future dsh release that changes the card markup may need this plugin updated. The detector degrades by injecting nothing rather than by mislabelling an unrelated menu.
  • Copies text only: no file is read, opened or transmitted, and there is no host access at all (the host half is deliberately inert).

Uninstall

dsh plugin --profile web remove dsh-copy-file-path

License

MIT