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

@vithrive/dsh-workbench-menu

v0.1.0

Published

工作台 Workbench:DeepSeek Harness 侧边栏「新会话」下方的功能/插件统一入口容器(下拉收纳式工作台)

Readme

@vithrive/dsh-workbench(工作台 / Workbench)

DeepSeek Harness 侧边栏「新会话」下方的功能 / 插件统一入口容器。以插件形式实现,纯增量、不改官方插件。

是什么

  • 在左侧栏 「新会话」按钮正下方 增加一个 工作台 / Workbench 按钮。
  • 点击按钮后自动下拉出已注册的功能选项。
  • 点击某个选项即可打开对应的功能页面/面板:
    • 注册项提供 onOpen 回调时,由该插件打开自己的对话框 / 视图(如 chicheng-cron 的定时任务);
    • 注册项提供 url 时,Workbench 在应用内浮层中打开该页面,不跳离 DSH。
  • 自动“收纳”当前已有的 chicheng-cron 定时任务 入口:检测到 [data-dsh-cron-host] 后,把原生定时任务按钮从侧边栏隐藏,并作为 Workbench 下拉项提供。
  • 侧边栏为窄 rail(折叠)状态时,点击 Workbench 会弹出浮层菜单,不依赖侧边栏宽度。

安装(本地开发验证)

# npm 正式安装
cd ~/.dsh
dsh plugin --profile web add "@vithrive/dsh-workbench"

# 本地开发/源码验证(目录名仍可叫 dsh-workbench)
dsh plugin --profile web add "link:../../plugins/dsh-workbench"

安装后重启 dsh web 并刷新页面。

第三方插件如何接入

无需直接依赖本包;在客户端插件中向全局注册表登记即可:

const wb = window.__dshWorkbench__
if (wb) {
  wb.register({
    id: 'my-feature',             // 唯一 id
    label: '我的功能',            // 下拉显示名
    description: '一句话说明',     // 可选
    icon: '⚡',                   // 可选:字符串 emoji、React 元素、或 (size)=>ReactNode
    order: 10,                    // 可选:越小越靠前
    onOpen: () => {
      // 在这里打开你自己的功能对话框 / 面板 / 页面
    },
    // 或者提供 URL 页面,由 Workbench 内嵌打开:
    // url: '/api/xxx/page',
  })
}

如果插件可能在 Workbench 之后加载,可同时监听一次 window.__dshWorkbench__ 变为可用:

function ensureWb(cb) {
  if (window.__dshWorkbench__) return cb(window.__dshWorkbench__)
  const timer = setInterval(() => {
    if (window.__dshWorkbench__) {
      clearInterval(timer)
      cb(window.__dshWorkbench__)
    }
  }, 300)
}

API

  • wb.register(entry):注册一个工作台选项;返回注销函数。
  • wb.unregister(id):注销选项。
  • wb.getItems():获取当前选项快照。
  • wb.subscribe(fn):订阅选项变化。

目录结构

plugins/dsh-workbench/
  package.json
  cordis.patch.yml
  README.md
  LICENSE
  lib/
    index.js    # 服务端 half(本插件为空实现,能力在客户端)
    client.js   # 客户端 half(ModuleLoader 单文件)

License

MIT