DSH Plugins Marketplace

DSH Plugins

Plugins

/

dsh-side-session

D

dsh-side-session

Manifest valid

DSH Sidebar Temporary Session Plugin (Claude Code /btw style): forks the main session + recent context completion, same UI as the main session, destroyed on close

ToolsUI (client)SkillshasBundlePatchMachine translated

dsh-side-session

类似 Claude Code /btw 的侧边临时会话窗口,用于 DeepSeek Harness (DSH)。

在主会话的会话头部点击「侧边会话」,右侧浮出一个临时会话窗口:它 fork 主会话已完成的历史回合(作为参考上下文),并补全主会话的最新动态(当前进行中的轮次里已提交的用户消息、助手消息、工具调用),再注入 boundary 提示词告知代理「这是侧边临时会话、主会话 ID、历史只是参考、避免干扰主会话」。侧边会话不显示在会话列表,关闭即销毁、无法再次打开。

特性(对照需求)

需求实现
1. 创建时 fork 主会话子会话以主会话已完成轮次的日志前缀为 seed(meta.seedLength 标记边界)
2. 代理与主会话一致agentPresets.composeFrom(childCtx, parent.ctx) 挂载同一 preset(工具/技能/提示词/权限行一致);继承 cwd、模型路由(provider/model)、sandbox 模式、approval 策略
3. 注入侧边会话提示词双保险:system prompt section + 第一条 user 消息(Side conversation boundary...),明确「fork 的历史只是参考上下文,只有 boundary 之后的用户消息才是活跃指令」
4. 不进列表 + 关闭后不可重开子会话以 origin: 'subagent' 创建(UI 会话列表天然过滤);关闭时 handle.dispose() 销毁 agent 并用 shell 删除持久化落盘文件,进程重启后也不存在

为什么是「fork + 补全」而不是纯 fork

事件级 fork(seed)要求「无未闭合轮次」,所以只能取到主会话最后一个已完成 turn 之前的历史。主会话长期运行时,这个历史是滞后的。

解决:recentMainContext() 直接读主会话的内存日志——不受重放约束,当前进行中轮次里已提交的事件(用户消息、助手消息、工具调用)全部可见——取 fork 边界之后的最新活动,随 boundary 消息注入。侧边会话因此既知道历史,也知道主会话此刻在干什么。

为什么延迟初始化

点击按钮立即弹出面板(不等待任何创建过程);fork + 子 agent 的创建发生在首条消息发送时。打开但未使用不会产生任何会话。

架构

┌─────────────────────────── Host(DSH 进程)───────────────────────────┐
│ lib/index.js(零依赖 ESM,不 import 任何 @deepseek-ai/*)             │
│  webServer 路由 POST /side-session/api/<method>                       │
│   create → fork seed + 近期上下文快照 + boundary 消息 + 子 agent       │
│   prompt → agent.followup(host 内驱动)                              │
│   cancel → agent.cancel                                               │
│   close  → dispose agent + 删除落盘文件                               │
│   list / status                                                       │
└───────────────────────────────────────────────────────────────────────┘
┌────────────────────────── Client(浏览器)────────────────────────────┐
│ lib/client.js(ModuleLoader bundle,/plugins/@dsh-external/...)      │
│  conversation.session.header.actions  「侧边会话」按钮                 │
│  shell.overlay                       浮动侧边面板                     │
│    助手消息复用主会话的 MarkdownText(GFM/KaTeX/代码块/复制按钮)、    │
│    思考折叠、工具调用 chip、运行状态、错误显示                         │
│  RPC:fetch POST /side-session/api/<method>                           │
└───────────────────────────────────────────────────────────────────────┘
  • Host/Client 通过 webServer JSON 路由通信(与 dsh-balance-plugin 等 profile 插件相同的零依赖范式:profile bundle 只能解析 profile 自己的 node_modules,不能 import @deepseek-ai/*)。
  • 面板复用标准 sessions 服务:binding(sessionId) 绑定会话、session.subscribe()/getSnapshot() 渲染消息流;fork 历史与 boundary 消息在渲染时过滤(seq < seedLength、source.plugin === 'side-session')。
  • 消息发送不走 wire 的 session.prompt(它会拒绝 origin: 'subagent' 的会话),由 host 半部直接 agent.followup()。

安装

静态 profile 插件,纯 JS 无构建步骤,支持本地路径 / tarball / GitHub 安装:

# 本地路径(仓库或 tarball 均可,效果等价)
dsh plugin --profile web add /path/to/dsh-side-session
# 或 GitHub(若发布到公开仓库)
dsh plugin --profile web add github:你的名字/dsh-side-session

dsh plugin add 会把它写入 profile 的 package.json(dsh.profile.bundles 自动追加,patch 机制生效)。重启 dsh web 后生效。

使用

  1. 打开 DSH Web 界面并进入任意会话。
  2. 会话头部点击「侧边会话」→ 右侧立即打开侧边临时会话窗口(fork 与 agent 创建延迟到首条消息)。
  3. 在窗口中提问,代理将以与主会话相同的目录 / 工具 / 技能 / 权限工作,遵守 boundary 提示词(历史仅供参考、非破坏性探索、不干扰主线程)。
  4. 点击「关闭」→ 侧边会话被销毁并删除落盘记录,无法再次打开。

文件

  • lib/index.js — Host 半部(零依赖):fork + 近期上下文快照 + boundary 消息注入,创建 / 发送 / 停止 / 关闭 / 列出侧边会话;webServer JSON 路由。
  • lib/index.js — Host 半部(零依赖):fork + 近期上下文快照 + boundary 消息注入,创建 / 发送 / 停止 / 关闭 / 列出侧边会话;webServer JSON 路由。
  • lib/client.js — Client 半部(ModuleLoader bundle):头部按钮 + 浮动面板 UI,助手消息复用主会话 MarkdownText。
  • package.json — dsh.bundle.patch(layer patch)、dsh.client(web 平台声明)、peerDependencies(运行时契约文档,代码本身零依赖)。
  • cordis.patch.yml — bundle patch:把插件行插入 profile 的 layer stack。
  • dsh.plugin.json — 插件清单(元数据)。
  • LICENSE — MIT。

License

MIT

Versions

Latest versionPublishedSize
0.1.0——

Comments

Loading…

Similar plugins

dsh-sidechain

by omdsh-dev

DSH 侧会话插件:/side 持续性侧会话(Codex 风格)与 /btw 一次性侧问(Claude 风格)——在临时 fork 中运行、不写入主会话历史;Web UI 右侧链面板内嵌对话,主会话保持不变

Sessions & MessagesManifest valid

★ 15

BSD-3-Clause

TypeScript

Aug 31, 2026

dsh plugin --profile web add @dsh-external/dsh-sidechain

by iyllyt

个人很喜欢 Claude Code 的 /btw,于是为 DSH 做了复刻:共享当前上下文快速旁路提问,不中断主任务,也不写入主会话历史。

Tools & CapabilitiesManifest valid

★ 9

↓ 59/wk

MIT

TypeScript

Sep 12, 2026

dsh plugin --profile web add dsh-btw

by zclDragon

Codex-style /side side conversations for DeepSeek Harness: a temporary fork of the current chat in a floating panel, inheriting context without interrupting the main task.

UI & ExperienceDevelopment & InfrastructureManifest valid

★ 1

↓ 78/wk

MIT

TypeScript

Aug 23, 2026

dsh plugin --profile web add @zhuchenglong/dsh-side-chat

by xthreehao

DSH(DeepSeek Harness)隐藏会话插件:把会话从侧边栏隐藏、可随时恢复。免构建零依赖,契约取自运行中的 0.2.0-rc.2。

Manifest valid

★ 0

MIT

JavaScript

Oct 2, 2026

dsh plugin --profile web add dsh-hidden-session

by 123dbl

DSH side-chat (旁会话) plugin: launch a fresh continuable parallel session from the conversation header while the main session keeps running.

Sessions & MessagesTerminal & ClientsManifest valid

★ 0

MIT

TypeScript

Sep 3, 2026

dsh plugin --profile web add dsh-side-session

by HrxSpace

DSH 插件,扫描管理电脑本地所有终端的会话(Claude Code、Codex、Workbuddy、DSH等)

Sessions & MessagesManifest valid

★ 0

MIT

TypeScript

Sep 8, 2026

dsh plugin --profile web add dsh-session-sweeper