dsh-recent-sessions:跨工作目录的最近会话与「迟到的想法」

前言

DeepSeek Harness(DSH)侧栏里的会话是按工作目录分组的:每个目录只显示最近几条,且只列你注册过的目录。当你同时在多个文件夹里开发时,一阵子没打开的项目会从侧栏里「消失」;会话若落在某个你没想到的目录下,找回来也不直观。

另一个常见情况是:对话进行中突然想到一句补充,但当下不想打断模型——没有专门的地方暂存,只能记在脑子里或别处。

下面介绍的 @whybebabo/dsh-recent-sessions 是 DSH 客户端插件,在侧栏增加一块不跟单个会话绑定的全局面板:一张跨所有工作目录的扁平会话列表,以及只存本机、下次打开同一会话时再出现的「待问」小条。维护者为 whybebabo,社区目录分类为「记忆」。本仓库 fork 自 huangxp12/dsh-recent-sessions,两者注册同一个 recent-sessions 面板 id,不要与原版同时安装。

这是什么

插件 npm 包名为 @whybebabo/dsh-recent-sessions(当前版本 0.1.4,MIT 许可)。宿主半对会话数据零写入(空 apply);界面与交互走 DSH 文档化的扩展点(main keyed slot、sidebar.panellist、conversation.input.dock 等),无 DOM hack。

一句话定位:把所有工作目录里的会话拉平成一张列表,并提供一个「先记下来,回头打开会话时自己回来找你」的本机笔记位。

核心功能

跨目录会话列表

  • 所有会话按最近活动排序,包括侧栏此刻折叠或未注册目录里的会话。
  • 每行右侧有目录 chip,点一下只筛该目录;工具条会出现筛选胶囊,再点可取消。
  • 第二行显示该会话最后一条人类提问(读宿主 turnOutline 投影);悬停可看最后一条助手回复预览。
  • 时间分组:今天 / 昨天 / 近 7 天 / 更早;可切换「最近活动」或「最久没动」排序(后者便于清理;时间桶顺序会一并倒序)。置顶会话单独成组,排在时间桶之前。
  • 过滤:仅未收尾 / 含空会话 / 含子会话;已归档默认隐藏。视图状态存在本机 localStorage(键 dsh-recent-sessions:store:v1),刷新后保持。

搜索与行级操作

搜索框会查宿主消息内容索引(全文),同时本地按标题/路径即时过滤;命中结果与列表共用当前目录与会话过滤条件。

行级动作包括:打开会话、在文件管理器中显示目录(依赖宿主报告桌面能力,否则退化为复制路径)、复制路径。

「迟到的想法」

在任意一行写一句话,只存本机、不发送任何消息。下次打开该会话时,输入框上方出现一行小条:展开可把内容填进草稿(InputActions.captureInsertion() + insertText,可撤销)、「先不打扰」(保留想法但不再提示)、或丢弃。

状态与外观

行首状态规则与侧栏逐条一致:空闲不画点、运行中转圈、待审批/待回答为琥珀点并将行尾时间换成短词、未读完成为绿点。插件还会订阅 ctx.uiSession.sessionStatus,在你没盯着会话时跑完则亮绿点(侧栏有时不置位未读时,面板侧更可靠,但插件无法补侧栏缺的那颗点)。

界面沿用 DSH 设计令牌与线条图标,无通知、无红色告警、不自动归档。

安装与启用

从 npm 安装(请将 <你的 profile> 换成实际 profile 名):

dsh plugin --profile <你的 profile> add @whybebabo/dsh-recent-sessions

本地开发时可指向仓库目录(README 示例路径为占位,请换成你的 clone 路径):

dsh plugin --profile <你的 profile> add /path/to/dsh_recent_locate

兼容性(见 package.json 的 engines):

  • DSH >= 0.2.0-rc.2
  • 宿主半 Node ^22.19.0 || >=24.0.0

面板依赖 root hooks useSessions、useSessionStatus、useWorkspaces;缺任一时会显示明确错误提示。安装前建议浏览源码与 MIT 许可证;插件在当前 DSH 进程权限下运行,与宿主同等信任边界。

典型用法

  1. 在侧栏打开「最近会话」面板(与 recent-sessions 面板 id 对应入口)。
  2. 从扁平列表里跳转到很久没碰的项目会话,或用目录 chip 缩小范围。
  3. 用「最久没动」排序配合过滤,整理长期未用的会话。
  4. 在列表某行写下「迟到的想法」;下次进入该会话时从输入框上方小条展开并填入草稿,再决定是否发送。

全文搜索与本地标题/路径过滤可同时使用;内容检索走 ctx.sessions.search(query, signal),结果套用当前视图过滤。

适用场景与注意

适合:多工作目录并行、依赖侧栏但常被目录分组「藏住」会话的 DSH 用户;需要在不唤醒对话的前提下暂存一句补充的场景。

注意:

  • 勿与 huangxp12 原版同装(面板 id 冲突)。
  • 提问预览默认只为前 30 行拉取投影;开启「仅未收尾」时会为状态判定额外补拉(并发受限)。投影失败会进入 5 分钟冷却。
  • 想法与视图状态仅存浏览器本机;唯一写入会话的路径是你主动把想法填进草稿并发送消息。
  • 发布包无构建步骤,仅含手写 lib/client.js 与 lib/index.js 等小文件。

结尾

dsh-recent-sessions 用一块全局面板补上了 DSH 按目录分组侧栏在「跨目录找回会话」上的缺口,并用本机 deferred notes 接住暂时不想发送的补充。社区目录页:whybebabo/dsh-recent-sessions;源码与完整说明:GitHub。

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

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

Xiaoye