@ganziliang/pi-aa-speed-overlay

Pi 扩展:展示 Artificial Analysis 的 12 个模型榜单(速度/智能/知识/办公/执行/财务/职业/图像/语音…),无需 API key

Packages

Package details

extension

Install @ganziliang/pi-aa-speed-overlay from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@ganziliang/pi-aa-speed-overlay
Package
@ganziliang/pi-aa-speed-overlay
Version
0.2.0
Published
Sep 14, 2026
Downloads
1,048/mo · 1,048/wk
Author
ganziliang
License
MIT
Types
extension
Size
57.2 KB
Dependencies
0 dependencies · 2 peers
Pi manifest JSON
{
  "extensions": [
    "./extensions"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

@ganziliang/pi-aa-speed-overlay

npm

pi 里用一个面板展示 Artificial Analysis 的模型榜单:速度(tok/s)、综合智能分、输出 token 数(reasoning 占比)、单任务成本、单任务耗时、知识事实性、办公/职业任务 Elo、Agent 长链执行率、财务、文生图、语音 —— 共 12 个榜,Tab←→ 直接翻。速度(tok/s)、智能指数、输出 token 数(reasoning 占比)、单任务成本、单任务耗时

不需要 API key。 Artificial Analysis 首页把图表的数值以 schema.org ld+json 的形式内嵌在服务端渲染的 HTML 里,本扩展直接抓首页解析,不走付费 API。

╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Artificial Analysis                                                                             8 分钟前 │
├──────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│  1:速度   2:智能   3:词量   4:成本   5:耗时  ▐ 6:知识 ▌  7:办公   8:执行   9:财务   0:职业   图像   语音 │
│ AA-Omniscience 事实性得分(-100~100)。负分 = 答错的比答对的多、…  ·  共 20 条  ·  缓存  ·  ★ 2 个已配置 │
├──────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ #   模型                                       分                                                        │
│  1  Claude Fable 5.1 (max with fallback)     43.5 ██████████████████████████████████████████████████████ │
│  2  GPT-6 Astra (max)                        43.4 ██████████████████████████████████████████████████████ │
│  3  Claude Fable 5 (with fallback)           43.3 ██████████████████████████████████████████████████████ │
│  4  Claude Opus 5 (max)                      37.1 ██████████████████████████████████████████████         │
│  5  Grok 4.6 (high)                          30.5 ██████████████████████████████████████                 │
│  6  Gemini 3.8 Flash (high)                  29.6 █████████████████████████████████████                  │
│  7  Muse Spark 1.3 (max)                     25.0 ███████████████████████████████                        │
│ ★8  GPT-5.6 Sol (max)                        22.0 ███████████████████████████                            │
│  9  Kimi K3 (max)                            19.7 ████████████████████████                               │
│  10 GLM-5.3 (max)                            14.3 ██████████████████                                     │
│  11 GLM-5.3-Flash                             7.5 █████████                                              │
│  12 Gemini 3.5 Flash-Lite                     5.2 ███████                                                │
│  13 Qwen3.8 2.4T A95B                         4.3 █████                                                  │
│  14 Inkling                                   2.0 ██                                                     │
│ 显示 1-14 / 20   (j/k 或 ↑↓ 滚动)   ·   ▶ 当前模型 deepseek-flash:本榜未收录                            │
├──────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Tab/←→ 切榜(1-9,0 直达前 10 个)   r 刷新   j/k 或 ↑↓ 滚动   q/Esc 关闭   ★=你配置的模型(2)   ▶=当前模型│
│ 数据: 每 3 小时采样一次,页面展示的是过去 72 小时中位数 · 来源 Artificial Analysis (https://artificialan…│
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯

安装

# 全局安装(所有项目可用,写入 ~/.pi/agent/settings.json)
pi install npm:@ganziliang/pi-aa-speed-overlay

# 只给当前项目用(写入 .pi/settings.json,可提交给团队)
pi install -l npm:@ganziliang/pi-aa-speed-overlay

# 临时试用,不写配置(只对本次运行生效)
pi -e npm:@ganziliang/pi-aa-speed-overlay

安装后在 pi 里输入 /aa-speed

# 更新
pi update npm:@ganziliang/pi-aa-speed-overlay
pi update --extensions        # 更新全部已装包

# 卸载
pi remove npm:@ganziliang/pi-aa-speed-overlay

# 查看已安装的包
pi list

这是一个 pi packagepackage.json 里的 pi.extensions 声明了扩展入口,也可以直接用 pi install git:github.com/<user>/<repo> 从仓库安装。

用法

操作
切换榜单 Tab / (循环 12 个榜);190 直达前 10 个
上下滚一行 / j k
翻一页 空格 / PgUp PgDn
到顶 / 到底 Home / End
鼠标滚轮 仅全屏(alt-screen)模式下终端会上报滚轮事件
强制刷新(忽略缓存) r
关闭 q / Esc

面板高度按终端行数自适应:高终端上 20 条榜单可以一次显示完;矮终端(如 24 行)会自动缩小视口,并保证「显示 x-y / 20」指示条和底部快捷键说明始终可见,不会出现内容被静默截断。

命令行也可以直接指定榜单(key 或中文名都行):

/aa-speed              # 默认打开 速度 榜
/aa-speed index        # = /aa-speed 智能
/aa-speed knowledge    # 知识事实性(AA-Omniscience)
/aa-speed job          # GDPval 真实职业任务

12 个榜单

key 单位 数据集
速度 speed tok/s Output Speed
智能 index Artificial Analysis Intelligence Index
词量 tokens tok + reasoning 占比 Output Tokens per Intelligence Index Task
成本 cost $ Cost per Intelligence Index Task
耗时 time s Time per Intelligence Index Task
知识 knowledge 分(-100~100) AA-Omniscience Index
办公 office Elo AA-Briefcase Elo
执行 agent % AA-AnalystAgent pass^5
财务 finance AA Finance & Accounting Index
职业 job Elo GDPval-AA v2 Leaderboard
图像 image Elo Text to Image Leaderboard
语音 voice Elo Provider Voice Arena Quality Elo

快捷键:前 10 个榜可以 19 0 直达;图像/语音用 Tab / ←→ 翻(标签上不写编号避免误会)。

AA 首页里还有一个 Intelligence Index by Open Weights / Proprietary 数据集,但它当前返回的 20 行与「智能」榜逐字相同(AA 那边按筛选器前端拆分,没给单独数据),所以没做成 tab。

面板怎么读

  • 数值列右对齐;后面的 █ 条形图按当前榜单最高值等比缩放,最长为满格 —— 所以“快 5 倍”看起来就是 5 倍长的条,快慢差异一眼能看出来。
  • 模型列宽度按榜单里最长的模型名自适应(上限 40 列),剩下的宽度全部给条形图;窄终端下会优先保证条形图至少能看出层次。
  • 面板高度自适应但不占满整屏:最多 26 行(约 14 条数据),且在终端里上下各留至少几行空间;矮终端会自动再缩视口,并保证「显示 x-y / 20」指示条始终可见。终端特别高时也不会把面板拉到 20 条以上去顶满屏幕。

配色

为了让长列表好跟行,配色分三层,全部取自你当前的 pi 主题(换主题时自动跟着变,不用改配置):

位置 规则
数据行背景 隔行叠加主题的 userMessageBg(斑马纹),视线不容易串行
条形图颜色 按占榜首比例分三档:≥ 66% 用 borderAccent,≥ 33% 用 border,其余用 borderMuted;看分布一眼分清高/中/低
序号 第 1 名金色加粗(warning),第 2–3 名加粗,其余 dim
边框 / 表头 / 页脚 border / muted / dim

▶ 当前模型和 ★ 已配置模型的高亮会覆盖上面默认色(分别是 accentsuccess),保证始终能从一片色块里认出来。

▶ / ★ 是什么意思

面板上有两种标记,含义完全不同(之前只有一个 ★,容易被误解成"我在用的模型"):

标记 含义 怎么来的
高亮 当前会话正在用的模型 读会话里的当前模型(/model 切过也算),拿不到时回退读 ~/.pi/agent/settings.jsondefaultModel
高亮 你在 models.json 里配置过的其它模型 聚合所有 provider 下的 models[].id / name

注意:★ 是"你配置过的"(你的网关里挂着的所有模型,可能有几十个),不等于"你在用的"。只有 ▶ 才是正在用的那个。

指示行右侧会直接告诉你当前模型排第几,或者告诉你它没上榜:

显示 1-9 / 20   (j/k 或 ↑↓ 滚动)   ·   ▶ 当前模型 deepseek-flash → 本榜第 5 名
显示 1-9 / 20   (j/k 或 ↑↓ 滚动)   ·   ▶ 当前模型 deepseek-flash:本榜未收录

匹配规则是归一化后精确比较(转小写 → 去掉括号内容 → 去掉所有非字母数字):

models.json 里的 id 榜单里的名字 归一化后 结果
gpt-5.6-luna GPT-5.6 Luna (max) 都是 gpt56luna ★ 命中
claude-opus-4-5 Claude Opus 4.5 (max with fallback) 都是 claudeopus45 ★ 命中
claude-opus-4 Claude Opus 4.5 (max) claudeopus4 vs claudeopus45 不命中

名字对不上?用别名文件

自己搭的网关经常是内部命名(deepseek-flash),跟 AA 榜上的名字(DeepSeek V4.1 Flash (max))对不上,这种情况下 ▶ 会显示"本榜未收录"。这时可以建一个可选的映射文件 ~/.pi/agent/aa-speed-aliases.json

{
  "deepseek-flash": "DeepSeek V4.1 Flash",
  "deepseek-v4-pro": "DeepSeek V4 Pro 0813"
}
  • 左边 = 你 models.json 里的 id(或 name),右边 = AA 榜单上显示的名字(写关键片段也行)。
  • 只在左边这个模型确实存在于 models.json 时才生效,所以不会凭空产生匹配。
  • 文件不存在、或者某条对不上,就按普通精确匹配处理,不影响其它功能。

模型也可以调用 aa_leaderboard 工具来查(比如直接问 pi「现在哪个模型最快」「GDPval 上谁最强」)。tab 参数支持全部 12 个 key:speed index tokens cost time knowledge office agent finance job image voice,也可以直接传中文名。

数据更新频率(官方 methodology)

工作负载 测试频率
1k 输入 / 10k 输入 / 视觉 每天 8 次,约每 3 小时一次
并发负载(10 并发 × 1k) 每天 1 次(随机时间)
100k 输入 每周 1 次

页面展示的是「过去 72 小时的中位数 (P50)」,100k 那档是过去 14 天的中位数。每次测试都用当场生成的全新 prompt。

也就是说:底层每 3 小时刷新一次采样,但展示值变化平缓。一天看一两次就够了,本扩展的本地缓存有效期是 1 小时。

「智能指数」类榜单不是按固定周期更新的,而是跟着新模型发布 / AA 自己改方法论时才动,改方法论时所有模型分数会一起变,不适合用来发现"同一个模型变笨了"

各榜单能不能用来判断"降智"

榜单 用途
速度(tok/s) ✅ 能看「慢」
耗时(单任务耗时) ✅ 能看「慢」,最直接
词量(reasoning 占比) ✅ reasoning 占比突然变高 = 模型变啰嗦,同事体感「磨叽啊」
成本(单任务成本) ✅ 成本跳变 = 模型可能被换成了别的贵/便宜档位
智能(综合分) ❌ 几乎不变,查不出降智
知识(AA-Omniscience) ❌ 不会掉——但它衡量「不知道时会不会编」,选模型/写 prompt 时更有用
办公 / 职业 / 执行(Elo / pass^5) ❌ 更新极慢,但这些才是「干活行不行」的依据,比综合分贴生产
财务 / 图像 / 语音 ❌ 领域专用,跟通用降智无关

数据文件

文件 内容
~/.pi/agent/aa-speed-cache.json 最近一次抓取的完整快照(缓存 1 小时)
~/.pi/agent/aa-speed-history.jsonl 每次抓取追加一行,用于以后做趋势 / 变点检测
~/.pi/agent/aa-speed-aliases.json 可选:把你网关注册的模型名映射到 AA 榜单上的名字(见上文「名字对不上?」)

免责 / 合规

数据归 Artificial Analysis 所有,使用其数据需署名(面板与 aa_leaderboard 工具输出里均已署名)。本扩展只抓取公开页面上已内嵌的数值,抓取频率极低(默认每小时最多一次)。

已知限制

  • AA 改版把 ld+json 去掉的话,会提示「没解析到内嵌数据」——届时需要改成走官方 API(免费层需注册 key)。
  • 首页内嵌数据里**没有延迟(TTFT)**榜单,只有速度。需要 TTFT 的话得走官方 API 或另找数据源。
  • 「图像 / 语音」两个榜里是图像模型和语音服务商,跟聊天模型不是一批东西,★/▶ 标记对它们没有意义。
  • 刷新时不再出现“多出一行 / 旧边框残留”的重影:主屏(regular)模式下本扩展不再用浮层(overlay),而是把面板内嵌到编辑区(就像 pi 自带的 /model 选择器那样)。原因见下面「两种呈现方式」。
  • 终端高度小于 12 行时,底部边框可能仍被截掉(优先保证数据区可见)。
  • 普通(非全屏)模式下终端不上报鼠标事件,滚轮不生效,用键盘滚动即可。

两种呈现方式(自动选)

按你 pi 的 TUI 模式自动选,不需要配置:

TUI 模式 面板形式 为什么
regular(主屏,默认) 内嵌在编辑区,占满宽度,底部停靠 主屏渲染器是按行字符串 diff 重画的,且会把浮层像素合成进文档帧;只要别的东西改变文档高度(其他扩展的 setStatus 闪烁、流式输出、通知……)就会滚屏,而“没变化的行”不会重画 → 屏幕上就积下一行行旧边框。内嵌组件不走浮层合成,面板跟着文档一起重画,不存在残留。
fullscreen(全屏 alt-screen) 居中悬浮浮层(原来的样子) 全屏渲染器每行都用绝对光标定位重画,根本不会残留。

想强制指定:AA_SPEED_OVERLAY=1(始终用浮层)/ AA_SPEED_OVERLAY=0(始终内嵌)。

License

MIT