DeepSeek Harness plugin

dsh-session-handoff

Hand your long session over to a fresh one: /handoff summarizes the recent conversation with an LLM, creates a clean new session in the same workspace, injects the summary as its first message, and

Jump to install

Source facts

Repository
WeiYe6/dsh-session-handoff
Latest update
Aug 19, 2026
Category
Memory
GitHub stars
1
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/WeiYe6/dsh-session-handoff
Plugin: dsh-session-handoff
Author: WeiYe6

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer4 files
README.mdSource · read only
README language

dsh-session-handoff

![License: MIT](LICENSE) ![Node](package.json) ![dsh](https://github.com/deepseek-ai/deepseek-harness)

English | 中文

Hand your long DSH session over to a clean one. /handoff summarizes the recent conversation with an LLM, creates a brand-new session + agent in the same workspace (no history copied), injects a structured handoff document as its first message, and auto-opens it — the model continues from the summary instead of replaying the whole old history. The origin session is untouched.

Features

  • One command/handoff [<N>|all] (defaults to the last 8 user messages; all

covers everything)

  • Clean handoff — a fresh session with the origin's workspace, model route, and

agent preset (system prompt / tools / skills), no context bloat

  • Structured summary — 任务目标 / 当前进度 / 关键决策 / 涉及文件 / 下一步 / 遗留问题
  • Auto-open — the client half waits for the new session to be ready and navigates

to it (each child auto-opens once; history replay never re-jumps)

  • Robust by default — summaries run with thinking off (fast, cheap), oversized

excerpts keep the newest messages instead of erroring, and finish reasons (max-tokens / error / aborted) are translated into actionable errors

  • Zero core changes — a single dsh.bundle.patch row; only public services are used

Install

# 1. Build the bundle from source (or grab a release tarball)
npm install && npm run build && npm pack     # → dsh-session-handoff-0.2.0.tgz

# 2. Install into your web profile
dsh plugin --profile web add ./dsh-session-handoff-0.2.0.tgz

# 3. Restart and verify the row is mounted
dsh web
dsh --profile web --dump-config | grep handoff
# expected: # == dsh-session-handoff / - id: handoff / - name: dsh-session-handoff

> Dev-time source link (dsh plugin --profile web add D:/path/to/dsh-session-handoff) requires > the source dir's node_modules to resolve @deepseek-ai/* peers; prefer the tarball.

Usage

Type in any conversation's input box:

/handoff          # summarize the last 8 user messages (default)
/handoff 20       # summarize the last 20 (same as turns=20)
/handoff all      # summarize every user message (same as turns=all)

What happens:

1. A command card shows "summarizing…"; 2. An LLM produces the handoff document (goal / progress / decisions / files / next steps / open questions), which becomes the new session's first message; 3. The new session auto-opens; the origin session stays intact and is linked back.

> ⚠️ Privacy: the recent conversation text (user + assistant messages in the > requested window) is sent to the configured model to produce the summary.

Configuration

- id: handoff
  name: dsh-session-handoff
  config:
    turns: 8            # user-message rounds to extract (1–50)
    maxInputChars: 24000  # byte cap for the summary input (oldest dropped first)
    maxTokens: 2000     # summary output budget
    reasoningEffort: off  # off (default, fast/cheap) | high | max | inherit
    timeoutMs: 120000   # summary call timeout
    # provider: deepseek-official   # optional fixed model route
    # model: deepseek-v4-flash      # must be paired with provider

Without provider/model, the current session's latest logged model route (session.requestHeader()) is used.

How it works

  • Host half (index.mjs, plain ESM): public services only — commands

(/handoff), llm (ctx.llm.stream, following official session-title-llm), agents (ctx.agents.create — session and agent together, inheriting the origin's cwd / model route / agent preset via agentPresets.mount), plus workspaceRegistry.attachSession (same-workspace grouping) and sessionTitle.rename (a handoff: <source> title).

  • Client half (src/client/, tsdown → lib/client.js): a handoff

conversation node matches the /handoff success event and auto-opens the child session (polling until it is addressable, deduped via localStorage).

Development

npm install        # devDeps: tsdown / typescript / @types/react / vitest / jsdom ...
npm test           # 19 tests: 15 host+client pure functions + 4 client component
npm run typecheck
npm run build      # tsdown → lib/client.js (CJS factory, official client-module format)
npm pack           # prepack runs typecheck + build automatically

Publish checklist: add the dsh-plugin GitHub topic → open a PR to awesome-deepseek-harness → optionally npm publish.

Known limitations

  • The handoff document lives in the session only; it is not written to disk

(HANDOFF.md is a future enhancement).

  • Targets the rc.5 public contracts; re-check on DSH upgrades.
  • The auto-open component has pure-function tests only; jsdom component tests are

pending.

License

[MIT](./LICENSE)