← 返回列表
未验证
给 DeepSeek HarnessdshWeb 前端的交付文件卡片菜单加上「复制相对路径」和「复制绝对路径」两项。
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/19 · 已提供中文文档
dsh plugin: adds 复制相对路径 / 复制绝对路径 (copy relative / absolute path) to the delivered-file card menu of the DeepSeek Harness web UI. / dsh Web 交付文件卡片菜单增加复制相对路径与复制绝对路径。
综合分
29.3
GitHub 分
29.3
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add Meowrium/dsh-copy-file-path该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
信任档位:已验证本站已于 0 天前真实安装成功
- 是什么
- dsh 原生插件 · ui
- 装得上吗
- 本站已真实安装成功(非静态推断)
- 安全吗
- 本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
- 还在维护吗
- 活跃:最近一次提交在 6 天前
档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →
🟢实装验证通过· 2026/9/26
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/26(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-client-ui-deliverables用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
由 DeepSeek 最新模型翻译生成dsh-copy-file-path
English README
给 DeepSeek Harness(dsh)Web 前端的交付文件卡片菜单加上「复制相对路径」和「复制绝对路径」两项。
每轮对话结束时,dsh 会把该轮交付的文件显示成卡片。卡片上有一个「打开」按钮,以及一个「⋯」菜单,里面只有「用默认应用打开」和「在文件资源管理器中显示」(Linux 上是「打开所在文件夹」)。本插件在这个菜单末尾追加两项:
| 菜单项 | 复制的内容 |
| --- | --- |
| 复制相对路径 | 相对当前会话工作区的路径 |
| 复制绝对路径 | 主机上的绝对路径 |
点击即复制到剪贴板,并弹出一个短提示显示复制了什么。
⋯ ┌──────────────────────────┐
│ ↗ 用默认应用打开 │ ← dsh-client-ui-deliverables 自带
│ ▤ 在文件资源管理器中显示 │
│ ⧉ 复制相对路径 │ ← 本插件
│ ⧉ 复制绝对路径 │ ← 本插件
└──────────────────────────┘
安装
dsh plugin --profile web add github:Meowrium/dsh-copy-file-path
装完重启 dsh web,并硬刷新页面(Ctrl+Shift+R)——宿主在启动时装配 bundle,浏览器端需要重建客户端模块。
为什么非得写插件
那两行菜单是 @deepseek-ai/dsh-client-ui-deliverables 里硬编码的 items 数组,由 @deepseek-ai/dsh-client-ui-primitives 的 Menu 渲染(一个 role="menu" 的列表,portal 到 document.body)。既没有 slot、注册表或钩子可以插行,想 shadow 就得把整张卡片重写一遍。
所以本插件走DOM 后处理这条路(和 dsh-mermaid 同一套办法):不改内核、不猴补 React 内部。它盯着那个 portal,当某张交付卡片的箭头处于展开态(aria-expanded="true")时,克隆最后一行、改标签、换成复制图标、接管点击。注入的行是纯 DOM:点击处理器会 stopPropagation,React 根节点根本看不到这个事件;菜单则通过与「点击别处」完全相同的 outside-pointerdown 路径关闭。
两个路径从哪来
不猜、不改写,两个值都取自 dsh 自己手里已有的东西:
| 取值 | 来源 |
| --- | --- |
| 绝对路径 | 卡片预览按钮的 title,也就是 dsh 自己解析并打开的那个路径(resolveWorkspacePath(cwd, file.path))。逐字复制,分隔符不动。 |
| 相对路径 | 该轮向 present 工具声明的路径,从卡片自身的 aria-label 里取回({路径} 的更多文件操作 / More file actions for {路径})。若当初声明的就是绝对路径,则按工作区根重新计算。 |
| 工作区根 | 由上面这一对(绝对、声明)反推,构造上精确;客户端会话状态(sessions.list)只是兜底,用于标签里没有声明路径的卡片。 |
某个值拿不到时,对应的那一行直接不出现——绝不给一个错的路径。
兼容性
- 适用于带交付文件卡片的 dsh Web 界面。实测环境:0.1.6-alpha.1 / Windows;更早版本线未验(bundle 形态与 0.1.5 线相同,但没实测过)。
- 零运行时依赖。浏览器半只用 DOM,外加可选的 locale、sessions 两个客户端服务:inject 为空,即使这两个服务缺失插件照样加载——标签回退英文、工作区根从卡片自身推导。
测试
两个用例都不需要 dsh 实例:
node test/paths.test.mjs # 路径纯函数的 35 条断言
test/fixture.html 复刻了交付卡片与 primitives 菜单 portal(结构逐条读自 0.1.6-alpha.1 的发布代码),用桩模块加载器载入 lib/client.js,在真实浏览器里跑 23 条检查:注入与标签语言、两个复制值、菜单关闭、事件不外泄进 React 容器、负控(无关菜单不注入)、幂等、以及完整卸载。用浏览器打开该文件即可,结果渲染在页面上,同时写进 document.title。
已知边界
- 只覆盖交付文件卡片的菜单。「本轮文件改动」胶囊与侧边栏文件树本身没有菜单,因此不受影响也没有增强。
- 那个菜单属于内置组件:将来 dsh 若改动卡片结构,本插件可能需要同步更新。检测不到时它选择不注入,而不是把两项塞进一个无关的菜单。
- 只复制文本:不读文件、不打开文件、不外发,完全没有宿主侧访问(host 半是刻意留空的)。
卸载
dsh plugin --profile web remove dsh-copy-file-path
许可
MIT