When developing agents in the Web interface of DeepSeek Harness, injecting local file content into the model context usually requires manual copy-and-paste or the use of additional tools. The dsh-at-file plugin simplifies this workflow by allowing you to select files in the workspace using the @ symbol and injecting their contents into the prompt, without copy-and-paste or additional tool round trips.

Feature Description

The plugin provides the following core capabilities:

  • Workspace file reference: Type @ in the Web composer to list files in the current workspace.
  • Candidate filtering: Supports filtering by filename (basename), path prefix, or substring.
  • Automatic injection: After selecting a file, its content is injected into the model context without manual copying.
  • Logging: Injected messages are recorded in the session log and marked as coming from the at-file source, ensuring inputs can be reconstructed.

Installation

Install the plugin using the DeepSeek Harness CLI. The plugin must be installed into the web profile:

dsh plugin --profile web add github:MisRightW/dsh-at-file
# 或者从 Git URL 安装
dsh plugin --profile web add https://github.com/MisRightW/dsh-at-file.git
# 或者从 npm 包安装
dsh plugin --profile web add dsh-at-file

Note: On first installation from GitHub, pnpm will request permission to build packages. Follow the prompts.

Usage Steps

  1. Open a session in the DeepSeek Harness Web GUI and select the corresponding workspace directory.
  2. Type @ in the composer input box.
  3. Select a file from the file list that appears. You can filter using basename (for example, @main), path prefix (for example, @src/m), or substring, use the arrow keys to choose, and press Enter to confirm.
  4. Send the prompt. All resolvable @path tokens are expanded into injected file content blocks before sending; unresolvable or oversized tokens remain as plain text.

Configuration Options

The Host side accepts the following configuration in cordis.patch.yml:

Key Default Meaning
maxFiles 1000 Maximum number of index rows returned by a single listing call
maxDepth 8 Maximum traversal depth for directory indexing
maxBytes 65536 Maximum byte limit for injecting a single file; files exceeding this limit are not indexed
maxReferences 8 Maximum number of references expanded per pre-step
skipDirectories .git, node_modules, dist, build, out, coverage, __pycache__, .venv Directory names that are not indexed (case-insensitive)

Differences

This plugin has the same functionality as the in-tree implementation in the DeepSeek Harness repository, but differs in UI details:

  • Draft chips: Selected paths are not rendered (supported in the in-tree version).
  • Localization: The menu group title is shown as the original source name file, rather than localized text (supported in the in-tree version).
  • Permissions: The plugin runs with the permissions of the current DSH process. Please review the source code and license before installation.

This plugin is a community contribution maintained by developer MisRightW and is released under the MIT license. Its source code and documentation are available on GitHub. The community directory provides more ways to discover and integrate plugins.