🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

置顶会话 TianYa-DAO/dsh-pinned-sessions

DeepSeek Harness
TianYa-DAO32 天前有提交已提供中文文档扫描:未发现敏感能力

按状态自动把活跃会话固定到侧栏顶部

29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/1 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add TianYa-DAO/dsh-pinned-sessions
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · browser
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 32 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 活跃会话置顶侧栏
  • 按状态自动排序
  • 运行中会话优先展示

让仍在运行、已完成未打开和当前打开的会话始终排在 DSH Web 侧边栏工作区列表顶部。

README

由 DeepSeek 最新模型翻译生成
dsh-pinned-sessions(置顶会话) 把「运行中 / 跑完未点开 / 当前打开」的会话固定显示在侧栏工作区列表的顶部——位于「工作区」区域标题下方、所有工作区分组上方。 这不是 DSH 自带的手动置顶(那个置顶只在各自工作区分组内排前),而是按会话状态自动置顶的一段独立区域。被置顶的会话同时仍保留在它自己的工作区分组里。 位置与生效条件 侧栏 ├─ 工作区 ← 区域标题(搜索 / 视图选项 / 添加工作区) ├─ 置顶 ← 本插件插入 │ ├─ 进行中 1 │ │ ● 会话标题… proj │ ├─ 待查看 1 │ │ ● 会话标题… other │ └─ 当前打开 1 │ ● 会话标题… ├─ 工作区分组一 └─ 工作区分组二 只在「按工作区分组 / 工作区树」模式下显示;以下情况自动隐藏: 1. 侧栏收起成图标栏(rail); 2. 视图切换为「一张扁平列表」; 3. 搜索框展开、列表正在显示搜索结果。
展开完整文档(README 剩余 1 节)
dsh-pinned-sessions(置顶会话)

把「运行中 / 跑完未点开 / 当前打开」的会话固定显示在侧栏工作区列表的顶部——位于「工作区」区域标题下方、所有工作区分组上方。

这不是 DSH 自带的手动置顶(那个置顶只在各自工作区分组内排前),而是按会话状态自动置顶的一段独立区域。被置顶的会话同时仍保留在它自己的工作区分组里。

位置与生效条件

侧栏 ├─ 工作区 ← 区域标题(搜索 / 视图选项 / 添加工作区) ├─ 置顶 ← 本插件插入 │ ├─ 进行中 1 │ │ ● 会话标题… proj │ ├─ 待查看 1 │ │ ● 会话标题… other │ └─ 当前打开 1 │ ● 会话标题…
├─ 工作区分组一 └─ 工作区分组二

只在「按工作区分组 / 工作区树」模式下显示;以下情况自动隐藏:

1. 侧栏收起成图标栏(rail);
2. 视图切换为「一张扁平列表」;
3. 搜索框展开、列表正在显示搜索结果。

分组规则

| 分组 | 判据 | 圆点 |
| 进行中 | 会话状态 running === true | 蓝色呼吸点 |
| 待查看 | 会话状态 completionUnread === true(跑完但你还没点开) | 绿色点 |
| 当前打开 | 会话被主视图持有(retainedBy.mainView > 0) | 空心环 |

1. 一个会话只出现在一个分组里,优先级:进行中 → 待查看 → 当前打开。
2. 已归档会话、subagent 子会话不出现。
3. 组内按最近更新倒序;空分组不显示;三个分组都为空时整段不渲染。
4. 点击行 = 打开该会话(等同侧栏原有行为)。

开关

设置 → 通用 → 置顶会话区。关闭后整段区域不渲染,偏好持久化在客户端 store(localStorage dsh.pinned-sessions.prefs.v1)。

安装

npm:

dsh plugin add dsh-pinned-sessions

Release tarball:

dsh plugin add https://github.com/TianYa-DAO/dsh-pinned-sessions/releases/latest/download/dsh-pinned-sessions-0.1.0.tgz

桌面版可在「插件」页里安装。包内声明了 dsh.bundle,profile 会挂载它的 cordis.patch.yml 行,客户端注册表随之为浏览器提供 ./client.js;宿主行已挂载时客户端半会被直接热加载。

实现要点

1. 纯客户端插件:client.js 通过动态客户端模块协议(window.__ModuleLoader__.load)加载,注册进增量槽 shell.overlay,React portal 挂在其上。
2. 侧栏工作区区域(sidebar.workspaces)是 single 槽、且区域内部没有任何可插入的插槽,因此本插件不改动也不替换自带浏览器:它自己创建一个 host 元素,插到 div[data-slot="sidebar.workspaces"] 内浏览器根节点的「区域标题」与「会话列表」之间。host 只是浏览器根 flex 列里的一个普通子元素,跟随列表自然占位,插件卸载时移除。
3. 位置与模式判定全部通过稳定的 DOM 事实完成:宿主元素插入点用 listArea 类名定位;分组模式 / 搜索模式用列表内的 projectRow / searchResultRow 行类名判定;rail 状态用根节点上的 rail 类名判定。MutationObserver 负责结构变化,1.5s 轮询兜底区域被整体替换的情况。
4. 数据来自客户端根标准 hook:useSessions / useSessionStatus / useWorkspaces;打开会话走 ctx.get("uiWorkspace").openSession(id)。
5. 样式只用自己的 dshps- 类,颜色全部取自 --dsw-alias- 主题 token,因此跟随主题/皮肤。客户端半只依赖平台模块(react、react-dom、@deepseek-ai/dsh-client-store),所以本包没有任何安装期 npm 依赖。

自检

npm test

用桩化的动态模块协议加载 client.js,校验:工厂与导出形状、apply() 的两次注册(槽位 / id / order / 共享 store / inject face / 双语字典)、分组推导(优先级、归档与 subagent 过滤、倒序、空组省略、空会话),以及渲染树。

已知限制

1. 依赖自带客户端的 DOM 与类名(listArea / projectRow / searchResultRow / rail)。DSH 若重构侧栏结构,需要同步更新 client.js 里的锚点选择器。
2. 客户端包版本变化(如方法或 hook 改名)可能导致注册失败;client.js 对 uiWorkspace 缺失做了降级告警,不做静默失败。
3. 实测环境为 DSH 0.2.0-rc.2。

许可

MIT
预览分享卡片长什么样 ↓TianYa-DAO/dsh-pinned-sessions
分享 · DeepSeek Harness Hub
TianYa-DAO/dsh-pinned-sessions

按状态自动把活跃会话固定到侧栏顶部

回到顶部