Introduction

In the DSH Web GUI, a common practice for having models read workspace files is to manually type the file path into the input box or mention “please refer to a certain file” in the prompt. In multi-file projects, this can easily lead to missed files or incorrect paths, and is also prone to interference from boundaries such as .gitignore, project documentation, and compilation artifacts.

dsh-file-mention is a client-side plugin for the DSH (DeepSeek Harness) Web GUI. It provides @ file referencing capability in the chat input box: after typing @, it filters workspace files in real-time; after selection, it inserts @relative_path, allowing the model to read the file directly. Below is an introduction to its positioning, core features, installation methods, and applicable scenarios.

Plugin Positioning

  • Plugin Name: @hucj/dsh-file-mention
  • Repository: hucj09/dsh-file-mention
  • License: MIT © 2026 hucj
  • Platform: dsh.client.platform is web
  • Runtime Environment: package.json requires Node >= 22
  • Purpose: Select and insert the relative path of workspace files in the DSH Web GUI input box via @

Core Features

Trigger File Candidates by Typing @

Typing @ in the input box triggers the workspace file candidate menu.

The plugin supports real-time filtering by filename or full path (case-insensitive), displaying a maximum of 30 items. After selecting a file, the input box inserts @relative_path to allow the model to read that file.

Scan Scope

The sources of file candidates for the plugin include:

  • Git tracked files
  • Untracked new files that are not ignored

This means newly created files can be referenced even without git add; meanwhile, the plugin naturally respects .gitignore, so ignored files and directories are not included in the candidates by default.

If git is unavailable or the current directory is not a repository, the plugin falls back to .gitignore parsing and a full scan.

Re-including with .aiinclude

Some files are ignored by .gitignore, but developers or models still want to reference them in the @ menu, such as local documentation, configuration drafts, or auxiliary materials.

You can create a .aiinclude file in the workspace root directory. Using .gitignore syntax, you can re-include files or directories that were ignored.

# Use .gitignore syntax to write the files or directories that need to be included in the scan here

Subdirectories can also configure .aiinclude. Rules in a subdirectory take effect relative to that directory and override root configuration.

After modifying .aiinclude, the data converges within approximately 90 seconds; refreshing the page can accelerate the client-side update.

Directory References and Sorting

The plugin supports directory references, including level-by-level expansion and single-segment queries for direct subdirectories.

Candidate sorting supports the following matching priorities:

  1. Exact match
  2. Prefix match
  3. Substring match

Under equal matching conditions, the plugin prioritizes changed files. Recently modified or newly added changed files are pinned at the top, with a maximum of 5.

The plugin widens the candidate menu to 720px and adjusts the font size and line height to improve the readability of file candidates.

Regarding caching:

  • The client shares cache by workspace cwd and uses the stale-while-revalidate strategy.
  • The Host side uses layered caching for git results.

Regarding security boundaries, the plugin limits:

  • Maximum total files: 10,000
  • Traversal depth: 32
  • Skip heavy directories

Installation and Uninstallation

Installation via npm

First, execute the installation command:

dsh plugin --profile web add @hucj/dsh-file-mention

After execution, restart dsh web and hard refresh the page in the browser with Ctrl+F5. Enter the input box and type @. If the file group appears, the installation is successful.

Installation via Local Path

If you need to debug locally, you can also use a local path for installation:

dsh plugin --profile web add file:D:/path/to/dsh-file-mention

Please note that file: installation is a one-time copy. After source code changes, you need to recompile and reinstall; the installation directory will not automatically sync source changes.

Host Dependencies

The plugin requires the host to have assembled input-trigger related dependencies. The README notes that standard web deployment includes this dependency by default.

Uninstallation

The uninstall command is as follows:

dsh plugin --profile web remove @hucj/dsh-file-mention

After execution, restart dsh web to make the uninstallation effective.

Typical Usage

  1. In the DSH Web GUI input box, type @ to pop up the workspace file candidate menu.
  2. Continue typing by filename or full path to filter candidate files in real-time.
  3. After selecting the target file, @relative_path is inserted into the input box.
  4. Send the message to the model, which can then read the corresponding file based on this path.

If there are files in the project that are ignored by .gitignore but need to be referenced by @, you can do the following:

  1. Create a .aiinclude file in the workspace root directory.
  2. Use .gitignore syntax to write the target file or directory into .aiinclude.
  3. Wait for the convergence within approximately 90 seconds, or refresh the page to accelerate the client-side update.
  4. Re-type @ and confirm that the target file appears in the candidate list.

If a specific subdirectory needs separate inclusion rules, you can also place a .aiinclude in that subdirectory. Rules take effect relative to that directory and override the root configuration.

Applicable Scenarios and Notes

Suitable for the following situations:

  • Frequently instructing models to read workspace files in the DSH Web GUI
  • Wanting to reduce errors caused by manual path entry
  • Needing to unify git tracked files and untracked new files into candidates
  • Needing to respect .gitignore boundaries while retaining the ability to reference some local documentation or configurations
  • Needing to quickly locate subdirectories or sub-files within the directory structure

Usage notes:

  • The plugin runs with the permissions of the current dsh process; it is recommended to check the source code and license before installing.
  • .aiinclude expands the range of files that can be referenced; do not indiscriminately include sensitive files.
  • Local file: installation is a one-time copy; recompile and reinstall after modifying the source code.
  • The DSH plugin ecosystem emphasizes extensibility; the community directory is an independent site with no official affiliation with DeepSeek or Huanfang and should not be written as an official app store.

Related Links