dsh-web-search-ddg
aooyoo
Zero-token DuckDuckGo search provider for the DeepSeek Harness (DSH) web seam — local headless browser, no API key, no m…
PROJECT TOPICS
PROJECT README
一个 DeepSeek Harness(DSH)Web 界面插件:把鼠标悬停到文件路径或网址上,会弹出一个气泡菜单,一键在「资源管理器」中显示,或用默认浏览器打开——任何文件类型都能在浏览器里打开,效果等同于把 file:// 地址粘贴到浏览器地址栏。
🇨🇳 中文 | 🇬🇧 English
插件分两部分,通过一个包同时加载:
| 部分 | 文件 | 职责 |
|---|---|---|
| 宿主端 | lib/index.js |
注册 /path-click HTTP 路由,执行打开动作;作为 bundle 被 loader 加载 |
| 浏览器端 | lib/client.js |
悬停检测与气泡 UI;通过 dsh.client 声明被 dsh-client-modules 自动发现并注入页面 |
explorer.exe <路径>(文件 → 打开其所在文件夹;不依赖 explorer 的 /select, 开关,该开关跨进程传递时极不可靠)http\UserChoice 关联探测默认浏览器程序(Chrome / Edge / Firefox 等),把 file:// URL 作为命令行参数交给它——绕开文件类型关联,所以 .js、.lnk 等无关联类型也能在浏览器中打开,且不会弹出"选择打开方式"mailto: 走 rundll32 url.dll,FileProtocolHandler为什么不直接用 ShellExecute /
start?ShellExecute 对file://链接会走文件类型关联:HTML 能打开,但.js这类会弹"选择打开方式",且explorer.exe拿到file://会自己在资源管理器中导航。直接调用浏览器程序是最可控的方案。
/api 前缀下(该前缀由 DSH 的固定路由表把持,第三方插件无法扩展),因此自带信任围栏:POST + application/json(强制浏览器预检,防跨站请求)Origin 必须等于 http://<Host>,且 Host 必须是回环地址(127.0.0.1 / localhost / ::1)——同时防跨站 CSRF 与 DNS rebindinghttp: / https: / file: / mailto:;拒绝含引号/换行的值% 字符时拒绝用浏览器打开(避免 cmd 环境变量展开问题)plugins/foo/bar.js)按宿主进程 cwd 解析;默认部署中 cwd 即工作区根,所以正确;若工作区不是宿主启动目录,相对路径会解析错位path\" 会破坏命令行引号解析,导致 explorer 回退打开默认文件夹)open -R / xdg-open)已实现但未在真机验证前置:已安装 DSH(dsh 命令可用)与 pnpm。
dsh plugin --profile web add github:harmony520/path-click
dsh plugin --profile web add /path/to/path-click
Windows 注意:路径含空格(如用户名 "Mo Haowei")时,
dsh plugin的 pnpm 转发会拆坏参数。可改用直接 pnpm:cd %USERPROFILE%\.dsh\profiles\web pnpm add C:\path\to\path-click然后把
"path-click"手动追加到该目录package.json的dsh.profile.bundles列表。
安装后重启 DSH(关闭控制台窗口,重新启动),浏览器页面按 F5 刷新。
客户端模块(
lib/client.js)的改动支持热更新:DSH 每 500ms 轮询一次模块文件,改了保存即可在当前窗口生效,无需重启。宿主端(lib/index.js)与包名/配置改动需要重启。
dsh plugin --profile web remove path-click
# 语法检查
node --check lib/index.js
node --check lib/client.js
# 宿主逻辑单元测试(校验、信任围栏、路径规范化;不会真正打开任何窗口)
node test-host.mjs
诊断日志:%TEMP%\path-click.log(每次打开动作记录命令与结果,排查问题用)。
path-click/
├── lib/
│ ├── index.js # 宿主端:/path-click 路由、信任围栏、打开逻辑、默认浏览器探测
│ └── client.js # 浏览器端:悬停检测与气泡工具条(dsh.client 模块)
├── cordis.patch.yml # bundle patch:注册 loader 行
├── package.json # dsh.bundle + dsh.client 声明
├── test-host.mjs # 宿主逻辑单元测试
└── README.md
0.1.0-rc.6 开发reg.exe),否则回退到 cmd start / rundll32CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。