Introduction

When handling long conversation histories, DeepSeek Harness (DSH) often faces difficulty retrieving content. The official sidebar lacks a robust global search entry point and can rely only on limited context memory. The dsh-search-index plugin adds a “Search” button at the bottom of the sidebar, providing a standalone session retrieval solution for the DSH Web client.

The plugin does not depend on the official full-text index; instead, it maintains its own SQLite database. It addresses the need to quickly locate titles or specific content from large histories, supports filtering by user, reply, or tool call, and can significantly improve lookup efficiency in multi-session scenarios.

Core Features

The plugin mainly solves the questions of “what to search” and “how to search.” Its core capabilities are as follows:

  • Title ↔ Content mode switching
    One entry point, two search methods. You can switch between “Title Search” and “Content Search” directly in the panel. Title mode filters by session title or working-directory substring; content mode searches deeper into message bodies.

  • Content aggregated by session
    Content search results are no longer listed message by message; they are aggregated by session. Each result row shows the session title, the most relevant matching snippet, and type tags. Clicking it opens the session and jumps to the relevant context.

  • Content type filtering
    In content mode, filter chips are provided at the top: All, User, Reply, and Tool. When “Tool” filtering is enabled, you can directly search tool-call parameters and return values (tool/call and tool/result).

  • Result sorting
    On the right side of the same row, you can toggle between “Relevance” and “Time”. Time sorting is descending by the session’s last activity time, so the most recently active sessions appear first. Preferences are retained locally.

  • Independent index and three-point mechanism
    The plugin maintains an independent SQLite index file (index.building.sqlite), without affecting the official index in either direction.

    1. Independent index: It has its own storage directory and supports snapshot import/export.
    2. Archive cleanup: It reads the official archive set (global.archivedSessionIds) and automatically excludes archived sessions from the index.
    3. Safe rebuild: It supports non-destructive “shadow index” building, keeping the original index service available during rebuilding.
  • Shortcut key and platform-aware prompts
    Both the sidebar entry and the bottom of the panel display shortcut hints. macOS renders ⌘K, while Windows/Linux render Ctrl K. The close key is also adapted by platform (macOS esc / other Esc), ensuring intuitive operation.

Installation

You can install it directly from GitHub using the dsh plugin command. No local build is required.

# 安装插件
dsh plugin --profile web add github:drscrewdriver/dsh-search-index#master

# 重启 DSH Web 以加载插件
dsh web

Note: Installing directly from GitHub requires network access to github.com. If access is restricted, configure a proxy or mirror for acceleration.

Usage

After installation and restarting, the plugin adds a “Search” button at the bottom of the sidebar.

  1. Open the panel: Click the “Search” button at the bottom of the sidebar, or press the corresponding system shortcut (such as Ctrl K).
  2. Switch modes: In the panel, click to switch between “Title” and “Content” modes.
  3. Filter results: In content mode, click the top filter chips (such as “Tool”).
  4. View results: Search results are aggregated by session. Click any result row to jump to and open the corresponding session.

On the settings page (Settings → Plugins), a “Search Index” card appears. Here you can manage the sync frequency and retention count of the independent index, export snapshots, and view the number of excluded archived sessions.

Notes

  • Responsibility boundary: This plugin is only responsible for search and indexing. Viewing and cleaning session history (the former “Archived Sessions” panel) has been moved to the dsh-session-steward (Session Steward) “Case Files” tab. This plugin only reads the archive set and does not write to it.
  • Index independence: Index files are stored in this plugin’s own directory and do not affect the official session-query-sqlite index.
  • Privacy and configuration: All configuration is stored only in DSH’s settings namespace and the browser overlay state. No data other than session content is uploaded.
  • Compatible versions: It supports DSH 0.1.1-rc.2 and 0.1.2-rc.1. It can run without modifying the DSH source code.

Conclusion

dsh-search-index gives DSH users the ability to retrieve historical records directly from the sidebar. Through its independent index and aggregated display, it solves the fragmented content-lookup problem in long conversations. If you are looking for a plugin to improve the DeepSeek Harness search experience, you can start here.