dsh-at-mention:DSH Profile Bundle:向 Composer 添加 @-file 提及,支持优先级模糊搜索与键盘补全

前言

在 DSH 的 Composer 中引用当前会话工作区的文件或目录时,通常需要手动输入路径或进行复制粘贴。dsh-at-mention 插件通过在输入框触发 @ 符号,直接提供文件和目录的模糊搜索与补全功能,模拟了 Claude Code / Codex Desktop 的交互体验。

插件介绍

名称:dsh-at-mention
定位:DSH profile bundle
核心价值:向 Composer 添加 @-file mentions,提供优先级模糊搜索与键盘补全。
维护者:ShiraGawaAnri
许可证:MIT

核心功能

该插件专注于当前会话工作区内的文件与目录索引,并提供以下能力:

  1. 当前会话工作区作用域
    搜索范围限定在当前会话的 header.cwd 目录及其子目录。切换工作区时,索引会自动切换(使用 LRU 缓存管理最多 3 个工作区,无需重新扫描)。

  2. 优先级模糊搜索
    搜索结果的排序优先级如下:

    • 精确匹配
    • 名称前缀
    • 名称子串
    • 路径前缀
    • 路径子串
    • 模糊子序列
      浅层目录和较短路径的匹配项会获得更高排名。
  3. 键盘导航

    • ↑ / ↓:移动光标选择候选项
    • Tab / Enter:确认选择
    • Esc:关闭菜单
      注意:Tab 键在无匹配时也会被消费,确保焦点不会意外跳离。
  4. 空格分隔连续提及
    支持 @a @b(两个独立的提及)和 @a@b(单个 token)的语法,与内置触发规则一致。

  5. 纯文本提及
    选中的文件会以纯文本形式插入(例如 @relative/path)。该文本可被复制或后续编辑,且作为纯文本在 Linux 和 Windows 间保持可移植性。

  6. 完整路径 Tooltip
    当候选项的文本被截断时,鼠标悬停可查看完整的绝对路径和相对路径。

  7. 持久化设置
    在 Settings -> @ 提及 中,可以配置启用状态、最大结果数、插入路径样式、模糊搜索/大小写敏感/包含目录/尾随空格选项、排除目录、索引文件上限、自动刷新间隔,以及手动重建索引按钮和实时索引状态。

  8. 跨平台索引

    • Linux / WSL / macOS:使用 find 命令进行快速索引。
    • Windows:当 find 不可用时,使用纯 readdir 回退方案。
      默认排除目录包括 .git、.godot、.import、node_modules、.codegraph、.kimi-code(支持自定义)。

安装与启用

安装该插件需要具备一个可用的 DSH 安装环境(dsh web)以及路径中的 pnpm(dsh plugin 会转发至 pnpm)。

dsh plugin --profile web add ./dsh-at-mention

安装命令会运行 pnpm 并将插件的 cordis.patch.yml 追加到 profile 的补丁堆栈中。安装完成后,需要重启 Web 应用(客户端包和路由在启动时已绑定)。

若需移除:

dsh plugin --profile web remove @dsh-external/dsh-at-mention

典型用法

在 Composer 的输入框中输入 @ 即可打开优先级模糊搜索菜单。

  1. 使用 ↑ 和 ↓ 键在列表中移动。
  2. 按 Tab 或 Enter 选中文件并插入提及文本。
  3. 按 Esc 关闭菜单。

提及语法示例:
* @a @b:表示两个独立的提及
* @a@b:表示一个单一的 token

配置与 API

插件的配置和状态通过以下 API 路由(同源)进行管理:

  • GET /_dsh/at-mention/api?q=&sessionId=&root=:对当前会话工作区索引进行模糊搜索。
  • GET /_dsh/at-mention/api/settings:获取当前设置快照。
  • POST /_dsh/at-mention/api/settings:保存设置(参数格式:{ action: 'save', value: {...} })。
  • GET /_dsh/at-mention/api/status:查询索引状态(根目录、数量、构建时间、错误信息)。
  • POST /_dsh/at-mention/api/rebuild:重建当前工作区的索引。

POST 路由拒绝跨站请求(CSRF)。

注意事项

  • 插件在当前 dsh 进程权限下运行,请确保安装前检查源码与许可证。
  • 插件插入的提及文本为纯文本(@relative/path),模型在会话中会将其解析为当前工作区的文件引用,相对路径在 Linux 和 Windows 之间保持兼容。
  • 当 mention 菜单处于打开状态时,内置的 / 命令菜单不受影响,但内置的 @ 触发菜单会被隐藏(两者共享 @ 触发)。

结语

dsh-at-mention 通过提供优先级排序的模糊搜索、键盘补全以及纯文本化的引用方式,优化了在 DSH Composer 中引用本地文件的工作流。这符合 DSH “一切皆插件” 的生态理念。

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

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

小夜