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

@lycheelink/dsh-workbench

v0.1.6

Published

Enterprise Agent Workbench: scene-card grid with dynamic parameter forms, session launch, and control room monitoring for DSH Web UI

Readme

@lycheelink/dsh-workbench

Enterprise Agent Workbench for DeepSeek Harness (DSH) Web UI.

Overview

企业 Agent 工作台以"场景卡片"为入口、以交互式表单收集参数、以 Session 为执行单元的定制化工作台。它基于 DSH 插件式架构构建,是一个纯增量插件,不替换、不禁用任何官方插件。

阶段边界(Phase boundary):"启动"会通过宿主 sessionController(web 端新建会话 同一个服务)真实创建 agent 会话并注入 prompt——会话出现在对话列表、agent 真正执行。 卡片配置的 agentPreset 在宿主可解析时挂载;若未安装则自动降级为默认会话继续运行, 控制室 stepDescription 会说明。spawnAgent: false 可显式关闭真启动(仅记录)。

尚未做的是:把 card 的 agentConfig.skills 显式挂进 preset 组合(preset 本身可带 skills, 但卡片级 skills 尚未透传)。

Architecture

用户点击卡片 → 参数采集面板滑出(含条件子表单联动)
    → 用户填写/上传(file 字段为服务端绝对路径,启动时校验存在性)
    → 点击"启动"
    → 组装Prompt + 校验(必填/体积/服务端路径)
    → sessionController.create({sessionId, agentPreset}) 创建真实会话
    → sessionController.prompt({sessionId, content}) 注入 prompt → agent 执行
    → 控制室通过宿主 session/event 驱动会话状态

Features

  • Scene Card Grid: Responsive entry-point grid with category filtering and search
  • Dynamic Form: Parameter collection panel with conditional field expansion (e.g., Profiling mode selects trigger different field sets)
  • AIPerf Benchmark Console: 并发饱和 / 速率驱动 / 并发爬坡三种负载模型,生成含可执行命令的结构化 JSON;agent 执行压测并解析 TTFT / ITL / 吞吐 / goodput 产物
  • Conditional Field Evaluation: key == 'value' expressions dynamically show/hide sub-forms(逻辑与宿主端共享单一来源 src/conditions.js)
  • Session Launch: 通过宿主 sessionController 真实创建 agent 会话并注入组装好的 prompt(spawnAgent: false 可关闭真启动、仅记录)
  • Server-path validation: file 字段是服务端绝对路径(如 /mnt/share_space/profiling),启动时逐条校验存在性
  • Control Room: Real-time session status monitoring (created / running / awaiting decision / completed / failed),由宿主 session/event 驱动;每张会话卡可删除(失败/完成直接删,运行中需两步确认,只删工作台记录不动真实会话)
  • Sidebar Entry: "工作台" 菜单项常驻左侧栏("工作区"上方),点击切换整页视图;侧栏折叠为窄条时保留图标入口
  • Full-page View: 工作台以无边框整页覆盖中间对话列(非抽屉),左侧栏保持可交互,切换去会话时视图状态保留
  • Launch → Conversation: 启动成功后关闭整页并跳到新会话的对话视图,agent 实时执行

Built-in Scene Cards

| Card | Skill | Preset | Category | |------|-------|--------|----------| | 开箱寻优 | model-oob-perf-optimize | model-oob-perf-optimize | 寻优 | | Profiling 采集 | ascend-profiler | ascend-profiler | 寻优 | | 验证流测试 | veriflow | veriflow | 测试 | | AIPerf 压测 | —(提示词自包含) | aiperf | 测试 |

AIPerf 压测卡是自包含的:采集台 JSON 内含可直接执行的 aiperf profile 命令,卡片 systemPrompt 已包含执行与产物分析指令。宿主若安装了 aiperf preset 会自动挂载,否则以默认会话运行。

Installation

# Clone or copy this package into your DSH profile's node_modules
dsh plugin --profile web add @lycheelink/dsh-workbench

The package exposes a host typert artifact (./typert): the typert-loader discovers it and registers the workbench/* Remote endpoints on the host. This artifact is mandatory — without it the host never exposes any workbench/* endpoint.

Development Setup

# Symlink into the web profile:
node scripts/install-dev.mjs

# Build host (Node.js) + client (browser):
npm run build

# Test:
npm test          # requires a build first (imports lib/)

Build

npm run build:host    # Build host side (src/index.js + typert/remote/descriptors → lib/)
npm run build:client  # Build client side (src/client/index.jsx → lib/client.js)
npm run build         # Build both
npm run pack:release  # Build + npm pack

Static Pages + Publish

四个参数控制台(寻优参数采集台 / Profiling 参数采集台 / 验证流测试台 / AIPerf 压测台)是双模单文件 HTML:既在插件内嵌运行(src/client/artifacts/*.html,经 npm run sync:artifact 从 pages/cloudflare-pages/dist/ 同步),也独立部署在 Cloudflare Pages。pages/cloudflare-pages/dist/ 是唯一权威源——改页面只改这里,然后:

npm run sync:artifact   # 刷新插件内嵌副本(幂等剥离 builder node-id 噪音)
./pages/publish.sh      # 部署 → https://dsh-workbench.pages.dev(需 pages/publish.env,勿提交)

publish.sh 支持 --check / --dry-run / --force / --help;包含发布前污染自检与发布后字节数抽查。凭证从 pages/publish.env 读取(模板见 pages/publish.env.example)。

Publishing to npm

@lycheelink/dsh-workbench is published to npm from GitHub Actions on a version tag. Pushing a vX.Y.Z tag whose version equals package.json version triggers .github/workflows/publish.yml, which runs the full gate (tag ↔ version check → npm ci → npm run build → npm test → npm pack + artifact validation) and publishes the validated tarball to registry.npmjs.org. Authentication uses npm trusted publishing (GitHub Actions OIDC) — no long-lived npm token is stored — and npm automatically emits a sigstore provenance statement for the public package.

npm version patch -m "chore: release %s"  # bumps package.json + package-lock.json, creates commit + tag
# keep dsh.plugin.json version in sync (npm version does not touch it)
git push origin main
git push origin v0.1.6                     # ← this push triggers the action
  • dist-tag semantics: stable versions (no - prerelease suffix) publish to latest; prereleases (e.g. 0.1.2-alpha.0, via npm version prerelease --preid alpha) publish to next.
  • The tag must equal v{package.json.version} exactly or the workflow aborts at the first step.
  • Requires an npm Trusted Publisher for lycheelink/dsh-workbench, workflow filename publish.yml, with the npm publish action allowed. The workflow must keep permissions: id-token: write; it runs on Node 24, upgrades to npm 12.2.1, and explicitly sets the registry. Do not set registry-url on actions/setup-node — it injects a placeholder NODE_AUTH_TOKEN into GITHUB_ENV, which makes npm skip the OIDC exchange and fall back to token auth.
  • Versions must be new: npm rejects re-publishing an existing version, and the workflow refuses to move latest backwards.

Slot Injections

  • shell.overlay — Full-page workbench layer + left-sidebar "工作台" nav entry
  • settings.plugins.tab — Card management settings page

License

MIT