dsh-client-ui-side-tasks:主会话旁的临时侧边任务面板

前言

在 DeepSeek Harness(DSH)里做智能体开发时,主对话线程往往承载长上下文与主线任务。若要在不污染侧边栏会话列表的前提下,临时 fork 一段独立子会话、跑完就删,需要客户端在会话头提供入口,并在 UI 上管理子会话的生命周期。社区插件 @deepseek-ai/dsh-client-ui-side-tasks(仓库 uluckystar/dsh-client-ui-side-tasks)面向浏览器端,在主会话旁提供「侧边任务」面板:每个任务对应一个 fork 出的子会话,默认不在工作区侧栏展示,并支持空闲自动清理与显式删除。下文介绍其定位、能力与安装注意点;事实以仓库 README 与 package.json 为准。

这是什么

dsh-client-ui-side-tasks 是 MyDSH 非官方社区维护 的 DSH 客户端插件(维护者 uluckystar,MIT 许可),npm 包名 @deepseek-ai/dsh-client-ui-side-tasks,当前资料中的版本为 0.1.0-rc.8,分类属于 客户端。它解决的是:在当前主会话上下文中,以「临时任务」形式管理 fork 子会话——有独立输入与迷你对话区,但不作为长期侧边栏会话存在;删除任务时应连同子会话日志与工作区引用一并移除。

与「把 fork 留在侧栏里长期讨论」不同,该插件强调 隐藏默认展示 与 自过期删除,面板关闭只隐藏 UI,任务与空闲中的 agent 仍保留直到过期扫掠或用户删除。

核心功能

会话头入口与面板形态

插件向 conversation.session.header.actions(id side-task,order 30)注册操作:主会话标题栏出现「侧边任务」按钮,并带实时数量角标。点击后由 shell.overlay(id side-task-panel)打开右侧浮层; resting 状态可收成右上角紧凑 chip,有任务在执行时会展开。

面板 单归属当前主会话:随 useSessions.current 切换而指向新主人的任务集合,不支持多主会话并排查看。

每个侧边任务 = fork 子会话

创建任务时通过 session.fork(标题递增)从当前主会话前缀 fork 子会话,子会话拥有与主人相同的完整上下文,并在自己的 agent 中运行,与主线程独立。

两项设计使其表现为「临时任务」而非侧栏可见 fork:

  1. 默认隐藏:创建后立即 workspace.archiveSession,子会话不出现在工作区侧栏或未分组列表;面板是唯一展示面。迷你对话只显示任务 自身 的消息(任务最后一次 session/end-seed 标记之后的内容),避免把主人近期消息泄漏进新任务的空白 composer。
  2. 自过期:若任务在创建、发送或一轮 settled 之后 连续一小时无活动(SIDE_TASK_TTL_MS),在页面打开期间由 apply 侧扫掠自动删除;活动时间戳会持久化,刷新页面后仍按同一截止时间倒计时。运行中的任务不会被扫掠。每行任务显示「还剩 N 分钟自动删除」,每秒刷新。

删除任务(按钮需两次点击确认)调用 session.delete(childId):释放 host agent、从各 workspace 账户移除子会话、擦除存储日志;任务行、面板选中态与持久化集合项一并消失。关闭面板不删任务,重开仍可看到未过期任务。

模型侧行为

面板通过 session.fork、session.prompt、session.cancel、session.delete 与 DSH 交互;面板本身不向模型注入额外 prompt,模型所见均来自用户在任务内发送的内容。插件本身不单独改变 KV cache;在任务内发送会如常延长该子会话历史,删除任务会移除其完整日志。

已知限制(README 明示)

  • 迷你对话 仅文本,工具调用、上下文注入、推理块等不在紧凑面板展示;完整记录需在主流程中正常打开该任务会话查看。
  • 过期扫掠 仅在页面打开时运行;浏览器关闭期间空闲任务会保留到下次加载再根据持久化时间戳继续倒计时;无 host 侧 janitor。
  • 选中任务的历史:事件窗口只回填当前会话,面板在选中时会拉取 session.history,并在运行轮次结束或发送后刷新;进行中显示「运行中」,结束后显示完整回复。
  • 运行中 不允许排队发送:composer 在 turn 运行期间锁定,须等当前轮 settled 后再发下一条(与主 composer 的队列语义不同)。

与 DSH 版本的边界

仓库在 DSH 源码提交 99f6f02fecdb7dff40c3fbc9470f5907c29f74ca(CLI rc.7)上验证了安装、host 注册与浏览器模块加载,但该运行时 未暴露 插件临时生命周期所需的 legacy 客户端 ctx.sessions.history / ctx.sessions.delete。因此在 rc.6 上会 禁用创建与删除 并提示缺失能力,避免留下无法清理的子会话;不能 在该版本上依赖一小时过期等完整生命周期。插件还依赖 session.delete 与 session.history 能力,安装前应在实际使用的 DSH 构建中确认,而非仅凭仓库日期或版本标签。

资料中的 SkillHub 简介与此一致:已有任务历史可读;在 DSH 99f6f02 下创建、删除与自动清理仍受保护。

安装与启用

仓库自带预构建产物(lib/),普通用户无需本地构建。README 给出的步骤如下(请将 profile 换成你实际使用的,例如 web):

git clone https://github.com/uluckystar/dsh-client-ui-side-tasks
dsh plugin --profile web add ./dsh-client-ui-side-tasks

添加后 重启对应 profile,使 bundle 元数据生效。

独立激活(MyDSH rc.6):包内包含 dsh.bundle patch,用于挂载 inert host 条目;仅装依赖不足以保证 DSH 发现并加载浏览器模块。重启后确认浏览器已加载 @deepseek-ai/dsh-client-ui-side-tasks/client.js,且会话头出现侧边任务操作。若当前 DSH 构建已内置同类 UI,启用本插件前应先移除重复注册,避免双份入口。

插件以当前 DSH 进程与 profile 的权限运行;安装前请阅读仓库源码与 MIT 许可证,并在 独立 profile 中实测创建、主子归属、停止、删除与页面重载,元数据校验不能代替运行时测试。

开发者从源码构建(需本机 DSH checkout 与 pnpm)见 README「Building from source」一节,一般使用者可忽略。

典型用法

  1. 在已启用插件且能力完整的 DSH Web 客户端中打开一条主会话。
  2. 点击会话头「侧边任务」,打开右侧面板(或从右上角 chip 展开)。
  3. 创建新任务:得到 fork 子会话的空白 composer;在任务内输入并发送,迷你区显示该任务自身消息;运行中可停止(session.cancel)。
  4. 无需长期保留时,在任务行使用删除(两次确认);或保持页面打开并注意一小时无活动后的自动删除倒计时。
  5. 需要工具调用等完整界面时,按 README 说明在主流程中打开对应任务会话查看全量 transcript。

适用场景与注意

适合:在同一主会话上下文中并行处理短生命周期子任务(查资料草稿、独立试错线程),且希望侧栏不被大量 fork 占满、删除后不留日志残留的场景。

注意:

  • 社区目录(如 SkillHub 插件页)与 DeepSeek / 幻方无官方从属;本仓库为社区维护,不应表述为官方「记忆系统」或长期讨论归档方案。
  • 不同 DSH 版本的客户端注入与槽位可能变化;peerDependencies 在资料中指向 @deepseek-ai/dsh-client-* 等 0.1.0-rc.7 系列,实际需与本地 harness 对齐。
  • GitHub 仓库当前星标数为 2(目录页同类信息),仅作生态参考,不代表官方背书。

结尾

uluckystar/dsh-client-ui-side-tasks 把「fork 子会话」收敛成主会话旁的临时任务:归档隐藏、面板独占展示、删除与过期扫掠力求无残留。若你的 DSH 构建已提供 session.delete 与 session.history,可在独立 profile 安装验证完整生命周期。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜