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

dsh-plugin-safe-update

v0.1.0

Published

Safe one-click updates for plugins already installed in DeepSeek Harness. Stages in a temp directory, verifies, then swaps. A failed install restores the previous package.json, lockfile, and cordis.patch.yml.

Readme

dsh-plugin-safe-update

DeepSeek Harness 里,第三方插件要更新,官方页面走的是先卸载再安装。安装失败时插件就没了。

这个插件只做一件事:给已经装上的插件换版本。它先在临时目录装好并核对,通过之后才改 profile。失败就把原来的 package.json、锁文件和 cordis.patch.yml 写回去。不会先 remove。

它不是插件市场。本地目录、压缩包地址没有新版本可查,会列出来并说明原因。某一次更新可以单独「这次先不更新」,再有更高版本时会重新出现。

安装

dsh plugin --profile web add dsh-plugin-safe-update

重启 dsh web,打开 设置 → 插件更新。同一个面板也在这个插件自己的详情页上。

本地开发:

dsh plugin --profile web add link:/绝对路径/dsh-plugin-update

更新怎么做

  1. 读取当前 profile 的直接依赖,跳过 @deepseek-ai/*。
  2. npm 包对照注册表的 dist-tag(默认 latest,spec 写了 next 这类标签就用那个标签)。GitHub 地址对照远端提交。
  3. 点更新后,先在临时目录执行 pnpm install --ignore-scripts(profile 用 npm 锁时改走 npm)。
  4. 核对包名、版本号,以及声明的 dsh.bundle.patch 文件在不在。知道当前 DSH 版本时,一并核对 engines.dsh。
  5. 核对通过才改 profile 里这一条依赖,再在 profile 里安装。
  6. profile 安装失败:写回备份,并用原来的锁文件重新安装。
  7. 安装过程如果改动了 cordis.patch.yml,把原文写回去。启用状态留在这份配置里。

换完需要重启 dsh,新代码才会加载。备份写在 ~/.dsh/plugin-update/(profile 不在 ~/.dsh/profiles 下时,写在该 profile 的 .dsh-plugin-update/)。面板里可以回滚到更新前的依赖、锁文件和 cordis.patch.yml。

「全部更新」只包含已经确认有新版本的插件,按顺序做,一处失败就停。Git 提交对不上、来源不是 GitHub 的,要单独点「安装远端并校验」。

不会做的事

  • 不浏览、不搜索插件目录。
  • 不更新 DSH 本体。
  • 不先卸载。临时目录没装好时,profile 原样不动。
  • 写操作只接受本机回环,并且更新和回滚要带 confirm: true。

开发

npm test

逻辑在 lib/,不需要构建。浏览器半是 lib/client.js,用 DSH 的 __ModuleLoader__ 注册,模块 id 与包名都是 dsh-plugin-safe-update。