npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@lsq64737/dsh-workbench-layout

v0.1.5

Published

DSH-styled three-column workspace with file editing, Markdown preview, Git controls, terminals, and native conversation

Readme

DSH 工作台布局

简体中文 | 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