DSH Sidebar Workbench
一个为 DeepSeek Harness 最新源码补齐工程能力的外置插件(Bundle),无需修改宿主源码。插件直接融合进宿主原生 Right Sidebar、文件资源标签和底部 Dock:复用宿主已有的文件树、标签页、拆分/悬浮布局,只补充可编辑高亮、Git Review/提交、Worktree 和交互式 PTY。所有项目操作以当前 Session 的 cwd 为边界。
npm 包名:@wannanbigpig/dsh-sidebar。
界面预览
以下截图展示插件在示例项目中的实际界面;图中的项目名、文件内容、分支和改动统计仅为演示。
![]() 原生工作台入口:文件、Review 与 Terminal 直接加入宿主 Guide,不额外提供第二套工作台或侧栏。 |
![]() Git 工具卡:在当前会话列查看改动行数、工作树与分支,并进入审查或提交/推送流程。 |
![]() 代码审查:支持范围选择、逐文件增删统计、行级 diff、上下文折叠和文件树筛选定位。 |
![]() 文件浏览与编辑:从宿主 Files 打开文件,在原生标签中获得路径面包屑、CodeMirror 6 编辑和未保存状态提示。 |
![]() 交互式终端:终端在对话输入框下方打开,与对话区域同步平滑伸缩,并支持多标签和高度调整。 |
功能
- 原生工作台融合:宿主负责 Right Sidebar、Files、资源地址、标签页以及拆分/悬浮布局;插件不再提供第二套侧栏、起始页、通用文件树或工作台开关,只把 Review 与 Terminal 入口加入宿主
+打开的 Guide。 - 文件编辑:宿主 Files 与插件编辑器统一使用宿主公共
FileTypeIcon;从 Files、聊天文件链接或工具结果打开文本/代码文件时,由插件的原生资源查看器提供 CodeMirror 6 编辑、语法高亮、行号、路径面包屑、独立撤销历史和Cmd/Ctrl+S;未保存文件在原生标签图标前显示圆点,图片和 PDF 保留宿主原生预览,草稿按原生标签隔离并使用版本令牌保存,避免覆盖其他写入者的更新。 - Git 审查:支持未提交、未暂存、已暂存、指定提交和分支范围;逐文件 diff、增删行统计、可折叠的上下文及可筛选的变更文件树;“已提交”菜单可按提交信息或哈希搜索当前分支相对基准的提交,支持方向键导航与 Escape 返回。
- Git 操作:工具卡显示当前分支与工作区改动;分支菜单支持创建或切换分支,提交弹窗支持提交、提交并推送、推送及模型生成提交信息;分支切换失败会显示原因,提交成功但推送失败后可直接重试推送。
- Worktree:工具卡的“本地”菜单列出主工作树、有效的链接工作树和失效记录;可选择已有工作树、返回主工作树或新建工作树,并按目标
cwd复用已有 Session(没有时创建新 Session)。 - 终端:输入框下方的 Dock 使用 xterm.js 连接持久
zshPTY,打开和关闭时与对话区域同步平滑伸缩;支持输入、粘贴、控制键及 ANSI/256 色/True Color。宿主终端提供者支持时同步实际行列尺寸,输出受字节上限保护。 - 宿主打开方式:复用宿主顶部统一的 Open In 应用选择,不重复探测或展示另一套文件管理器、终端和编辑器菜单;插件编辑器仍保留“在宿主预览中打开”的只读查看入口。
- 主题与语言:界面、编辑器和终端跟随宿主明暗主题,提供中英文文案。
安装
前提
先确认本机已经安装 DeepSeek Harness,并且下面的命令能正常输出版本号:
dsh --version
本插件要求 DSH >= 0.1.5-rc.2。npm 包已经包含编译结果,普通用户不需要克隆本仓库,也不需要执行 npm install 或 npm run build。
第一步:安装插件
把插件安装到 DSH 自带的网页 Profile:
dsh plugin --profile web add @wannanbigpig/dsh-sidebar
web 是 DSH 网页界面使用的 Profile,首次使用时宿主会自动初始化。不要随意改成一个新的 Profile 名称,否则新 Profile 可能只有基础服务,无法打开完整的网页工作台。
如果 dsh web 正在运行,请先停止并重新启动,让宿主加载新安装的插件。
第二步:在项目中启动
进入需要操作的项目目录,然后启动 DSH:
cd /path/to/your/git-project
dsh web
浏览器打开后,进入或创建当前项目的会话即可使用插件。
第三步:开始使用
- 从宿主 Right Sidebar 的“文件”入口浏览和编辑项目文件。
- 点击标签栏的
+,可以打开文件、Review 或 Terminal。 - 会话右上角的 Git 工具可以查看改动、切换分支、管理 Worktree,以及提交或推送代码。
- Terminal 会显示在对话输入框下方,可拖动调整高度,也可以创建多个终端标签。
安装后没有看到插件
先打印 web Profile 的最终配置:
dsh web --dump-config
输出中包含 # == @wannanbigpig/dsh-sidebar,表示插件已经注册。若插件刚安装或更新,请确认旧的 dsh web 进程已经完全退出,然后重新启动。
更新或卸载
更新到 npm 上的最新版本:
dsh plugin --profile web add @wannanbigpig/dsh-sidebar@latest
卸载插件:
dsh plugin --profile web remove @wannanbigpig/dsh-sidebar
更新或卸载后,同样需要重新启动 dsh web。
使用须知与已知限制
文件与编辑
- 只允许读取和保存已存在的普通文件;不提供删除、重命名、创建文件,也不提供
git reset、git checkout --或强制切换分支。 - 未配置语言模式的文件回退为纯文本;文件大小默认上限 8,000,000 字节(可通过
maxFileBytes配置),超过 400,000 字符时跳过语法解析以避免大文件卡顿。当前未接入语言服务补全、诊断或代码折叠。
Git 与 Worktree
- 审查的“分支”范围以工作树与所选基准(含未提交/未跟踪文件)对比,参数契约以当前核对的最新宿主为准。
- 新建 worktree 以 Git 主工作树为基准,在仓库同级创建持久目录和独立分支;插件不自动删除、prune 或清理它们。
- Session 的
cwd是不可变元数据。切换工作树会打开目标路径已有 Session 或创建新 Session;未提交更改保留在原工作树,不会自动 stash 或搬运。 - Git 工具卡和分支菜单依赖宿主公开的 Git 状态接口;工作区不可读时会显示错误而不是空白。
终端与宿主打开方式
- PTY 使用宿主公开的持久终端原语;宿主不支持
resize时终端仍可用,但依赖动态行列的全屏 TUI(如 vim、htop)可能无法正确重排。 - 终端跟随宿主明暗主题;插件无法读取 Terminal.app 或 iTerm 的私有主题配置,prompt 与输出中的 ANSI 颜色原样保留。
- 顶部 Open In 菜单由宿主统一提供并作用于 Session 工作区;插件不再提供直接用外部应用打开当前文件的第二套菜单。
宿主版本
- 当前代码只面向核对基线
c291e7961a515f6d7af9304e7fd1d257929aef26(0.1.5-rc.2)的最新宿主源码,不保留旧版宿主兼容分支,也不替换宿主 Right Sidebar 或 Files 组件。Git 浮层使用 Portal,并按当前会话区域重新计算锚点。 - 宿主
+的公开契约固定新建 Guide,插件不拦截或重写该按钮;插件把 Review/Terminal 作为 Guide 条目注册,用户选中内容后再原位替换 Guide。 - 宿主已公开统一的
FileTypeIcon并在 Files 内原生使用;插件直接复用该组件,不再通过data-files-*选择器隐藏或覆盖宿主图标。图片和 PDF 由宿主原生 document preview 呈现,插件只接管可编辑的文本/代码资源。 - 插件自带预构建 Typert 描述符;运行时仅使用宿主公开的 Right Sidebar、Slot、Session、Remote、
fs、subprocess与 Client Module API。宿主缺少这些必需服务时插件不会激活。
本地开发
此开发目录假设它与宿主源码相邻:
openSource/
├── deepseek-harness/
└── dsh-sidebar/
构建复用相邻宿主已安装的 TypeScript、tsdown 和公开类型,只在本仓库 lib/ 写入产物,不要对宿主源码执行该构建:
npm install
npm run build
npm test
实时调试时,先启动持续构建器把 src/ 的每次保存编译到 lib/:
npm run dev
首次调试把本地目录加入 web profile(目录安装建立 link: 依赖后无需重复执行):
dsh plugin --profile web add .
再另开一个终端,从需要测试的 Git 项目目录启动 Web:
cd /path/to/your/git-project
DSH_SIDEBAR_ROOT=/path/to/dsh-sidebar \
dsh web --patch /path/to/dsh-sidebar/dev/host-hmr.patch.yml --no-open
- 修改
src/client/**:Client HMR 约 500ms 后自动更新页面,无需刷新。 - 修改 Host 侧代码(
src/index.ts、src/remote.ts、src/contribution.ts):通过dev/host-hmr.patch.yml监视lib/并重载 Host 插件,浏览器保持打开即可。 - 只调 UI 用
npm run dev:client;只调 Host 用npm run dev:host。 - 不带
--patch启动时,Host 修改需要重启dsh web,客户端修改需要硬刷新浏览器。 dsh web不可用时,可用已构建的宿主 CLI 代替:node ../deepseek-harness/apps/cli/lib/bin.js web …。





No comments yet. Be the first to write one.