DeepSeek Harness Plugin

tsonglew/dsh-workspace-search

Stars ★ 5 Category UI Enhancements Added 2026-08-14

VS Code-style workspace keyword search tab for dsh-better-sidebar: matches file names and content, grouped by file with line numbers, opens in the sidebar editor.

Install

# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)

dsh plugin --profile web add github:tsonglew/dsh-workspace-search

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

VS Code-style workspace keyword search for the DeepSeek Harness (dsh) web GUI, registered as a Search tab inside dsh-better-sidebar.

  • Keyword search across the session workspace: file names and file contents, grouped per file with line numbers
  • VS Code-style search rules: files to include / files to exclude glob patterns (comma-separated, supports **, *, ?, {a,b}), regular expression queries (.* toggle), and case toggle (Aa)
  • Click a match to open the file in better-sidebar's built-in editor
  • VS Code default excludes: hidden files, .git, node_modules, dist, build, .next, target etc. are skipped; caps on files, matches, and line length are reported honestly as truncation

Install

dsh plugin --profile web add ./plugins/dsh-workspace-search

(Requires dsh-better-sidebar ≥ 0.4.0, which exposes ctx.betterSidebar.)

Configuration

All fields optional (profile patch layer):

- id: workspace-search
  config:
    maxFiles: 5000       # hard cap on files scanned per search
    maxMatches: 300      # hard cap on total content matches
    maxLineLength: 300   # hard cap on one reported line
    maxFileBytes: 1048576  # files above this skip the content scan

How it works

Dual-face bundle. The host half registers a Connection RPC channel /workspace-search (loopback trust fence, same as the built-in /api). The browser half registers a tab through ctx.betterSidebar.registerTab. Search results open in the sidebar editor via openTab({type: 'editor'}).

License

MIT

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →

Community comments

Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.