vecnode/dsh-vn-plugins--packages-dsh-rightbar ↗★ 0
dsh-rightbar
Right bar: dsh-vn-plugins' own right Sidebar for the DeepSeek Harness web GUI - the tab strip, the docking panel, the expand control, the tab-type registry (sidebarRightTabs/sidebarRight), the keyed tab seats and the Start/guide page. Vendored from the shipped @deepseek-ai/dsh-client-ui-sidebar-right bundle so the pack owns the code; the bundle layer disables the core row. Alpha.
AI 分析
该插件暂无 AI 分析内容。
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:vecnode/dsh-vn-plugins#e4849fa724696ea1b9cca8fe58995151fb2d0ee1&path:packages/dsh-rightbar说明文档
阅读完整 README ↗dsh-rightbar (alpha.1)
The pack's own right bar — the right-hand column of the DeepSeek Harness web GUI: the tab strip with its "+" add control, the docking panel with split / float / fullscreen, the header expand button, the Start (guide) page, the tab-type registry other plugins register into, and the keyed tab body/title seats. Alpha.
What "the pack owns it" means
The right bar is a fork: lib/client.js is a byte-for-byte copy of the
shipped @deepseek-ai/dsh-client-ui-sidebar-right bundle (same harness line as
.dsh-version.json's dsh pin), with a generated banner and the module-table
id rewritten to dsh-rightbar. The bundle layer then hard-disables the two
core rows and inserts the pack's:
- id: ui-sidebar-right
disabled: true
- id: ui-sidebar-files
disabled: true
- insert:
- id: rightbar
name: 'dsh-rightbar'
So exactly one bar is mounted, and it is this package — the code can be changed
here without touching any DeepSeek core file. The shipped
@deepseek-ai/dsh-client-ui-sidebar-documentpreview row is deliberately left
alone: it only consumes the sidebarRightTabs service and the
sidebar.right.pane.tab seat, which this copy provides under the same names.
The contract other plugins use
Unchanged from the shipped bar (that is the point of a byte-for-byte fork):
- Registry (cordis service
sidebarRightTabs):register({ id, kind, patterns?, priority?, canOpen?, title(address), guide? })—idis also the slot key of the plugin's body/title. - Controller (cordis service
sidebarRight):openResource(address, opts),openTab(kind, opts),close,focus,split,float,dock,isExpanded,toggleExpanded. - Seats:
sidebar.right.pane.tabandsidebar.right.pane.tab.title(keyed by the definition id),sidebar.right.tab.guide(chain),sidebar.right.tab.menu.item(list), plus therightbar/rightbar.sessionpanel seats and theconversation.session.header.cornerexpand button. - The "+" control opens the Start page, which lists each registered type's
guideentries; picking one callsopenTab(kind, { replaceTab: true }).
dsh-rightbar-files (the Files tab) and dsh-editor (the editor tab) are the
pack's own tab types on top of this bar.
Re-syncing the fork
When the pinned harness line moves:
pwsh -NoProfile -File scripts/sync-vendored.ps1
pwsh -NoProfile -File scripts/sync-vendored.ps1 -Check
(On Windows, powershell -NoProfile -ExecutionPolicy Bypass -File scripts\sync-vendored.ps1 works just as well: the script is OS-neutral.)
The script finds the harness node_modules (profile first, then the npm caches
- the Windows npm cache,
~/.npm/_npx, and the POSIX global module directories), copies each forked bundle, rewrites the module id, applies that fork's patch list, stamps the banner and prints hashes.-Checkreports drift without writing (exit 1 when out of sync). If the bar's slot/service surface changed in the new line, review the diff before installing — a fork does not silently track upstream.
Layout
cordis.patch.yml bundle layer: disables the core bar + Files rows, inserts 'rightbar'
lib/index.js Node half: no-op row so the browser bundle ships
lib/client.js GENERATED vendored bar (do not edit; re-sync instead)