dshbase

插件目录 / UI & Skins / dsh-client-ui-filesystem

dsh-client-ui-filesystem

未验证 dsh-mixxed

✓ 持续维护 2 位贡献者 纯 TypeScript

查看 GitHub ↗ ← 返回插件目录

1Stars
0Forks
0未关闭 issue
TypeScript语言
2026-08-16最近推送
跨平台平台

功能简介

定制 DeepSeek Harness 文件系统 UI 插件。

我们的评价
未验证 — 尚未实测

定制 DeepSeek Harness 文件系统 UI 插件。 尚未验证——请自行安装测试。

「未验证」表示我们的自动化 CI 尚未安装过该插件。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。

你是插件作者? 想拿到「已验证」标签——提交你自己的验证证据(截图、日志或短视频),我们审核通过后即改为「已验证」。

提交验证证据 ↗

README

ui-filesystem

English · 中文

A dsh plugin that adds @ project file/directory suggestions to the chat composer: type @ to browse the current project (the session's working directory), pick a file or directory, and the draft gains a @path reference that ships to the model verbatim.

Built as a fully out-of-tree plugin — the deepseek-harness source stays untouched. It rides the same input-trigger pipeline as ui-skill's / (so it coexists with ui-subagent's @ mentions as a second menu group), and it serves its project tree over its own HTTP route (ctx.webServer).

Install

  1. Install the plugin from npm (published as @dsh-mixxed/dsh-client-ui-filesystem):

    dsh plugin --profile web add @dsh-mixxed/dsh-client-ui-filesystem
    

    The package declares dsh.bundle (its bundled cordis.patch.yml), so dsh plugin add automatically appends it to the profile's dsh.profile.bundles layer stack and the plugin mounts on the next boot — no manual cordis.patch.yml editing.

    Upgrading an install that predates the bundle declaration: remove the legacy ui-filesystem row from $DSH_HOME/profiles/<name>/cordis.patch.yml — the bundle layer now supplies it, and leaving both would mount the id twice.

  2. Restart the profile (new plugins are discovered at boot), open any session, and type @.

Building from source (development / offline)

pnpm install
pnpm run typecheck
pnpm test
pnpm run build
npm pack          # produces dsh-mixxed-dsh-client-ui-filesystem-<version>.tgz
dsh plugin --profile web add ./dsh-mixxed-dsh-client-ui-filesystem-<version>.tgz

Features

  • @ trigger: same pipeline as ui-skill's / (ui-input-trigger), shown alongside ui-subagent's @ mentions as its own menu group
  • Basename-prefix matching: the query matches only the file/directory name prefix, never the path prefix — @index hits src/index.ts and test/index.ts; path-shaped queries like @src/ return nothing (by design)
  • Filename-first rows: every candidate shows the file/directory name first and the relative path after (e.g. index.ts src/index.ts)
  • Plain-text references: picking replaces the @ token with the literal @relative/path — the prompt ships the same literal and the model resolves the file with its own fs tools
  • Per-session caching: each session fetches the bounded project tree once; keystroke filtering happens locally, and connection/reset rebuilds the cache
  • Bounded walk: skips node_modules / .git / hidden entries (configurable), caps depth at 6 and entries at 2000, and never lists symlinks
  • Retry on failure: a failed tree request (e.g. right after the host restarts, before the session is attached) retries once, keeping the menu in its loading state instead of vanishing

Usage notes (harness behavior, accepted as-is)

  • Where @ triggers: the trigger char must sit at the start of the draft, after whitespace, or after punctuation. A Chinese character directly before @ does not trigger (请查看@index is a miss; 请查看,@index works) — the trigger detector treats CJK letters as word characters. That rule lives in the harness's ui-input-trigger; this plugin does not modify the harness, so inline references work best with a space or punctuation before @.
  • Loading state: while the project tree loads, the menu opens immediately with the group's existing text-only loading row (正在加载…); an animated spinner would require modifying the harness menu component, which this plugin does not do.
  • No chip decoration: @path stays plain text in the draft — the decoration scanner only matches word-ish names, so paths never render as chips (DESIGN.md §7.1).
  • No menu group title: the harness menu renders a raw per-source title row (the slash.menu dictionary is exclusively owned by the harness); since @ shows only this plugin's group, the title row is hidden with one injected CSS rule.
  • Full boundary list: DESIGN.md §7.

Verify

dsh --profile <name> --dump-config | Select-String ui-filesystem

The composed config shows the ui-filesystem row, and $DSH_HOME/profiles/<name>/package.json lists @dsh-mixxed/dsh-client-ui-filesystem under dsh.profile.bundles (auto-appended by dsh plugin add).

After the restart: @ opens the filesystem group (name first, path after) → basename-prefix filtering → picking inserts @path → the model can read the file from the prompt literal.

Config (optional)

Tune the walk bounds from your profile's own cordis.patch.yml — the user layer is applied after the bundle layer, so an id-targeted patch overrides the bundled mount row:

- id: ui-filesystem
  name: "@dsh-mixxed/dsh-client-ui-filesystem"
  config:
    maxDepth: 6          # max path-segment depth (default 6)
    maxEntries: 2000     # total entry cap (default 2000)
    skipHidden: true     # skip dot-prefixed entries (default true)
    skipPatterns:        # basename exact-match skip patterns (default node_modules, .git)
      - node_modules
      - .git

License

MIT

安装

🧩 让 Agent 自动装(推荐)

装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:

dsh plugin add dshbase-catalog

然后对 agent 说「帮我装 dsh-client-ui-filesystem」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包

该插件是 GitHub 源码(未发 npm)——直接从仓库装:

Web profile:

dsh plugin --profile web add github:dsh-mixxed/dsh-client-ui-filesystem

Headless(CLI)profile:

dsh plugin --profile headless add github:dsh-mixxed/dsh-client-ui-filesystem

实测报告

尚未 L3 验证——若已跑过,见下方失败备注。

状态:pending
备注:验证: install-fail (0.1.0-rc.6) 浏览全部待验证失败 →

使用场景

改变 dsh 的外观或交互方式——一套主题、皮肤或新面板,重塑工作区。

适合谁

在 web UI 里一待几小时、想让它按自己的习惯好看又好用的人。

二次开发建议

皮肤、面板和主题 token 是扩展点——写新皮肤、加面板,或与上游配色同步 token。

安全:尚未扫描——我们的每日静态扫描将很快覆盖它。

分享徽章

UI & Skins 里更多

浏览全部 7795 个插件 →