dsh-pinned-panel
A Pinned group at the top of the DeepSeek Harness sidebar: every pinned conversation from every workspace, opening in its original workspace.
一句话定位
A Pinned group at the top of the DeepSeek Harness sidebar: every pinned conversation from every workspace, opening in its original workspace.
安装方式
在 DSH 的 web profile 中执行下面的命令;装完刷新页面即可。
$ dsh plugin --profile web add 'git+https://github.com/OuQiL/dsh-pinned-panel.git#005f5ea75a9b255c36933fe258c9d4257abe8ec3'
兼容的 DSH 版本
未声明
作者与热度
OuQiL · ★ 9 · 更新于 2026-11-06
关于这个插件
dsh-pinned-panel
> A Pinned group at the top of the [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) sidebar.
> Pinned conversations stop being pinned inside one workspace: they are collected into a Pinned group first in the session list, expanded by default — and opening one still drops you back into its original workspace.
English | [简体中文](README.zh-CN.md)
Pinned group first in the session list — two pinned conversations from one workspace, each still opening in its own workspace. (Chinese UI shown; titles and labels follow the active locale.)
Contents
- [What you get](#what-you-get)
- [Install](#install)
- [Requirements](#requirements)
- [How it works](#how-it-works)
- [Compared with dsh-pin](#compared-with-dsh-pin)
- [FAQ and troubleshooting](#faq-and-troubleshooting)
- [Security and privacy](#security-and-privacy)
- [Known limitations](#known-limitations)
- [Development](#development)
- [Contributing](#contributing)
- [License](#license)
What you get
Sidebar ├─ 📌 Pinned 3 ← first in the list, expanded by default │ ├─ 🔧 Fix expired login 14:32 │ ├─ 📊 API diff report Yesterday │ └─ 📝 Weekly draft 10-21 ├─ 📁 default-workspace ← your workspaces, untouched │ ├─ Conversation A │ └─ Conversation B └─ 📁 another-workspace
- Pinned group first in the sidebar session list. Same row metrics as the shipped session rows (32px rows, 34px group header,
--dsw-radius-md, hover/focus rings), light and dark themes included. - Expanded by default, collapsible from its header (the choice is remembered in
localStorage). - Click a row → the conversation opens in its original workspace. It uses the official
uiWorkspace.openSession()call, exactly like clicking that row in the sidebar: same working directory, same context, same history. - Rows are not duplicated into a private store. The group reads the Host's own
pinnedSessionIdsand workspace membership; pinning/unpinning stays the shipped 📌 action (plus a ✕ on hover). - Origin is visible. Each row shows the workspace it belongs to; hover it for the full title.
- Live activity at a glance. While something is happening the row's leading glyph becomes a dot: pulsing while the conversation runs, amber while it waits for approval, a plan review or an answer, green for an unread completion (same source as the shipped status dots, so it updates live).
- Per-row actions without leaving the group. Hover a row for its ⋯ menu: rename, fork, copy session ID, unpin, or archive — all through the same calls the shipped rows make (
session.rename,forkSession,unpinSession,archiveSession). Double-click a title to rename it in place (Enter saves, Escape cancels). Archiving a conversation that is still running asks stop and archive first instead of silently ending its work. - Original rows stay. A pinned conversation is still listed under its own workspace — the Pinned group is an extra entry point, not a move.
- Archived section. A collapsed Archived N entry under the rows expands into the archived conversations, each with a one-click restore (
uiWorkspace.unarchiveSession) — archiving by accident no longer means hunting through the full archive view. It is collapsed by default and shows at most the 10 most recent items; a muted Show all · N row reveals the rest. - No extra panel, no extra page. The plugin adds the group and nothing else; there is no pinned page and no rail icon to configure.
Install
In the app (easiest)
1. Open Settings → Plugins.
2. Add plugin.
3. Paste the Git address of this repository:
github:OuQiL/dsh-pinned-panel
(the dialog also accepts the full https://github.com/OuQiL/dsh-pinned-panel URL, a tarball, or an absolute local path)
4. Reload the page. The Pinned group appears at the top of the conversation list.
With the CLI
dsh plugin add github:OuQiL/dsh-pinned-panel # or pin a profile explicitly dsh plugin --profile desktop add github:OuQiL/dsh-pinned-panel
From a local checkout
git clone https://github.com/OuQiL/dsh-pinned-panel.git dsh plugin add /absolute/path/to/dsh-pinned-panel
After changing lib/client.js in a linked checkout, reload the page (Ctrl+R) to load the fresh bundle; no reinstall is needed.
Uninstall
Settings → Plugins → dsh-pinned-panel → disable/uninstall, or dsh plugin remove dsh-pinned-panel.
Requirements
| | |
|---|---|
| Surface | DeepSeek Harness Web GUI (the Desktop app renders the same Web surface) |
| Tested with | 0.2.1-rc.2 on Windows |
| Host half | none — it is a no-op; everything runs in the browser |
| Credentials / network | none |
| Sidebar | required; TUI/headless profiles have nothing to attach to |
Because it attaches to the sidebar list, a DSH release that restructures that list may require a small adaptation (see [How it works](#how-it-works)); the plugin degrades to "no group" rather than breaking the app.
How it works
pinned state (Host) uiWorkspace service (shipped)
pinnedSessionIds ────┐ openSession(id) ──► selects the Session
items[].sessionIds ───┴──► Pinned group ──► unpinSession(id) ──► writes the pin set
(sidebar list) (both official calls)
同分类对比
同一分类下 Star 最高的 5 个,便于横向比较。
| 插件 | 作者 | Star | 版本 | 更新 |
|---|---|---|---|---|
| open-design | nexu-io | 106.9K | 0.25.1 | 2026-11-10 |
| huashu-design | alchaincyf | 29.1K | 3.3.0 | 2026-11-10 |
| dsh-web | zhu1090093659 | 10.3K | 0.0.1 | 2026-11-10 |
| baoyu-design | JimLiu | 6.3K | 2.12.2 | 2026-11-10 |
| dsh-wallpaper-engine | elysia395 | 6.3K | 1.4.2 | 2026-11-10 |