DeepSeek Harness 插件

penguin-oo/dsh-pathlink

Star 数 ★ 1 下载量(近 30 天) 838 分类 UI 增强 收录于 2026-08-15 npm dsh-pathlink

在对话中 Ctrl+点击文件路径与链接:路径在文件管理器中定位所在文件夹,链接在新标签页打开。

安装

# npm 包(预构建)

dsh plugin --profile web add dsh-pathlink

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

dsh plugin --profile web add github:penguin-oo/dsh-pathlink

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。

README

中文 · English

在 DeepSeek Harness 对话里,Ctrl+点击文件路径与链接;把文件拖进输入框即得路径。

自动识别聊天消息(助手回复、用户气泡、代码块、工具卡片)中的文件路径和 URL,用淡淡的虚线下划线标记,Ctrl+点击(macOS 为 ⌘)即可打开:

  • 路径 → 打开所在文件夹——在系统文件管理器中打开该文件所在的文件夹并 选中它(Windows explorer /select、macOS open -R、Linux 用 xdg-open 打开父目录);如果路径本身是目录,则直接打开目录。
  • 链接 → 浏览器新标签页打开——覆盖渲染器未自动转成链接的裸 URL (比如用户消息气泡里的);markdown 链接本身已在新标签页打开。

拖入 / 粘贴文件 → 直接把路径写进输入框(图片仍走原生附件,不受影响):

  • 拖进来的文件在本机能找到 → 插入真实路径(如 D:\proj\src\a.ts);
  • 找不到原件(U盘、网络盘、未登记目录)→ 存一份副本到 %TEMP%\dsh-drops\ 并插入副本路径,提示里会说明;
  • 拖拽过程中不会弹出「图片拖动到此处」的全屏遮罩,也不会出现 「仅支持 PNG、JPG、WebP、GIF」的拒绝提示——安静地把路径放进输入框。

普通点击不触发任何行为,不会干扰选中、复制等操作。路径不存在时会弹出 toast 提示原因,而不是静默失败。

Ctrl+点击提示

消息中的路径识别

① 悬停路径显示 Ctrl+点击提示,点击后在文件夹中定位该文件 · ② 真实对话中被识别的路径(虚线下划线)。

安装

dsh plugin --profile web add dsh-pathlink

或从 GitHub 安装:

dsh plugin --profile web add github:penguin-oo/dsh-pathlink

安装后重启 Web 界面生效。仅支持 web 配置档(点击面是浏览器)。

使用

  1. 等消息渲染完成后,被识别的路径/链接会带虚线下划线。
  2. 按住 Ctrl(macOS 为 ⌘)点击。
    • 路径 → 资源管理器/Finder 打开所在文件夹并选中该文件。
    • 链接 → 浏览器新标签页打开。
  3. 相对路径先按该会话的工作目录解析,再按 Harness 进程目录解析; 路径不存在时弹出 toast 提示。
  4. 把任意文件拖进输入框(或粘贴剪贴板里的文件):路径会插到光标处。

配置

键 默认值 含义
maxPathChars 1024 接受的路径文本最大字符数
dropRoots [] 拖拽反查的额外检索根(优先于默认根)
dropMaxDepth 6 单次检索的递归深度上限
dropBudgetMs 2500 单次检索的时间预算
dropLimit 10 单个根最多收集的匹配数
dropDir '' 存副本的目录;空 = %TEMP%\dsh-drops

检索根顺序:dropRoots → Harness 的 workspace 列表(自动采集)→ 进程 cwd / 桌面 / 下载 / 文档。调试接口:GET /pathlink/drop/state。

实现原理

  • 客户端(dsh.client,platform web):MutationObserver 驱动的扫描器 监视已渲染的对话容器(data-chat-flow / data-conversation-scroll), 在文本节点中识别路径与 URL,包成惰性行内 span,并用一个捕获阶段委托的 click 监听统一处理。刻意不使用官方 chatFileMentions 缝,避免与内置 deliverables 提供方冲突,同时保证所有表面(正文、行内代码、代码块、 用户消息、工具卡片)行为一致。
  • 宿主端(pathlink Remote 服务):只读的 open 方法——按所指向会话的 工作目录解析相对路径、校验存在性、拉起平台文件管理器。无持久状态,不 创建/恢复任何 Agent 或 Session。

开发

npm install
npm run build   # 打包 src/client → lib/client.js
npm run smoke   # Remote 标记 + Typert 清单校验
node scripts/e2e-synthetic.mjs   # 浏览器 E2E,目标 http://127.0.0.1:3738

docs/demo.html 由 node scripts/build-demo.mjs 构建(复用生产识别器), 截图用 node scripts/e2e-screenshot.mjs 生成。

限制

  • 仅 Web 界面(点击面是浏览器);宿主打开器覆盖 Windows / macOS / Linux。
  • 路径识别基于启发式:中文目录名可正常保留;若路径末段是裸英文单词 (无扩展名)且紧接英文正文,偶有过匹配——存在性校验会把这类误判挡在 「路径不存在」toast 里,不会打开错误的东西。

许可证

MIT

致谢

为 DeepSeek Harness 插件生态而作——感谢 LINUX DO 社区的反馈与测试。

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →

评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。