跳到正文
dsh-market 浏览插件 GitHub EN

lsq-dsh-plugins/dsh-workbench-layout

将 DSH Web 重排为三栏工作台,提供文件编辑、Git 视图、Markdown 预览和工作区终端。

Star 数 ★ 1 分类 UI 增强 收录于 2026-08-25 npm @lsq64737/dsh-workbench-layout

安装

在 DeepSeek Harness 里通过 dsh-market 安装

dsh plugin --profile web add dshmarket

或使用命令行

dsh plugin --profile web add @lsq64737/dsh-workbench-layout

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络。请先审阅源码,并尽量锁定 commit(github:owner/repo#sha)。

README

简体中文 | English

为 DeepSeek Harness Web 提供三栏工作区:左侧导航、中间文件与终端、右侧 DSH 原生对话。

DSH 工作台布局:文件目录、编辑器与原生对话

DSH 工作台布局:Git 更改视图、左右对照 Diff 与原生对话

概览

DSH 工作台布局在不替换原生对话和输入框的前提下重排官方 AppFrame。文件、Git 状态、编辑器标签和终端跟随所选工作区;聊天仍由当前会话管理。

区域 提供的功能
左栏 会话、文件目录、Git 更改与提交图、终端列表
中栏 多文件标签、Markdown 预览、单文件 Diff、交互式终端
右栏 DSH 原生对话、任务状态、工具与输入框

布局、图标、颜色、菜单、弹窗、悬浮提示和响应式行为都会在官方客户端提供能力时优先复用 DSH 组件与设计变量。

功能

文件与 Markdown

  • 按需展开目录,并支持新建、重命名和删除文件或文件夹。
  • 文件目录和中栏标签使用工作区 Git 状态着色:未跟踪、删除或冲突为红色,新增为绿色,修改和重命名为警告色;未跟踪状态只装饰文件本身,目录聚合其他后代状态中优先级最高的一项。
  • 源码编辑器将当前缓冲区与 Git HEAD 比较,在可点击的变更边栏中以绿色显示新增、蓝色显示修改、红色标记删除位置,不给代码内容铺设底色。点击标记可打开带上下文、旧/新双行号、-/+ 行及字符级变更强调的局部 Unified Diff,在变更间导航,或仅还原这一块;还原只修改当前草稿并支持撤销。拖动弹层右边缘可调整宽度,也可以聚焦边缘后用方向键微调;宽度会限制在当前视口内,并在切换变更、文件和刷新页面后保留。点击弹层之外会将其关闭。已暂存、未暂存和尚未保存的编辑会合并呈现,并随输入、保存、外部修改和分支切换更新。Markdown 渲染预览保持干净,切换到源码后显示这些标记。
  • 在同一标签栏打开多个文件;标签溢出时可在顶栏使用滚轮横向滚动。
  • 使用 Ctrl/Cmd + S 保存当前文件。写入会检查 DSH 文件版本,避免静默覆盖外部修改。
  • 页面可见时约每秒批量检查已打开文件;从其他软件切回页面时立即检查。未编辑的标签会自动更新,未保存草稿遇到外部修改时会提示选择重新加载或保留当前内容。
  • 编辑器按 CodeMirror 的规范化文本比较修改状态,并在保存时保持文件原有的 CRLF、LF 或 CR 换行风格,避免仅因换行格式产生黄色未保存标记。
  • Markdown 默认以渲染后的预览模式打开,也可以切换到源码编辑。
  • 在文件右键菜单复制工作区相对路径或绝对路径。
  • 将 DSH 工具产生的文件索引直接打开到中栏。

Git 工作区

  • 以列表或目录树查看已暂存和未暂存更改。
  • 通过明确操作完成暂存、取消暂存、放弃更改和提交;长文件名在静止时使用整行宽度,文件行悬浮后再按一个或两个按钮的实际宽度收缩,直接悬浮按钮时显示圆形底色。
  • 将工作区、暂存区、历史提交或比较结果中的每个文件作为独立 Diff 标签打开。
  • 使用 CodeMirror MergeView 渲染文本 Diff,包含行号、字符级变更、未修改区域折叠、左右对照/统一/行内三种始终可选的模式和长行换行。
  • 从本地与远程引用构建轨道式提交图,展示分支、合并、标签、作者、时间和文件统计;滚动时自动按每页 40 条加载更早提交。
  • 在原位置展开提交,按列表或目录树排列文件,并逐个打开。
  • 创建、切换、重命名和安全删除本地分支,也可从指定引用或提交创建分支。
  • 管理远端,并针对上游或明确指定的远端与分支执行 Fetch、快进 Pull、Push、发布分支和同步。
  • 在提交菜单中复制提交号、Cherry-pick、Revert、创建分支或与当前工作区比较。

终端

  • 通过 xterm.js 与 node-pty 在所选工作区根目录运行交互式终端。
  • 在文件和 Diff 标签旁保留多个终端会话。
  • 切换标签时保持终端状态,并在中栏宽度稳定后统一适配尺寸。
  • 使用宿主机配置的 Shell:Windows 使用 ComSpec,类 Unix 系统使用 SHELL

对话与布局

  • 右栏继续使用 DSH 原生对话和输入流程。
  • 沿用官方 AppFrame 分隔线行为调整中栏与右栏宽度;右栏默认宽度随窗口变化,大屏下可继续向宽处拖动,同时为中栏保留可用空间。
  • 可从左栏底部收起中栏;选择文件、Diff 或终端时会自动重新展开。
  • 即使工作区会话还没有消息,也能访问该工作区的文件与 Git。
  • 对话栏变窄时会适配输入工具栏、菜单、失败信息、Session Log 操作和助手消息统计。
  • 收起中栏后,对话会回到官方中间位置和原始表面颜色。

安装

将公开包安装到 DSH Web 配置:

dsh plugin --profile web add @lsq64737/dsh-workbench-layout

如果 DSH Web 正在运行,请在安装后重启。

终端功能依赖原生模块 node-pty。如果 pnpm 报错 ERR_PNPM_IGNORED_BUILDS,请在 DSH Web 配置目录中运行 pnpm approve-builds,批准 node-pty,然后重新安装插件或重启 DSH Web。

再次执行相同的 add 命令即可更新。卸载命令:

dsh plugin --profile web remove @lsq64737/dsh-workbench-layout

基本使用

  1. 选择一个 DSH 工作区。
  2. 使用左栏模式切换会话、文件、Git 和终端。
  3. 选择文件、Diff、提交文件或终端,将其打开到中栏。
  4. 拖动中栏与右栏之间的分隔线,调整编辑区和对话区宽度。
  5. 使用左栏底部右侧按钮收起或恢复中栏。

Git 功能要求所选工作区根目录本身就是 Git 仓库。远端操作使用运行 DSH 的机器上已经配置好的 Git 凭据;插件不会索取或保存远端凭据。

安全与隐私

  • 宿主接口只解析官方工作区 id 和工作区相对路径,不接受浏览器提供的绝对路径作为文件目标。
  • 拒绝访问工作区外路径和符号链接。
  • 新建文件采用原子写入,保存检查版本,重命名不会主动覆盖已有项目。
  • 外部文件刷新通过官方 DSH 文件系统批量比较版本;有未保存草稿时不会自动替换内容。
  • 递归删除文件夹和破坏性 Git 操作需要确认。文件与文件夹删除是永久操作。
  • Pull 和同步只允许快进;Cherry-pick 与 Revert 要求工作区干净,Git 报告冲突时会自动中止。
  • Git 命令使用固定参数且不经过 Shell,并禁用 Git 操作中的终端凭据提示。
  • 日志使用工作区 id 和相对路径,不记录宿主文件路径。
  • 终端意味着可以操作运行 DSH 的机器,因此只应向你信任的用户和网络开放 DSH Web。

已知限制

  • 已打开标签和未保存草稿只存在于当前页面,刷新后会丢失。
  • 文件编辑器只读取文本;二进制文件只显示二进制变更提示,不渲染内容。
  • 关闭标签、刷新页面、连接断开、切换工作区或停止插件都会结束终端进程;默认组合最多允许八个终端同时运行。
  • DSH 目前没有公开的对话栏位置 API,因此插件通过官方 AppFrame 的稳定标记调整列顺序。未来 AppFrame 重构后可能需要同步更新插件。
  • 窗口非常窄时,AppFrame 官方让步规则会暂时关闭中栏,宽度恢复后再自动打开。

开发

需要 Node.js 24 或更高版本,以及兼容的 DSH 开发工作区。

npm ci
npm run typecheck
npm test
npm run build
npm run test:bundle

许可证

MIT

内容来自项目 README(GitHub)↗