Fast `@` file/session reference caching for the DSH Web GUI: preloaded indexes, browser-local keystroke filtering and native mention serialization.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:Ruiming-cn/dsh-better-at
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
Fast
@file/session reference caching for the DeepSeek Harness Web GUI.
dsh-better-at keeps the native DSH @ reference behavior — hierarchical
workspace file/folder references and DSH session references — while removing the
per-keystroke host round trips that make the @ menu feel slow.
Features
- ⚡ Fast first open: session-scope warm-up preloads the workspace file index
and the DSH session index before the first
@. - ⚡ Local keystroke filtering: after the initial load, typing filters and ranks candidates entirely in the browser; no Host request per keystroke.
- 📁 Hierarchical file/folder references: empty/path queries show direct children, bare fuzzy queries search basenames across the whole workspace.
- 💬 DSH session references: full session metadata is indexed locally and ranked by working-directory affinity, matching the native ordering.
- 🔒 Native mention compatibility: the plugin wraps the existing
referencesource and keeps itsonPick/codec, so file and session mentions keep the original serialized form (@path,@"path",@[label](dsh-session:...)). - 🧩 No Harness source changes: everything is implemented as an out-of-tree Host Remote + browser client bundle.
How It Works
DSH Web @ menu
│ candidates() · local filter/rank
▼
dsh-better-at client cache
│ listFiles / listSessions (once per TTL)
▼
DSH Host betterAt Remote
├── bounded workspace file/directory index
└── full DSH session index + canonical mentions
betterAt/listFileswalks the current workspace once and returns a bounded file/directory index. Defaults exclude.gitandnode_modulesonly, matching the native file-reference behavior.betterAt/listSessionsreads the complete logical session corpus fromctx.sessionQueryand generates nativedsh-session:mentions for the browser.- File indices are cached per session for 30 seconds; the session index is cached globally for 5 minutes. Both use stale-while-revalidate: an expired cache returns the previous snapshot immediately while refreshing in the background.
- The browser wraps the native
@source (trigger='@',name='reference') without replacing its pick/codec path.
Requirements
- DeepSeek Harness (DSH) Web with the native
@reference source available. - Node.js for local development/building.
Installation
One command from GitHub source:
dsh plugin --profile web add github:Ruiming-cn/dsh-better-at
From the GitHub release tarball:
dsh plugin --profile web add https://github.com/Ruiming-cn/dsh-better-at/archive/refs/tags/v0.2.0.tar.gz
From a local checkout:
dsh plugin --profile web add .
Restart dsh web after installation.
Usage
Use @ exactly as usual:
@opens the fast file/folder + session picker.@src/browses insidesrc/.@READMEfuzzy-searches file basenames.@refactorfilters DSH sessions by id, cwd, or label.
After selection, the native composer behavior is preserved: files become atomic file references (or editable directory paths), and DSH sessions become native session references.
Configuration
The Host plugin accepts two settings through the profile patch:
# ~/.dsh/profiles/web/cordis.patch.yml
- id: dsh-better-at
config:
maxEntries: 10000
ignoreDirs:
- .git
- node_modules
| Option | Default | Description |
|---|---|---|
maxEntries |
10000 |
Hard cap on indexed workspace entries; the walk reports truncation. |
ignoreDirs |
['.git', 'node_modules'] |
Directory basenames never indexed or traversed. |
Performance Notes
- The first
@after a warm session is normally served from memory. - Subsequent keystrokes are local
O(N)string scoring over the cached index (file index is bounded bymaxEntries; session index is bounded by the local session corpus). - The main trade-off is a small freshness window: file changes may take up to 30 seconds to appear; session metadata up to 5 minutes. Background refreshes keep the previous snapshot visible while updating.
Compatibility Notes
- The browser integration intentionally uses the same private
inputTriggers.live.sourceswrapping pattern asdsh-skill-fuzzy. If a future Harness version changes that internal structure, the plugin degrades to the nativecandidatespath when the Remote is unavailable. - Symbolic links are not indexed or traversed, matching the native file-reference search behavior.
- The current session is excluded from DSH session candidates to avoid self-references, which the native session-reference protocol rejects.
Development
npm install --legacy-peer-deps
npm run check
npm run typecheck— TypeScript strict typecheck.npm run test— pure-function unit tests (Node test runner).npm run build— buildslib/index.js(Host ESM),lib/client.js(single-file browser bundle) and.d.tsdeclarations.
lib/ is committed so profile installs can run without a build step.
License
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-task-board★ 8707
Task board for the dsh web GUI: a sidebar multi-column kanban whose cards run in real DSH agent sessions and can also be scheduled with cron expressions, executed host-side even with the browser closed.
zhu1090093659/dsh-web#packages/dsh-web-all★ 8707
Plugin and skin collection for the DSH Web UI: task board, Git graph, right-side panel, remote mobile UI, pet, live token stats, and a skin center.
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 4719
A fixed-corner whale widget for the DSH web GUI — balance, today's usage and per-turn cost with peak/off-peak pricing, editable balance-alert and daily-budget bubbles, a module-based custom bubble queue with A/B weighted choices and random lines or images, 30+ vendor templates (OpenAI, OpenRouter, Kimi, SiliconFlow, Ark, Zhipu, MiniMax and more) with per-model balance and subscription quota, plus task-end sound, imported audio, custom roles and a resource manager. Local-only, no telemetry.
ccch1mneyyy/dsh-TUI★ 4557
Claude Code-style full-screen terminal UI: pixel-whale header, live status line, and streaming thought expansion.
omdsh-dev/DSH-better-sidebar★ 4153
Full sidebar workbench with file rendering and editing, terminal, Git, and subagents; third-party plugins can register new tabs.
Devin-AXIS/deepseek-design#deepseek-idesign★ 1454
Visual design studio for websites, app prototypes, posters, cards, reports, and magazines, with templates, direct element editing, selection-aware AI draft handoff, and export.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.