DSH Plugins Marketplace

DSH Plugins

Plugins

/

Workflow & Automation

/

dsh-shared-handoff

e

dsh-shared-handoff

Manifest valid

dsh port of the shared handoff kit: handoff and task-id-bootstrap skills plus host-side automation — baseline state injection, per-turn snapshots with an Auto Log trail, task=<id> routing, continuatio

hasBundlePatch

shared-handoff-dsh

English | 中文

A DeepSeek Harness (dsh) skill plugin that ports the shared-handoff-kit's handoff workflow: it packages the handoff and task-id-bootstrap skills with zero dependencies and no build step, adapted for macOS, Linux, and Windows (including Windows 10 vs Windows 11 Python environment differences).

Skills

SkillWhat it doesRequires
handoffEvidence-driven session handoff: export/resume, interoperable across Codex, Claude, and dshNothing (pure instructions)
task-id-bootstrapRepo-local task state under .agents/state/tasks/<task-id>/, binding the current dsh session (DSH_SESSION_JSONL) to the taskPython 3.9+

Install

dsh plugin --profile web add shared-handoff-dsh

After restarting dsh web, both skills join the skill catalog and the model loads them through the skill tool.

Usage

Once installed there is no command to remember — the skills are triggered conversationally and the model loads the right SKILL.md itself.

task-id-bootstrap: open a task

Just say in a dsh chat (adjacent Chinese/English punctuation both work):

新开task-id=init-kmp,然后开个 init-kmp 分支

The model runs the bundled bootstrap script; success is proven by three lines:

Task state: .../.agents/state/tasks/init-kmp
Current task: init-kmp
Session binding: /Users/you/.dsh/sessions/.../session.jsonl.zstd

Progress then lives in .agents/state/tasks/init-kmp/process.md; say 继续,task-id=init-kmp later to resume. A directory without a session binding is only a partial result — the model must report it as such.

If Python (3.9+) is missing on first use, the model reports the gap and shows the install command for your platform, installing only after your explicit consent — never silently.

handoff: export / resume a session

When a thread gets long and you want a fresh one, say:

帮我做个 handoff

You get a paste-ready next-thread prompt (workspace / branch / done / verification status / next step). In the fresh session, open with:

继续上次 handoff

The model rebuilds context from state files instead of chat history. Phrases like 交接, 新开线程继续, 继续上次, and resume trigger it too.

The two skills cooperate

When a task-id is active in the same repo, handoff treats .agents/state/tasks/<task-id>/process.md as the canonical state instead of inventing a parallel one.

Cross-agent handoff

The state layout is identical to the Codex and Claude editions: a handoff exported from dsh can be resumed in Codex or Claude and vice versa (all three share the same session-tasks.json).

Automation (hook equivalents)

The three behaviors the original kit implemented through Codex/Claude hooks run automatically on the dsh host side via the harness event system — installed, they just work:

Original hookdsh equivalentBehavior
SessionStartfirst agent/pre-step (step 1)The active task's process.md / process.auto.md is injected as a baseline user message — say "继续" in a fresh session and the state is already there; the baseline ends with a reminder to run the handoff skill after completing a milestone, keeping the semantic state fresh
UserPromptSubmit (task routing)agent/pre-step message scanA task=<id> marker in the incoming user message re-binds the session and switches current-task (creating the task dir), then injects a switch notice for the new task
Continuationagent/pre-step message scanA short continuation prompt (继续 / 接着 / resume / 交接 …) re-injects the persisted state mid-session, labeled as a re-injection
Stopsession/event turn/endprocess.auto.md is refreshed after every turn (capturing the turn's last model output) and mirrored into an existing process.recent.md; the same turn also appends one summary line to the ## Auto Log section of process.md (newest last, capped at maxLogEntries, hand-written sections untouched)
PreCompact / PostCompactcompaction/start / compaction/summarySnapshots are written before and after compaction plus a context_guard.json marker; completed compactions increment auto_compact_count, and at compactThreshold (default 3) clear_required flips on and the next injected baseline carries a controlled-clear notice (hand off, start a fresh session)

Task resolution matches the original: the session's transcript binding in session-tasks.json first (dsh sessions align by their transcript path under $DSH_HOME/sessions), then the current-task pointer. Every write lands in the same .agents/state/ the Codex/Claude editions use.

Interop with the Codex and pi editions: context_guard.json is written read–merge–write with the Codex field contract (auto_compact_count, clear_required, threshold, last_*), and keys owned by other runtimes (pi_compact_count, last_pi_session_id, …) pass through untouched. The clear threshold check sums the pi and dsh counters together, so one repo alternated between runtimes still guards correctly.

To disable a piece, override the row in your profile patch:

- id: shared-handoff
  name: 'shared-handoff-dsh'
  config:
    injectBaseline: false   # no session-start injection
    autoSnapshot: false     # no per-turn snapshots
    autoLog: false          # no per-turn Auto Log lines in process.md
    compactionGuard: false  # no compaction guard
    handoffReminder: false  # no proactive-handoff reminder in the baseline
    maxLogChars: 300        # per-entry truncation for Auto Log lines
    maxLogEntries: 100      # Auto Log section length cap
    compactThreshold: 3     # compactions before a controlled clear is advised

process.auto.md and context_guard.json are host-owned metadata — the SKILL.md tells the model never to hand-write them; process.md stays model-maintained except for the host-appended ## Auto Log section at its end.

Design notes

  • archify-dsh pattern: cordis.patch.yml mounts an isolated @deepseek-ai/dsh-skill-filesystem instance (includeDefaultRoots: false
    • a unique providerName + bundledSkillDir pointing at the packaged skills/), leaving the stock filesystem provider untouched.
  • Host half (hook equivalents): zero external dependencies (Node builtins only) — listens to agent/pre-step and session/event for injection/snapshots/guard, see Automation above; listeners swallow their own errors, so a snapshot failure can never break the agent loop.
  • Subagents are read-only (single-writer rule): delegated children and forks (origin: "subagent" / positive delegationDepth) receive the baseline injection but never write state — no snapshots, no Auto Log entries, no bindings, no compaction-guard updates, and no task=<id> routing (a delegated prompt mentioning a task marker cannot hijack the repo's active task). Parallel children would otherwise clobber each other's snapshots and interleave the Auto Log; the parent session is the single writer, and children's findings flow back through their reports.
  • Session binding: dsh injects DSH_SESSION_JSONL (the current session transcript path) into the managed bash/PowerShell environment; the bootstrap script binds it via --transcript-path with zero script changes, writing into the same session-tasks.json the Codex/Claude editions use.
  • Cross-platform: the SKILL.md ships both bash and PowerShell command forms plus a Windows 10/11 Python detection matrix (py launcher, Store alias stub, winget availability); the lock module uses fcntl on POSIX and msvcrt on Windows, identical to the original.
  • Missing Python: never installed silently — report the gap, show the platform-specific command, install only after explicit consent; the handoff skill and the host-half automation work regardless (they need no Python).

Known limitations

  • Only the two platform-neutral skills were ported; claude-handoff (Claude Code specific) and the Codex/Claude hook runtimes stay with the original kit.
  • The auto snapshot records the turn's last model output verbatim (facts, not summaries) — semantic progress still lives in the model-maintained process.md; the ## Auto Log section gives it a per-turn, timestamped trail without replacing that curation.
  • Local path installs (dsh plugin add <path>) resolve as a link; publishing to npm is the sturdier sharing route.

License

MIT (inherited from shared-handoff-kit).

Compatibility

DSH 0.2.2-alpha.2: failedDSH 0.1.6-alpha.1: failedDSH 0.1.6-alpha.2: failed

Versions

Latest versionPublishedSize
0.2.0——
0.3.0——

Comments

Loading…

Similar plugins

dsh-alpha

by songofhawk

Multi-machine, multi-agent orchestration and control plane for DSH: discovers Agents and workspaces across devices, routes tasks by machine, repository, capability, and load to local or remote Agent r

Workflow & AutomationTools & CapabilitiesManifest valid

★ 4

↓ 176/wk

JavaScript

Sep 29, 2026

dsh plugin --profile web add dsh-alpha

by zbzbhs

Turn another computer into a remote Agent teammate: the worker runs its own DSH and a full Agent loop locally, so dispatched tasks keep running when the link drops and its model credentials never leav

Tools & CapabilitiesManifest valid

★ 4

↓ 586/wk

MIT

JavaScript

Oct 21, 2026

dsh plugin --profile web add dsh-remote-agent

by LeslieWylie

Cross-session task queue with handoff notes: sessions and subagents push, claim, complete and cancel tasks on a shared file-backed queue, and leave a handoff summary for whoever picks up next.

Workflow & AutomationSessions & MessagesManifest valid

★ 2

MIT

TypeScript

Aug 18, 2026

dsh plugin --profile web add dsh-task-relay

by kiligzzz

User-defined agents with automatic routing, model failover, and squad orchestration: six model tools (agent_dispatch / agent_followup / agent_list / agent_squad / agent_import_skill / agent_upsert), n

Workflow & AutomationTools & CapabilitiesTerminal & ClientsSessions & MessagesManifest valid

★ 1

MIT

JavaScript

Aug 31, 2026

dsh plugin --profile web add @kiligzzz/dsh-agent-dispatch

by ZSeven-W

DeepSeek Harness (DSH) plugin: dispatch work to DSH agents from Claude Code / Codex — native subagent progress, in-host worker sessions with per-tier presets, and a multimodal bridge that lends the te

Workflow & AutomationManifest valid

★ 193

↓ 549/wk

MIT

JavaScript

Oct 8, 2026

dsh plugin --profile web add @zseven-w/dsh-crew

by 863683348

Agent governance suite: policy-based tool gating (allow/deny/ask with wildcards and priorities), a structured JSONL audit trail, and per-agent token quotas against the host token meter, with state und

Security & AuditTools & CapabilitiesDevelopment & InfrastructureModels & ProvidersManifest valid

★ 0

MIT

JavaScript

Sep 11, 2026

dsh plugin --profile web add dsh-gov