Back to directory

dsh-workspace-studio

In a curated listMaintenance: Active

yishengjun8/dsh-workspace-studio

Three-pane workspace layout with file-tree browsing, file editing, a non-linear conversation mindmap view, and mobile mode support.

View on GitHub
$ dsh plugin add dsh-workspace-studio

Install

dsh has no central install command — add this plugin’s entry (documented in its README) to your profile or patch config, then restart.

How installs work

5

stars

0

forks

JavaScript

Language

MIT

License

2026-08-17

Created

2026-10-19

Last push

README

🗂️ DeepSeek Harness 工作区 Studio 插件(左中右三栏布局)

English | 中文

此 bundle 将 DeepSeek Harness Web 的根布局替换为左中右三栏:左侧栏(Session / 工作区选择器 + 文件树视图切换)· 中部高亮文件预览与受控编辑器 · 右侧聊天。文件预览栏默认在对话左侧,可在「工作区设置 → 浏览与预览」中切到右侧;文件树不再独占一栏,而是融合进左侧栏,与「会话列表」通过顶部按钮互切。会话头部提供「导图」按钮,可随时进入导图模式:会话分支树在预览区作为标签页打开,右侧聊天保持可见、可继续对话。

插件保留现有侧栏、会话、详情与全局浮层的 Slot 合约,内置的新建会话、会话列表、设置、聊天、工具详情、审批等仍由原插件提供;工具详情以右侧抽屉覆盖在三栏布局上,不额外占用常驻栏位。

📸 界面预览

三栏布局总览 手机模式的对话列

⭐ 四大核心能力

# 能力 一句话价值
1 🗂️ 工作区文件浏览与预览标签页 在对话旁边像 IDE 一样浏览工作区:文件树、按会话恢复的预览标签、14 种编码与 Markdown / HTML / 图片 / PDF / Office 文档渲染视图
2 ✏️ 打开即改的内置编辑器 CodeMirror 6 打开即可编辑,改动全程落在暂存盘草稿,保存时与磁盘三方合并,永不静默覆盖
3 🧭 会话分支导图 把一条对话线变成可自由分叉的导图:任意轮次 fork 新分支、分支会话集中管理、流式输出可视化
4 🎯 编辑器上下文注入 打开的文件或选中的代码以 <opened_file> / <selection> 注入对话,模型看到的就是你选的那一段

1️⃣ 工作区文件浏览与预览标签页

  • 文件树融合在左侧栏:顶部按钮在「会话列表 / 文件浏览」间互切;当前会话属于某 Workspace 时自动显示其文件树(会话 cwd 与 Workspace 路径一致时同样识别),目录优先、逐级展开、可手动刷新。展开状态按会话持久化,刷新后自动恢复;点击「刷新」重新列目录后树的滚动位置也会还原(预览标签的垂直滚动位置同样随会话恢复)。
  • 预览标签页按 Session 保存:可关闭、拖拽重排、滚轮横向滚动、跨重载恢复;右键可固定(图钉图标、自动排前,「关闭其他标签页」只关未固定)或在外部打开(HTML 标签走「在浏览器中打开文件」——交给系统默认浏览器打开文件本身;其余文本文件与 Markdown 仍在新标签页里打开)。存在未保存修改时,标签名与面板标题的文件名末尾显示 ·。
  • 文件树单击 = 临时标签(斜体),双击 = 正式标签:单击文件只是临时预览——再单击其它文件时不新增标签,而是在原位置把斜体标签换成为新文件;双击(或双击标签栏里的斜体标签、右键固定、在该标签里开始编辑)才转成正式标签。任何时点最多一个临时标签;替换永不吞掉未保存内容(有编辑就先转正式),刷新后恢复出来的标签一律为正式标签。搜索结果与聊天里的文件直达仍按原语义打开正式标签。
  • 查看方式菜单(渲染器注册表驱动,与 Harness 右侧栏文档预览同源):Markdown 在「源码编辑 / 渲染预览」间切换并默认渲染预览(GFM:表格、任务列表、删除线);HTML 在「源码编辑 / 页面预览」间切换并默认页面预览 —— 预览帧注入一个由 Host 签发的一次性令牌基址,于是页面的每一个相对 URL 都由浏览器原生解析:<img>(静态的与脚本运行时生成的)、srcset、video[poster]、样式表里的 url()、字体 / 媒体、<script src> / <link rel=stylesheet>、页面自己的 fetch() / XHR,以及同目录的其它 HTML;编辑内容实时生效(防抖 400 ms)。图片(png / jpg / jpeg / gif / webp / bmp / ico / svg)直接预览;只读文本可分页浏览完整文件。查看方式按文件切换时重置为该文件的默认视图、不持久化。
  • PDF 与 Office 文档预览(渲染器注册表新增 pdf / office 两类):.pdf 经标准工作区文件接口取原始字节直接预览;.doc / .docx / .ppt / .pptx / .xls / .xlsx 交给 Harness Host 的 officeToPdf 服务在本机用 LibreOffice 转成 PDF 后预览(有界队列 + 按内容摘要缓存,重复打开不再重转)。两者都以 blob URL 交给浏览器自带 PDF 阅读器渲染,因此缩放、翻页、文字选择与打印都可用,且不向产物里塞 PDF 引擎;转换缺字体时在顶部横幅列出字体名。这类标签与图片一样只读、无草稿、不进编辑器上下文,磁盘变更时自动重新转换。Host 未挂载转换服务时给出「当前 dsh 未提供文档转换服务」提示而不是空白。
  • 编码:自动检测 14 种编码(UTF-8 / UTF-8 BOM / UTF-16 LE / BE / GBK / GB18030 / Big5 / Shift_JIS / EUC-JP / EUC-KR / ISO-8859-1 / Windows-1252 / Windows-1251 / ASCII);右键预览头可「以编码打开…」重新解码或「另存为编码…」写回磁盘,面板头显示编码徽标;编码清单以 Host /workspace-studio/api/encodings 为准,请求失败回退内置清单,操作不会中断。
  • 聊天里的文件直达预览:聊天中打开工作区文件(dsh-resource://file/... 地址)不再落到 Harness 右侧栏,而是解析为当前会话工作区内的路径,直接在本插件的预览标签页中打开;工作区外的文件转为会话内的只读外部预览标签(标签名标注「工作区外文件」,不写工作区、不落盘),只有「会话没有关联的工作区」才给出明确提示。
  • 计划直达预览:计划审批条带的「查看全文」与回合末尾「计划」卡片的「打开」(dsh-resource://plan/... 与 dsh-resource://plan-review/... 地址)同样落在本插件的预览标签页里,以渲染后的 Markdown 显示完整计划;已记录的计划经 Harness 的 plan 资源读取会话历史,临时审阅文本只存在于本次页面(刷新后标签不再恢复)。计划标签是会话内的临时标签,不写入预览持久化。
  • 变更审查直达预览:回合末尾「变更文件」卡片(头部或任一文件行,dsh-resource://changes-review/session/... 地址)在本插件的预览标签页里打开该轮的变更审查:左侧列出该轮所有变更文件(含 +/− 行数,二进制与超大文件以标签标注),右侧按 Harness 的 api/changes.summary / api/changes.diff 路由渲染逐文件统一 diff(行号、@@ 段头、新增 / 删除着色,超过 5000 行截断提示),头部可「在编辑器中打开」当前文件(工作区外走只读预览)。标签按索引定位到点击的那一行,同一轮重复点击只会跳转而不新开标签;审查标签是会话内的临时标签,不写入预览持久化。标签内左右两栏(文件列表 / 内容对比)之间可拖拽调宽(也支持键盘 ←/→ 步进),宽度是页面内的临时状态:切换预览标签、切换会话或工作区再切回都不变,刷新后回到默认(与审查标签本身一样不落盘)。
  • 可将外部文件拖入预览面板以只读标签查看(会话内有效,不写入工作区);仅文本类文件可预览,图片属聊天输入区,此为有意行为。
  • 可执行文件「代码预览 + 运行控制台」:打开 py / pyw / sh / bash / zsh / ps1 / psm1 / bat / cmd / exe / com 时(POSIX 上带可执行位的无扩展名文件同样算),预览列变成上下两段——上方仍是原来的代码预览(编辑、保存、搜索、差异色标与滚动条刻度全部不变),下方新增运行控制台。控制条一行给出状态胶囊(未运行 / 运行中计时 / 退出码与用时 / 已中止 / 无法运行)、Host 解析好的命令(解释器与文件是固定的只读前缀,尾部参数可直接编辑、回车即运行)以及运行 / 停止 / 重跑 / 清空 / 复制 / 跟随(自动滚到底部)六个按钮;预览列较窄时按钮组自动换行,绝不裁掉按钮。中间的分隔条可拖动调高(也支持键盘 ↑/↓ 步进、回车或双击复位为 62/38),高度与折叠状态按标签记在页面内存里;文件头新增的「控制台」按钮折叠 / 展开下半段,正在运行的文件无论切到哪个标签,标签栏上都有蓝色脉冲点。输出按行实时显示(stdout 默认色、stderr 红字、运行中末尾闪烁光标),结束时补一行退出摘要(如「· 进程已退出,代码 1 · 用时 1.24 s」);刷新页面不会中断进程,重新打开该文件即可接着看(Host 侧保留 256 KB 环形缓冲与运行记录);同一文件同时只允许一个进程,不同文件可并行(上限 8 个)。
  • 解释器可自定义(文件级 + 全局按后缀):运行控制台元信息条末项的「解释器 py -3」不只是一段文字,而是按钮——上面标出当前生效的解释器与它的来源(自动检测 / 此文件指定 / 全局 .py 指定 / 直接执行),点开即为这一个文件指定解释器的绝对路径(可「测试」取版本号、可清除回到自动检测,还能顺手勾「同时设为 .py 的全局解释器」)。设置 → 工作区设置 → 解释器 里新增「全局自定义解释器」:11 个可运行后缀逐行列出当前生效值(自动检测到的也显示,.zsh 一类找不到的直接标「未找到」),可为每个后缀指定所有工作区共用的解释器,并列出所有文件级覆盖(可逐个或全部清除)。解析优先级固定为 文件 > 全局后缀 > 自动检测;保存时校验「绝对路径 + 文件存在 + 可执行」,不通过就地报错、不写入;事后解释器被卸载 / 移动时,控制台用琥珀条写明「哪一层失效了、失败路径是什么、现在回退到哪一层」,绝不静默回退。自定义解释器的参数按被指定的那个程序判定(-3 只给 py 启动器,指向 python.exe 时不再误拼 python.exe -3)。
  • 运行的安全边界:命令以 argv 数组交给 spawn,从不经过 shell(参数文本没有转义面);解释器只在白名单里按 PATH 解析(Windows 的 py -3 → python、.bat 走 cmd /c、.ps1 走 powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -File、.exe 直接执行),首次运行会弹确认框列出实际命令、工作目录、解释器(含来源)与风险说明,可勾选「本工作区不再询问」(该信任标记落在 Host 侧,两端共享);工作目录固定为文件所在目录,路径走与其他接口相同的工作区围栏校验;stdin 关闭(脚本读到 EOF 而不是把面板挂住),子进程环境剥离 DSH_* 变量;「停止」先 SIGTERM(Windows 用 taskkill /T /F)并在 1.5 秒后强杀整个进程树,dsh 退出时也会终止所有由它启动的进程。找不到解释器时给琥珀提示卡(列出已尝试的名字),可就地重新检测或指定解释器绝对路径(同样存在 Host 侧)。
  • Windows 上跑 .sh:解释器只认 Git for Windows 的 bash(先探 %ProgramFiles%\Git\bin\bash.exe 等三处标准安装位置,再退回 PATH),不使用 Windows 自带的 bash.exe——那是 WSL 启动器,没装分发版时只会打印「安装分发版」的说明,而装了分发版也不能接收本插件传的参数(文件与工作目录都是 Windows 路径)。两者都没有时,控制台给的是「装 Git for Windows 或指定 bash 路径」的提示,而不是一段看不懂的报错。同理,Microsoft Store 那种 0 字节的 python.exe 占位符不会被当成解释器。
  • 输出编码自动识别:子进程的字节没有声明编码,Windows 上尤其不是 UTF-8(WSL 与 PowerShell 5.1 往管道写 UTF-16LE、cmd 里的工具按系统代码页写 GBK 等)。控制台按 BOM → NUL 特征 → 严格 UTF-8 → 系统区域代码页的顺序自动识别(逐流、跨块保持状态),所以中文脚本的中文输出不会变成乱码。

2️⃣ 打开即改的内置编辑器

Read the full README on GitHub →

DSH Plugins is an independent community directory of DeepSeek Harness plugins. Not affiliated with or endorsed by DeepSeek. Third-party plugins are not security-audited — review the source before installing.

New DeepSeek Harness plugins, weekly. No spam.