DSH-Reflex
Identified★ 1ChatGPT-like right-click menu for links and file references in DeepSeek Harness (DSH) desktop messages.
dsh-link-menu
给 DeepSeek Harness(DSH)桌面版 聊天区里的链接与文件引用加一个类似 ChatGPT 的右键菜单。
A ChatGPT-like right-click menu for links and file references inside DeepSeek Harness (DSH) desktop messages.
仓库 / Repository:https://github.com/Xchcy/DSH-Reflex · 市场条目 / Market entry:ui 分类,awesome-dsh-plugin
装它最快的方式:让 AI 帮你装
不需要懂命令行。把下面这段原样发给一个能操作你电脑的 AI(最推荐:直接发在 DSH 对话里;也可以发给任何能读写文件、执行命令的 AI 助手):
帮我安装一个 DSH 插件,插件叫 dsh-link-menu(给消息里的链接和文件引用加右键菜单)。
安装步骤:
1. 下载 https://github.com/Xchcy/DSH-Reflex/releases/latest/download/dsh-link-menu.tgz
(下载不下来、或者连不上 GitHub,就先告诉我要装包,不要跳过这一步。)
2. 把它解压/解包到一个固定目录,例如 C:\Users\Xchcy\dsh-plugins\dsh-link-menu。
注意:解出来的目录里要能直接看到 package.json、index.js、client.js。
3. 用 DSH 的 plugin_manager 工具安装这个本地 bundle:
plugin_manager install_bundle,target 填上面那个目录的绝对路径。
4. 安装结果显示 application 是 applied、warnings 是空数组,就算成功。
如果报错,把完整报错发给我,不要自己删文件。
5. 装完提醒我:必须完全退出并重新打开 DSH 桌面应用(客户端半边要重新加载)。
6. 重启后让我验证:在聊天里右键一个文件引用或链接,应该弹出菜单。
没弹出来就回来告诉你,你再去检查插件有没有加载。
发过去之后你只需要做两件事:等它装完 → 重启 DSH。
没有 AI 可用时,手动装(三种方式,任选一种)
-
插件市场(有就最省事):DSH 桌面版 Plugins → Discover 搜
dsh-link-menu或Xchcy,点安装,重启应用。 -
从 GitHub 装:
dsh plugin add github:Xchcy/DSH-Reflex # 或者钉住版本 dsh plugin add github:Xchcy/DSH-Reflex#v0.3.1也可以在 GUI 的 Plugins 页面粘贴仓库地址安装;首次从 git 装会询问是否允许构建,选允许。
-
从本地文件装:把
dist/dsh-link-menu-0.3.1.zip解压到任意目录(例如D:\dsh-plugins\dsh-link-menu),然后在 DSH 会话里执行:plugin_manager install_bundle target: D:\dsh-plugins\dsh-link-menutarget必须是绝对路径;成功时application为applied、warnings为空数组。
无论哪种方式,装完都要完全退出再重新打开 DSH,右键菜单才会出现。
装完怎么确认它生效了
-
在 DSH 聊天里右键一个蓝色链接或文件引用(例如
ocs-config.json、https://…)。 -
应该弹出一个菜单,文件引用是 7 行:
默认打开方式 · 打开方式… · 在文件管理器中打开 · 复制文件地址 · 复制文件名 · 复制文件内容 · 另存为…
-
点「默认打开方式」应该能打开文件;点「在文件管理器中打开」应该弹出并选中该文件。
-
点完右下角会有轻提示(「已用 VS Code 打开」/「已在资源管理器中显示」/「已复制」等)。
如果右键没有任何反应:多半是没重启,或插件没真正装进当前 profile(application 不是 applied)。把报错发给我或任意 AI,让它按上面的步骤重装。
功能 / Features
| 对象 / Target | 菜单项 / Menu items |
|---|---|
网页链接(https://…、mailto:) | 复制链接地址 · 在默认浏览器中打开 |
文件引用(C:\…\file.txt、file:///…) | 默认打开方式 · 打开方式… · 在文件管理器中打开 · 复制文件地址 · 复制文件名 · 复制文件内容 · 另存为… |
相对文件引用(如 src/main.ts) | 同上,按 DSH 工作区解析成绝对路径 |
- 左键行为保持不变:链接照常在内置浏览器打开,文件引用照常定位。
- 只在真正命中链接/文件引用时接管右键;普通文本(包括红色报错里的路径)仍是系统默认菜单。
- 能识别消息里的文件卡片、变更文件列表行、带中文/空格的文件名,以及聊天上传的附件(不在工作区里也能解析)。
- 菜单跟随主题变量(
--dsw-*),浅色/深色主题都能用。
0.3.1 的改动 / What's new in 0.3.1
- README 重写:新增「让 AI 帮你装」的复制即用提示词、装完自检步骤和常见问题,面向完全没装过插件的新手。
- 版本号、打包产物和 Release 资产同步到 0.3.1;功能与 0.3.0 相同。
0.3.0 的改动 / What's new in 0.3.0
- 文件菜单扩展到 7 行:新增 打开方式…(系统「选择应用」对话框)、复制文件内容、另存为…。
- 「复制文件内容」走 Host 读取 UTF-8 文本:上限 2 MB,二进制文件(前 8 KB 含 NUL 字节)直接拒绝并提示,不会把乱码塞进剪贴板。
- 「另存为…」弹系统保存对话框,把原文件复制到用户选的位置;取消时提示「已取消另存」。
- 识别更准:支持文件卡片(
data-presented-file里的预览按钮标题)、变更文件列表行(data-review-file)、fileMention/fileCard类名 chip,以及打开 C:\a\b.txt这种路径藏在标签后的写法。 - 路径正则放宽到任意 Unicode 文件名(中文、空格、
#等),裸文件名会再到聊天附件目录里找一/两层。 /link-menu/resolve新增 POST 形式({ path }),旧的 GET?path=保留。
0.2.0 的改动 / What's new in 0.2.0
- 文件菜单固定为 4 行:默认打开方式 / 在文件管理器中打开 / 复制文件地址 / 复制文件名。
- 「默认打开方式」直接打开:系统有关联应用时用关联应用;
.json等没有真实关联、但装了 VS Code 时直接进 VS Code,不再弹「选择打开方式」。 - 「在文件管理器中打开」提速:Host 侧常驻一个预热好的 PowerShell 辅助进程,文件夹窗口已打开时直接激活(实测约 60–80ms),未打开时用
Shell.Application.Explore新开窗口(约 1 秒,接近资源管理器本身的开窗耗时)。 - 打开/定位后会把目标窗口提到前台(Windows 前台锁用 ALT 轻敲绕过)。
- 所有平台行为:Windows 用
rundll32/explorer/Shell.Application;macOS 用open;Linux 用xdg-open。
常见问题 / FAQ
右键没反应?
没重启,或没装进当前 profile。确认 plugin_manager install_bundle 返回 application: applied,然后完全退出 DSH 再打开。
菜单只有几行、或行的内容和 README 不一样? 装的是旧版本。用上面的「让 AI 帮你装」重装最新版(0.3.1)。
「默认打开方式」弹出了「选择一个应用」?
说明系统里这个扩展名没有真实默认应用。可以在对话框里选一次并勾选「始终使用」,之后就会直接打开;不想每次选,用「打开方式…」或直接装 VS Code(插件会自动用它打开 .json 这类文件)。
「在文件管理器中打开」第一次有点慢? 正常:同文件夹窗口已经开着时约 60–80ms,没开着时要等资源管理器自己建窗口,约 1 秒。
市场里搜不到? 市场 PR 可能还在排队合并(https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/12303)。这不影响使用,按「从 GitHub 装」或「从本地文件装」即可。
配置 / Configuration
消息里的相对路径(src/theme.json、manifest.json、background.js:12)会按 DSH 的所有工作区目录依次尝试解析,所以从其他工作区的对话里右键文件也能正常打开;workspaceRoot 只是额外优先尝试的目录,可留空:
# cordis.patch.yml
- insert:
- id: link-menu
name: dsh-link-menu
config:
workspaceRoot: 'C:\Users\me\Documents\my-workspace' # 可选
解析顺序:DSH 工作区列表(新工作区在前)→ workspaceRoot → workingDirectory.defaultDirectory → Host 进程当前目录。
卸载:用 plugin_manager 移除该 bundle,或在 profile 的 cordis.patch.yml 里删掉 link-menu 条目。
安全边界 / Safety
- 只处理
http(s)、mailto:链接与真实存在的本地文件;其他目标不弹菜单,也不发给 Host。 - Host 端用参数数组启动系统打开方式与保存对话框,不经过 shell,不拼接命令字符串。
- 「复制文件内容」会在 Host 端读取该文本文件(上限 2 MB、二进制拒绝),只用于剪贴板;「另存为…」把文件复制到用户在系统对话框里选的位置。除此之外插件不读取文件内容。
兼容性 / Compatibility
插件依赖 DSH 客户端的两处实现细节:
- 消息内链接/文件引用带
fileLink类名(外链是<a>,文件引用是<button>,文件引用的title是绝对路径,另有fileMention/fileCardchip、data-presented-file卡片、data-review-file变更行); - Host 侧可用
webServer、workingDirectory与workspaceRegistry服务。
测试于 2026-11 的 DSH 桌面版。DSH 大版本更新后若类名或槽位命名变化,可能需要在 client.js / index.js 中同步调整。
开发 / Development
包结构:
index.js Host 半边:/link-menu/open(打开/定位)、/link-menu/resolve(跨工作区解析路径)、/link-menu/info(解析根目录与 VS Code 探测)、/link-menu/read(读文本内容)、/link-menu/save-as(系统另存对话框)
client.js 浏览器半边:捕获右键、识别链接/文件、绘制菜单
locale/*.json 插件名称与描述(plugin_manager 展示用)
cordis.patch.yml 挂载配置
build.mjs 打包脚本,生成 dist/dsh-link-menu-<version>.zip
test/host-routes.mjs Host 路由冒烟测试,只测拒绝路径,不启动任何应用/对话框
market/ 插件市场(awesome-dsh-plugin)的收录条目
scripts/publish-market.mjs 提交收录条目并开 PR 的脚本
改动后先查语法:
node --check index.js
node --check client.js
node test/host-routes.mjs
Host 半边改动可在 DSH 里 plugin_manager set_plugin(include:link-menu 关→开)热重载;client 半边改动需要重启应用。
发版:改 package.json 的 version,再打包(dist/ 已被 .gitignore 忽略):
node build.mjs # dist/dsh-link-menu-<version>.zip
npm pack --pack-destination dist
Release 上要传的 tarball 资产名固定为 dsh-link-menu.tgz(不带版本号),市场条目用 releases/latest/download/dsh-link-menu.tgz 指向它;换了版本号就重新打一次、覆盖同名资产。
市场收录:market/Xchcy__DSH-Reflex.yml 是提交给 awesome-dsh-plugin 的唯一条目文件;用脚本提交(仓库创建满 1 天后才会过 CI):
node scripts/publish-market.mjs --dry-run # 先看会做什么
node scripts/publish-market.mjs # fork + 提交条目 + 开 PR
License
MIT
Comments
Loading…
From the same category
by awesome-dsh-plugin
A curated list of plugins for DeepSeek Harness (dsh) · DeepSeek Harness 插件精选列表
★ 23.4k
CC0-1.0
Python
Nov 6, 2026
by 0xsline
DeepSeek Harness (DSH) ecosystem: curated plugins, tools, and infrastructure from dsh-external/hub and the public dsh-plugin topic.
★ 1.3k
CC0-1.0
Python
Nov 6, 2026
by uumit-ai
Open dsh web from your phone or another computer through a UUMit account, without running your own server or installing another program: a built-in tunnel client connects to UUMit's hosted tunnel, and
★ 499
↓ 268/wk
MIT
JavaScript
Oct 21, 2026
dsh plugin --profile web add @uumit-ai/dsh-uumit-remoteby Yuuyuko-uu
DSH 鱼的记忆:给会话一份会淡忘的长期记忆,每条都带时间
★ 491
MIT
JavaScript
Nov 4, 2026
dsh plugin --profile web add dsh-fish-memoryby SAOS-3624
Scene-aware storyboard for DeepSeek Harness: 9-16 numbered cells with timestamps + transcript + an audio envelope, packed into ONE image (384 tokens). Two tools: video_storyboard and video_zoom.
★ 453
↓ 17k/wk
MIT
JavaScript
Nov 6, 2026
dsh plugin --profile web add dsh-video-storyboardby woniuniuniu
DeepSeek Harness 自媒体工作台插件:一句话记灵感,一键生成脚本、封面、配图和分镜
★ 367
↓ 1.2k/wk
MIT
JavaScript
Nov 6, 2026
dsh plugin --profile web add dsh-media-desk