DeepSHPlugins
dsh-at-any 專案預覽
GITHUB / COMMUNITY PROJECT

dsh-at-any

UI 增強JavaScriptMIT

Codex 風格的 `@file` 檔案引用:輸入框裡搜尋並引用工作區所有格式的檔案(.java、.vue、PDF、圖片、無副檔名、隱藏檔案),無索引上限。dsh-at-file 的替代品。

5 Starshatsuyuki0103 更新時間 2026-09-07
訪問 GitHub 倉庫
dsh-at-any 專案預覽
dsh-at-any 介面截圖dsh-at-any 介面截圖dsh-at-any 介面截圖

專案介紹

中文

Codex 風格的 `@file` 檔案引用:輸入框裡搜尋並引用工作區所有格式的檔案(.java、.vue、PDF、圖片、無副檔名、隱藏檔案),無索引上限。dsh-at-file 的替代品。

English

Codex-style `@file` mentions for the web GUI: search and reference workspace files of every format (.java, .vue, PDF, images, extension-less, hidden) with no index truncation. Replaces dsh-at-file.

專案資訊與收錄訊號

快照 2026-09-11
作者 / 組織
hatsuyuki0103
倉庫
hatsuyuki0103/dsh-at-any
GitHub Stars
5
Forks
0
開發語言
JavaScript
許可證
MIT
最近推送
2026-09-07
Manifest
資料中檢測到宣告

公開倉庫不自動等於可商用;許可證與當前相容性以原專案文件為準。Manifest 和資料評分不構成安裝安全認證。

資料評分

72/ 100
維護活躍
98
文件與實用資訊
100
生態關注度
22
安裝便捷訊號
100
專案宣告訊號
85

近 4 天仍在更新;README 含完整安裝與使用說明;關注度尚低(5)。

評分來自已有資料快照的五維模型,僅作瀏覽參考,不是實際使用評測或安全檢測結論。

安裝與使用

所有專案資料與許可均以對應 GitHub 倉庫為準。

dsh plugin --profile web add github:hatsuyuki0103/dsh-at-any

複製命令不會自動執行。請先閱讀倉庫文件,確認環境要求與許可證。

專案截圖

倉庫 README

GitHub 原文

已儲存的倉庫文件快照;文件抓取時間未記錄,可能與上方目錄介紹處於不同版本。安裝前請核對當前倉庫說明。

儲存庫檔案保留原文,指令與授權文字不作自動改寫。

dsh-at-any

Workspace path references for the DeepSeek Harness web interface. Type @ in the composer to search the current workspace and insert a file or directory path.

Why dsh-at-any instead of dsh-at-file: the original plugin capped its index at 5000 entries by default, which silently dropped .java/.vue and other source files in workspaces with more files (the bug this fork fixes). dsh-at-any removes the practical cap (default 1,000,000) and indexes every source format — .java, .vue, .ts, XML, YAML, images, PDFs, extension-less and hidden files (.env, ...). Build-artifact directories (target/dist/node_modules/...) are still skipped by default.

@ path picker

File reference in the composer

Usage

Choose a result from the @ menu. The selected path remains visible in the draft and can be opened or removed from the reference bar.

Review @docs/spec.pdf

Before the agent starts a step, the plugin confirms that the path exists inside the active workspace. It then adds a short reference message:

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

The reference contains the workspace-relative path and its kind. The plugin does not open the referenced file or list the contents of a referenced directory. The agent can inspect the path with the tools available in the current session when the task requires it.

File format and file size do not change this behavior. A PDF follows the same path-reference flow as any other workspace file.

This mechanism applies to version 0.3.0 and later. Earlier releases read file content during submission and enforced file-size limits.

Path Picker

Plain queries match filenames. Exact names, prefixes, and compact matches rank ahead of looser results, without matching letters scattered across a long directory path.

A query containing / matches path segments in order. For example, src/view can find src/client/view.ts. A trailing slash such as src/ searches within that path.

When a directory is highlighted, press ArrowRight to enter it. The draft advances to @path/ without a trailing space, and the candidate menu stays open for the next selection. Enter and pointer selection keep the existing behavior and finish the directory reference.

Each result shows the filename first and its parent directory underneath. Duplicate filenames include the parent directory in the main label. Built-in SVG icons distinguish folders, source files, text, PDFs, images, data and configuration files, archives, and other files.

The default index skips common version-control directories, IDE metadata, dependency trees, caches, and build output. The list covers VS Code, Visual Studio, JetBrains IDEs, Fleet, Eclipse, Android and Gradle, Xcode, CMake, Flutter, .NET, Unity, Unreal, and common JavaScript and Python output directories. OS metadata files named desktop.ini, Thumbs.db, and .DS_Store are excluded by default.

Install or Update

dsh plugin --profile web add https://github.com/hatsuyuki0103/dsh-at-any/archive/refs/tags/v0.1.0.tar.gz

Use the same command to update an existing installation. Restart dsh web after installation so the Host and browser client load version 0.1.0.

Replacing dsh-at-file: this plugin shares the atFile service namespace with dsh-at-file, so the two must not be enabled at the same time. Migration: remove the old plugin first (edit the profile package.json and delete the "dsh-at-file": "file:..." dependency line, or run dsh plugin --profile web remove dsh-at-file), then install this plugin and restart dsh web.

File Filters

Open Settings -> File mentions to manage file-name filters.

File mention settings with Exact and Regex rules

  • Global contains rules shared by every workspace.
  • Workspace contains additional rules for the selected workspace path. Each workspace keeps its own list, and the panel shows the global rules it inherits.

Each rule has its own matching mode and case setting:

  • Exact matches one complete basename. Path separators are not accepted.
  • Regex runs a JavaScript regular expression against the complete basename. It does not receive the parent directory or workspace path.
  • Case-sensitive can be enabled independently for any Exact or Regex rule. It is off by default.

Rules are added and removed individually. An invalid regular expression is shown before saving and is also rejected by the Host. Restore defaults resets the global list to the built-in file names. Clear workspace rules removes only the selected workspace's additions.

Settings are saved in the DSH web profile through the plugin's own Host connection. Existing string values in ignoreFiles and workspace lists continue to work as case-insensitive Exact rules. A change clears the affected index cache, so the next @ search uses the saved rules.

Configuration

The available options apply to the path picker index:

  • maxIndexedFiles is a soft cap on indexed workspace entries, default 1,000,000 (no practical truncation). It only bites for pathological workspaces with over a million entries.
  • ignoreDirs replaces the built-in list of directory names excluded from the picker. Set it to [] to index every directory.

Add the complete configuration to the selected profile's cordis.patch.yml. The usual path is ~/.dsh/profiles/web/cordis.patch.yml.

- id: dsh-at-any
  config:
    maxIndexedFiles: 100000

Omitting ignoreDirs keeps the built-in list. When you provide it, include every directory name you want excluded.

Path Handling

  • The picker indexes regular files and directories in the active workspace. Configured directory names and symbolic links are skipped.
  • Global and workspace file-name filters are combined during the Host index walk, before entries count toward maxIndexedFiles or reach the browser.
  • The Host accepts workspace-relative paths. Absolute paths and paths that escape the workspace are ignored.
  • Reference markers are created only from user-authored text.
  • Clicking a referenced path uses the Harness host.openPath endpoint.
  • The picker index is cached per session for 30 seconds.
  • An @path token cannot contain whitespace or another @ character.
  • maxIndexedFiles limits picker results. A manually entered path can still be referenced when it exists inside the workspace.

The active agent may lack a tool for a particular file format. DSH provides read for UTF-8 text and read_image for supported images. PDF support depends on the tools available in the session.

Troubleshooting

  • Files missing from the @ picker: the picker index is cached per session for 30 seconds and re-walks on first search after a restart. If files are still missing after a restart, check Settings -> File mentions for an Exact/Regex filter that matches their names, and confirm the files are not inside an artifact directory (target/dist/node_modules/...) skipped by the default ignore list.
  • Old plugin still active: dsh-at-any shares the atFile service namespace with dsh-at-file — remove dsh-at-file from the profile (package.json dependency + dsh.profile.bundles list) before or together with installing dsh-at-any, then restart dsh web.
  • Changes to src/ require a rebuilt lib/: lib/ is committed (profile installs run without a build). Run node build.mjs after editing src/ and commit both. If you only patch the built bundle, keep src/ in sync.

Development

pnpm install
pnpm run check
pnpm run test
pnpm run build

The development setup expects the official deepseek-ai/deepseek-harness repository at ../deepseek-harness, its default clone directory. Built files under lib/ are committed so profile installation does not require package build scripts.

License

MIT

使用前核對

安裝步驟、相容版本與授權範圍以原專案當前文件為準。Stars 和評分是快照中的導航訊號。

安裝與排錯 · 專案問題反饋

同類專案