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-trellis-dashboard

v0.1.0

Published

Trellis × DSH workspace dashboard: a conversation-view tab showing the current task + progress (prd.md acceptance checklist), spec/skill usage, and workspace session summary.

Readme

dsh-trellis-dashboard

English | 简体中文

Trellis × DSH 工作区仪表盘:一个 DSH 插件,在 DeepSeek Harness Web UI 的 会话视图环上新增 Trellis 标签页,投影当前工作区的 .trellis/ 状态:

  1. 当前任务 + 进度 —— 任务列表 + 当前任务解析(仅基于会话指针,不从 任务状态猜测 —— 未绑定的会话显示「暂无 trellis 任务」,而不是随意挑一个任务)
    • prd.md 验收清单的任务卡片;「设为当前任务」按钮写入会话级指针。
  2. 规范 / 技能使用 —— 实时规范文件读取(fs/observed 监听 .trellis/spec/**.agents/skills/**.dsh/skills/**)与 skill 工具加载 (tools/result),按会话隔离exec.agent.id),一个会话的活动不会泄漏 到另一个会话的仪表盘。
  3. 工作区会话汇总 —— 开发者日志索引 + 最新 journal-N.md 摘录。

标签页内用自带轻量渲染器渲染 Markdown(标题、列表、任务清单、表格、代码、 引用块)—— 无外部运行时依赖。


安装

前置条件

  • 已安装 DeepSeek Harnessdsh CLI),并存在 web profile,例如 dsh --profile web
  • 目标工作区已用 Trellis 初始化: trellis init --dsh

从 npm 安装(推荐)

本包分发预构建、自包含的产物 —— 无需构建步骤,无需构建授权:

npm install -g @deepseek-ai/dsh   # 若尚未安装
dsh plugin --profile web add dsh-trellis-dashboard

验证组合层已生效,然后重启 Web 应用:

dsh --profile web --dump-config        # 应出现 "# == dsh-trellis-dashboard" 层
# 重启 dsh web → http://127.0.0.1:3080 → 会话头部出现 Trellis 标签

从 tarball 安装

dsh plugin --profile web add ./dsh-trellis-dashboard-0.1.0.tgz

从 GitHub 安装

本包没有构建步骤lib/ 是纯 JavaScript,已直接提交到仓库,因此 git 安装 拉取的就是可运行产物,不需要 prepare 脚本或 allowBuilds 授权:

dsh plugin --profile web add github:QianziTech/dsh-trellis-dashboard#<sha>

从本地目录安装

dsh plugin --profile web add /path/to/dsh-trellis-dashboard

卸载

dsh plugin --profile web remove dsh-trellis-dashboard

发布产物 vs 源码仓库

npm tarball 刻意保持最小 —— 只包含插件运行所需的内容:

dsh-trellis-dashboard-0.1.0.tgz
├── package.json          # dsh 插件清单(bundle patch + dsh.client)
├── cordis.patch.yml      # 向 web profile 组合插入 HOST 行
├── lib/
│   ├── index.js          # HOST 半 —— fs 读取 + 用量跟踪 + HTTP JSON API(webServer)
│   └── client.js         # CLIENT 半 —— conversation.view 标签页 + Markdown 渲染(浏览器 bundle)
├── README.md
├── README.zh.md
└── LICENSE

源码仓库中的其余内容 —— .trellis/.claude/.codex/.agents/plans/docs/test/AGENTS.md —— 属于开发与个人工具状态,永不发布npm pack --dry-run 可确认产物恰好是这六个文件。最终用户只需要 dsh plugin add dsh-trellis-dashboard

使用

安装后打开 Web UI 的任意会话,点击会话视图环中的 Trellis 标签页。标签页会:

  • 从 Web 应用的工作区列表解析当前工作区;
  • 挂载期间每 5 秒轮询宿主 JSON API(GET /dsh-trellis-dashboard/state);
  • 渲染当前任务卡片、验收清单、规范/技能用量与日志汇总;
  • 「设为当前任务」写入会话级指针 (POST /dsh-trellis-dashboard/set-current-task)—— 这是插件唯一的写操作。

架构

  • HOST 半lib/index.js)通过 ctx.fs 读取 .trellis/(绝不运行 python task.py 脚本),并以 webServer HTTP 路由暴露仪表盘 JSON API; 订阅 fs/observed + tools/result 供用量区块使用。
  • CLIENT 半lib/client.js)注册 conversation.view(id trellis, order 20 —— 纯新增,不替换任何已发布 UI),用 useWorkspaces 解析工作区, 轮询宿主 API,并用 React.createElement + 自带 Markdown 渲染器渲染。
  • 发布形态的通道是 HTTPharness.handle/host.call 仅存在于动态运行时 插件,因此发布插件的 client→host 流量走 webServer 路由;由于没有 host→client 推送通道,客户端采用轮询。
  • .trellis/ 保持只读,唯一的写入是 set-current-task 的会话指针 (复刻 trellis task.py set_active_task)。

热重载矩阵

| 变更对象 | 生效方式 | 是否需要重建 web 产物 | |---|---|---| | 动态原型代码(cordis_define) | 追加新 Package → cordis_run update | 否(运行时加载) | | 发布包 host(lib/index.js) | 重装 / 组合重启 | 否(随组合加载) | | 发布包 client(lib/client.js) | clientModules 按文件 hash 提供 | | | checkout 内客户端源码(web 壳 / 普通包) | pnpm run dev:web watcher 重建 bundle | 是(dev 模式) |

关键区分:动态插件由运行时 runner 直接求值(无需 Vite/dev:web);只有修改 checkout 内源文件(已发布客户端模块 / web 壳)才需要 dev:web 重建, 且 watcher 必须从同一 checkout 运行。

排错速查

| 现象 | 处理 | |---|---| | 装完没有 Trellis 标签 | client bundle 未重建 → 重跑 web build / dev:web;或组合未含本层 → 核对 --dump-config | | host 路由 404 | webServer 路由未注册 → 确认 inject: ['fs','webServer'] 且 profile 是 web | | 动态插件激活失败 | cordis_inspect_self(pluginId, packageId) 读诊断 → 同插件追加修正版再 update | | GitHub 安装报错 | 本包无 prepare 故不需要;若 fork 后自行引入构建,请按官方文档核对 allowBuilds 指引 |

开发

npm run check   # node --check lib/index.js && node --check lib/client.js
npm test        # node --test test/ — 契约 + 耦合 + 规范一致性测试

插件是零依赖纯 JavaScript。阅读源码无需构建步骤;client bundle 直接以 Web 应用 的 window.__ModuleLoader__.load({ id, factory }) 格式编写。框架级开发规范见 .trellis/spec/dsh-plugin/(仅源码仓库);操作/调试/热加载笔记见 docs/dsh-plugin-development.md

许可

MIT —— 见 LICENSE