← Back to home@GooDAnDReaDY

dsh-session-search

DeepSeek Harness agent tool (session_search) for full-text search across historical sessions

Stars
0
Language
JavaScript
Created
Sep 17, 2026
Updated
Sep 17, 2026

Introduction

🔍 @goodandready/dsh-session-search

Model-Facing Session Full-Text Search Tool for DeepSeek Harness Agents

npm version license DSH Plugin Node version

All Author Projects

🇬🇧 English • 🇨🇳 中文说明 • 🇷🇺 Русский


Overview

In stock DeepSeek Harness, historical conversation logs are indexed by the core full-text search backend (@deepseek-ai/dsh-session-query-sqlite), but this capability is exposed only to the human user via the sidebar search bar. The autonomous model/agent (Dee / Ди) is not provided with any tool to query historical conversations.

@goodandready/dsh-session-search provides the agent with a dedicated session_search tool. This allows the model to look up past lessons, solutions, code snippets, decisions, and conversational context without decompressing or replaying full .jsonl.zstd session archives into memory.


Architecture & Data Flow

The plugin is strictly host-only with zero browser runtime overhead. It delegates directly to the core search service:

sequenceDiagram
    autonumber
    actor User as User
    participant Agent as Agent (Dee / LLM)
    participant Tool as session_search Tool (dsh-session-search)
    participant Core as ctx.sessionQuery (@deepseek-ai/dsh-session-query)
    participant DB as SQLite FTS5 Index (search_state / persisted_docs)

    User->>Agent: "Remember how we configured Nginx SSL in our previous project?"
    Agent->>Tool: execute({ query: "Nginx SSL configuration", limit: 5 })
    Tool->>Core: searchSessions({ query, limit }, { signal })
    Core->>DB: MATCH query in FTS5 index
    DB-->>Core: Matched sessions with snippet & score
    Core-->>Tool: Return SessionSearchPage
    Tool-->>Agent: Formatted text (Title, Session ID, Best snippet)
    Agent-->>User: Answers with exact historical configuration details

Comparison: Stock DSH vs With dsh-session-search

CapabilityStock DSH CoreWith dsh-session-search
Human UI Session Search✅ Available in sidebar (WorkspaceBrowser)✅ Unchanged (fully available)
Agent Tool for Session Search❌ None (no tool registered)✅ Native session_search tool registered
Search EngineSQLite FTS5 (ctx.sessionQuery)Reuses core SQLite FTS5 engine directly
Memory FootprintLowZero additional memory (delegates to core)
Result SnippetsRendered in UINormalized and formatted as text for LLM
Pagination NoticeUI infinite scroll / cursorModel hint: (more results available — refine your query)
CancellationAbortSignal in APIPropagated via execCtx.signal

Installation

Install via the dsh CLI for your web profile:

dsh plugin --profile web add @goodandready/dsh-session-search

Or install using pnpm:

pnpm add @goodandready/dsh-session-search

Restart the DeepSeek Harness web profile to activate the bundle patch (cordis.patch.yml).


Configuration

Configure maxResults in your profile configuration:

# dsh configuration
plugins:
  dsh-session-search:
    maxResults: 20
OptionTypeDefaultDescription
maxResultsnumber20Default upper bound on returned search matches per call.

Tool Specification: session_search

Parameters

  • query (string, required): Search query text (search terms and keywords).
  • limit (integer, optional): Maximum number of matching sessions to return (automatically clamped between 1 and 100, defaults to configured maxResults).

Output Format

The tool returns a clean, plain-text representation:

• Session Title [session-id-12345]
  Context snippet with matching keywords highlighted around occurrence...
• Second Session [session-id-67890]
  Another snippet from past conversation...
(more results available — refine your query)

If no conversations match:

session_search: no matches found.

If backend execution fails:

session_search: error: <error message>

License

MIT © 2026 GoodAndReady