DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
P

dsh-plugin-pin-session

Plugin Pin Session

固定会话:在侧边栏会话行的“...”菜单中添加“固定/取消固定”选项,并在会话列表上方添加可折叠的“已固定会话”分组。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:NattoCB/dsh-plugin-pin-session#fad6d8f771e2706845737ef5dfdc41064a1aa73d
README兼容性版本

兼容性与来源证明

Plugin Pin Session 以 dsh-plugin-pin-session 发布,当前版本为 0.1.10。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/8/24

版本

0.1.10stable
2026/8/24

相关插件

正在加载相关插件…

最新版
0.1.10
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/8/24
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 ui-customization 分类下经过校验的插件。

Client Ui Skill Explorer@linxin666/dsh-client-ui-skill-explorerDSH 技能中心:按来源(bundled / project / user / custom / runtime)浏览已加载的技能,在 Web GUI 面板中启用或禁用、创建和删除技能。Client Ui Git Graph@linxin666/dsh-client-ui-git-graph外部 dsh Web GUI 插件:空会话 Git 分支选择器和 Git 图,包含实际的主机端 Git 操作与防护,作为 dsh 配置文件包Client Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。Client Ui Market@linxin666/dsh-client-ui-marketWorkshop 浏览卡片:浏览来自 dsh-market.com 的皮肤、宠物和社区插件,并在 GUI 中安装(资源安装到 DSH 主目录,插件通过可选的插件管理器安装)。

README

dsh-plugin-pin-session

Pin any DSH session to the top of your sidebar — one click, host-side persistence.





JSON API — GET /pin-session/pins · POST /pin-session/pin · POST /pin-session/unpin

A DeepSeek Harness web plugin that pins sessions: a collapsible Pinned Sessions group above the sidebar session list, plus Pin / Unpin entries in every session row's ... menu. Pure client+host bundle — zero changes to DSH core, pin order stored host-side so it follows you across browsers and origins.

✨ Features

  • 📌 Pin / Unpin in the row ... menu — one entry per row, label reflects current state.
  • 🗂️ Collapsible Pinned Sessions group directly above the session list:
    • click a pinned row to open that session (sessions.open);
    • hover reveals an × quick-unpin;
    • header toggles collapse (persisted per browser via localStorage);
    • sessions no longer present in the list render dimmed and are not clickable.
  • 💾 Host-side storage at $DSH_HOME/storages/pin-session.json — pin order is oldest-first and consistent across browsers and origins.
  • 🧩 Zero core surgery — pinned sessions stay in the chronological list; the shipped WorkspaceBrowser is left untouched.

🚀 Install

dsh plugin --profile web add github:NattoCB/dsh-plugin-pin-session

Then add "dsh-plugin-pin-session" to dsh.profile.bundles in the profile's package.json. A DSH restart is required — new client bundles join the boot graph only at process start.

Local checkout instead? dsh plugin --profile web add file:/absolute/path/to/dsh-plugin-pin-session

⚙️ How it works

HalfMechanism
HostwebServer.register({ kind: 'prefix', path: '/pin-session' }) JSON API over an atomic JSON file store
Row menuThe shipped session-row menu portals a role="menu" element to document.body; a MutationObserver matches each menu to its row via React fibers (props.node.id) and appends one Pin/Unpin item styled with the menu's own classes, closed by an outside pointerdown
SectionA React root planted before the [role="tree"] session list renders each pinned row's own real primitives.Menu, anchored at that row's ... button and wired to the same live callbacks (onRename(id, title) / onFork(id) / onArchive(id)) resolved from the row's fiber

The shell freezes every vendor module it serves (Object.isFrozen(primitives) === true), so shared components cannot be monkey-patched — but they can be called. The section menu therefore opens at the pinned row (not wherever the original row is scrolled) while rename/fork/archive stay single-sourced in the shipped browser; the ... affordance hides while the real row is not rendered (collapsed group / filtered list).

No pin icon ships in the primitives set, so the menu item embeds its own pushpin SVG.

✅ Verify after refresh

  1. Sidebar shows Pinned Sessions above the list once at least one session is pinned.
  2. Hover a session row → ... → Rename / Fork / Archive + a pushpin-iconed Pin.
  3. Click Pin → row appears under Pinned Sessions; menu flips to Unpin.
  4. The pinned row's own ... opens right at that row with the same actions.
  5. Click a pinned row → that session opens; Unpin removes it.
  6. Collapse the group → reload page → collapsed state survives (localStorage).
  7. cat ~/.dsh/storages/pin-session.json shows the id list.

🔌 API

GET  /pin-session/pins                 -> { pins: [{ id, title?, pinnedAt }] }
POST /pin-session/pin    {id, title?}  -> { pins }
POST /pin-session/unpin  {id}          -> { pins }

🧪 Test

npm test   # node --test — 11 cases across store + HTTP router

License

MIT — see LICENSE.