dsh-artifact-linker:让聊天正文里的产物文件名一点就到位

前言

在 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye