Introduction

When developing agents with DeepSeek Harness (DSH), it’s often necessary to have the model “focus” on a specific file: reviewing a PDF specification, modifying code against src/client/view.ts, or discussing configurations within a particular directory. If you have to manually copy paths and paste them into prompts each time, errors can easily occur as conversations grow, and the context can become verbose.

The community plugin dsh-at-file (maintained by FSMargoo) brings the common @file experience from Cursor / Codex to the DSH web input area: type @ in the composer, search for workspace files or directories, select one, and attach its path to the prompt. As of August 2026, this repository has approximately 466 Stars and 19 Forks on GitHub and is licensed under MIT.

Note: Newer versions of the official DeepSeek Harness have built-in @file and @session referencing capabilities; new environments should prioritize the official implementation. dsh-at-file remains suitable for scenarios with existing plugin-based deployments, needing independent configuration of filtering rules, or maintaining legacy workflows, as the maintainer has stated efforts will continue.

What Is This

dsh-at-file is a community plugin for the DSH Web interface. It provides workspace path search and reference in the input box, rather than handling reasoning in the backend for the model.

In one sentence: Use @ in the composer to search the workspace and attach the relative path of a file or directory to the prompt; before the agent starts execution, the plugin verifies the path is within the current workspace and inserts a concise reference mark, which tools in the session can read as needed.

In the SkillHub Plugin Repository, this plugin is categorized under “Model Reasoning”; in the DeepSeek Harness Community Plugin Directory, it falls under “Tools and Capabilities.” Regardless of categorization, its core value lies in reducing the operational cost of “specifying file context.”

Core Features and Highlights

Codex-style @ Path Selector

After typing @ in the composer, a scrollable candidate list appears (up to 50 items). For pure filename queries, exact matches and prefix matches appear first; for empty queries, shallow paths are prioritized over deep paths, and directories appear before files at the same depth.

Queries containing / match by path segment order—for example, src/view can locate src/client/view.ts; src/ continues filtering within that directory. Highlighting a directory and pressing ArrowRight enters its subdirectory, updating the draft to @path/ while keeping the menu open; Enter or a mouse click completes the reference.

Each result displays the full filename above and the parent directory below; duplicate filenames include the parent directory in the main label, and built-in SVG icons distinguish folders, source code, text, PDF, images, configuration files, archives, etc.

Path Reference, Not Full Content Injection

Since v0.3.0, the plugin no longer reads file content into the prompt at submission or applies hard truncation based on file size. After selecting a path, before the agent starts, a reference mark like the following is generated:

<workspace-reference path="docs/spec.pdf" kind="file" />

The mark contains only the workspace-relative path and type (file / directory). The plugin itself does not open files or list directory contents; tools like read or read_image in the current session handle these as needed. PDFs and text files follow the same path reference process.

Intelligent Filtering and Configurable Ignore Rules

The default index skips common version control directories, IDE metadata, dependency trees, build artifacts, and caches (covering ecosystems like VS Code, JetBrains, Gradle, Xcode, CMake, Flutter, .NET, Unity, etc.), and excludes system files like desktop.ini, Thumbs.db, .DS_Store, etc.

Filtering rules can be managed in Settings → File mentions:

  • Global: Shared across all workspaces.
  • Workspace: Adds rules only to the current workspace, inheriting the global list.

Each rule supports Exact (full basename) or Regex (JavaScript regex on the basename) with optional case sensitivity. Invalid regex is caught before saving; Restore defaults reverts to the built-in global list, and Clear workspace rules only clears current workspace additions.

Pasting Behavior and Security Boundaries

By default, @path text pasted from outside does not trigger the selector, appear in the reference bar, or generate a workspace-reference mark, preventing accidental interpretation of @ in chat history as file references. To enable the old behavior, turn off Ignore @ mentions in pasted text in Settings → File mentions.

The host only accepts workspace-relative paths; absolute paths or paths attempting to escape the workspace are ignored. @path tokens cannot contain whitespace or a second @. Clicking a path in the reference bar invokes Harness’s host.openPath to open the file.

Installation and Activation

The general installation command provided on the community directory page is:

dsh plugin add github:FSMargoo/dsh-at-file

For reproducible installation, pin to a specific commit:

dsh plugin add github:FSMargoo/dsh-at-file#<commit-hash>

This plugin primarily serves the Web profile. The recommended versioned installation method in the repository README (requires restarting dsh web after installation to load v0.6.8 via Host and browser client) is:

dsh plugin --profile web add https://github.com/omdsh-dev/dsh-at-file/archive/refs/tags/v0.6.8.tar.gz

Note: The README’s installation package URL points to release archives from omdsh-dev/dsh-at-file, the same plugin line as the current main repository FSMargoo/dsh-at-file; refer to the repository documentation.

⚠️ Security Note: DSH plugins run with the current dsh process permissions; the installation process may execute build or initialization scripts. Before installation, please review the GitHub source code and MIT license to ensure the source is trustworthy.

Typical Usage Examples

Referencing a Single File in a Prompt

Type @ in the composer, search for and select docs/spec.pdf. The draft might look like:

Review @docs/spec.pdf

After sending, the plugin verifies the path exists, then inserts the workspace-reference mark; the agent can subsequently use session tools to open and read the PDF.

Referencing a Directory

Select a directory with @ (e.g., src/components/); the reference type is directory. The plugin does not automatically enumerate directory contents, making it suitable for expressing intentions like “please make changes within this directory,” while the agent reads specific files as needed.

Adjusting Index Scale via cordis.patch.yml

If the workspace contains many files, you can limit the number of indexed entries or customize ignored directories in the Web profile’s configuration patch. The configuration file is typically located at ~/.dsh/profiles/web/cordis.patch.yml:

- id: dsh-at-file
  config:
    maxIndexedFiles: 10000

If ignoreDirs is omitted, the built-in ignore list is used; if explicitly provided, you must list all directory names to exclude. Setting it to [] means no directories are skipped during indexing (use caution with large monorepos).

Applicable Scenarios and Considerations

Who It’s For

  • Developers frequently conversing in the DSH Web interface who want to use @ to quickly reference files or directories.
  • Teams requiring fine-grained file filtering (Exact/Regex, global and workspace-level).
  • Legacy environments unable to upgrade to a Harness version with built-in @file but wanting to retain path reference capabilities.

Usage Notes

  1. Overlap with Official Capabilities: New DSH installations should first verify if the built-in @file / @session meets requirements before deciding to install this plugin separately.
  2. Primarily Web Scenario: Installation commands and settings panel are centered on --profile web; benefits are limited for CLI-only workflows.
  3. Index Caching: Path indices are cached per session for about 30 seconds; modifying filtering rules clears related caches, rebuilding the index on the next @ search.
  4. maxIndexedFiles Only Affects the Selector: When the index limit is exceeded, references can still be completed by manually entering existing relative paths.
  5. Tool Capabilities Depend on the Session: UTF-8 text typically uses read, images use read_image; whether PDFs and other formats can be processed depends on the tools bound to the current agent.
  6. Community Directory is Not an Official Store: SkillHub and deepseek-harness-plugin.com are community-maintained plugin indices with no official affiliation to DeepSeek or High-Flyer; “everything is a plugin” is DSH’s architectural philosophy, so installation decisions should refer back to the source code and license.

Conclusion

If you want to use @ in the DSH Web composer to reference workspace paths like in an IDE, rather than repeatedly copying and pasting absolute paths, dsh-at-file is one of the more mature choices in the community: it offers complete search experience, configurable filtering, and clear reference semantics that align with the official Harness toolchain. Even if the official implementation already includes similar capabilities, understanding this plugin’s path marking and filtering mechanisms can help comprehend how DSH transmits “file context” from the UI layer to the agent layer.