dsh-double-shift-file-search

by codezha

0 UI 增强github未核验到 manifest收录于 08-17

DeepSeek Harness 的双击 Shift 文件搜索插件:搜索当前工作区的文件名和内容,使用语法高亮预览,并用默认应用打开文件。

Double-Shift file search plugin for DeepSeek Harness — search filenames and contents in the active workspace, preview with syntax highlighting, and open files with their default app.

安装

dsh plugin --profile web add github:codezha/dsh-double-shift-file-search

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

English | 中文

一个面向 DeepSeek Harness Web GUI 的当前项目文件搜索插件,交互方式类似 PhpStorm 的 Search Everywhere。

[!IMPORTANT] DeepSeek Harness 目前仍处于开发者预览阶段,后续可能出现破坏兼容性的改动。本插件当前会安装一个小型 DSH 源码补丁,为动态 Cordis Package 提供生命周期安全的 keyboard Client Service。

功能

  • 快速双击 Shift 打开搜索浮层。
  • 只搜索当前选中 Session 所属工作区项目内的文件名和文本内容。
  • 点击结果后,在可滚动的右侧区域预览文件,并根据扩展名提供轻量语法高亮。
  • 使用操作系统为该文件类型配置的默认应用打开选中的文件。
  • 使用 Esc 或点击背景关闭浮层。
  • Host 在搜索和预览前重新校验工作区边界。

环境要求

  • 一个本地 DeepSeek Harness 源码 checkout。
  • DeepSeek Harness 所要求的 Node.js、pnpm/Corepack 环境。
  • DSH 组合中已启用动态 Cordis Host/Client runner 与 Cordis 工具。

安装键盘能力

克隆本仓库,并把 DeepSeek Harness checkout 路径传给安装脚本:

git clone https://github.com/codezha/dsh-double-shift-file-search.git
cd dsh-double-shift-file-search
node scripts/install.mjs /path/to/deepseek-harness

也可以使用环境变量:

DSH_CHECKOUT=/path/to/deepseek-harness npm run install:dsh

安装脚本会:

  1. 校验目标 checkout;
  2. 将 Client runner 原始的 index.ts 和 api-catalog.ts 备份到 .install-backup/;
  3. 安装生命周期安全的 keyboard Client Service;
  4. 更新 Client Service API catalog。

对于同一个兼容 checkout,重复执行安装脚本是幂等的。

重新构建当前 DSH Web GUI

在 DeepSeek Harness checkout 中执行:

corepack pnpm --filter @deepseek-ai/dsh-cordis-client-runner run bundle
corepack pnpm --filter @deepseek-ai/dsh-web-frontend run build

随后刷新当前正在运行的 DSH GUI,默认地址通常为 http://127.0.0.1:3080。不要另起一个 Vite 服务来替代当前 DSH GUI。

如果同一个 checkout 中已经运行 pnpm run dev:web,它可能会自动重建 Client 插件产物;否则请执行上面的显式构建命令。

定义并运行动态 Cordis 插件

plugin/ 目录中的文件是 cordis_define 接受的普通 JavaScript 函数体,不是可以直接导入的 JavaScript 模块。

在使用 Cordis/创造模式的 DSH Session 中,让 Agent:

  1. 读取 plugin/manifest.json;
  2. 将 plugin/host.body.js 的完整内容作为 code.host;
  3. 将 plugin/client.body.js 的完整内容作为 code.client;
  4. 使用 plugin: { kind: "new", idPrefix: "fseek" } 调用 cordis_define;
  5. 使用返回的 pluginId 和 packageId 调用 cordis_run。

示例提示词:

读取本仓库的 plugin/manifest.json、plugin/host.body.js 和 plugin/client.body.js。
使用 idPrefix "fseek"、manifest 中的名称和用途,以及完整的 Host/Client 函数体,
定义一个新的动态 Cordis 插件,然后运行返回的 Package。

Client Package 首次运行时可能需要在 DSH GUI 中授权。动态定义只存在于当前 DSH 进程中,进程重启后需要重新定义。不要写死 fseek-1、pkg-1 等运行时生成的 ID。

更新正在运行的插件

如果要更新当前运行实例,应为同一个 Plugin 定义新的不可变 Package:

  1. 检查当前 Plugin,取得准确的 pluginId;
  2. 使用 plugin: { kind: "existing", pluginId } 和最新的完整函数体调用 cordis_define;
  3. 对返回的新 Package 调用 cordis_run,并设置 mode: "update"。

限制与安全边界

  • 默认跳过 .git、node_modules、vendor、dist、build、coverage、.next、.idea 和 .cache。
  • 每次搜索最多遍历约 4,000 个条目,并收集最多 1,200 个候选文本文件。
  • 最多返回 80 条结果。
  • 不搜索或预览超过 1 MB 的文件。
  • 预览最多返回文件开头 350 KB。
  • 当前项目路径必须位于当前 DSH Session 可访问的工作区根目录内。
  • 读取预览前会再次校验目标文件。
  • 停止或更新 Package 时,Cordis Fiber 会自动清理键盘监听、样式、Slot 注册和 Host handler。

卸载

使用安装时的同一个 checkout 路径:

node scripts/uninstall.mjs /path/to/deepseek-harness

或者:

DSH_CHECKOUT=/path/to/deepseek-harness npm run uninstall:dsh

卸载脚本只恢复本仓库安装时生成的备份。如果备份不存在,它会拒绝猜测性修改 DSH checkout。卸载后重新构建 Client runner 和 Web shell,并刷新当前 GUI。

正在运行的动态插件可以通过 cordis_stop 暂停,或通过 cordis_undefine 从当前进程中移除。

仓库结构

  • plugin/host.body.js:安全的当前项目搜索和预览 Host half。
  • plugin/client.body.js:双击 Shift、浮层、结果、高亮、预览和默认应用打开操作。
  • plugin/manifest.json:插件元数据和服务依赖。
  • dsh-patch/keyboard.ts:生命周期安全的全页面键盘 Client Service。
  • scripts/install.mjs:将键盘能力安装到 DSH checkout。
  • scripts/uninstall.mjs:恢复安装时创建的备份。
  • scripts/check-plugin-bodies.mjs:检查动态函数体语法。

开发检查

运行针对性语法检查:

npm run check

dsh-plugin Topic 是什么

DeepSeek Harness 官方 README 建议插件仓库添加 dsh-plugin Topic,方便其他用户通过 GitHub Topic 页面发现插件。

Topic 是 GitHub 仓库页面上的元数据,不是 npm keyword,也不是 Git tag。仓库管理员可以在仓库主页右侧 About 区域点击齿轮图标,在 Topics 中输入 dsh-plugin 并保存;也可以通过 GitHub CLI 执行:

gh repo edit codezha/dsh-double-shift-file-search --add-topic dsh-plugin

许可证

MIT

原始 README: https://github.com/codezha/dsh-double-shift-file-search/blob/main/README.zh-CN.md ↗