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

sailoumili/dsh-sidebar-plus

基于 DSH 官方侧边栏的文件视图增强插件,提供源码视图、原位编辑、行号显示、搜索和字体缩放功能。

Star 数 ★ 2 分类 UI 增强 收录于 2026-09-18 npm dsh-sidebar-plus

安装

在 DeepSeek Harness 里通过 dsh-market 安装

dsh plugin --profile web add dshmarket

或使用命令行

dsh plugin --profile web add dsh-sidebar-plus

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

README

English | 中文

给 DSH 侧边栏的文件预览新增五项功能:

  1. .md / .markdown 格式新增「源编辑」视图,支持 Markdown 源码着色与行号显示。
  2. 新增编辑与保存功能:Markdown 格式文件可通过「编辑」跳转至「源编辑」视图进行编辑,其余文本格式在当前视图中直接编辑。
  3. 所有视图新增「搜索」与「字号调节」功能。
  4. 官方「纯文本」视图新增行号显示功能,可随时开启或关闭。
  5. 官方「对比视图」(「本轮变更」的左右对比页)亦提供工具条:双侧或单侧搜索、双侧字号同步、仅编辑右侧。

不接管二进制格式:Office(doc / docx / ppt / pptx)、表格(xls / xlsx)、PDF 与图片(png / jpg 等)由官方视图自行显示,插件不注入工具条、不提供编辑、不拦截 Ctrl+F。这些文件的内容不是文本,按文本方式打开并保存会损坏原件。判定范围以官方注册表声明的 binaryExtensions 为准,音视频、压缩包、可执行文件、字体等同理;.md / .markdown 与 json / yaml / txt / log / csv / svg 等文本格式处理方式不变。

支持的 DSH 版本:0.1.7-rc.2 及以上(实测:0.1.7-rc.2、0.2.0-rc.1、0.2.0-rc.2)。本插件不写版本声明,安装与启用均不受版本闸门限制。

功能

① 源编辑视图(仅适用于 .md / .markdown) 在右上角「打开方式」中选择「源编辑」。该视图左侧显示行号,Markdown 语法按源码着色。官方原有的 Markdown 预览不受影响,仍可随时切回。

② 编辑保存(适用于所有文本格式)

  • .md / .markdown 格式:点击「编辑」,跳转至「源编辑」视图进行编辑。
  • 其余文本格式(json / yaml / txt / log 等):点击「编辑」,在当前视图中直接编辑。
  • 二进制格式(Office / 表格 / PDF / 图片):不提供编辑。
  • 保存:按 Ctrl+S 或点击「保存」;退出:按 Esc 或点击「退出编辑」。
  • 若该文件已在别处被修改,将提示选择「强制保存」或「重载最新」。
  • 覆盖前自动备份旧版本,误改后可恢复。
  • 单个文件保存上限 32 MB,超出则拒绝保存并提示,不写盘、不动原文件。

③ 行号开关(官方「纯文本」视图) 在工具栏中点击「行号」,可显示或隐藏行号,默认关闭。

④ 搜索与字号调节(适用于所有视图)

  • 搜索:按 Ctrl+F;↓ 或 Enter 定位下一处,↑ 定位上一处,Aa 区分大小写,Esc 关闭。
  • 字号:点击 A− / A+,或按住 Ctrl 滚动滚轮调节字号;点击中间的数字可复位。

⑤ 对比视图(官方「本轮变更」的左右对比页) 工具条位于官方头部下方:

  • 搜索:Ctrl+F 打开。默认双侧;搜索行内以 两侧 / 左 / 右 限定范围,↓ / ↑ 仅在所选范围内移动。Aa 区分大小写,Esc 关闭。
  • 字号:A− / A+,或按住 Ctrl 滚动滚轮;双侧同步缩放,点击中间数值恢复官方默认字号。
  • 编辑右侧(仅右侧):
    • 左侧为本轮起始快照,只读;右侧为磁盘上的当前文件。
    • 定位:点击目标行(点左栏亦可,对应至右栏同一行)后点「编辑右侧」,光标即落在该行;编辑态亦可用工具条的 行 [ ] 跳 输入行号回车跳转。
    • 官方为单栏或自动换行时,先切换为左右分栏且不换行,再打开编辑器。
    • Ctrl+S 保存、Esc 退出;文件在别处被修改时提供「强制保存 / 重载最新」,覆盖前自动备份。
    • 对比页为本轮历史快照,保存文件不会使其更新。
  • 单边对比(仅新增或仅删除)无左右分栏,编辑器占用整个对比区域。

更新日志

  • 0.4.3:新增英文版工具条——按钮(Edit / Find / Save / Exit / Save anyway / Reload / Edit right / Lines)、悬停提示、搜索条与跳行控件跟随 DSH 界面语言(中文界面不变,随设置切语言即时生效)。另:安装说明写清楚两端装法(桌面端=界面里输包名:设置 → 插件 → 添加插件;Web 端=终端指令 dsh plugin --profile web add dsh-sidebar-plus);删去一处重复句与已知问题一节。
  • 0.4.2:工具条的接管对象改由官方插槽指定,位置与外观不变。插件在官方文档头部工具区与对比页文件操作区各登记一个不显示任何内容的挂钩,面板归属与文件绝对路径均取自官方传入的属性,不再解读 DOM 推断;挂钩在位时观察范围由整页收窄至右侧栏容器,挂钩缺失时自动退回整页扫描。二进制判定改以官方 documentPreviews 注册表的 binaryExtensions 为准,插件内置的后缀清单降为兜底。本版改动涉及浏览器加载器,升级后需重启 DSH 一次。
  • 0.4.1:不再接管 Office / 表格 / PDF / 图片等二进制格式。DSH 0.1.7 起上述视图与纯文本视图共用同一对外壳标记,旧版据此判定为文本,在其视图中点击「编辑」将报错,或将文件按文本覆盖写坏;本版改为按后缀判定字节是否为文本,命中则整体不接管。同时修复:工具条仅挂载于当前可见面板(切换页签时不再挂载至已隐藏的旧面板);「行号」开关改按官方 data-textpreview-plain 标记识别;对比视图对二进制文件不再提供「编辑右侧」;官方以整包字节投递内容时源编辑视图不再空白。
  • 0.4.0:新增官方「对比视图」支持(详见 ⑤);注明所支持的 DSH 版本。
  • 0.3.8:修复「编辑 / 保存」的读取接口(改用 workspaceFiles.readBytes);工具条改为立刻挂载。

安装

插件已发布到 npm(包名 dsh-sidebar-plus)。按你的 DSH 形态二选一:

桌面端(Electron 版)——界面里输包名安装:设置 → 插件 → 添加插件,「包名或地址」输入 dsh-sidebar-plus,装完按界面提示重启一次。(命令行管不了桌面端 profile,报 managed exclusively by the Electron application 属正常,不是出错。)

Web 端——终端指令安装:在 DSH 终端里执行:

dsh plugin --profile web add dsh-sidebar-plus

两端装完都需重启 DSH 一次。之后日常的功能改动(改 hot-*.cjs)自动热生效,无需再重启;只有改加载器本身才需要重启。

卸载与回退

  • 停用或卸载后重启 DSH,官方预览即恢复原样:插件不改动任何官方文件,界面也不留残余。
  • 误存想要回旧内容:每次覆盖前保存的完整旧文件在 ~/.dsh/sidebar-plus-backups/,按文件名取回即可(每个文件名保留最近 20 份)。

架构(热插拔)

lib/index.js     宿主加载器:注册 /dsh-sp 路由 + 守卫,监视 hot-host.cjs 热装载
lib/client.js    浏览器加载器:向官方注册渲染器、正文插槽与两个不可见挂钩(文档头部、对比页),拉 hot-client.cjs 源码热替换
hot-host.cjs     宿主业务:stat / save / 备份 / 冲突 —— 改这个,约 2 秒生效,不重启
hot-client.cjs   浏览器业务:组件 / 文案 / 样式 / 接管扩展名名单 —— 改这个,约 2 秒生效,不刷新页面
scripts/test.mjs       离线自测:加载器 + 宿主读写 + 业务纯函数
scripts/test-dom.mjs   jsdom + React18 真渲染:行号/搜索/字号/编辑保存/冲突/热装载/即时挂载/对比视图/回收

scripts/ 只在源码仓库里,不随 npm 包发布(package.json 的 files 白名单不含它);跑自测需先克隆仓库或取源码目录。

热件编译或校验失败时保留当前版本,仅在控制台告警,页面不受影响。

二次开发

在 hot-host.cjs 的 handlers 中加入同名键即可新增端点;路由为转发式,无需改动加载器。

隐私与边界

  • 仅在本地 DSH 进程内读写用户主动打开的文件;无任何外部网络请求。
  • 端点访问控制:带 Origin 的请求必须同源;保存接口只接受 POST 且内容类型必须是 application/json(跨源网页盲发被 CORS 预检挡死)。
  • 保存前备份目录为 $DSH_HOME/sidebar-plus-backups/(默认即 ~/.dsh/sidebar-plus-backups/,本机运行数据;每个文件名留最近 20 份,总量上限 500 份)。备份为该文件的完整内容副本,长期保留于上述目录;该目录若处于使用者自有同步工具的覆盖范围内,副本将随之同步——插件自身不外发数据。
  • /dsh-sp/* 守卫仅阻止网页跨源调用;不带 Origin 的本机进程亦可调用 /dsh-sp/save(仅校验绝对路径与常规文件),等同于「先备份、再覆盖本机任意文件」的写原语,与本机其他命令行工具同级,不额外授予远程能力。
  • 设置存浏览器 localStorage:源编辑字号 dsh-sidebar-plus.fontPx、官方视图缩放 dsh-sidebar-plus.officialZoom、纯文本行号开关 dsh-sidebar-plus.plainLineNo、对比页缩放 dsh-sidebar-plus.reviewZoom、对比页搜索范围 dsh-sidebar-plus.reviewFindSide。
  • 计时探针只把时间点留在进程内存里,不落盘、不外发。

反馈

问题与需求请在 https://github.com/sailoumili/dsh-sidebar-plus/issues 提出。报错类问题请带上下面两行的内容,能直接定位到当前走的是哪条路径:

http://127.0.0.1:<DSH 端口>/dsh-sp/health
http://127.0.0.1:<DSH 端口>/dsh-sp/marks

地址在 DSH 页面所在的浏览器里直接打开即可(端口以本机 DSH 实际端口为准)。health 给三个版本号,marks 给挂钩是否到位、观察范围、二进制判据来源;两者只读,数据只存进程内存。

License

MIT

内容来自项目 README(GitHub)↗

评论

评论存放在 GitHub Discussions。用 GitHub 账号登录后可发表评论或点表情。