← 返回列表
未验证
将会话固定到侧边栏顶部,并批量归档管理
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/4 · 已提供中文文档
DSH(DeepSeek Harness)Web 插件:将会话固定到侧边栏顶部,以便快速访问重复使用的工作流。包含归档面板,支持批量删除、恢复和工作区分组。
综合分
29.5
GitHub 分
29.5
用户评分
—
★ Stars
1
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add fallow5/dsh-pin-sessions该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-client-ui-sidebar@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-storage-domain@deepseek-ai/dsh-typert-protocol@deepseek-ai/schemastery用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
DSH 固定会话插件
一个 DeepSeek Harness (DSH) Web 插件,允许用户将会话固定到侧边栏的专用区域,以便快速访问重复的工作流程,并提供一个归档会话设置面板,支持批量删除、恢复、工作区分组和分页。
功能特性
- 固定 / 取消固定会话 —— 将会话固定到侧边栏顶部,并从其工作区浏览器中隐藏
- 归档面板 —— 用于管理已归档会话的设置面板,支持批量删除、逐行恢复、工作区分组和每页 20 条的分页
- 上下文菜单集成 —— 通过 @baihejiangnan/dsh-session-context-menu 右键点击固定/取消固定
- 固定 = 归档 —— 固定会将会话从工作区浏览器中归档;取消固定则会将其恢复
架构
标准的 DSH 插件拆分:宿主端(Cordis 加载器入口 + TYPERT 清单)+ 客户端(window.__ModuleLoader__.load 包装器)。
宿主端
| 文件 | 职责 |
|------|---------------|
| src/index.ts | 打开 pin_sessions 存储域,创建 PinsStore + PinsRuntime |
| src/runtime.ts | PinsRuntime extends TypertRemoteService —— 8 个 TYPERT 方法 |
| src/typert.ts | 宿主端 TYPERT 清单(必须与客户端一致) |
| src/store.ts | 基于 pin_sessions 域的持久化固定存储 |
| src/domain.ts | pin_sessions 域声明 |
| src/schemas.ts | 固定记录的 Zod schema |
TYPERT 方法
list、pin、unpin、toggle、isPinned、deleteSessions、listArchived、unarchiveSession
关键设计:固定 = 归档
固定会调用 workspaceRegistry.archiveSession(sessionId),以从工作区浏览器中隐藏该会话。取消固定会调用 unarchiveSession(),将 ID 从 archivedSessionIds 中移除。这会触发 domain/changed → host/archived-sessions-changed 帧 → 客户端自动更新。
客户端
| 文件 | 职责 |
|------|---------------|
| src/client/index.ts | 注册语言区域、挂载 TYPERT_REMOTE、上下文菜单扩展、传送 PinnedSection + ArchiveSection |
| src/client/PinPanel.tsx | 传送到侧边栏顶部的固定区域 |
| src/client/ArchivePanel.tsx | 设置面板,支持工作区分组、分页、批量删除、恢复 |
| src/client/styles.ts | 镜像原生 DSH 类的 CSS |
| src/client/locales.ts | i18n 字符串 |
| src/client/remote.ts | TYPERT 远程接口 |
| src/client/typert-remote.ts | 客户端 TYPERT 清单(必须与宿主端一致) |
构建与安装
Build
cd dsh-pin-sessions
pnpm install
pnpm run build # tsc + tsdown + wrap-client.mjs
Typecheck
pnpm run typecheck
Install into DSH
dsh plugin --profile web add /path/to/dsh-pin-sessions
- 宿主端更改需要重启 DSH 服务器
- 客户端更改需要刷新浏览器
关键服务访问模式
| 服务 | 用途 |
|---------|-------|
| ctx.get("workspaceRegistry") | archiveSession()、archivedSessionIds、list()、enqueueOperation()、setState() |
| ctx.get("sessionPersistence") | list() 返回带有 {id, cwd?, origin?} 的标头 |
| ctx.get("sessions") | get(id) 返回活动会话或 undefined |
| ctx.get("agents") | get(id) 返回带有 cancel() 和 whenIdle() 的 agent |
| ctx.get("storageDomain") | get("session_projcache") 用于投影缓存 |
| GlobalStandardProps | 自动注入 useSessions 和 useWorkspaces 钩子 |
上下文菜单集成
@baihejiangnan/dsh-session-context-menu 在 Symbol.for("dsh.session-context-menu.extensions") 处暴露一个全局注册表,并带有 .register(entry)。该插件可能在我们之后加载,因此我们每 500ms 轮询一次,直到注册表出现。
条目:{id, label, order?, visible?, run}。上下文菜单的 isAction() 检查 aria-label 中是否包含“会话”+“操作”或“session”+“action”;titleFrom() 提取带引号的标题。
许可证
MIT扫码进群