DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

@playform/hook-dsh-doc-suggester

Hook Dsh Doc Suggester

doc-suggester hook:一个 DeepSeek Harness 插件,接入 tools/post-execute 流程,并在调用涉及文档任务时——包括计划、指南、技能、索引,或在 read、grep、glob 或 edit 中涉及站点内容路径——在开头添加一条带标签的附加内容

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add @playform/hook-dsh-doc-suggester@0.2.1
README兼容性版本

兼容性与来源证明

Hook Dsh Doc Suggester 以 @playform/hook-dsh-doc-suggester 发布,当前版本为 0.2.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
npm
Registry 更新时间
2026/11/4

版本

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

相关插件

正在加载相关插件…

最新版
0.2.1
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
65.7 kB
文件数
58
Surface
any
许可证
CC0-1.0
发布源
npm
GitHub
★ 2
周下载
284
安全扫描
✓ v0.2.1 扫描通过
最近提交
2026/11/4
查看源码 ↗项目主页 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 developer-tools 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Sdk Minimal@deepseek-ai/dsh-sdk-minimal独立的最小 SDK 配置包:JSON-RPC、一个 DeepSeek 适配器、持久化 Shell 和 JSONL 会话Sdk App@deepseek-ai/dsh-sdk-appdsh SDK 配置包:基于 dsh-base 提供 stdio JSON-RPC 服务和进程生命周期管理Experimental Inspector@deepseek-ai/dsh-experimental-inspector用于 Host 调试和 Client Runtime 检查的实验性跨 realm CDP hub

README

@playform/hook-dsh-doc-suggester

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

The role

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

It is a DeepSeek Harness plugin that hooks the tools/post-execute waterfall, and it acts 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.

The hook then 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, the site mirror.

This package is the third consumer of the search-suggester's pattern algebra (SEARCH-SUGGESTER-PLUGIN.md section 8).

The surfaces

  • The tools/post-execute waterfall listener: one labeled additionalContexts note, never a content replacement.
  • No tool, no service: the note is the only surface; the learning layer records through the optional pattern service (ctx.get("pattern"), probed per use) or a bounded in-memory fallback.

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; 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, priority order: Plan, Guide, Skill, PluginDoc, Index, Site, PackageProse.

Each family is a pack row: its path rules (regexes on the doc path the call names, with weights) and its companion set - each companion 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 (this monorepo's default) lives in @playform/lib-dsh-pack and it 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; a repository without a pack stays silent.

The gate

The gate uses 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; 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 one 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 note's companions is an accept for that companion and its family (accepted <Family> <path>); a window that reaches learnWindow judged calls untouched closes as a soft reject (rejected <Family> <n> companions).

Both fill the decision record's outcome 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 (@playform/lib-dsh-pack's Locate, 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, and the existence filter drops every companion that does not exist under that root (abstaining no-companions when the winning family has none left).

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

The delivery

The hook delivers one note and never a content replacement: the post-execute listener runs after the ccr and the normalize family, and it 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

The hook always awaits next() first; a pass-through returns the downstream decision unchanged; the whole transform is fail-open (an internal error logs a warning and the decision passes through - a note never fails a tool call).

The ledger

The lines are prefixed hook-dsh-doc-suggester: and go to logFile:

activated (...)
suggest <family> <k> <n> companions <path>
decided <family>
accepted <family> <path>
rejected <family> <n> companions
suppressed <reason> <family>
abstained <reason> <family> <k>
abstained foreign-workspace
hook-dsh-doc-suggester: <error>; the call passes through unnoted

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.

FieldDefaultMeaning
enabledtruethe plugin ships enabled
logtruethe ledger switch (the factory's shared cell)
logFile~/.dsh/playform/hook-dsh-doc-suggester.logthe ledger
threshold0.75the gate threshold k
tools["read", "grep", "glob", "write", "edit", "raw-write"]the judged tool set
maxCompanions7the bound on named companions
maxNoteChars1200the note length bound
cooldownCalls6the cooldown between notes
maxNotesPerTurn3the per-turn cap
exclude["node_modules", "Target", ".git", "dist"]the excluded paths
learntruethe decision-recording layer
learnWindow3the follow-through window (judged calls)
heuristicsall sixthe enabled heuristics
weightsthe Defaults table abovethe heuristic weights
storeLimit512the in-memory fallback bound

The build and the tests

The build is pnpm prepublishOnly (Source/prepublishOnly.sh): the plugin build (ESM Target/, Test tree excluded), the Test build, the harness selfcheck, and the Test type-check.

The smoke folders: Learning-Loop, Pack-Driven, Post-Execute-And-Ring, Wiring-And-Ledger, Workspace-Gate.

The plan

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

License

CC0-1.0.