DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins

@playform/ets-hook-dsh-doc-suggester

Ets Hook Dsh Doc Suggester

The doc-suggester hook: a DeepSeek Harness plugin that hooks the tools/post-execute waterfall and, when a call touches a documentation task - a plan, guide, skill, index, or site content path in read, grep, glob, or an edit - prepends ONE labeled addition

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add @playform/ets-hook-dsh-doc-suggester@0.2.1
READMECompatibilityVersions

Compatibility and provenance

Ets Hook Dsh Doc Suggester is published as @playform/ets-hook-dsh-doc-suggester and currently resolves to version 0.2.1. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
npm
Registry updated
11/4/2026

Versions

0.2.1stable
10/28/2026
0.2.0stable
10/25/2026
0.1.0stable
10/25/2026

Related plugins

Loading related plugins…

Latest
0.2.1
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
62.3 kB
Files
58
Surface
any
License
CC0-1.0
Source
npm
GitHub
★ 2
Weekly downloads
334
Security scan
✓ v0.2.1 scan passed
Last push
11/4/2026
View source ↗Project homepage ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in developer-tools.

Web App@deepseek-ai/dsh-web-appThe dsh browser-surface bundle: the web patch layer over dsh-base plus the runtime glue plugin (frontend dist serving, web-surface prompt, bash runtime variables, URL line)Sdk Minimal@deepseek-ai/dsh-sdk-minimalThe standalone minimal SDK profile bundle: JSON-RPC, one DeepSeek adapter, persistent shell, and JSONL sessionsSdk App@deepseek-ai/dsh-sdk-appThe dsh SDK profile bundle: stdio JSON-RPC serving and process lifecycle over dsh-baseExperimental Inspector@deepseek-ai/dsh-experimental-inspectorExperimental cross-realm CDP hub for Host debugging and Client Runtime inspection

README

@playform/hook-dsh-doc-suggester

v0.2.1 - UNPUBLISHED - plan: SEARCH-SUGGESTER-PLUGIN

The role

The doc-task companion suggester for the DeepSeek Harness plugin family (the Classic release).

A DeepSeek Harness plugin that hooks the tools/post-execute waterfall.

When a call touches a documentation task (a plan, guide, skill, plugin-doc, index, site, or package-prose path in read, grep, glob, or an edit), it prepends ONE labeled additionalContexts note that names the doc-graph companions the task conventionally requires: the INDEX row, the frontmatter statuses/registry/index block, the archive style, the cross-references, and the site mirror.

It is the third consumer of the pattern algebra of the search-suggester (SEARCH-SUGGESTER-PLUGIN.md section 8).

Why

The documentation tree has a graph that the model must keep coherent but usually discovers late.

A plan edit must keep the INDEX row and the frontmatter statuses/registry/index block, a skill must keep its references and the session-orientation routing table, and a content change must keep the site mirror.

Like the edit suggester, this consumer owns the NOTIFY side of the pattern: it names the companions, never the change.

The families

Seven, in priority order: Plan, Guide, Skill, PluginDoc, Index, Site, PackageProse.

Each family is a pack row: its path rules (regexes on the doc path that the call names, with weights) and its companion set, where each companion is a path or glob with a prior and one reason phrase ("the index row", "the frontmatter and style rules", "the site mirror").

A companion without a reason is not emitted.

The families are pack-driven: the built-in pack (the default of this monorepo) lives in @playform/ets-lib-dsh-pack and is projected here as the doc/ domain.

A repository that ships .dsh/pack.yml (or a user-layer pack at ~/.dsh/playform/workspaces/<slug>.yml) gets its OWN doc/ families, and a repository without a pack stays silent.

The gate

The same algebra as the search and edit consumers: k = sigmoid(sum(weights) - 0.6), the candidate scoring over the pickable heuristics (see below), and the noise control (a cooldown, a dedupe, a per-turn cap, and the already-touched filter).

Doc paths touched earlier this turn are dropped, and when nothing remains the verdict is an already-touched abstention.

Every abstention and suppression is a ledger line.

The learning layer (D8)

Every emitted note, and every gated silence worth learning from (low-confidence, already-touched), records a decision: the family, the companion rows with their six pickable heuristic values (scope, graph, prior, literal, history, accept), the effective weight table, the enabled list, and a pending outcome placeholder.

The record is logged (decided ...) and stored through the optional pattern service (ctx.get("pattern"), probed per use, never an inject).

Without that service it lives in a bounded in-memory fallback (storeLimit, default 512), which is per instance and documented as such.

The note opens a follow-through window counted in judged calls (never a timer).

A later call that names one of the companions of the note is an accept for that companion and its family (accepted <Family> <path>), and a window that reaches learnWindow judged calls untouched closes as a soft reject (rejected <Family> <n> companions).

Both fill the outcome of the decision record and move the learned accept rates.

The score is sum over the enabled heuristics of weight * value:

HeuristicValueDefault weight
scope1.00 - the call matched the family's path rules0.35
graph0.50 - the neutral graph-distance placeholder0.00
priorthe pack's prior for the companion0.25
literal0.50 - the neutral literal (no generated index)0.25
historythe learned per-companion accept rate (neutral 1/3)0.15
acceptthe learned per-family accept rate (neutral 1/3)0.00

The default row is exactly the PoC formula, and a missing store answers the neutral 1/3, so the default behavior is unchanged byte-for-byte.

A user can disable any heuristic (heuristics) or re-weight any of them (weights), and the decision record plus the decided line show the choice.

Before the score, two workspace guards run.

The workspace locator (Locate of @playform/ets-lib-dsh-pack, whose signature comes from the resolved pack; the built-in default is Documentation/ARCHIVE-STYLE.md) abstains foreign-workspace when the call belongs to another repository.

The existence filter drops every companion that does not exist under that root, and it abstains no-companions when the winning family has none left.

A note therefore never names a path from the graph of this repository in a workspace that does not carry it.

The delivery

One note, never a content replacement: the post-execute listener runs after the ccr and the normalize family and only adds additionalContexts.

The note carries the plugin's own source label ({kind: "doc-suggester", form: "notice", summary}).

The judged tool set is config (tools): the read and search calls that touch documentation plus the edits that land on it.

The waterfall discipline

next() is always awaited first, and pass-through returns the downstream decision unchanged.

The whole transform is fail-open: an internal error logs a warning and the decision passes through, so a note never fails a tool call.

The configuration

See SCHEME.md for the full schema.

Every knob is volatile (hot-editable, no remount).

The learning layer adds learn, learnWindow, heuristics, weights, and storeLimit.

Ships disabled - enable by explicit ACTIVATE in the profile.

The plan

  • SEARCH-SUGGESTER-PLUGIN - the pattern algebra (section 8, the third consumer).

License

CC0-1.0.