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

vibe-roast

v0.98.5

Published

Local-first AI coding personality profiler, usage dashboard, and evidence-grounded roast.

Readme


Vibe Roaster 读取本地的 AI 编程对话记录,生成:

  • 一个四字母的编程人格类型;
  • 16 种插画角色之一;
  • 一份基于证据的"吐槽"文案;
  • 反复出现的项目和领域主题;
  • Agent、模型提供商、模型、Token 与活跃度分析;
  • 一张 3:4 分享卡片。

人格计算是确定性的且在本地完成。AI 写作是可选功能。

从 npm 运行

需要 Node.js 20 或更高版本。

npx vibe-roast

Vibe Roaster 会扫描它能找到的受支持本地存储,启动本地仪表盘服务器,并打开:

http://localhost:7681

tokentracker-cli 作为运行时依赖一起发布。首次启动会初始化仅本地的收集器和兼容钩子;后续启动会先同步 TokenTracker 队列再打开报告。活跃度始终以 Token 计量。如果 TokenTracker 无法为某个数据源收集数据,UI 显示为零。

Vibe Roaster 以仅本地、无认证模式调用 TokenTracker。TokenTracker 的账户、OAuth、排行榜和云端同步功能不会被使用。

交互式终端会显示一段简短的品牌启动动画。管道输出、CI 以及 NO_COLOR 环境自动使用纯文本。

缺失的 Agent 会被跳过。无需配置所有数据源、创建账户或提供 API 密钥即可查看本地结果。

下载量徽章报告的是 npm Registry 每月包下载次数。npx vibe-roast 在 npm 需要下载时计入;已缓存时不计入。

选择吐槽文案的生成方式

首次启动时,可从以下三种方式中选择:

| 模式 | 说明 | 账户或密钥 | | --- | --- | --- | | 本地生成 | 使用确定性的双语文案 | 不需要 | | 托管生成 | GitHub 标识个人资料;Cloudflare Workers AI 生成并缓存吐槽 | GitHub 登录 | | 你选择的提供商 | 将聚合的吐槽证据发送给你选择的模型 | DeepSeek、OpenAI、Anthropic、Gemini、Groq 或 OpenRouter 密钥 |

GitHub 登录仅用于身份标识,不使用 GitHub Models。

flowchart LR
    A["本地 Agent 历史"] --> B["保留真实用户意图"]
    B --> C["分类 Prompt 行为"]
    C --> D["解析四条类型轴"]
    D --> E["选择 16 种角色之一"]
    C --> F["构建聚合吐槽证据"]
    E --> G["吐槽结果"]
    F --> G
    G --> H["3:4 分享卡片"]

四条类型轴

这是对已观察到的编程 Agent 行为的 MBTI 式呈现——与心理学、能力或代码质量无关。

| 轴 | 左侧 | 右侧 | 主要证据 | | --- | --- | --- | --- | | M / A | Maker(创造者) · 要求可运行的产物 | Architect(架构师) · 要求方案和解释 | 实现与修复 vs 规划与研究 | | O / P | Orchestrator(调度者) · 通过工作流委派 | Promptsmith(提示词师) · 精准引导单一 Agent | 工作流语言 vs 直接提示词技巧 | | V / S | Verifier(验证者) · 验证和修复 | Shipper(交付者) · 构建和发布 | 调试、测试、重构 vs 实现和打包 | | F / X | Focused(聚焦型) · 保持请求简洁 | Max-context(最大上下文) · 提供宽广的上下文 | 有用/参考内容比例和长提示词比率 |

每条轴都暴露其证据分布。获胜的字母组合起来——例如 MPSF——被映射到一个角色。

16 种类型

| 类型 | 角色 | 类型 | 角色 | | --- | --- | --- | --- | | MOVF | Agent Engineer | AOVF | Systems Architect | | MOVX | Systems Wrangler | AOVX | Context Cartographer | | MOSF | YOLO Shipper | AOSF | Strategy Shipper | | MOSX | Agent Commander | AOSX | Agent Believer | | MPVF | Debugger | APVF | Architect | | MPVX | Context Maxxer | APVX | Prompt Priest | | MPSF | Builder | APSF | Diagram Sprinter | | MPSX | Tab Hoarder | APSX | Infinite Planner |

没有主要/次要之分,也没有质量排名。少于 20 条有用 Prompt 会产生临时类型;置信度随样本量增长而提高。

分类是多标签的。类似"修复这个登录 bug 并添加回归测试"的请求,一半贡献给 Debugging,一半贡献给 Testing——一条长篇 Prompt 不会被重复计数多次。

| 分类 | 典型证据 | | --- | --- | | Planning(规划) | 方案、架构、头脑风暴 | | Debugging(调试) | 失败、异常、根因排查 | | Testing(测试) | 测试、回归、断言、覆盖率 | | Refactor(重构) | 结构调整、抽取、清理 | | Packaging(打包) | 构建、发布、部署 | | Explanation(解释) | 解释含义、为什么、步骤说明 | | Research(研究) | 搜索、文档、调研 | | UI Design(界面设计) | 页面、组件、布局、CSS/UX | | Workflow(工作流) | Agent、钩子、MCP、技能、自动化 | | Implementation(实现) | 没有更具体分类的有用请求 | | Reference(参考) | 粘贴的代码、日志、堆栈跟踪、系统/工具噪音 |

参考内容不计入有用意图计数。

词云去掉了粘贴的代码、路径、标记片段、模板提示词、对话填充词和停用词。英文标识符拆分为可读词语;中文文本使用 Intl.Segmenter 加精简的开发者词典。

排序优先考虑包含该概念的不同 Prompt 数量,重复出现给予较小的对数加成。常见中英双语变体会合并,词汇/分类重复项会折叠,经常出现的首字母缩写保留其观察到的形式。

项目领域实体无需硬编码。候选概念在以下情况下会被提升:

  • 在多个独立 Prompt 中反复出现;
  • 表现为一个项目名词;
  • 在某个时间段内集中出现;
  • 带有独特的首字母缩写或实体信号。

日 / 周 / 月 / 总计 / 自定义以及 Agent 过滤同时适用于词云、Token 总数、使用趋势和模型分解。

AI 吐槽和双语 Hashtag

只有精简的 roast_evidence 对象会通过网络发送。它包含聚合的类型、轴、分类、维度、概念和活跃度信号——永远不会包含你输入给 Agent 的文本。

生成步骤不会改变固定的人格类型。一次模型调用产出:

  • 三段式英中吐槽;
  • 双语 TL;DR 金句;
  • 五对 Hashtag,分别带有 enzh、语义 kind 和共享的简短 meaning

Hashtag 是语义解读,而非频率标签。中文是根据笑点意图本地化,而非逐字翻译。专有名词、框架名称和有含义的首字母缩写可能保持原样。

Vibe Roaster 是本地优先的。AI 吐槽和托管画像缓存是可选的网络功能。

| 数据 | 本地画像 | 可选 AI 吐槽 | 托管画像缓存 | | --- | --- | --- | --- | | 你输入的 Prompt 文本 | 本地使用 | 绝不发送 | 绝不存储 | | 本地路径和配置 | 仅本地 | 绝不发送 | 绝不存储 | | 聚合的分类和分数 | 本地计算 | 仅在显式启用时发送 | 存储为精简快照 | | 生成的吐槽文案和 Hashtag | 本地结果 | 由所选模型返回 | 为稳定的登录画像存储 | | API 密钥 | 不需要 | 仅用于该次请求 | 本地应用不存储 |

用户界面运行在 localhost。Node 服务器未加固以供公开暴露——请勿将 7681 端口暴露到不信任的网络。

GitHub 会话存储在 ~/.vibe-roast/ 下,仅所有者可读写。缓存的吐槽在画像发生实质性变化之前会复用。

受支持的数据源

Vibe Roaster 检查它能找到的数据源,并将缺失的根目录视为空。

| 数据源 | 标识符 | 默认存储位置 | | --- | --- | --- | | Codex | codex | ~/.codex/sessions | | Claude Code | claude | ~/.claude/projects | | Cursor | cursor | 平台 state.vscdb | | Cline | cline | VS Code/Cursor globalStorage | | Roo Code | roo | VS Code/Cursor globalStorage | | Continue | continue | ~/.continue/sessions | | Gemini CLI | gemini | ~/.gemini/tmp/*/chats | | Aider | aider | .aider.chat.history.md | | Windsurf | windsurf | ~/.codeium/windsurf 纯文本导出 | | Copilot Chat | copilot | VS Code/Cursor globalStorage | | Amazon Q | amazonq | ~/.aws/amazonq/history | | Antigravity | antigravity | ~/.gemini/antigravity(-ide)/conversations | | TokenTracker(内置) | 仅活跃度 | ~/.tokentracker/tracker/queue.jsonl | | Vibe tracker | vibe-tracker | ~/.vibe-roast/sessions.jsonl |

Cursor 解析依赖本地的 sqlite3 命令。加密或二进制的历史记录会被跳过。

  • Windsurf Cascade 和 Antigravity 的 protobuf 轨迹在无纯文本导出时无法解析。
  • ChatGPT 桌面端历史记录是加密的。
  • Cursor 纯云端线程可能没有可读的本地气泡。
  • TokenTracker 覆盖受支持的本地历史记录,并将活跃度单位保持在 Token。平台权限和上游日志格式仍可能导致某个数据源为零。
  • Agent 上下文分类是聚合估计值。Codex 工具归因是基于轮次的;Claude 内容块归因是近似值。

CLI 命令

不启动 UI 进行检查

npx vibe-roast inspect \
  --from 2026-06-01 \
  --to 2026-06-08 \
  --sources codex,claude,cursor

JSON 报告包含数据源摘要、活跃度、词频、Prompt 分析、四轴画像、吐槽证据和归一化的 Prompt 记录。

覆盖本地存储位置

npx vibe-roast inspect \
  --codex-root /path/to/codex/sessions \
  --claude-root /path/to/claude/projects \
  --cursor-db /path/to/state.vscdb

额外的覆盖选项:

--home
--cline-root
--roo-root
--continue-root
--gemini-root
--aider-root
--windsurf-root
--copilot-root
--amazonq-root
--antigravity-root
--token-tracker-queue

Token 收集诊断

npx tokentracker-cli status
npx tokentracker-cli doctor

安装 npm 包不会修改 Agent 配置。首次 vibe-roast 运行会初始化 TokenTracker;此后 TokenTracker 自行管理其钩子和本地队列。

环境变量

大多数用户无需设置环境变量。

| 变量 | 用途 | | --- | --- | | PORT | 将本地服务器端口从 7681 改为其他端口 | | VIBE_ROAST_NO_OPEN=1 | 启动时不打开浏览器 | | VIBE_ROAST_PLAIN_OUTPUT=1 | 禁用终端颜色和启动动画 | | VIBE_ROAST_AUTH_BROKER_URL | 覆盖托管的 OAuth/AI 代理地址,用于开发或自部署 | | DEEPSEEK_BASE_URL | 覆盖默认的 DeepSeek 兼容端点 | | DEEPSEEK_MODEL | 覆盖默认的 DeepSeek 模型 |

如需本地开发,在 .env.local 中放入无需提交的值。命令行环境变量具有更高优先级。

绝不能提交 API 密钥、客户端密钥、会话密钥、.env.localworker/.dev.vars

安装与构建

git clone https://github.com/PinkR1ver/vibe-roast.git
cd vibe-roast
npm install
npm run build
npm run serve

Vite 开发模式

# 终端 1:API 和本地静态资源
VIBE_ROAST_NO_OPEN=1 npm run serve

# 终端 2:Vite 热更新
npm run dev

Vite 运行在 http://localhost:5173,并将 /api/assests 代理到本地 Node 服务器。

测试

npm test
npm run build

测试覆盖了适配器、fixture 解析、Prompt 清洗、活跃度聚合、类型评分、词云实体、AI 结构校验、OAuth/代理行为、缓存、Hashtag 和前端辅助模块。

项目结构

bin/                     CLI 入口
src/sources/             本地 Agent 适配器
src/extract/             Prompt 和概念抽取
src/lib/                 评分、活跃度、吐槽、缓存快照
dashboard/src/           React 吐槽结果界面
worker/                  Cloudflare OAuth + 托管 AI 代理
assests/                 发布的视觉资源包(此拼写为有意保留)
test/                    Node fixture 和测试
.agents/                 架构、决策和功能规格文档

关于架构详情,参见 项目架构文档。关于托管 OAuth 和免费 AI 流程,参见 托管吐槽架构文档

自部署代理服务

公开的 npm 包默认使用 https://auth.pinktalk.online。最终用户无需 GitHub Client Secret。

内置的 Cloudflare Worker 使用:

  • 带 state 和 PKCE 的 GitHub OAuth;
  • 一次性代理票据;
  • SQLite Durable Object 存储会话、配额和缓存的画像;
  • 固定的 Workers AI 模型;
  • 每个登录账户每日 9 次调用的限制。

部署和密钥配置请参见 worker/README.md

当前局限

  • Prompt 分类基于关键词。
  • 评分反映 Prompt 行为,不反映任务难度或代码质量。
  • 长 Prompt 是上下文需求的代理指标。
  • 活跃度总计不影响人格类型。
  • 领域发现是启发式的,需要重复提及。
  • 新会话证据发生实质变化时,画像可能改变。

贡献

欢迎提交 Issue 和 Pull Request:

  1. Fork 本仓库。
  2. 创建一个有明确目标的开发分支。
  3. 添加或更新有 fixture 支撑的测试。
  4. 运行 npm testnpm run build
  5. 发起 Pull Request,描述用户可见的变化。

适配器需保持容错性(缺失的数据源不能导致检测崩溃)。绝不提交私有会话转储、用户原始历史、Token 或凭证。

相关链接