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-convention-suggester

Hook Dsh Convention Suggester

convention-suggester hook:一个 DeepSeek Harness 插件,将代码仓库的约定作为模式包携带,并在模型违反这些约定之前明确指出它们。当模型写入或编辑文件时,该 hook 会以确定性方式对路径进行分类(布局

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

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

兼容性与来源证明

Hook Dsh Convention Suggester 以 @playform/hook-dsh-convention-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
未声明可安全裁剪
解包体积
55.1 kB
文件数
50
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 分类下经过校验的插件。

Better Sidebardsh-better-sidebarBetter Sidebar for DSH — 在一列中提供文件树、编辑器、变更、任务和侧边聊天,并为每个对话单独显示。同时提供服务,供其他插件注册侧边栏标签页和文件查看器。Client Ui Git Graph@linxin666/dsh-client-ui-git-graph外部 dsh Web GUI 插件:空会话 Git 分支选择器和 Git 图,包含实际的主机端 Git 操作与防护,作为 dsh 配置文件包Ssh@linxin666/dsh-sshdsh Web GUI 的远程 SSH 操作:主机配置存储(~/.dsh/dsh-ssh.json,可从 ~/.ssh/config 导入)、支持跳板主机的持久化 ssh2 连接池、exec / PTY Web 终端 / SFTP 传输 / 本地端口转发隧道 / 集群执行Update@linxin666/dsh-update用于 dsh Web GUI 的自更新插件:探测 npm 上是否有更新的系列版本,并在原地运行所属配置的 pnpm 更新;可通过设置图标旁侧边栏中的触发器启动,并显示发布说明面板

README

@playform/hook-dsh-convention-suggester

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

The role

This hook is the convention suggester: a DeepSeek Harness plugin that carries the repo's conventions as a pattern pack and names them before the model violates them.

On every write/edit/raw-write call it classifies the target path deterministically and it prepends ONE labeled additionalContexts notice that names the companion targets the convention requires:

  • Layout - the entry stays wiring-only (name, apply, Config, inject); one definition per file, nameless default exports.
  • Naming - full-word PascalCase names, one word where possible, no abbreviations (documented exceptions keep their contract names).
  • Docs - a package ships README.md + SCHEME.md, and the SCHEME config table must match the schema.
  • Ledger - the ledger strings are module-owned and byte-stable; the four identity places (package name, name export, State module: option, logFile default) must agree.

The arbiter is the smoke suite that asserts the convention (SEARCH-SUGGESTER-PLUGIN.md §9.4).

The hook is READ-ONLY by design except the opt-in learner: it never edits, never rewrites arguments, and never denies - its surfaces are the notice and, only when learning is on, one PROPOSAL file (never the live pack).

The conventions are pack-driven: the built-in pack (this monorepo's default) lives in @playform/lib-dsh-pack and it is projected here as the convention/ domain.

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

The surfaces

  • The tools/post-execute waterfall listener (plain registration, after the ccr's {prepend: true} listener): one additionalContexts notice, never a content replacement.
  • The agent/pre-step listener: the per-turn reset of the note counter when a user message enters.
  • No tool, no service: the hook is read-only except the opt-in learner's proposal file.

The pack learner (D4)

The hook is also the family's PACK LEARNER: an opt-in bootstrap that derives a repo's pack from the repo itself and writes it as a proposal, never as a live pack.

  • Off by default.

    Flip the config's learning to true for every workspace, or let a repo opt itself in with a minimal .dsh/pack.yml:

    learning:
        propose: true
    

    The config wins when true; a false config (the default) leaves the decision to the pack.

  • When.

    The first judged call in a packless workspace per process (the built-in pack, or a pack layer with no families).

    An installed pack is never proposed over.

  • What.

    The doc graph (Documentation/INDEX.md, ARCHIVE-STYLE.md, Plans, Guides, Skill, Handoff), the package layout (package.json, README.md, SCHEME.md, cordis.patch.yml, Source/{Library.ts,Function,Variable,Interface,Test}) and the site (Site/Source/{Content,pages,Component,Library}) become the families whose companions actually exist; the signature is ARCHIVE-STYLE.md, else INDEX.md, else package.json; the slug is the repo's basename, lowercased.

  • Where.

    <home>/.dsh/playform/proposals/<slug>.yml - a full pack object that parses back through @playform/lib-dsh-pack.

    Install it by copying the file to ~/.dsh/playform/workspaces/<slug>.yml and restarting (the library resolves packs at boot).

  • The note.

    One additionalContexts notice that names the proposal path, the family count, and the install step, with the ledger line learned proposal <slug> <n> families <path>.

The refine-from-edits layer (an accepted suggestion moving a companion's weight) is the later D8 lane.

How it works

  1. The post-execute listener.

    The tools/post-execute listener (waterfall, plain registration - after the ccr's {prepend: true} listener) calls next() first.

    Then the hook runs detect -> gate -> prepend ONE notice.

    Content is never replaced.

  2. The pre-step listener.

    The agent/pre-step listener resets the note counter each turn when a user message enters.

The ledger

The lines are prefixed convention-suggester: and go to logFile:

activated (...)
suggest <id> <k> <n> candidates call <tool>
suppressed <verdict> <id>
abstained ambiguous <id> <k>
abstained no-companions <id> <k>
abstained foreign-workspace
learned proposal <slug> <n> families <path>
learned pack <n> families
convention-suggester: <error>; the note is skipped

The configuration

FieldDefaultMeaning
enabledtruethe plugin ships enabled
logtruethe ledger switch (the factory's shared volatile)
logFile~/.dsh/playform/hook-dsh-convention-suggester.logthe ledger
threshold0.75the gate threshold k
maxCandidates7the bound on named candidates
maxNoteChars1200the note length bound
cooldownCalls6the cooldown between notes
maxNotesPerTurn3the per-turn cap
intents[]the intent filter
emitOn["edit", "raw-write", "write"]the tools that trigger the gate
exclude["node_modules", "Target", ".git", "dist"]the excluded paths
learningfalsethe opt-in learner (D4)

Every field is a volatile cell.

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: Learn-Install, Learn-Note, Learn-Proposal, Pack-Driven, Post-Execute-And-Gate, Wiring-And-Ledger, Workspace-Gate.

The plan

  • SEARCH-SUGGESTER-PLUGIN - the pattern algebra and the section 9.4 convention arbiter.

  • PoC phase: the package and Source are complete; the smoke suites, the build pass, and the wiring are the end-phase (POC-BRIEF.md §8).

    Ships enabled: false in the bundle patch.

License

CC0-1.0.