前言¶
在 DeepSeek Harness(DSH)里,内置预览器已经能直接看图片、代码、PDF 和 Office 文档。但插件脚本、Fluent 出图、打包结果、临时导出等产物,模型在正文里往往只写文件名。要打开它们,常见流程是复制路径、打开资源管理器、贴到地址栏、回车,再在同级文件里找那一个。步骤多,且和对话上下文割裂。
下面介绍社区插件 dsh-artifact-linker(产物路径联动器)。它把「路径写对」和「正文可点」拆成宿主提示词注入与客户端渲染两半,配合使用,减少上述机械操作。维护者为 loyalchiiina,分类为客户端;源码与说明见 GitHub,目录页见 SkillHub。DSH 生态以「一切皆插件」为思路;SkillHub 等为社区目录,与 DeepSeek / 幻方无官方从属关系。
这是什么¶
dsh-artifact-linker 是 DSH 本地插件:在宿主侧常驻注入「产物路径」相关 prompt 规则,要求工具侧使用完整绝对路径、面向用户的正文只写文件名;在客户端侧把正文中确认存在的产物名变成可交互目标,左键在资源管理器中揭示并选中,修饰键配合左键用默认程序打开,右键提供七项菜单。它不改动 React 渲染的正文 DOM,不做文档全量扫描,也不使用定时器。
核心功能¶
提示词层(宿主)¶
开启 injectRules(默认 true)时,插件向系统提示注入规则:产物在工具输出里应使用绝对路径,正文里只出现文件名,避免长路径污染阅读,同时保留可解析依据。
渲染与交互(客户端)¶
开启 clientChips(默认 true)时,客户端接管正文里产物相关点击:
| 操作 | 结果 |
|---|---|
| 左键 | 在系统资源管理器中揭示并选中该文件(不直接用默认程序打开) |
| Ctrl / Shift / Cmd + 左键 | 用系统默认关联程序打开 |
| Alt + 左键 | 复制完整绝对路径到剪贴板 |
| 右键产物名 | 插件菜单(七项,见下) |
| 右键非产物文字 | 不拦截,宿主原生菜单 |
| 悬停 | 仅当异步确认文件存在时显示手型与 Codex 风格蓝色虚线框 |
右键菜单项:
| 菜单项 | 作用 |
|---|---|
| 在侧边栏预览 | 在 DSH 右侧边栏打开;支持 PDF、Office、Markdown、文本、CSV、图片、音视频等,不支持的扩展名会改走默认程序 |
| 用默认程序打开 | 交给系统文件关联 |
| 在文件夹中显示 | 打开所在目录并选中文件 |
| 另存为… | 复制到用户指定位置 |
| 复制文件 | 将文件本身放入剪贴板(CF_HDROP),可粘贴到资源管理器或邮件等 |
| 复制文件路径 | 复制绝对路径 |
| 添加到对话框 | 将路径插入输入框,供下一条消息使用 |
文件不存在或无法解析时,插件不假装成功;多个同名候选时列出供用户选择,不自动猜测。
路径解析¶
插件按顺序尝试:/workspace/<...> 映射、原生绝对路径(含盘符与 UNC)、会话相对路径、各已知 workspace 根、裸文件名的递归同名搜索(跳过 node_modules、.git、dist、build 等)。提及被截断时会从左逐段收缩重试。stat 与同名索引各有短时缓存(README 记载为 10 秒与 30 秒),减轻重复磁盘访问。
宿主提供仅监听 127.0.0.1 的回环路由,不联网、无遥测;reveal / open 通过 execFile 传参数组执行,不 spawn shell。
安装与启用¶
官方 README 给出的步骤如下,不是 dsh plugin add github:… 一类命令。
1、将插件目录放到 DSH 本地插件路径(Windows 示例:%USERPROFILE%\.dsh\local-plugins\dsh-artifact-linker)。
2、在所用 profile 的 package.json 的 dependencies 中声明(<profile> 替换为 desktop / web / xiufu 等):
"dsh-artifact-linker": "file:~/.dsh/local-plugins/dsh-artifact-linker"
3、完全重启 DSH。README 明确说明客户端 bundle 不随 Ctrl+R 重载。
README 还提醒:file: / link: 依赖在 profile 重装依赖时可能按快照恢复目录,本地改动或被回滚;长期使用可考虑 npm pack 成 tarball 再引用,或发布到 npm。
装好后可用本地 HTTP 核对(<port> 为当前 DSH 端口):
GET http://127.0.0.1:<port>/dsh-artifact-linker/info
正常应返回插件名、版本、workspace,以及 injectRules、clientChips、allowOutside 的实际生效值;排障时以 /info 为准。
package.json 中声明的引擎要求为 dsh >= 0.2.1-rc.3,Node 为 ^22.19.0 || >= 24.0.0。当前资料中版本号为 0.3.7,许可证 MIT。
配置¶
在 profile 的 cordis.patch.yml 中为该插件条目增加 config(不要在同一 entry id 下重复手写第二段 insert,否则会 duplicate loader entry id):
- id: dsh-artifact-linker
name: dsh-artifact-linker
config:
injectRules: true # 常驻 prompt 规则
clientChips: true # 是否接管正文点击;false 则仅保留提示词注入
allowOutside: true # 是否允许解析 workspace 外的路径
| 开关 | 默认 | 说明 |
|---|---|---|
injectRules |
true |
false 时不注入 prompt 段 |
clientChips |
true |
false 为纯注入模式,不接管鼠标 |
allowOutside |
true |
false 时仅允许 workspace 内路径;产物常在项目盘时默认 true 更顺手,不可信模型或给他人用时宜收紧 |
典型用法¶
经过上面的安装与重启,在对话中让模型交付带扩展名的产物(插件只认已知产物扩展名白名单,见 lib/client.js 的 EXT)。正文里应只出现文件名;悬停确认存在后出现虚线框,左键在资源管理器中定位文件,需要编辑或播放时用 Ctrl(或 Shift / Cmd)+ 左键打开,需要路径时用 Alt + 左键或右键「复制文件路径」。要在 DSH 内预览 PDF 或 Office 时,右键选「在侧边栏预览」。要把路径带入下一条消息,选「添加到对话框」。
若正文文件名不可点,依次检查:clientChips 是否为 false、扩展名是否在白名单、是否已完全重启 DSH。若提示「解析不到绝对路径」,检查 allowOutside 与文件真实位置,或调用 /resolve?p=<名字> 查看 reason。
适用场景与注意¶
适合经常在 DSH 对话里接收脚本、表格、图片、打包文件等产物、又不想反复复制路径的用户。插件刻意不改写 markdown 图片与链接语法、不对不存在的片段画可点样式,以免误点。
安装前请自行阅读 源码仓库 与 MIT 许可证。插件以当前 DSH 进程权限访问本地文件并调用系统打开/揭示行为;allowOutside: true 时可能打开 workspace 外路径,单人本机使用与共享/不可信模型场景应区分配置。
结尾¶
dsh-artifact-linker 用宿主规则保证路径可查、用客户端交互把文件名变成零步打开的入口,并与多源路径解析、存在性校验配合,减少「复制路径再进资源管理器」的重复劳动。
- 目录页:https://www.skillhub.cn/plugins/loyalchiiina/dsh-artifact-linker
- GitHub:https://github.com/loyalchiiina/dsh-artifact-linker