description: "Workspace-authorized model-facing session history tools for agent developers and maintainers choosing, configuring, or debugging prior-session search, tracing, and event reads."
English | 中文
Use dsh-tool-session-query to let a model search earlier sessions, inspect event matches, trace session or event relationships, and read exact event data. Its five read-only tools return cursor-free text and authorize cross-session access only when the target session's cwd exactly matches the caller's; callers without a cwd can inspect only themselves. Search excludes the caller session and asks the model to narrow its query when the deployment result cap is reached. The package is opt-in, and enabling it adds fixed guidance plus five tool schemas to every model request.
Mount this package when the agent should be able to search its own prior sessions and inspect their relationships and events. The common path is explicit: mount the plugin over ctx.sessionQuery (backed by dsh-session-query-sqlite), then let the model call the tools.
Choose it when a deployment wants model-driven retrieval of prior work — for example a coding agent that searches what it did in earlier sessions before starting a task. Avoid it when only programmatic retrieval is needed: ctx.sessionQuery itself serves code callers without the model-facing schema, prompt, and authorization layer.
| Field | Default | Meaning |
|---|---|---|
maxSearchResults |
100 |
Maximum authorized hits returned by one search call |
searchTimeoutMs |
30000 |
Cooperative deadline attached to both full-text search tools |
The generated configuration catalog is the exhaustive source for every accepted field and its JSDoc.
| Tool | What the model gets |
|---|---|
session_search |
Sessions matching a literal query, ranked, with title and best-match excerpt; always omits the caller session |
session_event_search |
Events matching a literal query inside one authorized session; for the current session it stops before the step that invoked it |
session_trace |
The authorized ancestor chain and descendant tree of one session; unauthorized boundaries appear as markers without hidden ids |
session_event_trace |
One event's positional replacements and cited source-event relationships |
session_event_read |
One full unabridged event as JSON, plus optional neighboring event summaries |
Workspace authority is conservative: cross-session access requires exact cwd equality between target and caller session, and a caller without cwd can inspect only itself. Requested parent ids are deduplicated and authority-checked before search; missing and cross-workspace guesses behave identically. Search results are cursor-free: a capped result asks the model to narrow its query, and never exposes provider cursors, offsets, page sizes, or a model-controlled limit. Timestamps at the tool boundary are timezone-qualified ISO 8601 and become inclusive epoch-millisecond filters.
Every trusted query-service call crosses one error sanitizer: caller cancellation is preserved exactly, corpus and provider diagnostics go to the internal log, and unsafe or unprintable failures fall back to the fixed SESSION_QUERY_TOOL_FAILED code and message. Local argument-validation and authorization errors keep their precise tool-owned messages (SESSION_QUERY_TOOL_UNAUTHORIZED for a target outside the caller workspace). The package performs no byte or character truncation and does not import a spill backend; deployments that need bounded inline output mount @deepseek-ai/dsh-spill-policy, which can replace oversized rendered text while retaining the complete result.
Read these pages when the package-level contract is not enough. They move from the tool surface to the underlying service, the schema catalog, and the design evidence.
The model receives one fixed prior-history guidance section.
Use session_search to find relevant work from prior sessions, or session_event_search to search earlier events in one session. Search results are cursor-free and workspace-scoped. Follow a useful hit with session_trace, session_event_trace, or session_event_read when you need lineage, relationships, or exact data.
One fixed concise section is present on each request while the plugin is mounted.
Prefix-stable while the plugin and guidance text are unchanged.
The model sees the generated session_search, session_event_search, session_trace, session_event_trace, and session_event_read schemas. Search filters add fixed schema tokens, while cursors, workspace paths, output pagination, and model-controlled result limits remain absent.
Five fixed read-only schemas are sent on each request while visible.
Prefix-stable while tool visibility and definitions are unchanged.
Each successful call emits one plain-text block. Search results include titles and best-match excerpts; traces include all authorized relationships; event reads include unabridged target JSON. The generic spill policy may replace oversized inline text with its preview, opaque locator, and retrieval hint.
Results are data-dependent and remain in logged tool history until compaction; maxSearchResults bounds search-hit count.
Append-only result text follows the reusable request prefix and does not invalidate earlier cache entries.
These limits define when this package is a poor fit or needs special operational care. They are current package constraints, not a task backlog.
cwd equality, so symlink-equivalent paths do not share authority.Runtime invariant: No companion is published. This read-only model adapter owns no event or mutable data relationship beyond the registries that already validate registration.