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/hook-dsh-live-containers

Hook Dsh Live Containers

The live-containers hook: a DeepSeek Harness plugin that keeps dynamic, modifiable conversation blocks in the system prompt. Each enabled block is a labeled stanza recomputed at every request - the canonical example is a time block that always holds the c

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

npx -y @deepseek-ai/dsh plugin --profile web add @playform/hook-dsh-live-containers@0.2.1
READMECompatibilityVersions

Compatibility and provenance

Hook Dsh Live Containers is published as @playform/hook-dsh-live-containers 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
238.8 kB
Files
62
Surface
any
License
CC0-1.0
Source
npm
GitHub
★ 2
Weekly downloads
294
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 memory-context.

Experimental Session Search@deepseek-ai/dsh-experimental-session-searchGive Agents tools to search and read earlier sessions from the current workspace.Hindsight Coding Agents@vectorize-io/hindsight-coding-agentsReflect-only Hindsight long-term memory for coding agents (harness-pluggable: opencode, …), with automatic background ingestion (no setup CLI).Ab Memorydsh-ab-memory--- description: "The dsh-ab-memory package: a cross-session, file-backed agent memory with five tools (remember / recall / forget / load_skill / distill) and an always-on light injection." kind: "package-reference" ---Fish Memorydsh-fish-memoryGive conversations in DSH a fading long-term memory, with every entry timestamped.

README

@playform/hook-dsh-live-containers - dynamic, modifiable conversation blocks, live jobs, planted boards, failsafes and the suggester

Version 0.2.1 - UNPUBLISHED (the npm bootstrap tier 2-planned / 3-candidates).

Plan: SCHEME.md - LIVE-CONTAINERS-RESEARCH.md - IMPLEMENTATION-DESIGN.md.

The role

This DeepSeek Harness plugin keeps dynamic, modifiable conversation blocks in the system prompt: each enabled block is a labeled stanza recomputed at every request, and the canonical example is a time block that always holds the current time at ask-time while the rest of the conversation stays static.

The blocks ride the system-prompt/assemble waterfall as ONE appended section named live-containers (interpolate: false, so only the plugin's own substitution engine touches its {{token}} groups - the harness's unresolved-variable failure is never inherited), with each block inside a fixed frame so the model cannot mistake it for harness state:

--- LIVE CONTAINER <id> (recomputed each request; not harness state) ---
<rendered body>
--- END LIVE CONTAINER <id> ---

The substitution engine is token replace ONLY - no eval, no expressions.

An unknown token renders LITERALLY and logs render unknown <id> <token> - never a failure.

Per-block vars override the built-ins.

The wave-2 catalog kinds (the default block table ships 14 entries) are ACCEPTED in config from day one and render as skipped blocks - reason unknown kind - until the wave-2 render engine lands.

Counters (messages, turns, since last tool) come from the plugin's own agent/pre-step and tools/post-execute observers - exact token counts are NOT available to plugins, so the gauge variables are honest approximations.

The wave-2 half extends the same plugin with:

  • the live tool-call transform (CAN-1: with detach.mode set, a command-runner call detaches into a ctx.jobs background job and the model immediately receives a SUCCESSFUL tool result [live] <job-id> running: <cmd-head> - output pending; proceed reasoning., the completion report arriving as a live-containers-completion dynamic-context user-role snapshot batched per turn)
  • planted boards (CAN-2: live_plant + [live-report] pickup + the parent-turn lease with the [stale] self-declaration)
  • the CAN-4 failsafe engine (silent, ledger-first, the per-turn meta-budget)
  • the CAN-5 suggester (a detached one-shot subagent suggests a CONFIGURED block, accepted/dismissed with one-word live_container_set verbs; privacy redact by default - suggesterPrivacy: "verbatim" forwards the user's request text and the config flag IS the consent surface)

The wave-3 monitors put files (halted processes) into operational mode: for watchlist matches the plugin runs the file's check set between turns and renders one band per file in the live section - honest to the byte, additive information, never a gate.

The plugin ships DISABLED - the IDLE-forever posture: the bundle entry declares enabled: false only, it never appears in the profile's bundles, and it enables only by an explicit ACTIVATE (you edit the profile and restart).

A cold mount logs disabled (enabled=false) and every listener no-ops to a passthrough.

The surfaces

KindNameWhat
sectionsystem-prompt/assemble - live-containersthe ONE appended section, fixed frame per block, built-in kinds time, counter, manifest, gauge, note, template
listenertools/post-execute (CAN-1 transform)detaches matching command calls into ctx.jobs background jobs, marker reply + [stale]-style live frames
listeneragent/pre-step + tools/post-executethe counter observers (messages, turns, since last tool)
listenerdynamic context live-containers-completionthe batched completion report snapshot
toollive_plantopens a planted board (plantType: "monitors" aggregates member monitors)
toollive_container_setthe verbs: accept/dismiss a suggestion, prune a stalled member
toollive_monitor / live_monitor_checkenroll/inspect a monitor; on-demand check
configSCHEME.mdthe full Schemastery schema (see the table below)

Ship posture: DISABLED by default (enabled: false); the wave-2 knobs are volatile cells and the wave-3 SEVEREXT/COMPREHENSIVE knobs are accepted and inert.

The configuration

FieldTypeDefaultMeaning
logbooleantruevolatile - the shared factory log switch
logFilestring~/.dsh/playform/hook-dsh-live-containers.logvolatile - the ledger file
enabledbooleanfalsevolatile - the IDLE-forever switch
sectionNamestringlive-containersvolatile - the appended section's name
refreshunionrequestvolatile - request | ttl; ttl is the KV-cache-friendly cadence
ttlCallsnumber8volatile - assemblies the section text is held for
separatorstring---volatile - the frame separator
sectionBudgetBytesnumber4096volatile - over budget the OLDEST frames collapse to one-line summaries
blocksarrayDEFAULT_BLOCKSvolatile - { id, kind, template, enabled, vars, trigger, ttlCalls, scope }
detachobjectmode offvolatile - CAN-1: mode, markers, latency/dedup/liveTimeout knobs
plantobjectstallMs 45000, leaseTurns 3, ...volatile - CAN-2: board budgets, the lease, stallAction
failsafesunionoffvolatile - off disables the CAN-4 engine entirely; the transform keeps working
hangBudgetMsnumber120000volatile - the hang guard budget
hangActionunionwarn-onlyvolatile - kill only at

The ledger

One log per module: ~/.dsh/playform/hook-dsh-live-containers.log (config logFile); the durable file lines are the [ISO] message forms with the hook-dsh-live-containers: prefix.

disabled (enabled=false)
activated (bundle 0.2.1, blocks=<n>, refresh=<policy>)
monitors enabled (<n> watchlist entries)
block rendered <id> (<len> bytes)
block skipped <id> (<reason>)
section rebuilt (ttl <n>)
section rebuilt (tools/change)
render failed <id> -> skipped
render unknown <id> <token>
failsafe section-collapse <n>
transform failed <tool> -> inline
capacity full <owner> -> inline
start failed <tool> -> inline
escalation -> inline <tool>
await marker -> inline <tool>
await marker ignored (tool not detachable) <tool>
dedup <tool> -> <job-id>
marker failed <job-id> -> inline
detached <tool> -> <job-id>
owner gone <job-id>
completion rendered <len> bytes
completion skipped <job-id> (<reason>)
completion truncated <job-id> (<kept> bytes)
withdrawn <job-id> (completed)
set <key>
set unknown <verb> <input>
plant opened <id> (expect <n>)
member enrolled <id> <agentId>
report <id> <agentId> (<n> bytes)
member stalled <id> <agentId>
member dropped <id> <agentId> (<reason>)
board closed <id> (<n>/<expect> in <n>s)
overflow <id> <agentId>
lease expired <id> <agentId> (after <n> turns)
failsafe hang <job-id> (<n>s no output)
failsafe admission inline <tool>
failsafe retry-loop <cmd>
failsafe meta-budget (<turn>)
failsafe stall <id> <agentId>
failsafe drift (<reason>)
suggested <sid> <templateId> (fit <fit>)
suggestion skipped (<reason>)
suggestion parse failed
suggestion dismissed <sid>
suggestion accepted <sid> (<templateId>)
suggestion clamped <sid> <field>
suggestion expired <sid>
accept failed <sid> (expired)
monitor retired <path>
monitor off <glob>
monitor check unknown <setId>
monitor recovered <path> (<n> checks)

Durable activation proof: disabled (enabled=false) on a cold mount, else the activated line with the bundle version, the block count and the refresh policy.

Skip lines log only when the reason changes - the ledger stays quiet on steady state.

The build and the tests

  • Build: pnpm --config.verify-deps-before-run=false --dir Classic/packages/hook-dsh-live-containers run prepublishOnly
  • Smokes: node Classic/packages/hook-dsh-live-containers/Target/Test/<Folder>/Test.js
    • Wiring-And-Defaults - 42 checks
    • Recompute-And-Ttl - 17 checks
    • Render-And-Frames - 23 checks
    • Volatile-And-Failsafes - 23 checks
    • Jobs-And-Detach - 27 checks
    • Boards-And-Plants - 17 checks
    • Failsafes-Engine - 10 checks
    • Suggester-And-Set - 21 checks
    • Monitors-Engine - 22 checks
    • Monitors-Tools - 11 checks
    • Monitors-Band - 22 checks
    • Monitors-Jobs - 25 checks
    • Monitors-Persist - 13 checks
    • Monitors-Boards - 7 checks

The plan

SCHEME.md - LIVE-CONTAINERS-RESEARCH.md (sections 3-5) - IMPLEMENTATION-DESIGN.md (phase 1).

"kill"
failsafesPerTurnnumber5volatile - the per-turn meta-budget
suggesterunionoffvolatile - section | plant, the CAN-5 suggester
suggesterPrivacyunionredactvolatile - verbatim forwards the request text
suggestGateMinCharsnumber40volatile - the qualifying-message gate
maxSuggestionsPerHournumber6volatile - the rate cap
maxPromptBytesnumber4000volatile - the forwarded-request cap
suggestTimeoutMsnumber8000volatile - the suggester deadline
autoPlantbooleanfalsevolatile - instantiate accepted suggestions as dormant blocks
suggesterRouteobjectprovider/model/reasoningEffortvolatile - the suggester's LLM route
completionCapBytesnumber4096volatile - the completion snapshot cap
monitorsunionoffvolatile - the wave-3 monitor engine
watchlistarray[]volatile - { glob, checks } enrollment rules (default: no scan, no watch-all)
checksetsdictDEFAULT_CHECK_SETSvolatile - the named check sets
monitorobjectdebounceMs 1500, bandCapBytes 2048, ...volatile - the monitor budgets