Preface¶
DeepSeek Harness (dsh) is an agent framework open-sourced by DeepSeek AI. The official repository summarizes its architecture in one sentence: Everything is a plugin. It is currently in developer preview, with the Web UI running by default at http://127.0.0.1:3080. When writing code daily, the often tedious part is not the model itself, but how to clearly specify “just look at this file”: you have to type the full relative path manually, and copying and pasting can easily bring irrelevant content into the context.
Tools like OpenAI Codex solve this problem with @file. The community plugin dsh-at-file brings a similar interaction to DeepSeek Harness’s Web input box: input @ to search the current workspace, and select an item to insert the path reference into the prompt. It should be noted that the community plugin directory page still states “attach the content directly to the prompt”; the repository README and package.json have inconsistent descriptions for versions 0.3.0 and later — the plugin only attaches paths, not injecting file content. This article is organized after cross-checking the directory page, GitHub repository README (including the Chinese version) and package.json.
The community directory site deepseek-harness-plugin.com is an independent indexing platform and has no official affiliation with DeepSeek / HyperGryph. Do not treat it as an official app store.
What is This¶
dsh-at-file is a workspace path reference plugin for DeepSeek Harness’s Web interface, maintained by the organization account omdsh-dev, licensed under MIT, and mainly written in JavaScript. The community directory categorizes it under “Tools and Capabilities” and marks it as featured; the repository was created on 2026-08-13, with GitHub topics dsh and dsh-plugin. When checking this repository on 2026-08-17, the star count was 271 (the directory page showed 172 at that time, please refer to GitHub for the accurate number).
The problem it solves is very specific: use @ in the input box to search and insert a workspace file or directory path, so that subsequent steps know “where the target is”, instead of stuffing the entire file into the prompt. A line in package.json states it more directly: search workspace paths without injecting file content.
The current repository package.json version is 0.6.1, and the Git tag also has v0.6.1. The dsh.client.platform declaration is web, so it serves the Web GUI, not headless sessions.
Core Features¶
1. Select Paths with @ in the Input Box¶
Type @ in the composer (input box), and the plugin will search the current workspace and pop up a path selector. After selecting an item, the path will remain in the draft; the reference bar above the input box can open the path or remove the reference. The example given by the repository is:
Please review @docs/spec.pdf
Plain keywords only match filenames. Full names, prefixes and compact matches will be ranked first, and irrelevant results will not be returned just because a few letters happen to be scattered in a long directory path. When a keyword contains /, it will match path segments in order. For example, src/view can find src/client/view.ts; entering src/ will continue searching under that path.
After highlighting a directory, press the right arrow key to enter the directory: the draft will become @path/ with no trailing space, and the candidate menu will remain open. Press Enter or click the directory with the mouse, and the directory reference will be completed directly.
The candidate items first display filenames, with parent directories below; files with the same name will have their parent directories written into the main title. Built-in SVG icons are used to distinguish directories, source code, text, PDFs, images, data and configurations, compressed packages and other files.
2. Only Attach Path References When Submitting, Do Not Read File Content¶
Before each agent starts processing, the plugin will confirm that the path still exists in the current workspace, then append a short message:
<workspace-reference path="docs/spec.pdf" kind="file" />
The reference only contains the workspace relative path and type (kind). The plugin will not open the referenced file, nor list the contents of the referenced directory. Reading files, viewing images, and parsing PDFs are all handed over to existing tools in the current session. The README specifies: DSH’s read is used for UTF-8 text, and read_image for supported images; whether PDF can be processed depends on what tools are installed in this session.
This process applies regardless of file format and file size. PDFs and regular source code use the same path reference mechanism. The repository clearly states: the above mechanism applies to versions 0.3.0 and later; earlier versions would read file content when submitting, and were limited by file size. If the directory page or third-party lists still say “attach content to the prompt”, that is the old behavior, do not use the current plugin based on the old version expectations.
3. Skip Noisy Directories by Default, with Customizable Filter Rules¶
The default index skips common version control directories, IDE metadata, dependency trees, caches and build artifacts, covering VS Code, Visual Studio, JetBrains IDEs, Fleet, Eclipse, Android / Gradle, Xcode, CMake, Flutter, .NET, Unity, Unreal, and common JavaScript and Python output directories. desktop.ini, Thumbs.db, and .DS_Store are also excluded by default.
To further tighten the filtering, go to Settings → File Mentions:
- Global: Shared across all workspaces
- Workspace: Additional rules for the currently selected workspace path; the panel will also display inherited global rules
Each rule can independently select matching mode and case sensitivity:
- Exact: Matches a complete filename, does not accept path separators
- Regex: Uses JavaScript regular expressions to match complete filenames, excluding parent directories or workspace paths
- Case sensitive: Off by default, can be enabled for both Exact and Regex modes
Invalid regular expressions will throw an error before saving, and the Host will reject them. Restore Defaults only resets the global list; Clear Workspace Rules only deletes the additional items for the current workspace. Settings are written into the DSH web profile via the plugin’s own Host interface. Old string rules will continue to be treated as case-insensitive Exact rules. Changing the rules will clear the relevant index cache, and the next time you input @, the new rules will be used.
4. Index Scope Can Be Configured in the Profile¶
There are two more configuration items for the path selector, written in cordis.patch.yml of the selected profile, commonly located at ~/.dsh/profiles/web/cordis.patch.yml:
- maxIndexedFiles: Maximum number of workspace index entries
- ignoreDirs: Replace the built-in ignored directory list; setting it to [] will index all directories
The example given by the repository only modifies the upper limit:
- id: dsh-at-file
config:
maxIndexedFiles: 10000
Omitting ignoreDirs will continue using the built-in list; once you fill it in, you need to list all directory names you want to exclude, rather than appending to the default list.
There are several hard constraints for path processing, all from the README:
- Only index regular files and directories, skip configured directory names and symbolic links
- Global and workspace filename rules are merged during Host traversal; filtered entries do not occupy maxIndexedFiles and will not be sent to the browser
- The Host only accepts workspace relative paths; absolute paths and paths outside the workspace will be ignored
- Only text entered by the user will generate reference messages
- Clicking the reference path will call Harness’s host.openPath
- Path index cache for each session expires after 30 seconds
- @path cannot contain whitespace or another @
- maxIndexedFiles only limits the selector results; manually entered paths can still be referenced as long as they exist within the workspace
Installation and Activation¶
The installation command given on the community directory page is:
dsh plugin add github:omdsh-dev/dsh-at-file
For reproducible installations, the directory page recommends pinning to a commit:
dsh plugin add github:omdsh-dev/dsh-at-file#commit
Replace #commit with the actual commit hash. The repository README states that the build artifacts in lib/ are committed into the repository, so you do not need to run the package build script when installing the profile.
The README also provides a method targeting the web profile and pinned to a tagged release (the documentation example still uses v0.6.0):
dsh plugin --profile web add https://github.com/omdsh-dev/dsh-at-file/archive/refs/tags/v0.6.0.tar.gz
This same command can also be used to update an existing installation. After installation, restart dsh web so that both the Host and browser client load the correct version. The latest tag of the repository is currently v0.6.1, which matches the 0.6.1 version in package.json; the installation section of the README has not been updated to this tag yet. If you want to follow the documentation, use the v0.6.0 package above; if you want the latest tag, replace v0.6.0 in the URL with v0.6.1.
There is a security reminder on the directory page that you should read before installing: the plugin runs with the permissions of the current dsh process, and may execute code during installation. Check the source code repository and license before deciding whether to install.
Typical Usage¶
After installing and restarting the Web UI, the workflow is: open the workspace → input @ in the input box → select a file or directory → write the task in natural language.
The following example is directly from the repository documentation, and you can test it as-is:
Please review @docs/spec.pdf
After submission, the agent will see something like:
<workspace-reference path="docs/spec.pdf" kind="file" />
It receives the path, not the PDF body. Whether it will call read, other parsing tools, or tell you that there is no suitable tool in the current session depends on the tool set of the session, not the plugin itself.
To reference a subdirectory, you can enter src/ to narrow the scope, or press the right arrow key on the directory candidate to enter the directory before selecting a file. Do not add spaces in the path, and do not write a second @. Files not listed in the selector can still be manually written as @relative-path and submitted, as long as the path is indeed within the workspace.
If the index is too large or too noisy, first modify the filename rules in Settings → File Mentions; if that is not enough, modify maxIndexedFiles and ignoreDirs in cordis.patch.yml. You do not need to reinstall the plugin after making changes, but note that ignoreDirs replaces the entire table, and omitting built-in directory names will re-index the previously skipped dependency directories.
Applicable Scenarios and Notes¶
It is suitable for these situations:
- You mainly work in dsh web and need to repeatedly point to certain source files, configurations, documents or directories
- You want interactions similar to Codex’s @ mentions, but do not want to inject entire large files or PDFs into the prompt
- There are many noisy directories in the workspace, and you need default ignore rules or an additional layer of filename filtering based on the repository
Notes before use:
1. Platform is Web. package.json lists the client platform as web, do not assume it works the same in headless / TUI environments.
2. It is a path reference, not automatically attaching content. After 0.3.0, it no longer reads files when submitting; whether the agent reads them or can read a certain format depends on the session tools.
3. The security boundary is cut by workspace. Absolute paths and paths escaping the workspace will be ignored; symbolic links are not indexed by default.
4. DeepSeek Harness is still in developer preview, and the official README notes that there will be breaking compatibility changes. The plugin is also releasing updates rapidly (the repository has tags from v0.2.0 to v0.6.1), so try to pin to a commit or tag when installing.
5. The plugin runs with the permissions of the current dsh process. Read the source code and MIT license before installing, only install from sources you trust.
Summary¶
dsh-at-file adds a Codex-style @ path selector to DeepSeek Harness’s Web input box: search the workspace, insert relative paths, and append <workspace-reference /> before the agent starts. The current implementation deliberately does not inject file content, leaving “opening, reading, parsing” to the tools in the session. This conflicts with the old descriptions in some directory summaries, so please refer to the repository README.
Directory page: https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-at-file/
GitHub: https://github.com/omdsh-dev/dsh-at-file