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

@feng0531/dsh-vcs

v0.4.10

Published

Read-only Git and SVN change preview for DSH

Readme

DSH VCS

在 DeepSeek Harness(DSH)Web 中查看 Git / SVN 文件变更和提交历史的只读插件。

你可以查看差异、浏览历史、追溯文件,但不能通过本插件修改文件、暂存、提交、拉取或推送。

能做什么

| 场景 | 功能 | | --- | --- | | 查看工作区变更 | Git 全部、已暂存、未暂存文件;SVN 本地基线与工作副本、属性差异 | | 阅读代码差异 | 默认 Monaco 只读 Diff,支持并排/行内、换行、忽略行尾空白、上一处/下一处差异 | | 浏览 Git 历史 | 搜索提交说明、作者、路径与提交时间范围(since/until,含边界,按 committer date);查看本地分支、提交图、提交详情与目录 | | 比较历史版本 | 比较提交与选定父提交,或选择两个本地提交进行 A/B 比较 | | 追溯代码来源 | 文件历史、唯一来源重命名追踪(含改名同时修改)、Blame(逐行查看最后修改者和提交) | | 查看其他内容 | 支持部分静态图片比较;较大历史 UTF-8 文件可分段阅读 | | 浏览 SVN 历史 | 明确同意连接后,查看 HTTPS 仓库日志、修订差异和文件历史 |

提供中英文界面。编辑器加载失败时会显示基础文本比较;它不是完整的 Monaco 替代品。

安装

需要:

  • Node.js 22 或更新版本。
  • DSH Web:声明兼容 0.1.7-rc.2 或 0.2.0-rc.2。
  • 系统 PATH 中有 Git 或 SVN;只使用 Git 时无需安装 SVN。

profile是DSH的配置和插件环境,不是Session。下面的web是示例,请先确认运行中的DSH使用哪个profile;若不同,替换命令中的web。宿主插件命令通过pnpm执行,需确保该工具可用。

在终端执行:

dsh plugin --profile web add @feng0531/[email protected]

安装后由你自行重启 DSH,再刷新原来的 Web 页面。安装会改变所选 profile;升级前请备份配置。本项目的发布不会自动升级或重启你的 DSH。

也可以从 GitHub Release 下载 tgz 和校验文件,核对 SHA-256 后安装:

dsh plugin --profile web add "<tgz 的绝对路径>"

升级、旧包迁移和回滚见安装指南。

更新与免重启加载

VCS 顶部“更新插件”打开更新说明、宿主插件管理器与最新发布链接,不直接安装或卸载。安装新版后点击“检查并加载已安装更新”:后端指纹一致才重新挂载前端,否则提示自行重启 DSH。第一次引入此功能需要重启一次。后端、依赖锁、加载器、字典或编辑器资源变化均需重启。加载失败保留旧版或显示恢复操作,不自动重启。

开始使用

  1. 在 DSH 中选择一个 Session,确认它的工作目录在项目内。
  2. 打开 VCS 页面,发现仓库,再从顶部下拉框选择仓库。
  3. 点击文件查看差异,或进入历史视图浏览提交。
  4. SVN远程历史需先审阅并明确同意。复制成员可主动查看范围内的固定来源历史,不自动跨复制追溯。
  5. 外部工具修改了项目后,手动刷新;可见窗口重新获得焦点时也会刷新。没有定时轮询。

默认发现当前目录、一级子目录以及包含当前目录的上级仓库。项目更深时,输入相对 Session 目录的子目录,例如 packages/example;不接受任意绝对路径或越界路径。

注意:Session 位于仓库子目录时,发现后的查看范围可以覆盖整个仓库。

左右两侧比较的是什么

| 模式 | 左侧 | 右侧 | | --- | --- | --- | | Git 全部 | 最近提交(HEAD) | 当前工作区 | | Git 已暂存 | 最近提交(HEAD) | 暂存区(Index) | | Git 未暂存 | 暂存区(Index) | 当前工作区 | | SVN 本地变更 | 本地基线(BASE) | 当前工作副本 |

新增文件可能使用空白左侧。冲突文件只供查看,不提供三方合并或冲突解决。

SVN 历史需要单独同意

本地 SVN 变更比较不连接服务器。打开远程历史前,需要审阅服务器与路径范围并勾选同意;授权约 5 分钟后过期,须重新手动同意。

目前仅支持系统信任、无需额外认证的 HTTPS SVN 服务。不提供用户名/密码、自定义证书或其他协议。历史范围固定在本地工作副本的修订,不自动获取服务器最新版本。

目前的限制

  • 不是完整的 Fork 客户端:没有仓库写操作,历史图和列表都有容量限制;分支导航使用本地分支、标签及本地缓存的远程跟踪引用,不连接远端、不 fetch。
  • 普通文本比较每侧最多 2MiB。Git提交/A-B/工作区三个模式比较超限时可手动加载完整文本(UTF-8/GBK/带BOM的UTF-16),每侧最多 8MiB、10万行,单行最多65536字符;计算超时会明确提示结果不完整。工作区读取期间发生变化会拒绝结果,但不是系统级原子快照;SVN大文件仍不支持。
  • 历史 UTF-8 正文分段最多 16MiB;分段阅读不是完整Diff,与上述完整比较是不同功能。
  • 重命名追溯仅沿第一父链,至少50%相似且确认唯一删除源/新增目标;合并、复制、歧义或累计32次确认后停止。
  • 子模块变更只显示 Index 记录的提交指针与本地检出状态(已检出/未初始化/目录缺失/不可读);不进入子模块、不读取其 HEAD,也不更新或同步。
  • 树浏览和来源行预览可手动查看该历史路径的文件历史,并可选跟随重命名;路径必须存在于所选提交,跟随规则与路径历史一致(第一父链、≥50%相似、唯一确认、32次上限)。
  • 冲突文件可额外手动查看 Git Index 阶段1/2/3,任意两阶段可只读比较。缺失阶段显示为空、不推断原内容;阶段编号不声称合并/变基归属。每阶段仍为 2MiB 预览;不读取工作文件、不解决冲突,子模块只显示提交引用,链接只显示目标文本。
  • 图片支持 PNG、基线/渐进 JPEG 和简单静态 VP8/无损VP8L WebP;动画、扩展 WebP、算术编码/CMYK JPEG 等不支持。
  • 支持 UTF-8、GBK、带 BOM 的 UTF-16;不是通用编码检测器。
  • 取消状态/比较请求不保证立即停止底层进程,进程仍受超时和输出上限控制。

常见问题

  • 找不到仓库:检查 Session 工作目录和 Git/SVN 的 PATH;更深项目使用相对子目录发现。
  • 提示重新发现:目录变了或发现授权过期,手动重新发现即可。
  • 高级编辑器加载失败:确认安装了完整正式包并重新加载宿主;失败时仍可使用基础比较。
  • SVN 历史连接失败:先确认是受信任 HTTPS 服务,且不要求本插件未支持的额外认证。

正式版本通过自动测试、Windows/Linux 检查和隔离浏览器回归。这些不证明你的当前 DSH 页面已加载新版,也不代替你的实际环境验证。

开发与更多资料

文档导航 · 贡献指南 · 安全说明 · 维护者发布流程

界面设计参考 Fork,不代表与 Fork 官方有关联或获得背书。