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-live-containers

Ets Hook Dsh Live Containers

The live-containers hook: an EffectTS DeepSeek Harness plugin (the Classic twin behind Effect v4) that keeps dynamic, modifiable conversation blocks in the system prompt. Each enabled block is a labeled stanza recomputed at every request - the canonical e

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-live-containers@0.2.1
READMECompatibilityVersions

Compatibility and provenance

Ets Hook Dsh Live Containers is published as @playform/ets-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
239 kB
Files
62
Surface
any
License
CC0-1.0
Source
npm
GitHub
★ 2
Weekly downloads
297
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/ets-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

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, 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 substitution engine of the plugin touches its {{token}} groups and the harness's unresolved-variable failure is never inherited).

Each block sits 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> ---

This is the Effect-TS variant: the Classic twin behind the ets-plugin-dsh-factory shell (Effect v4), with the same blocks, knobs and ledger strings.

The shared Effect-TS plumbing (the Activate composer that builds the durable activation line of the ledger) comes from the ets-base-dsh package.

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, with the reason unknown kind, until the wave-2 render engine lands.

Counters (messages, turns, since last tool) come from the own agent/pre-step and tools/post-execute observers of the plugin.

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 arrives as a live-containers-completion dynamic-context user-role snapshot batched per turn.

The same half adds planted boards (CAN-2: live_plant + [live-report] pickup + the parent-turn lease with the [stale] self-declaration).

It adds the CAN-4 failsafe engine (silent, ledger-first, the per-turn meta-budget) and the CAN-5 suggester, where a detached one-shot subagent suggests a CONFIGURED block that is accepted or dismissed with one-word live_container_set verbs.

Privacy is redact by default: suggesterPrivacy: "verbatim" forwards the request text of the user, 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 check set of the file 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 with the IDLE-forever posture: the bundle entry declares enabled: false only, it never appears in the bundles of the profile, 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)
lease expired <id> <agentId> (after <n> turns)
failsafe hang <job-id> (<n>s no output)
failsafe retry-loop <cmd>
failsafe meta-budget (<turn>)
failsafe drift (<reason>)
monitors overflow <n>
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, so the ledger stays quiet on steady state.

The build and the tests

  • Build: pnpm --config.verify-deps-before-run=false --dir EffectTS/packages/ets-hook-dsh-live-containers run prepublishOnly
  • Smokes: node EffectTS/packages/ets-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