@ganziliang/pi-aa-speed-overlay
Pi 扩展:展示 Artificial Analysis 的 12 个模型榜单(速度/智能/知识/办公/执行/财务/职业/图像/语音…),无需 API key
Package details
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
在 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 package:
package.json里的pi.extensions声明了扩展入口,也可以直接用pi install git:github.com/<user>/<repo>从仓库安装。
用法
| 操作 | 键 |
|---|---|
| 切换榜单 | Tab / ← →(循环 12 个榜);1–9、0 直达前 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 个榜可以 1–9 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 |
▶ 当前模型和 ★ 已配置模型的高亮会覆盖上面默认色(分别是 accent 和 success),保证始终能从一片色块里认出来。
▶ / ★ 是什么意思
面板上有两种标记,含义完全不同(之前只有一个 ★,容易被误解成"我在用的模型"):
| 标记 | 含义 | 怎么来的 |
|---|---|---|
| ▶ 高亮 | 当前会话正在用的模型 | 读会话里的当前模型(/model 切过也算),拿不到时回退读 ~/.pi/agent/settings.json 的 defaultModel |
| ★ 高亮 | 你在 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