Plugins in the DeepSeek Harness (DSH) ecosystem usually provide specific capabilities. For developers who need to revisit historical conversations, the official sessionQuery service provides a basic interface, but there is no model-facing native retrieval tool, and the default configuration usually does not enable persistent full-text search. dsh-session-recall fills this gap. Through the ctx.sessionQuery interface, it gives the model a deterministic cross-session full-text search tool with explicit scope control.
What Is It¶
This is a Memory-category plugin maintained by kittimzhe. Its core value is that the agent can directly search historical session records instead of relying on external memory frameworks or synthesized summaries.
Core Capabilities¶
The plugin has the following capabilities:
- Cross-session full-text search: supports text search over historical session records.
- Model-facing
recalltool: an interface directly exposed to the model for calls. - Persistent FTS5 index: the index is stored in local files and remains available after process restart.
- CJK zero-hit substring fallback: an optimization for Chinese tokenization limits; short queries automatically fall back to substring scanning.
- Default CWD-based scoped search: by default, only sessions started in the current working directory (
cwd) are searched. - Typed
recallresults: returns a JSON structure with stable fields, including session ID, title, date, and matched snippet.
Installation and Enablement¶
Prerequisites¶
- Node.js 20 or 22.
- The DeepSeek Harness profile must mount the
toolsandsessionQueryservices (the defaultweboragentprofiles usually satisfy this condition).
Installation Steps¶
Use the official installation command:
dsh plugin --profile web add dsh-session-recall
After installation completes, the index file is stored at <DSH_HOME>/session-recall/index.db. The index is automatically built on the first search.
Typical Usage¶
In a session, it can be triggered by natural language or called explicitly in code.
Natural Language Trigger¶
When the agent receives the prompt, it automatically uses the tool:
recall: which font did we pick for the resume last week?
Tool Call Examples¶
recall({ query }) // 搜索当前项目会话,返回最佳匹配事件
recall({ query, all_projects: true }) // 搜索所有会话(需要部署权限)
recall({ query, session_id }) // 搜索指定会话的事件
The returned results are rendered as native search cards, containing session ID, title, date, and matched snippet.
Use Cases and Caveats¶
Use Cases¶
- Scenarios that require retrieving original session logs rather than synthesized summaries.
- Scenarios that require strict retrieval scope, such as only the current working directory.
- Scenarios that require auditing and traceability.
Caveats¶
- Permission control: the
all_projectsparameter expands the search scope and is effective only when deployment permissions allow it. - Version differences: this plugin is unrelated to
dsh-recall-plugin(which is used for message undo/replay) and replaces the legacydsh-recall. - Dependency services: ensure that the Harness profile correctly mounts the
toolsandsessionQueryservices. - Technical details: when CJK queries yield zero hits, it automatically falls back to substring scanning; the index is automatically built on the first search.
Summary¶
dsh-session-recall focuses on reading original session logs and does not perform write operations. As part of the “retrieval layer” in the DeepSeek Harness ecosystem, it provides agents with auditable and deterministic historical recall capabilities. See the plugin source and directory page links below.