dsh-panes
DSH 全屏工作台面板:项目侧栏加按项目隔离的 tab,覆盖会话、文件、资源管理器、全项目搜索、终端、浏览器、源代码管理与 Markdown 笔记库。
安装
dsh plugin --profile web add dsh-panes
沙箱测试
这个插件还没测过。提交测试 →
README
dsh-panes
<img src="assets/icon.png" width="96" alt="dsh-panes icon" align="right">
A full-screen workspace panel for DeepSeek Harness: a
project sidebar on the left and, per project, a set of tabs — session, files,
search, terminal, source control and notes.
一个 DSH 全屏工作台面板:左侧是项目列表,右侧是该项目的 tab 集合(会话、文件、搜索、终端、浏览器、源代码管理、笔记)。切换项目就切换整套 tab。
Panel · main + sidebar.panellist row — one panel, opened from the DSH sidebar
Tabs · session · file · explorer · search · terminal · git · notes
Host · one same-origin POST /dsh-panes/api route, plugin-header fenced
Client · one bundled file (shadcn/ui + Tailwind, preflight off), React external
License · MIT
Tabs
Tab · What it does
Session · A host conversation in the tab strip, one tab per session. A right dock holds side chats — forks of the main conversation (⌥S).
File · Code view with syntax highlighting (shiki), line numbers, breadcrumb, word wrap, ⌘G jump-to-line, paged loading for large files, UTF-8 detection — plus an inline editor (⌘S saves atomically, with etag conflict detection).
Explorer · Tree on the left, its own internal tabs on the right, so browsing does not consume top-level tabs. Sort by name, jump to top/bottom, reveal in the system file manager.
Search · Project-wide content search: regex, case sensitivity, globs, split result list + preview, hit counts, truncation flag. Uses the machine's rg, then the rg bundled with @vscode/ripgrep, then a bounded JS walk — and tells you which engine ran.
Terminal · A real pty in the tab, via the host's webTerminals service, with fit-on-resize and live theme.
Source control · The Git tool window: changes, staged/unstaged, commit box, commit history graph, diffs, branch actions (16 rail buttons, each switchable), AI-generated commit messages.
Notes · A Notion-style Markdown vault: list + BlockNote editor, one .md per note, frontmatter preserved by the host, .trash on delete, etag-based conflict detection. Notes live in one folder per project (_inbox for unassigned ones) and can be moved between projects.
What's new in 0.2.0
- One type ladder — every text step derives from
--wb-font-ui-size, so the
fontUiSize config field scales the whole panel (default is one step larger).
The status bar's light/dark label is now a real toggle.
- Notes per project — each project gets its own folder in the vault, the list
and search are scoped to it, names come from the frontmatter everywhere
(list, tab, breadcrumb), and notes can move between projects or reveal in Finder.
- Session tabs behave — "new session" asks the host for a blank session
instead of reopening the first one, a history list sits in the + menu, the
tab title follows the session's own title, and the scroll position survives a
tab switch.
- Split view — tabs can be split left/right or top/bottom, moved across panes,
and the split collapses when its pane empties.
- Explorer became a split view too: tree on the left, files in inner tabs on
the right, with sorting and jump-to-top/bottom buttons.
- Tab actions — rename inline (
F2or double-click), a right-click menu with
close ranges / copy path / reveal, batch close behind one confirmation, drag
reorder with a drop marker, and ⌥⌘←/→ to move the active tab.
- The layout lives in the host — persisted through the plugin's own route
(layout.json in the DSH home), with localStorage as the cache, so it comes
back after a port change or cleared site data. ⋯ → reset layout if it ever
gets stuck.
- Editable files — the file tab has an inline editor that saves atomically
(⌘S) and refuses to clobber a file changed on disk (reload or overwrite).
- Side chats — fork the current session into a dock on the right (
⌥S),
several at a time, each its own conversation.
- Browser tab removed — Electron
<webview>is gated by the host, so the
iframe could not open most sites; use the system browser.
Install
# from npm dsh plugin --profile web add dsh-panes
Then add "dsh-panes" to dsh.profile.bundles in ~/.dsh/profiles/web/package.json
and restart the client once — a new bundle is composed into the boot graph only on
restart. After that, rebuilds are picked up by a page reload.
The plugin shows up as the Workbench / 工作台 row in the DSH sidebar.
From a checkout instead (development):
pnpm install && pnpm build # lib/ is the shipped artifact dsh plugin --profile desktop add "$(pwd)" # pnpm link # add "dsh-panes" to dsh.profile.bundles, restart
Uninstall: remove it from dsh.profile.bundles, then
dsh plugin --profile web remove dsh-panes.
Using it
- The sidebar lists every workspace with its open-tab count.
+adds a project; the filter box narrows the
list; the collapse button shrinks the sidebar to a 52px rail (automatic below
820px of panel width).
+at the top right opens the NEW TAB menu: new session, open file,
explorer, search, terminal, git, notes — then the project's recent sessions.
- Tabs can be split into two panes (side by side or stacked) from the
⋯menu;
each pane keeps its own strip, and a tab moves between panes from the same
menu. Double-click a tab to rename it, right-click for close-range, copy path
and reveal; drag to reorder.
- Tabs are scoped to the project: switching project switches the whole tab set.
Each project's layout is persisted (in the host profile, so it survives a
port change or cleared site data).
- The status bar shows branch + changed-file count (
±n, click opens Git), the
project's open-ta
…(truncated)
以上内容来自 npm 上的 README,我们只做格式化,不改内容。
版本
npm 上共发布:4,最后更新 2026-11-05