qiushi-dev/dsh-session-nexus
Unofficial DeepSeek Harness plugin — sessions as addressable, first-class citizens: lifecycle controls + cross-session messaging. Companion to deepseek-harness#3640
项目介绍Project Overview
DSH 会话工具包插件,一次安装提供生命周期控制与跨会话消息。核心能力包括 /resume、/unarchive、/rm-session 命令及 /send-to、/notify 唤醒与静默投递;启用 mailbox.enableTool 后模型可调用 session_send_message 与 session_overview,由协调会话驱动其他会话。适用于需要在多会话间编排工作流或恢复冷会话的场景。注意:/unarchive 受工作区注册表内存缓存限制,可能被后续写操作回滚;/rm-session 仅删除 JSONL 目录,派生索引需上游提供删除接口。
DSH session toolkit plugin providing lifecycle control and cross-session messaging. Core capabilities include /resume, /unarchive, /rm-session commands plus /send-to and /notify for wakeup and quiet delivery. With mailbox.enableTool enabled, models gain session_send_message and session_overview tools, letting an orchestrator session drive others. Use it when coordinating workflows across multiple sessions or reviving cold ones. Caveat: /unarchive is limited by the workspace registry's in-memory cache, which may be overwritten by later writes until restart; /rm-session only removes the JSONL directory, as durable deletion requires an upstream persistence seam.
请帮我了解并安装插件:【dsh-session-nexus】【https://github.com/qiushi-dev/dsh-session-nexus】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add dsh-session-nexus
把 qiushi-dev/dsh-session-nexus 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-session-nexus
Unofficial community plugin for DeepSeek Harness. Not reviewed or endorsed by DeepSeek. 非官方社区插件,未经 DeepSeek 审查或背书。
One install, the whole session toolkit — working companion to the community session RFCs.
一次安装获得完整的会话工具套件:生命周期控制 + 跨会话消息。
Install / 安装
dsh plugin --profile web add dsh-session-nexus # or a github/tarball spec
Commands / 命令
| 命令 | 功能 |
|---|---|
/resume <id> |
按 id 显式挂载冷会话(不发消息;从日志解析 preset) |
/unarchive <id> |
best-effort 取消归档(注册表缓存限制见下) |
/rm-session <id> --yes |
降级两步删除(默认关闭,lifecycle.allowDelete: true 开启) |
/send-to <地址> <消息> |
wakeup 投递:成为目标的下一个 turn;冷会话自动 resume |
/notify <地址> <消息> |
quiet 投递:目标下一步的模型上下文,不唤醒 |
/address [地址] |
输出会话的规范地址(URI + mention)供复制;无参数=当前会话 |
模型工具(mailbox.enableTool: true 默认开启):session_send_message(向其他会话投递消息)、session_overview(一次调用获取任意会话的标题/时间线/最近消息摘要——让"这个会话干了什么"这类问题一步得到答案,不再需要模型翻磁盘日志)。
地址格式(按推荐顺序):composer @ 选择器产生的 @[标题](dsh-session:…) mention、dsh-session: URI、session id、"含空格的标题"(直引号或「」)、裸标题(贪心匹配,仅活会话)。
With mailbox.enableTool: true (default) models get a session_send_message tool — an orchestrator session can drive other sessions.
Presentation / 呈现
Wakeup mail shows as a clean chat bubble (just the message, Codex-like); sender attribution and the untrusted-content notice ride a separate collapsed context row the same turn claims (mailbox.presentation: 'context' keeps everything in one collapsed row instead). Quiet mail is always a context row with a visible one-line summary.
Safety / 安全
- Sender attribution includes the live session title: 会话「标题」(id).
- Untrusted-content notice on every delivery; self-delivery refused; size cap (
maxMessageChars, 16384). - Loop breaker: per sender→target sliding window (default 10 messages / 300 s).
Config
- id: session-nexus
name: dsh-session-nexus
config:
lifecycle:
allowDelete: false
mailbox:
enableTool: true
allowColdWakeup: true
maxMessageChars: 16384
presentation: bubble # bubble | context
rateLimitCount: 10
rateLimitWindowSeconds: 300
Known limitations (upstream territory) / 已知限制(需上游支持)
/unarchivewrites durable state and pushes the UI frame, but the workspace registry's private in-memory cache cannot be invalidated from outside — a later workspace write may roll it back until restart. The clean fix is the upstreamunarchiveSession()the archive design note reserved./rm-sessionremoves the JSONL session directory only; derived indexes/caches/accounting reconcile lazily. Correct deletion needs adeleteoperation on the upstream persistence seam.- Quiet delivery to a cold session is impossible from a plugin — durable
queued → deliveredmailbox events belong to the upstream seam the RFC proposes. - No session-row "copy address" menu item: the sidebar row menu has no plugin slot.
/addressand the composer mention picker are the plugin-level substitutes.
These gaps are the RFCs' argument: the plugin proves the UX on public seams; the seams belong upstream.
License
MIT
Web UI 增强(客户端插件)
- 会话头部 ID 芯片:每个会话标题栏右侧显示该会话的 session id,点击即复制(悬停提示说明用途)。
/address专属结果卡片:不再是折叠截断的文本行——地址逐条整行展示,点击任意一条直接复制。
RFC 提案(proposed Agent Note 三件套)
本插件是两份社区 RFC 的伴生实现,提案原文见 rfc/(官方 .agents/notes/proposed/feature 格式,中英双语 + i18n sidecar):会话生命周期控制 · 会话邮箱。讨论串:deepseek-harness#3640。
ruvnet/ruflo
amruthpillai/reactive-resume
esengine/DeepSeek-Reasonix
volcengine/OpenViking
Molunerfinn/PicGo
titanwings/colleague-skill
nocobase/nocobase
Tencent/WeKnora