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
M

dsh-max-compact

Max Compact

适用于 DeepSeek Harness(>= 0.2)的紧凑模型输入:一种延迟工具界面,通过按需发现工具隐藏工具定义(采用 dsh-ops 风格,但适用于每个插件的工具)、部署级提示词层(尾部部分、可编辑的角色设定、提示词文件/配置档),以及一个通过 agentPresets 注册表克隆和切换 agent-preset 行的预设组合器

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

npx -y @deepseek-ai/dsh plugin --profile web add github:20genesis14-sys/dsh-max-compact#466019119162284c696557c9c392661d18f5a4d2
README兼容性版本

说明

适用于 DeepSeek Harness(>= 0.2)的紧凑模型输入:一种延迟工具界面,通过按需发现工具隐藏工具定义(采用 dsh-ops 风格,但适用于每个插件的工具)、部署级提示词层(尾部部分、可编辑的角色设定、提示词文件/配置档),以及一个通过 agentPresets 注册表克隆和切换 agent-preset 行的预设组合器。

兼容性与来源证明

Max Compact 以 dsh-max-compact 发布,当前版本为 0.2.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/23

版本

0.2.0stable
2026/10/23
0.1.0stable
2026/10/23

相关插件

正在加载相关插件…

最新版
0.2.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 1
周下载
0
最近提交
2026/10/23
查看源码 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Headless@deepseek-ai/dsh-headlessdsh one-shot bundle:基于 dsh-base 的直接核心 Agent/Session 运行器,不包含 Host、HTTP 或浏览器层Experimental Agent Team Profile@deepseek-ai/dsh-experimental-agent-team-profile在一个实验性捆绑包中提供 Agent Teams 协作、工具和 Web UIExperimental Ralph Bundle@deepseek-ai/dsh-experimental-ralph-bundle使用全新代理执行明确请求的重复工作。Subagent Codex@deepseek-ai/dsh-subagent-codex基于官方 app-server 协议的一次性 Codex 子代理提供程序

README

dsh-max-compact

Compact model input for DeepSeek Harness (DSH >= 0.2): shrink what the model sees — tool definitions, prompt sections, preset compositions — without shrinking what the deployment can do.

Five mechanisms, one plugin — all config-gated (ponytail ships an opt-out lite default; everything else is inert until configured):

  1. Lazy tool surface. Most tools hide behind mc_discover: the model sees a small resident surface (fs + shell + messaging) and activates anything else on demand — the dsh-ops discovery pattern, generalized to every plugin's tools, not just one catalog.
  2. Editable prompt layer + persona shadow. A trailing system-prompt section the deployment owns — inline text, an external prompt.md-style file (re-read every step, mtime-cached), or named profiles — plus a per-agent deployment:persona-prefix override that shadows whatever the preset's persona row declared, without touching the preset.
  3. Preset composer. agentPresets.list() shows the whole roster — official, foreign, managed. readDocument + register clone any preset under a new id with per-row disabled toggles (the dsh-custom-mode capability, but for all presets, since foreign declarations are read-only but clonable).
  4. Managed prompt sections. /mc section pins hide/shadow/trim rules to named prompt sections, scoped per agent (all | subagents | preset ids); the assemble waterfall applies them every step, independent of the lazy switch.
  5. Ponytail minimal-code mode. A baseline-frozen maxcompact:ponytail section renders per session while /mc pt switches ride as tagged <system-reminder> messages — the prompt prefix never re-hashes. Vendored review/audit/debt skills ride the host's skills.registerProvider seam.

Everything is capability-probed: a missing seam disables the feature with an honest /mc status line, never a crash.

Install

npm install dsh-max-compact
# or straight from GitHub:
npm install github:20genesis14-sys/dsh-max-compact
# or add the plugin directory to the profile's plugin list

The bundle mounts one global row (id: max-compact) — intentionally not inside a preset, so every mechanism covers every agent and every preset, including foreign ones. With the default config only ponytail's lite baseline is active (everything else is inert); ponytailDefault: off or /mc pt default off silences it too.

Commands

/mc                                    # status: seams, lazy stats, layer, persona, presets
/mc lazy on|off                        # enable/disable the compact surface
/mc lazy keep|hide|default <tool>      # adjust the resident/lazy policy
/mc lazy release <tool> | reset        # re-mask activated tool(s) on this session
/mc lazy list                          # hidden vs activated for this session
/mc sections                           # last assembled system-prompt sections (chars each)
/mc prompt                             # show the active layer
/mc prompt set <text...>               # inline layer text
/mc prompt file <path|off>             # external prompt file (re-read each step)
/mc prompt clear                       # drop the layer from the prompt
/mc prompt profile save|use|rm|list    # named layer profiles
/mc persona set <text...> | off        # per-agent persona shadow
/mc persona scope all|subagents|<id>   # limit the shadow to delegated/selected agents
/mc prompt scope all|subagents|<id>    # limit the prompt layer the same way
/mc section                            # managed sections list
/mc section diet                       # apply the whole recommended set at once
/mc section hide <name>[,<name>…] [scope]  # drop section(s) (waterfall, scoped)
/mc section set <name> <text...>       # shadow: replace text in agent's own scope
/mc section trim <name> <keep…>        # keep only lines containing a substring
/mc section scope <name> all|subagents|<id>[,<id>…]  # retarget managed rules
/mc section off <name>|all [mode] [scope]  # release rule(s) — original returns
/mc presets                            # roster: foreign + managed, incl. broken
/mc preset show <id>                   # row tree with [disabled]/[group] flags
/mc preset clone <src> <newId> [name]  # clone any preset -> managed
/mc preset toggle <id> <row> [on|off]  # flip a row's disabled flag, re-register
/mc preset rm <id>                     # unmount + forget a managed preset
/mc pt                                 # ponytail status: baseline, effective, seams
/mc pt lite|full|ultra|off             # switch THIS session (reminder, no cache miss)
/mc pt default <mode>                  # persist the baseline for new sessions
/mc pt skills                          # vendored skills served to the model catalog

/mc output also lands on an expanded transcript card plus a floating result panel (the bundled client/ web half), so it stays visible on a fresh session's hero screen.

Bundled skills (skills/ dir, vendored MIT from @wenaixi/dsh-ponytail): ponytail-review (diff review for over-engineering), ponytail-audit (whole-repo), ponytail-debt (ponytail:-marker ledger). The model calls the skill tool by name, or you invoke a skill directly.

stop ponytail or normal mode as a whole message also flips the session off.

In-session the model gets mc_discover:

mc_discover({query: "web"})  ->  "Selected web_search, web_fetch. They become
callable on the next model step; nothing was executed."

How it works

Lazy surface (lib/dsh/lazy-tools.js, lib/core/lazy-catalog.js)

  • agent.ctx.tools.register puts mc_discover in the agent's own layer — restrictions never cover own-layer registrations, so the activation path can never mask itself. Its disposer lives in ownLifts, separate from the restrict masks that reconcile lifts on every recompute.
  • agent.ctx.tools.restrict({deny}) masks the lazy set per agent. Reconcile follows the official-tool-hiding discipline: a public-surface snapshot diff guards against publication feedback loops, all masks lift before recompute, a failed plan hides nothing, and deny narrows on scope-local or unknown names (restrict throws naming the offender — that tool is honestly reported as unmaskable rather than silently kept).
  • Activations queue into pending and commit at the next step boundary (agent/pre-step, session/event step/end as fallback) — republishing mid-step would invalidate the in-flight request's tool list. Activated tools stay visible for the agent's lifetime (/mc lazy release <tool> or reset re-masks them).
  • A global ctx.tools.guard(exec => …) keyed on exec.agent denies hidden-tool executions even from conversation history; activation lifts the denial automatically.
  • Keep beats hide, hide beats default-lazy; run_code + own tools are never hidden (reserved transport + own-layer registrations throw in restrict).
  • While lazy is on, a maxcompact:lazy-hint section (order 10501) tells the model how many tools are hidden and to call mc_discover; it renders empty — drops out — once nothing is masked.

Section hygiene (lib/dsh/lazy-prompt.js)

One global system-prompt/assemble listener (context.scope = the assembling agent) drops sections that document currently-masked tools — tools:workflow and friends stop burning tokens while their tool is lazy. The waterfall cannot rewrite a complete section (the host restores it); that limit is documented, not worked around. /mc sections inspects the last assembly.

Managed sections (lib/core/managed-sections.js, lib/dsh/section-shadow.js)

Three modes pinned per named section, independent of the lazy switch:

  • hide — the waterfall drops the section for matching agents. The only mode that works on agent-scoped contributions (shadows would collide in the same layer).
  • shadow — same-name section registered in the agent's own scope replaces the original (deeper layer wins by name, the host's own persona mechanism). Order self-heals: the waterfall records the original's position and the shadow re-registers there once seen.
  • trim — lines containing a keep-substring survive; the only mode safe for dynamic sections (tier-routing shows live tier labels — a static shadow would freeze stale values, so set refuses the NO_SHADOW list).

Scopes follow matchesScope: all (default) | subagents | preset ids. Agents without session.meta (older hosts) match only all. Multiple rules may target the same name — hide wins over shadow for a matching agent, so "shadow for all + hide for subagents" compresses parents and drops the section for children. A trim whose patterns match nothing leaves the original text — a mistyped rule must degrade to "unchanged", never to "silently deleted". Rules persist in the settings document and lift instantly on /mc section off.

Prompt layer (lib/core/prompt-layer.js, lib/dsh/files.js)

Section maxcompact:layer (order 10500, after deployment:persona-prefix and suffix) resolves each assembly: file > active profile > inline. Files are re-read every step through an mtime/size cache — external edits land on the next model call with no reload.

Persona shadow (lib/dsh/persona.js)

deployment:persona-prefix (order 0) registered in the agent's own scope shadows the preset's persona row — same-name sections shadow across layers (duplicate names only collide within one layer). Off by default; /mc persona set/off refreshes every live agent.

Ponytail minimal-code mode (lib/core/ponytail.js, lib/dsh/ponytail.js)

One global maxcompact:ponytail section (order 50) renders ONLY the baseline locked at agent/created — mid-session /mc pt switches never re-hash the prompt prefix. Mode changes travel as one tagged <system-reminder> user message appended on the agent/pre-step waterfall (a retry replaces it by tag). stop ponytail / normal mode as a whole message flips the session off. Default resolution: PONYTAIL_DEFAULT_MODE env → ponytailDefault field → lite. The vendored skills/ catalog registers through skills.registerProvider; maxcompact:ponytail is denylisted from managed sections (NO_MANAGE).

Preset composer (lib/core/presets.js, lib/dsh/preset-registry.js)

  • agentPresets.list() — every declared preset incl. broken diagnostics.
  • readDocument(id) — the full composition YAML, parsed with a !!js → {__jsExpr} schema so host-evaluated predicates survive cloning verbatim.
  • Clone registers under a new id (foreign declarations are never touched); group/isolate structure is preserved so service rows keep their realms; relative ./x.mjs specifiers become absolute file:// URLs.
  • Toggle = disabled: true on the row + dispose/re-register (duplicate ids throw — disposal first). New sessions pick up the new revision; running sessions keep their retained generation. That's the platform's revision-retention design, not a limitation of this plugin.
  • Managed specs persist through the volatile managedPresets field and the settings document (ns max-compact) — clones survive restarts.

Config

All fields are volatile (WebUI-editable, persisted via the settings document):

FieldDefaultMeaning
lazyEnabledfalseMaster switch for the compact surface
lazyKeep[]Extra tool names to keep resident
lazyHide[]Tool names forced lazy (beats keep)
lazyHideSections[]Section names filtered from assemblies while lazy is on
customPrompt''Inline layer text
customPromptFile''External prompt file path
promptProfiles{}{name: text} named layers
activePromptProfile''Selected profile
customPersona''Persona shadow text
layerPresets[]Layer scope: [] all, [':subagent'] delegates only, preset ids
personaPresets[]Persona scope, same vocabulary
managedSections[][{name, mode, text?, keep?, scope?}] hide/shadow/trim rules; several rules may target one name under different scopes (hide wins over shadow)
managedPresets[]Cloned preset specs
ponytailDefaultunsetPonytail baseline for new sessions — PONYTAIL_DEFAULT_MODE env wins; falls back to lite

Honest limitations

  • Preview APIs. agentPresets, tools.restrict/guard, system-prompt/assemble are preview surfaces — all probed; missing seams degrade features, never crash.
  • Global rows can still add tools. Profile-global plugins mount on top of any preset — no preset or mask fences their own-layer additions, so /mc lazy list reports what the host actually shows, not an ideal count.
  • Foreign presets are read-only. readDocument is "for viewing only" — clone under a new id to customize; the original is never edited in place.
  • complete sections can't be rewritten by the assemble waterfall — including a complete persona. The persona shadow uses a named prefix section instead, which layering does shadow.
  • Shadows freeze static text. Sections resolving live state per step (tier-routing's tier labels) belong to trim, not set — the NO_SHADOW denylist enforces it. Agent-scoped contributions (registered per-agent by the host, e.g. context:file-reference) collide with a shadow in the same layer — use hide for those.
  • Revision retention. Preset toggles affect new sessions; running sessions keep the generation they mounted.

Development

npm test           # 88 tests — pure core + mocked-ctx smoke
npm run check      # node --check every lib file
npm run pack:check # npm pack --dry-run

lib/core/ is pure logic (no DSH imports, no I/O); lib/dsh/ is the only place that knows DSH exists; lib/index.js wires the two. Per-agent state lives in WeakMaps keyed on agent objects — never session-id strings.