DeepSHPlugins
dsh-file-mention 项目预览
GITHUB / COMMUNITY PROJECT

dsh-file-mention

UI EnhancementsJavaScriptMIT

Session-scoped @file/@folder mentions in the composer with Git-aware indexing, drag-drop and paste managed uploads, and validated path markers.

3 StarstipoLi5890 Updated 2026-08-19
Open GitHub repository
dsh-file-mention 项目预览
dsh-file-mention 界面截图dsh-file-mention 界面截图dsh-file-mention 界面截图dsh-file-mention 界面截图dsh-file-mention 界面截图

About this project

Chinese

Session-scoped @file/@folder mentions in the composer with Git-aware indexing, drag-drop and paste managed uploads, and validated path markers.

English

Session-scoped @file/@folder mentions in the composer with Git-aware indexing, drag-drop and paste managed uploads, and validated path markers.

Project details & listing signals

Snapshot 2026-09-11
Creator / organization
tipoLi5890
Repository
tipoLi5890/dsh-file-mention
GitHub Stars
3
Forks
0
Programming language
JavaScript
License
MIT
Last push
2026-08-19
Manifest
Declaration found in the catalog

A public repository does not automatically permit commercial use. Check the project's license and compatibility. Manifests and catalog scores are not security certifications.

Catalog score

58/ 100
Maintenance activity
85
Documentation & practical information
100
Community interest
17
Installation signals
75
Project declarations
100

近 23 天仍在更新;README 含完整安装与使用说明;关注度尚低(3)。

Scores use five dimensions of the catalog snapshot. They are browsing aids, not hands-on reviews or security assessments.

Install & use

The respective GitHub repositories define project information and licensing.

dsh plugin --profile web add github:tipoLi5890/dsh-file-mention

Copying a command does not execute it. Read the repository documentation and check requirements and licensing first.

Project screenshots

Repository README

GitHub 原文

Saved repository documentation. Its capture date was not recorded and it may differ from the catalog description. Check the current repository before installing.

Repository documentation is preserved in its original language.

dsh-file-mention

Awesome DSH Plugin

Traditional Chinese: README.zh.md

Secure, session-scoped @ file/folder mentions and drag-and-drop file intake for the DeepSeek Harness (DSH) Web composer.

The plugin inserts lightweight path references. It does not attach or inject file content: immediately before an agent step, the Host validates each path and adds a path-only <workspace-reference> marker. The agent then decides whether and how to inspect the target with its own tools.

Features

  • Files and folders — bare @ opens a workspace list; continue typing to

filter by basename or path.

  • Git-aware index — tracked files plus untracked non-ignored files; deleted

tracked paths are removed. Non-Git workspaces use a bounded filesystem walk.

  • Controllable index — nested .aiinclude rules can add required ignored

files with last-match-wins semantics; dirty/mtime metadata, monotonic indexVersion, and workspace invalidation keep changed files current.

  • Fast typing — one per-session index request, warm() prefetch,

single-flight loading, 30-second stale-while-revalidate, local ranking, and optional recent-path prioritization.

  • Unambiguous references — picks retain the full relative path. Paths with

spaces use @"quoted path" syntax.

  • Validated markers — agent/pre-step checks workspace confinement,

symlink-resolved location, existence, and file/directory kind without reading content.

  • Keyboard completion — arrows + Enter or Tab through the input-trigger

controller.

  • Managed drag-and-drop — streaming temp files, atomic no-clobber finalize,

per-file/session/global quotas, retention cleanup, progress, and cancellation.

  • Paste-to-upload — pasting non-image files routes them through the same

managed pipeline instead of failing in the built-in image intake; pure rail-image pastes still reach the image rail.

  • Caret-preserving insertion — uploaded @ paths insert at the caret

recorded before the upload through the frozen slash/input-insert-text contract (draftRev CAS with caret remap), falling back to append.

  • Reference tray — compact file/folder cards below the composer support copy,

reveal, single removal, and batch clear without altering surrounding text.

  • Control Center — Overview, Index, Uploads, and Output tabs expose live index

diagnostics, storage meters, ignore presets, index rebuild, and expired-upload cleanup instead of a flat settings form.

  • Candidate context — optional changed-file status labels and browser-local

recent-path history improve repeated navigation without sending history to the Host.

  • Official UI slots — the tray, Control Center, and optional Host-validated

assistant output path companion use supported DSH integration points.

  • Zero build — hand-written Host ESM and lazy-CJS browser bundle; React is

supplied by the DSH Client runtime.

Screenshots

Browse workspace files and folders

Browsing workspace files and folders from the at-mention menu

Filter and select a file

Filtering README files from the at-mention menu

Configure file mentions

File mention settings page

Drag a local file into the composer

Dragging a local file into the DSH Web composer

Use a managed upload from the Reference Tray

A managed upload shown in the Reference Tray and inserted as an at-path reference

Installation

Requires a compatible DSH Web profile with the client input-trigger, runtime, and locale services.

dsh plugin --profile web add github:tipoLi5890/dsh-file-mention

For local development:

dsh plugin --profile web add link:/absolute/path/to/dsh-file-mention
dsh --profile web --dump-config

Restart DSH Web after install/update.

Usage

ActionResult
@Opens a shallow, ranked workspace file/folder list
@readmeFinds basename matches such as README.md
@src/maSearches the full relative path
Pick src/main.jsInserts @src/main.js
Pick docs/file with spaces.mdInserts @"docs/file with spaces.md"
Pick docs/Inserts @docs/
Arrow keys + TabAccepts the highlighted files candidate
Drop a non-image fileCopies it to managed uploads and inserts its path at the caret
Paste a non-image fileUploads it the same way and inserts its path at the caret

Outside-root browsing through @/, @~/, or @../ is intentionally not part of the picker. The Host index root always comes from the addressed session.

How it works

Host

POST /api/file-mention/index accepts { "sessionId": "..." }. The Host derives cwd from session state, builds/caches a Git or fallback index, and returns relative file/folder paths only.

POST /api/file-mention/upload?sessionId=&name= streams one raw body to a temp file, checks configured per-file/session/global quotas, atomically finalizes it under <DSH_HOME>/uploads/<sessionId>/, and returns its managed absolute path.

POST /api/file-mention/settings owns durable plugin settings. POST /api/file-mention/status returns path-free index/storage aggregates for the Control Center. POST /api/file-mention/maintenance rebuilds the addressed session index or removes uploads past their configured retention period. POST /api/file-mention/path-action validates and reveals only current-workspace or managed-upload paths via structured execFile argument arrays.

At agent/pre-step, direct user mentions are revalidated. Relative paths must remain inside session.cwd; absolute paths are marked only when they resolve inside the managed upload root. The resulting marker looks like:

<workspace-reference path="src/main.js" kind="file" />

Browser

The browser registers an @/files input source. It fetches the complete bounded index once per session, ranks locally on every keystroke, optionally uses browser-local recent-path counts as a tie-breaker, and returns a plain-text insertion outcome. Connection reset clears all index state.

Capture-phase drag handlers claim drags containing non-image files. XHR exposes progress/cancel while the official conversation.input.dock draft action appends the returned references; no textarea DOM mutation fallback is used.

Limits

LimitValue
Index entries20,000
Non-Git traversal depth32
Client menu rows40
Host/Client index freshness30 seconds
Dropped file50 MiB each
.aiinclude files50
JSON request body256 KiB
Session upload quota250 MiB (configurable)
Global upload quota2 GiB (configurable)
Upload retention7 days (configurable)

Git repositories honor .gitignore. The non-Git fallback skips hidden entries, symlinks, VCS metadata, dependencies, caches, and common build outputs.

Development

npm run check

No dependency installation or build step is required. See:

License

MIT © 2026 dsh-file-mention contributors

Before you begin

Check the current repository for installation, compatible versions and licensing. Stars and catalog scores are snapshot-based browsing signals.

Installation & troubleshooting · 项目问题反馈

Related projects