DeepSeek Harness plugin

dsh-at-file-misright

Workspace file references for DeepSeek Harness: pick a file with '@' and inject its content into the model context

Jump to install

Source facts

Repository
MisRightW/dsh-at-file
Latest update
Aug 20, 2026
Category
Tools & Capabilities
GitHub stars
0
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/MisRightW/dsh-at-file
Plugin: dsh-at-file-misright
Author: MisRightW

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer4 files
README.mdSource · read only
README language

dsh-at-file

@ workspace file references for DeepSeek Harness: type @ in the web composer, pick a file from the workspace, and its content is injected into the model context when you send the prompt — no copy-paste, no extra tool round trip.

中文说明见 README.zh.md

Install

dsh plugin --profile web add github:MisRightW/dsh-at-file
# or, from the git URL directly
dsh plugin --profile web add https://github.com/MisRightW/dsh-at-file.git
# or, from a published npm package
dsh plugin --profile web add dsh-at-file

The first GitHub install runs the package's prepare build; pnpm asks you to allow it once (copy the exact package key pnpm prints into the profile's pnpm-workspace.yaml under allowBuilds). See the harness plugin guide for the mechanics.

Usage

1. Open a session in the web GUI and pick a workspace directory. 2. Type @ in the composer — a Files group lists workspace files (the group title shows as file until the harness localizes it). 3. Filter by basename (@main), path prefix (@src/m), or substring; arrow keys + Enter pick. 4. Send the prompt. Every @path token naming a readable regular file expands host-side into an injected <at-file path="…"> content block appended to the model request; unresolvable or oversized tokens stay plain prose.

The literal @path stays in the prompt, and the injected message is recorded on the session log with an at-file source, so the model input is reconstructable from the log.

How it works

HalfPackage entryRole
Hostdsh-at-file (default)AtFileService (ctx.atFile) exposes the atFile Remote namespace (atFile.list, addressed by session id) over a bounded workspace index; the agent/pre-step listener expands @path tokens into injected file content
Browserdsh-at-file/clientMounts the atFile namespace (ctx.remote.$mount) and registers the @ trigger source that lists candidates through it

The Remote wire contract is the hand-authored typert/ artifact pair (the frozen InvocationDescriptor shape, mirroring what the harness's typert generator emits); the dsh.bundle manifest in package.json plus cordis.patch.yml make the package a drop-in profile bundle.

Configuration

The host half reads a validated Config (patchable from the profile's cordis.patch.yml):

KeyDefaultMeaning
maxFiles1000Maximum index rows per list call
maxDepth8Maximum directory depth walked
maxBytes65536Per-file injection cap; larger files are not indexed
maxReferences8Maximum references expanded per pre-step
skipDirectories.git, node_modules, dist, build, out, coverage, __pycache__, .venvDirectory basenames never indexed (case-insensitive)

Differences from the in-tree version

The harness monorepo carries an in-tree implementation that also patches two core client packages. This standalone plugin cannot:

  • Render draft chips for picked paths — the shared chip decoration token grammar lives in the harness core; picks render as plain text (the reference still ships and expands).
  • Localize the menu group title — the slash.menu dictionary lives in the harness core; the group shows the raw source name file.

Everything else — candidates, filtering, caching, @path expansion, injection bounds, logging — is identical.

Development

pnpm install        # peer deps come from the dsh host; see pnpm-workspace.yaml
pnpm build          # tsdown → lib/index.js (host) + lib/client.js (browser)
pnpm test           # vitest: host + client suites
pnpm typecheck

The tests run against the published @deepseek-ai/* rc packages, so an API drift in a harness release surfaces here first.

License

MIT — see [LICENSE](LICENSE).