dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DSH Web plugin: right sidebar defaults to a configurable fraction of the viewport (1/6 by default) instead of half the screen, while keeping drag-to-resize and remembering the width you dragged to.
把 DSH 右侧栏的默认宽度从「半屏(视口 45%)」改成可配置的比例(默认 1/6), 同时保留拖拽调宽的能力,并记住你拖过的宽度。
DSH 的右栏宽度有两个坑,叠在一起:
openRightbar 里 rightbar ??= 视口 × 0.45
(@deepseek-ai/dsh-client-ui-layout/lib/client.js:429,RIGHTBAR_DEFAULT_RATIO = .45)于是「每次开面板都要拖一下」成了常规操作。
宽度最终落在内联样式上:
| 部位 | 位置 |
|---|---|
| 轨道(三列 grid) | layout/client.js:318-321 gridTemplateColumns |
| 面板(absolute 定宽) | sidebar-right/client.js:5709-5710 width / --dsh-sidebar-width |
按 CSS 层叠规则:
!important 的规则能改 → 但把拖拽写的新值也一并盖掉结论:「默认窄」和「可以拖」用 CSS 无法兼得。(这正是我上一版配置的处境:宽度锁死 320px,拖不动。)
改的是 state,不是渲染结果 —— 所以两者兼得。
ctx.layout 是 LayoutController 实例,它的 panels 字段就是 layout store 的 actions 对象:
layout/client.js:595 new LayoutController(instance.actions, …)
layout/client.js:457 this.panels = panels
renderer/client.js:730 kit["actions"] = store.actions ← 拖拽用的也是这个
而这个 actions 里有 setRightbar(layout/client.js:422),拖拽走的是同一个
(layout/client.js:296 actions.setRightbar(rightbarBase.current - dx))。
所以:
setRightbar(视口 × 1/6) → openRightbar 里的
??= 成了空操作,半屏默认值永远不会写入setRightbar,把用户拖拽的宽度记进 localStorage → 下次启动优先用它selfApplying 标志,不把初始化误记成拖拽因为改的是 state,拖拽完全不受影响,两者不打架。
# 1) 复制/克隆到任意目录,例如
git clone https://github.com/OctoberaYours/dsh-rightbar-default-width C:\Users\<你>\Code\dsh-rightbar-default-width
# 2) profile 的 package.json —— 【两处都要写】,只写一处会被静默启停
# ~/.dsh/profiles/<profile>/package.json
{
"dependencies": {
"dsh-rightbar-default-width": "link:C:/Users/<你>/Code/dsh-rightbar-default-width"
},
"dsh": {
"profile": {
"bundles": [
// …
"dsh-rightbar-default-width"
]
}
}
}
# 3) link 安装要真 junction(bundle 解析会检查 node_modules/<name>/package.json)
cd ~/.dsh/profiles/<profile>/node_modules
cmd /c mklink /J dsh-rightbar-default-width C:\Users\<你>\Code\dsh-rightbar-default-width
# 4) 客户端插件 → 刷新页面即可(host 半边是空的,不涉及重启)
改默认比例:在浏览器 DevTools 控制台执行,下次启动生效:
__dshRightbarWidth.setRatio(1/5) // 1/5 屏;想更窄写 1/8
其它便利口:
__dshRightbarWidth.current() // 当前记住的宽度(px),没记过则是 undefined
__dshRightbarWidth.set(420) // 立即改成 420px 并记住
__dshRightbarWidth.forget() // 忘掉拖拽宽度,回落到默认比例
想直接改死默认值:编辑 lib/client.js 的 DEFAULT_RATIO。
layout 服务存在的客户端生效。找不到 ctx.layout.panels.setRightbar
时本插件静默退出,不报错、不影响其它功能 —— 因此 DSH 升级换掉这套 API 时
它是「失效」而不是「炸掉」。clamp(300, 视口×0.7) 范围,DSH 自己会把它夹回合法区间(这是它的行为)。web 也用就照样加一遍。MIT — 见 LICENSE。