← 返回列表
✓ 可直接安装
📌 dsh-session-pin
自动检查通过:npm 包已发布且 engines 声明满足基线(声明 Node ^22.19.0 || >=24.0.0);该结论来自程序自动检查,未经人工实机验证。 · 最近上游提交 2026/9/19 · 已提供中文文档
将会话和工作区固定到 DeepSeek Harness 侧边栏顶部,并支持为每个固定项设置行颜色——一个双面(宿主端 + 客户端)dsh 插件。
综合分
37.9
GitHub 分
37.9
用户评分
—
★ Stars
9
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add dsh-session-pinnpm 包 dsh-session-pin 已校验归属本仓库,走 npm 安装最省事
🟢实装验证通过· 2026/9/8
由 dsh-plugin-verify(GitHub Actions)在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查✓ 自动检查通过
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-session-pin @ 0.7.11
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/12 22:12:19
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-workspace@deepseek-ai/dsh-attachment@deepseek-ai/cordis@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-client-connection@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-layout@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-sidebar用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
📌 dsh-session-pin
- 1024 商店频道:先执行一次 npm i -g dsh1024,然后执行 dsh1024 plugin --profile web add dsh-session-pin(计入 deepseek1024.com 安装排名)。
Gitee
将会话和工作区固定到 DeepSeek Harness 侧边栏顶部,并可为每个固定项设置行颜色。
一个双面(宿主 + 浏览器)插件:两级固定、每个固定项 8 色调色板,以及一个导航组织器——看板、标签、已保存视图、健康摘要和 /goto。
官方仓库。 这是 dsh-session-pin 唯一的官方仓库,由 PerryLink 维护。其他账号下的同名仓库均无关联。
License
DSH plugin
dsh-doctor
Node
CI
Version
npm version
npm downloads
English · 简体中文 · Español · Português · हिन्दी
兼容性
| 层面 | 状态 |
|---|---|
| Harness | DeepSeek Harness dsh-v0.1.6-alpha.2(GitHub 标签;2026-09-18 验证:双标尺类型检查 + 静态接缝检查;浏览器验证待维护者进行)。npm 依赖线 0.1.6-alpha.2,peer 为 >=0.1.2-rc.1 =0.1.5-alpha.1 =0.1.6-0 = 22(开发下限) |
| 平台 | Web GUI(双面:宿主 + 浏览器) |
| 模型 | 任意(仅 UI——无模型流量、无会话事件) |
| session/pin 事件 | 预检门控:仅当宿主的运行时事件词汇表识别该类型时才写入(alpha 线的追加不再能打上 ignorable 标记,因此词汇表成为唯一的门控信号——2026-09-18 适配);否则投影降级为设置缓存,并在首次写入前触发一次警告。 |
你将获得
dsh-session-pin 将重要的对话保留在侧边栏顶部,并为其着色,让你一眼就能找到它们:
- 两种固定层级——可固定整个工作区和单个会话;被固定的工作区会移到工作区列表最前面,被固定的会话会移到其账户的最前面。
- 每个固定的行颜色——每个固定项后的色块会循环切换 8 色预设调色板(Shift+点击清除);该行会获得左侧强调条以及半透明底色。
- 四种固定入口——每一行上的悬停 [pin][swatch] 组合、会话标题栏中的固定开关、带固定面板的侧边栏底部操作,以及按浏览器持久化的固定,可在重启后保留固定项和颜色。
- 点击打开——点击侧边栏或固定面板中的已固定行,会在当前窗口中打开该会话(与 /goto 使用的同一接缝);两者都通过 alpha 线上的宿主会话保留通道进行导航。
- 零核心改动——一个用于原版 DSH Web GUI 的独立插件;每个入口在较旧的基线上都会优雅降级。
┌─ Workspaces ────────────────────────────┐
│ 🎨 Workbench ███ │ ← pinned workspace, tinted red
│ 📌 Implement login flow 3h │ ← pinned session, tinted teal
│ Fix the auth bug 1h │ ← hover shows a gray pin + swatch
│ Refactor the DB layer 2d │
└─────────────────────────────────────────┘
导航组织器
四项浏览器本地能力在固定功能之上组织多会话工作。所有状态都走同一个 session-pin 存储(按浏览器;不上传任何内容),并且每项都有一个 Config 开关。
- 看板——固定项加入命名分组;看板芯片行可创建、重命名和删除看板,并可通过拖拽重新排序(顺序按浏览器持久化),而固定面板会在可折叠标题下按看板对其固定项分组。
- 标签与视图——实体最多可携带 8 个标签(每个 ≤24 个字符),可通过面板的管理按钮按行设置(该按钮也会分配固定项所属的看板);筛选栏可匹配文本和标签,任何筛选状态都可保存为命名视图(最多 20 个),以便一键切换。
- 健康摘要——每个已固定的会话行都会附加一行只读、经过净化的信息(N msgs · you|ai · relative time),该信息派生自公开的会话快照——仅包含计数和方向,绝不包含内容。
- /goto ——以 /goto 开头并按 Enter 的输入行会触发跳转:唯一的标题/标签匹配会将其打开,多个匹配会在提示中列出,没有匹配则会给出说明。该命令行永远不会到达模型。
工作原理
- 宿主部分(src/index.ts)——注册持久化的 session-pin 设置命名空间(两个固定 id 列表、两个颜色映射以及组织器状态,外加宿主策略 maxPins/reorderOnLoad/pruneStale);无会话事件,无模型流量。
- 浏览器侧(src/client.ts)——组装一个无框架依赖的 PinStore(设置传输,降级为带跨标签页同步的版本化 localStorage 文档)、一个 PinController(两级切换 / 颜色循环 / 修剪 / 重排序状态机),以及 UI:行覆盖层、可选的行槽注册、头部切换、侧边栏底部操作和固定面板。排序通过 ctx.workspaces 进行。
- 日志支持的写入通道——在挂载内置 dsh-session-pin 服务的构建上,每次会话切换都先通过 session.setPinned RPC 提交(session/pin 事件日志是规范存储),并将提交镜像到设置存储中;RPC 失败或缓慢时降级为直接写入设置。
- 日志支持的投影读取——enableLogBacking(宿主 Config,默认关闭的故障关闭)挂载一个投影读取器,将实时的 session/pin 事件折叠为规范固定集,并将折叠后的 pinned/colors 镜像到设置命名空间,该命名空间成为日志支持状态的幂等缓存。事件模式、纯折叠函数(foldPinEvents)以及预检门控的追加接缝(PinLogAppender)位于 src/pin-log.ts:仅宿主的运行时事件词汇表在首次追加之前就对写入进行门控(alpha 线追加不再能盖上 ignorable 标记,因此旧的标记探测已移除),因此无法安全承载该事件的宿主——即词汇表不认识该类型的宿主在读取时故障关闭——永远不会收到该事件;设置/localStorage 存储仍是兼容 + 降级路径。
- 客户端接缝——浏览器侧从 @deepseek-ai/dsh-client-connection 读取 SessionId/WorkspaceId 品牌(已移除的 dsh-client-runtime 包在当前宿主上不再存在);会话头部槽的标准套件席位被类型化为本地结构契约。在 0.1.2-rc.1 宿主上,sessions.row.action 行槽未被声明,因此会话行回退到 DOM 覆盖层,行槽注册保持延迟。
- 构建——esbuild 输出宿主 ESM 侧和客户端 CJS 侧,并包装在 Web 启动工厂中(window.__ModuleLoader__.load({ id, factory }));react 被外部化到 shell 自身的 React 上,并且如果任何 @deepseek-ai/* 值导入泄漏到浏览器包中,纯度门控会使构建失败。
使用的扩展点: settings(宿主);sessions、workspaces、settingsScope、connection、remote、slots(客户端);locale(客户端,可选);conversation.session.header.actions、sidebar.footer.action、shell.overlay,以及上游的 sessions.row.action 行槽(当被声明时)(0.1.2-rc.1 宿主不声明它——那里的 DOM 覆盖层覆盖会话行)。模型可见效果:无——这是一个纯 UI 插件:它不添加任何会话事件,也不向任何模型请求添加任何 token。
快速开始
1. 将 bundle 安装到你的 profile 中
dsh plugin --profile web add "github:PerryLink/dsh-session-pin#main"
或从 npm 安装(已发布的版本)
dsh plugin --profile web add dsh-session-pin
2. 重启并验证该行
dsh --profile web --dump-config | grep -A3 'id: session-pin'
加载器条目 id。 在 dsh-base 包挂载了内置宿主服务 @deepseek-ai/dsh-session-pin(条目 id 为 session-pin)的 harness 构建上,请在 profile 补丁行中为该插件指定一个不同的条目 id,例如 id: session-pin-ui——重复的 session-pin id 会导致启动失败,并报错 "duplicate loader entry id"。
安装与卸载
- git 渠道(最新的 main):dsh plugin --profile web add "github:PerryLink/dsh-session-pin#main" —— pnpm run build 会产出宿主部分(lib/index.js)和浏览器部分(lib/client.js)。
- npm 渠道(已发布的版本):dsh plugin --profile web add dsh-session-pin。
- tarball 渠道:在本仓库中运行 pnpm pack,然后执行 dsh plugin --profile web add ./dsh-session-pin-.tgz。
- 卸载:dsh plugin --profile web remove dsh-session-pin(或从 profile 补丁中移除该行;settings.yaml 中的 session-pin 部分也可以移除)。
配置
所有可调项都是 Schemastery Config 字段(可从 cordis.yml 修改)。cordis.patch.yml 使用以下默认值挂载该包。
| 键 | 默认值 | 含义 |
|---|---|---|
| maxPins | 0 | 每个层级最多可固定的实体数(会话和工作区各自拥有独立配额);0 = 无限制 |
| reorderOnLoad | true | 列表就绪后重新断言固定前缀(最新的固定项在前) |
| pruneStale | true | 丢弃就绪列表中不存在的实体(已删除/已归档)的固定项和颜色 |
| enableBoards | true | 在侧边栏面板中启用固定分组(看板) |
| enableTags | true | 启用会话/工作区标签以及面板筛选栏 |
| enableViews | true | 启用已保存的筛选视图 |
| enableHealth | true | 启用每个已固定会话的健康摘要(只读、已脱敏) |
| enableGoto | true | 启用 /goto 编辑器命令 |
| enableLogBacking | false | 将 session/pin 事件折叠为日志支持的投影,并将其镜像到设置缓存中(故障关闭:启用时会话日志为权威来源) |
工具与界面
| 界面 | 类型 | 说明 |
|---|---|---|
| [pin][swatch] 行控件 | UI 插槽 / DOM 覆盖层 | 每个会话和工作区行上的悬停控件 |
| 会话头部开关 | UI 插槽 | 头部操作行中相同的固定控件,以会话 id 为键 |
| 侧边栏底部 + 固定面板 | UI 插槽 / 覆盖层 | 列出已固定的工作区和会话,按看板分组(可折叠),每行可管理看板/标签并显示颜色圆点 |
| /goto | 命令 | 通过标题/标签在编辑器中快速跳转;该行永远不会到达模型 |
| session-pin 设置命名空间 | 宿主服务 | 用于固定项、颜色和组织器状态的持久化按浏览器存储 |
权限与数据
- 权限:dshWorkshop 清单声明了 browser:local-storage、settings:read 和 settings:write。
- 数据:固定项、颜色和组织器状态按浏览器存储在 session-pin 设置命名空间中,在 Web 代理不提供该命名空间的地方降级为带版本的 localStorage 文档(v1 文档会迁移)。不会上传任何内容。启用 enableLogBacking 后,设置命名空间成为日志支持的 session/pin 投影的幂等缓存。
- 会话日志:默认无——此插件不添加任何会话事件,也不向任何模型请求添加任何令牌。当 enableLogBacking 开启时,宿主将仅日志的 session/pin 事件(由上游 session.setPinned RPC 写入)折叠到规范固定项投影中;PinLogAppender 会根据运行时事件词汇表对其自身写入进行预检门控,因此无法承载该事件的宿主永远不会收到该事件。模型可见的影响仍然为零。
安全边界
- 仅 UI。 无模型可见影响、无网络、无子进程;每个界面在较旧基线上都会优雅降级。
- 持久且有界的状态。 固定项和颜色会随已删除实体一起清理(pruneStale);maxPins 限制每个级别的固定项数量。
- 只读健康检查。 健康摘要从公开会话快照中派生计数和方向,不写回任何内容。
已知限制
- 持久化范围——日志支持的规范驻留是可选加入的(enableLogBacking,默认关闭且故障关闭),其实时读取循环需要能够发出 session/pin 事件(上游 session.setPinned RPC)的构建;在没有该事件的基线上,固定项和颜色会回退到 session-pin 设置命名空间,然后回退到浏览器本地的 localStorage。在事件词汇表不认识该类型的宿主上,预检门控会完全禁用日志追加(故障关闭的读取路径会拒绝此类日志),因此投影在那里降级为设置缓存。
- 排序范围——固定位置仅在 Manual 顺序下稳定;在 Updated 顺序下,核心的活动提升会将活动会话重新置前,而 reorderOnLoad 会在加载时重新断言前缀。
- 远程浏览器——设置 RPC 在基线上仅限回环;远程浏览器回退到浏览器本地的 localStorage。
- 行徽章回退——在上游行槽位不可用的情况下,会话行通过标题文本进行匹配;当标题重复时,徽章会显示在每个匹配行上,并切换第一个匹配项(外观问题)。
- 行 DOM 依赖——覆盖层依赖核心行的 role="treeitem" 结构,并且必须跟随上游 UI 变更。
路线图
- 规范归属:一个由日志支持的 session/pin 事件 + pin 投影 + 写入 RPC(上游)——随后 settings 命名空间作为持久存储退役,插件消费 useProjection('pin')。 已落地(P0): 插件提供了 session/pin 事件 schema、纯投影折叠(foldPinEvents)、预检门控的追加接缝(PinLogAppender),以及一个宿主投影读取器(enableLogBacking),它会将实时的 session/pin 事件折叠回 settings 缓存。settings/localStorage 存储仍作为兼容 + 降级路径;启用时日志为规范来源。
- 自构建写入回退:在没有上游 session.setPinned RPC 的构建上,将 PinLogAppender 接入以追加 session/pin 事件,这样无上游基线也能以规范方式记录日志。
- 一旦 @deepseek-ai/dsh-session-pin 在 npm 基线中发布,就在客户端消费上游 pin 投影(useProjection('pin'));目前宿主镜像在 master 构建上覆盖读取路径。
- 右键 / 行菜单的“Pin”入口(需要一个核心行级菜单槽位;行徽章槽位现已在上游提供)。
- 一旦规范归属存在,就提供完整的颜色选择器弹出层(自定义颜色);目前的循环色块覆盖预设调色板。
开发
sh
pnpm install # install dependencies
pnpm run typecheck # tsc --noEmit
pnpm test # vitest unit tests
pnpm run build # dual-half build + client-bundle purity check
node scripts/verify-live.mjs # live check against a running dsh web (DSH_CHECKOUT env)
主题
deepseek-harness、dsh、dsh-plugin、session-pin、pin、workspace
贡献者
- @PerryLink — 创建者与维护者:pin UX、持久化、工作区排序、每 pin 行颜色、导航组织器,以及五种语言的文档。
PerryLink DSH 插件家族
本项目是由 PerryLink 维护的 40 个 DeepSeek Harness 插件之一。如果这个对你有帮助,其他的很可能也会:
| 插件 | 一句话简介 |
|---|---|
| dsh-auto-review | 审批链上的第二模型自动审查,默认故障关闭 | |
| dsh-background-agents | 持久后台子代理,带 Web UI 侧边栏、消息传递和中断 | |
| dsh-budget | DeepSeek Harness 的成本治理:预算、碳排和延迟集于一个面板。 | |
| dsh-checkpoint-rewind | 等同于 Claude Code /rewind:快照、会话分叉、一次性恢复 | |
| dsh-claude-move | 将 Claude Code 会话、记忆、技能和 CLAUDE.md 迁移到 DSH | |
| dsh-click | 面向 DeepSeek Harness 的跨平台原生桌面控制——Windows 优先。 | |
| dsh-composer-history | 为 Web 输入框提供终端风格的输入历史:方向键、Ctrl+R 搜索 | |
| dsh-data-quality | 数据集质量检查与引用交叉核对(此处消费的可选数值桥接) | |
| dsh-defend | 面向 DeepSeek Harness 的提示注入、越狱和密钥泄露防御。 | |
| dsh-doublecheck | 工程纪律守卫:需求拷问、测试门禁、对抗性审查 | |
| dsh-draw | 面向 DeepSeek Harness 的统一静态图像生成路由。 | |
| dsh-fast | 面向 DeepSeek Harness 的只读性能诊断。 | |
| dsh-fund-research | 面向中国公募基金的确定性研究报告 | |
| dsh-github | 面向 DSH 的 GitHub PR/issue 集成,每次写入均需审批 | |
| dsh-industry-research | 行业研究编排,通过本插件的 ctx.researchReport.assemble 封存其交付物 | |
| dsh-library | 面向 DeepSeek Harness 的本地文档知识库。 | |
| dsh-local-ai | 面向 DeepSeek Harness 的本地模型(Ollama)集成。 | |
| dsh-lsp-actions | 基于语言服务器的 LSP 诊断、格式化、补全、代码操作和重命名 | |
| dsh-mask | PII 脱敏中间件:在模型边界匿名化,在展示层还原 | |
| dsh-mcp-panel | 只读 MCP 运行时面板:/mcp 命令 + 设置标签页,显示状态、工具和错误 | |
| dsh-memento | 需审批的跨会话记忆:ctx.memory 接缝 + SQLite + memory 工具 | |
| dsh-observe | 面向 DeepSeek Harness 的 OpenTelemetry 和 Langfuse 可观测性导出器。 | |
| dsh-output-styles | 等同于 Claude Code outputStyles 的运行时样式切换 | |
| dsh-permission-rules | Claude Code 风格的声明式 allow/deny/ask 权限规则,带审计 | |
| dsh-personal-directive | 带顶栏开关的个人指令注入器(框架版) | |
| dsh-plugin-guide | 作为按需代理技能的插件开发知识库 | |
| dsh-plugin-doctor | 用于 DSH 插件的零依赖静态 + 沙箱冒烟检测器 | |
| dsh-reach | 多渠道审批/提问桥接:微信/Telegram/飞书,会话控制台 |
| dsh-research-report | 可验证的研究报告引擎:内容寻址的证据账本和密封版本 | |
| dsh-score | 针对 DeepSeek Harness 插件的多维度质量评分。 | |
| dsh-session-sync | DeepSeek Harness 的跨设备会话同步——你的会话存储的专用 git 镜像。 | |
| dsh-skill-pack-security | 安全审计技能包:密钥扫描、依赖项和供应链审查 | |
| dsh-talk | DeepSeek Harness 的语音优先会话循环:与它对话,听它回答。 | |
| dsh-test-drive | 针对 DeepSeek Harness 插件的隔离安装与冒烟测试驱动。 | |
| dsh-ticktick | 滴答清单/Dida365 任务桥接:会话头部面板 + 11 个工具 | |
| dsh-translate | 针对 DeepSeek Harness 的供应商参数转换和确定性 JSON 修复。 | |
| dsh-wechat | 微信 ↔ DSH 桥接(腾讯 iLink 机器人):文本/图片/文件/语音,聊天内审批 | |
| dsh-autotier | 自动强/廉价模型层级路由,带确定性风险防护和 /tier 命令 | |
| dsh-catalog | PerryLink 系列的 DSH 桌面市场标准目录源 | |
| dsh-cert-mcp | 暴露认证注册表的只读 MCP 服务器:等级、快照和五维证据 | |
| dsh-kit | 一键安装核心系列入门包 | |
| dsh-plugin-certification | 社区认证注册表,带可复现检查的等级和徽章 | |
| dsh-plugin-kit | PerryLink DSH 插件共享的零运行时依赖工具包 | |
| dsh-plugin-portal | 将整个插件系列渲染为单个页面的零依赖静态门户 | |
| dsh-plugin-upgrade-015 | 合并了 0.1.3-alpha.1 → 0.1.5-rc.1 升级走廊卡片,外加一个零依赖接缝扫描器 | |
| dsh-team-rooms | 跨会话团队房间:共享消息总线、任务板和时间线 | |
从 DSH Desktop Market 安装
所有 PerryLink 插件均可在内置的 DSH Desktop Market 中浏览:Market → Sources → add source → paste https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json → select it。安装仍需通过 Market 的 npm 身份验证以及你的确认。
许可证
Apache License 2.0 © 2026 dsh-session-pin contributors扫码进群