dsh-everything-search:用应用内目录选择器接管 DSH「新建工作区」

前言

在 Windows 上使用 DeepSeek Harness(DSH)桌面版时,侧栏「+」或对话空态里「新建工作区」会弹出系统自带的文件夹选择对话框。界面风格与 DSH 不一致,也无法在同一窗口里用 Everything 按名称快速定位目录。社区插件 dsh-everything-search(维护者 JHyugou)通过占用 DSH 的目录选择 single 槽位,换成 DSH 主题一致的应用内对话框:既可盘符逐级浏览,也可在顶部输入框里走 voidtools 官方 es.exe 做全盘文件夹搜索。卸载或禁用插件即可恢复官方原生选择器,无需额外清理。

这是什么

dsh-everything-search 是面向 DSH 桌面版(desktop profile) 的客户端插件,分类为「客户端」。它替换的是 sidebar.workspaces.directoryFlow 与 conversation.hero.workspace.directoryFlow 两个入口上的目录选择流程,而不是改写 DSH 核心的工作区存储逻辑。

官方在 Windows + 127.0.0.1 场景下会把 directory-picker-auto 解析为系统对话框;本插件在 profile 组合里禁用内置 directory-picker,再插入 bundle dsh-everything-search(见仓库内 cordis.patch.yml)。因此「接管」是可回滚的:从 dsh.profile.bundles 去掉本插件并重启,或按 README 还原备份的 package.json / cordis.patch.yml 即可。

社区目录站点与 DeepSeek / 幻方无官方从属关系;安装前请自行阅读源码与许可证。插件宿主逻辑以当前 DSH 进程权限运行,涉及本机路径列举、调用 es.exe 等操作。

核心功能

下面按 README 已列能力归纳,均为插件自述并经仓库内测试脚本覆盖的场景。

接管「新建工作区」

侧栏 + 与对话空态 hero 两个入口都会打开同一套应用内对话框,控件样式跟随 DSH 主题(插件自带样式 + --dsw-alias-* token,浅色/深色一致)。

盘符逐级浏览

  • 左栏:最近使用(可折叠,最多 5 条,记在浏览器 localStorage)、快速访问(主目录/桌面/下载/文档等)、此电脑(盘符及可用空间)。
  • 右栏:面包屑、双击进入子文件夹、上一级、新建文件夹;F2 重命名(回车提交、Esc 取消)。
  • 单击选中某一行后,右下角「选择此文件夹」以选中项为目标;点空白取消选中则回到当前目录。

Everything 全盘搜索

顶部输入即搜,通过 voidtools 官方命令行 es.exe 使用 Everything 的 MFT 索引,只返回文件夹(README 称默认 80 条结果,实测单次查询约 45 ms 为作者自测数据)。命中片段高亮,方向键选择、回车或双击进入。Everything 未运行时仅搜索不可用,手动浏览不受影响;界面会提示 everything-not-running。

搜索与浏览可混用:搜到直接选,搜不到再手动点下去。

噪声屏蔽

其它 AI 工具或 DSH 会话目录等按规则默认隐藏;标题栏「已屏蔽 N 项」可临时显示被屏蔽条目。

宿主 RPC

浏览器通过 POST /api/dsh-everything-search.<endpoint> 调用宿主能力(与 DSH 客户端 RPC 信封协议一致),包括 status、places、drives、list、mkdir、rename、search 等。加载时宿主与客户端还会在 <dsh home>/plugins/dsh-everything-search/events.jsonl 写入 host-loaded / client-loaded 记录,便于确认实例是否真正加载本插件。

依赖准备:es.exe

搜索功能不内置 es.exe,需自行从 voidtools 下载 Everything Command-line Interface(例如 README 提到的 ES-1.1.0.38.x64.zip 或更新包),解压后放置或按下列顺序解析:

环境变量 DSH_EVERYTHING_ES → <插件目录>\bin\es.exe → %ProgramFiles%\Everything\es.exe → PATH 中的 es.exe

同时需 Everything 本体在运行(服务 + 用户实例)。索引范围以 Everything 为准:通常只索引 NTFS 固定卷;网络盘、U 盘等需用手动浏览或粘贴路径。

安装与启用(desktop profile)

README 明确:不能用 CLI 为 desktop profile 安装(dsh plugin --profile desktop 会被拒绝,提示 profile 仅由 Electron 应用管理)。桌面版应在 App 内「插件」页从路径安装,或手工修改 profile:

  1. 编辑 ~/.dsh/profiles/desktop/package.json
    - 在 dependencies 增加:"dsh-everything-search": "link:<本仓库在本机的绝对路径>"
    - 在 dsh.profile.bundles 末尾追加:"dsh-everything-search"
  2. 建立符号链接:~/.dsh/profiles/desktop/node_modules/dsh-everything-search → 指向本仓库目录。
  3. 重启 DSH 桌面版(profile 仅在启动时组合)。

客户端文件 src/client.js 在桌面版上可由 @deepseek-ai/dsh-client-hmr 热重载;src/index.js、cordis.patch.yml 与 profile 组合变更仍需重启。

典型用法

  1. 完成上述安装并准备好 es.exe 与运行中的 Everything。
  2. 重启 DSH 后,在侧栏点击 +,或从对话空态进入「新建工作区」目录选择。
  3. 在对话框内任选一种方式定目录:
    - 在左侧选快速访问或盘符,右侧逐级双击进入,最后点「选择此文件夹」;
    - 或在顶部搜索框输入关键词,用方向键选中结果后回车进入或直接确认目标文件夹。
  4. 需要新建目录时,使用对话框内「新建文件夹」;需要改名时对条目按 F2。

自检(在插件仓库根目录,PowerShell 示例):

node --check src/index.js; node --check src/client.js
node --test test/plugin.test.mjs test/render.test.mjs
node tools/probe.mjs 项目

确认桌面版已加载插件:

Get-Content "$env:USERPROFILE\.dsh\plugins\dsh-everything-search\events.jsonl"

回滚

从 bundle 列表移除本插件并重启,或执行 README 中的备份还原(package.json.bak-dsh-everything-search、cordis.patch.yml.bak-dsh-everything-search),再删除 node_modules\dsh-everything-search 符号链接。回滚后官方 Windows 原生文件夹对话框会重新占用目录选择槽位,本插件 RPC 路由不再存在。

适用场景与注意

适合谁: 主要在 Windows 上用 DSH 桌面版、希望「新建工作区」选目录时留在应用内、并已安装 Everything 的用户。

注意:

  • 平台与 profile:文档针对 desktop profile 与 win32;未在资料中声明其它系统支持。
  • 第三方依赖:Everything 与 es.exe 的许可与分发由 voidtools 规定,本仓库不包含二进制。
  • 安全与信任:列举驱动器、读目录、执行 es.exe 均在 DSH 宿主进程内完成;安装前请审查 https://github.com/JHyugou/dsh-everything-search 源码。
  • 社区信息:SkillHub 目录页显示该插件 GitHub 星标为 0(以目录页当时数据为准),不代表功能完整度;详细行为以 README 与仓库测试为准。

结尾

dsh-everything-search 把 DSH「新建工作区」的目录选择从 Windows 原生对话框换成可搜索、可浏览、可跟主题的统一界面,并在卸载时自动让位给官方选择器。若你正在桌面版上频繁切换工作区目录,可按 README 完成 es.exe 准备与 desktop profile 链接安装。

羽毛球分组比赛记分
小程序二维码

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

小夜