DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Message Handoff — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
M

dsh-message-handoff

Message Handoff

DeepSeek Harness 的逐消息会话交接:每条消息的分叉按钮旁都有一个交接图标,使用 LLM 总结截至该消息的对话,创建一个携带已复制历史记录和注入的摘要文档的新会话,并自动打开该会话。原会话保持不变。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:antonkoatl/dsh-message-handoff#dd19c2de55664d5fd05177f9ed45e6b8fba21f9c
README兼容性版本

兼容性与来源证明

Message Handoff 以 dsh-message-handoff 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

0.1.0stable
2026/8/22

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Contextdsh-context用于上下文洞察和管理的 DeepSeek Harness 插件,提供上下文仪表板和上下文命令,帮助了解上下文的构成及其演变过程。Mnemondsh-mnemon面向 DeepSeek Harness 的可组合三层记忆控制平面:持久化运行时上下文、可搜索的项目文档、可插拔的长期记忆、受保护的策略、WebUI 和无头工具。Memsearch Dsh@zilliz/memsearch-dsh适用于 DeepSeek Harness 的 MemSearch 插件:在多个代理之间共享 Markdown 记忆,支持捕获、步骤前上下文注入、记忆召回技能和技能候选审核面板。Memory@furongjun1999/dsh-memory灵枢(Lingshu·líng shū)DeepSeek Harness 插件:完整大脑——长期记忆/知识飞轮/自我认知/递归反思接入 DSH,对话自动沉淀进 md_cg 认知图(md 文档)

README

dsh-message-handoff

Per-message session handoff for DeepSeek Harness. Inspired by dsh-session-handoff, with two differences: the trigger is a handoff icon next to each message's fork button (no slash command), and the forked session keeps the copied history up to the selected message with the LLM summary injected on top of it.

Each finalized assistant message's icon row renders copy · ✋ handoff · fork. Clicking handoff:

  1. summarizes the conversation up to that message with one auxiliary LLM call (thinking off, byte-capped input, oldest entries dropped first);
  2. creates a fresh session with the copied history prefix (same workspace cwd, parent lineage, and agent preset — the same pipeline the web UI's own fork button uses);
  3. appends the structured handoff document (task goal / progress / decisions / files / next steps / open questions) as a user message on top of the copied history;
  4. attaches the child to the source's workspace, pins a handoff: <title>, and auto-opens it.

The origin session stays untouched. Any summary failure (no route yet, stream error, timeout, empty output) leaves zero side effects — no session is created.

⚠️ Privacy: the conversation text up to the selected message is sent to the configured model to produce the summary.

Install

# no build step needed — lib/client.js is prebuilt
dsh plugin --profile web add /path/to/dsh-message-handoff
dsh web
dsh --profile web --dump-config | grep message-handoff

dsh plugin add forwards to pnpm add inside the profile directory, so any install spec works: a directory checkout like above, a git URL once pushed, or the bare package name after publishing. Updating later means editing and re-running the same command.

Zero runtime dependencies: the host half is plain ESM over public services, and the client half is the official prebuilt browser module (lib/client.js). npm test runs the pure-function unit suite with node --test.

Configuration

Optional config: on the cordis.yml row:

- id: message-handoff
  name: dsh-message-handoff
  config:
    maxInputBytes: 24000   # UTF-8 byte cap for the summary input (oldest dropped first)
    maxTokens: 2000        # summary output budget
    timeoutMs: 120000      # summary call timeout

The summary model route is the source session's latest logged request route (the model that actually produced the history), falling back to the deployment's default model selection.

How it works

  • Host half (index.mjs): harness.handle('message-handoff:create') — resolves the fork cut for the addressed messageId (first completed turn/end at or after it, extended through trailing out-of-band appends, exactly like the api-proxy fork handler), summarizes via ctx.llm.stream, creates the child via ctx.agents.create({ seed, seedLength, meta, setup }) with agentPresets.resolve → mount, then best-effort workspaceRegistry attach and sessionTitle.rename, and appends the handoff document with surfaceOp: 'append'.
  • Client half (lib/client.js): registers one additive entry in the conversation.chat.assistant-actions slot (rendered between the built-in copy and fork controls), calls the package RPC, polls sessions.binding until the child is addressable, and opens it. A failed handoff turns the icon red with the error in its tooltip; clicking retries.

Model Experience

Summary request (auxiliary model call)

What the model sees

One auxiliary llm.stream request per handoff click: this package's system prompt below plus a single user message whose text is a JSON array of the extracted conversation turns [{"role":"user"|"assistant","text":"..."}], oldest entries dropped first until it fits maxInputBytes.

Verbatim summary system prompt
You are producing a handoff summary that will be prepended to a copied conversation prefix in a fresh agent session.
The user input is a JSON array of conversation turns: {"role":"user"|"assistant","text":"..."}.
Produce a concise structured handoff in Markdown with these sections:
## Task goal
## Current progress (what is done and what is not, concrete)
## Key decisions (and their reasons)
## Files involved (paths only)
## Next steps (numbered)
## Open questions / risks
Write in the language of the conversation. Be concrete and factual; do not invent facts that are not in the conversation.
Return only the handoff document, no preamble, no code fences.

Token effect

Conditional and capped: zero tokens until a handoff runs. The one-shot request is bounded by the maxInputBytes input framing and the maxTokens output budget; reasoning effort follows the route default unless the route's adapter lists off, which the summary then pins.

KV Cache effect

Independent behavior: the summary is a separate one-shot call outside any session loop, so it neither reuses nor invalidates provider caches for the source or child conversations.

Handoff document injection

What the model sees

In the forked child session, one appended user/message headed "📋 Session handoff": the source session id, the generated summary document, and two orientation lines pointing at "Next steps". The copied seed history precedes it unchanged.

Token effect

Append-only growth of the child's context: the copied prefix carries the same tokens as the source history up to the fork cut, plus the document, which scales with the summarized conversation length under the same maxInputBytes cap.

KV Cache effect

Append-only: the seed replays identically from persistence, so the copied prefix stays prefix-stable across the child's later turns; the injected document sits after that prefix and never rewrites earlier request tokens.

Known Limitations and Deferred Work

  • Assistant-turn-only trigger — the icon renders where the shipped fork control lives, on finalized assistant turns; user messages expose no per-message action strip to sit beside.
  • Preset read from the creation header — a session that switched agent presets mid-flight forks its child under the original composition instead of re-deriving the switch from the log.
  • No durable artifact — the handoff document lives only in the child session log; writing HANDOFF.md remains deferred work.
  • Text-only summarization — tool calls and attachments are excluded from the summary input; only user/message + assistant/message text blocks are extracted.

License

MIT