Community研究与数据分析github.com

primexiao/agent-skills

社区代理技能,包括用于在 OpenRouter 上进行 LLM 模型选择的 model-radar。

agent-skills 是什么?

Model Radar 是一个开源 CLI 工具,旨在让开发者或 AI 代理能够使用自然语言在 OpenRouter 上轻松选择和比较 LLM 模型。它通过解析类似 Tailwind 的 `token:value` 参数(例如 `sort:cheap`、`price:..10`、`cap:tool_use`)来筛选、排序和推荐模型。该工具支持三种核心命令:`list`(列出并排序模型)、`recommend`(根据预设权重打分推荐,如 `preset:coding`)、`compare`(并排对比多个模型)。Model Radar 优先使用本地缓存来提高速度,首次使用时从 OpenRouter 公共端点获取数据,后续调用几乎无需网络。它集成自动更新机制,能够从 GitHub 仓库拉取最新版本并自动应用,同时保留缓存数据确保离线状态下的可用性。该项目无外部依赖,只需 Node.js 18+ 运行环境,非常适合集成到 Codex CLI、Cursor 或自定义代理工作流中。

兼容平台✓Claude Code✓Codex CLI~Cursor
npx skills add primexiao/agent-skills

Installed? Explore more 研究与数据分析 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

模型雷达 (Model Radar)

OpenRouter 模型选择 CLI。将自然语言约束解析为 token:value 参数,查询模型元数据 + 排名的本地缓存,并输出 JSON 供代理渲染为 Markdown 表格。

设置

  • 运行环境:Node.js 18+(无需安装步骤,无 npm 依赖)
  • 无需 API 密钥 — 使用 OpenRouter 公共端点
  • 所有命令请在此技能目录(包含此文件的目录)中运行
  • 首次运行会从网络填充缓存;后续调用使用本地缓存(模型 TTL 6 小时,排名 TTL 24 小时)
  • 默认启用自动更新。每次 CLI 运行时,每 24 小时最多检查一次固定 GitHub 源,并自动应用于已安装的副本。设置 MODEL_RADAR_AUTO_UPDATE=0 可禁用。

工作流程

  1. 使用技能前,运行 node scripts/self-update.js auto。如果 stderr 输出 MODEL_RADAR_UPDATED,请重新阅读此 SKILL.md 后再继续。
  2. 使用下面的 意图 → 令牌 映射将用户的请求解析为 token:value 参数
  3. 选择命令:list(筛选+排序)、recommend(根据预设加权评分)、compare(并排对比)
  4. 在技能目录中运行。scripts/main.js 也会自动运行相同的自我更新预检,因此直接使用 CLI 也能保持最新。
  5. 将 JSON 输出渲染为 Markdown 表格(参见输出)
  6. 以 数据截至 {fetched_at} 结尾;如果数据早于 12 小时,建议使用 refresh

命令

node scripts/main.js list      [tokens...]    # 筛选 + 排序
node scripts/main.js recommend [tokens...]    # 根据预设加权评分
node scripts/main.js compare   <id|name>...   # 并排对比
node scripts/main.js refresh                  # 强制刷新所有缓存
node scripts/self-update.js status            # 检查更新状态
node scripts/self-update.js check             # 检查 GitHub 上的更新
node scripts/self-update.js apply             # 应用最新的技能更新

自动更新

  • 源由 package.json.repository 固定:primexiao/agent-skills,路径 skills/model-radar。
  • 已安装的副本会自动更新。除非设置了 MODEL_RADAR_AUTO_UPDATE_SOURCE=1,否则源检出会跳过自动更新。
  • 技能目录下的本地未提交更改会导致自动更新跳过。
  • 直接使用 scripts/main.js 时,成功自更新后会重新启动当前命令,以确保结果由更新后的代码生成。
  • 更新使用临时检出,验证所需文件,备份当前技能,替换非运行时文件,失败时回滚。
  • 成功更新会清除 cache/raw.json、cache/models.json 和 cache/rankings.json,以便新代码不与旧缓存数据混合。
  • 自更新状态和警告输出到 stderr。命令 JSON 保持在 stdout。

令牌语法

Tailwind 启发的定位 token:value 参数。顺序无关紧要。

令牌含义值格式示例
sort排序维度预设词(见下文)sort:cheap sort:popular
price$/MTok 混合价格..max / min.. / min..max / bare=maxprice:..10 price:5..20
ctx上下文长度同上,支持 k/m 后缀,bare=minctx:128k ctx:128k..1m
out最大输出令牌同上,bare=minout:32k
cap能力(AND 逻辑)逗号分隔cap:tool_use,reasoning
in输入模态(AND 逻辑)逗号分隔in:image in:audio,image
gen输出模态(AND 逻辑)逗号分隔gen:image gen:audio
open开源过滤器true / falseopen:true
top结果数量限制数字(默认:list=20,recommend=3)top:5
preset评分预设(仅 recommend)预设名称preset:coding

sort 值: cheap expensive new(默认) ctx popular throughput latency

能力: tool_use reasoning structured_output vision long_output prompt_caching web_search audio_input video_input file_input image_generation audio_output

输入模态: text image audio video file 输出模态: text image audio

推荐预设: coding batch chat vision(权重和所需能力见 config/presets.json)

意图 → 令牌

用户输入令牌
“预算 $X” / “低于 $X”price:..X
“至少 $X” / “高级别”price:X..
“至少 Nk 上下文”ctx:Nk
“需要工具调用 / 视觉 / 推理”cap:tool_use / cap:vision / cap:reasoning
“结构化输出” / “JSON 模式”cap:structured_output
“可以接收音频 / 图像输入”in:audio / in:image
“可以生成图像 / 音频”gen:image / gen:audio
“仅开源”open:true
“最便宜” / “最实惠”sort:cheap
“最流行” / “流行趋势”sort:popular
“最新” / “最新发布”sort:new
“最快” / “最低延迟”sort:latency
“最高吞吐量”sort:throughput
“编码代理”recommend preset:coding
“批量 / 批量任务”recommend preset:batch
“视觉代理”recommend preset:vision

模型匹配 (compare)

对于 compare 参数的每个参数,匹配优先级为:

  1. 精确 ID — anthropic/claude-sonnet-4-5
  2. 后缀精确匹配 — claude-sonnet-4 → anthropic/claude-sonnet-4(从不匹配 -fast 变体)
  3. ID/名称的部分子串匹配,最新版本优先 — claude-sonnet → 最新的 Sonnet

输出

始终将 JSON 输出渲染为 Markdown 表格 — 表格是主要的显示格式。

list

| # | 模型 | $/MTok (提示/补全/混合) | 上下文 | 输出 | 能力 | 排名# |
  • $/MTok:提示/补全/混合价格
  • 能力:简短标签(tool reason vision …)
  • 排名#:如果排名缓存有效则为流行度排名,否则为 —

recommend

| 排名 | 模型 | 得分 | 成本↑ | 上下文↑ | 输出↑ | 能力↑ | $/MTok | 能力标签 |

每个模型附带一行简短理由。得分和各个维度的得分范围在 [0, 1]。

compare

垂直表格 — 每列一个模型,每行一个维度:

| 维度               | 模型 A | 模型 B | 模型 C |
| ------------------ | ------ | ------ | ------ |
| 价格 (提示/补全/混合) |   …    |   …    |   …    |
| 上下文             |   …    |   …    |   …    |
| 最大输出           |   …    |   …    |   …    |
| 输入模态           |   …    |   …    |   …    |
| 输出模态           |   …    |   …    |   …    |
| 能力               |   …    |   …    |   …    |
| 流行度排名         |   …    |   …    |   …    |
| 每周请求数         |   …    |   …    |   …    |

始终以: 数据截至 {fetched_at} 结尾。如果数据早于 12 小时,建议用户运行 node scripts/main.js refresh。

缓存

cache/
  raw.json       — OpenRouter 前端卡片数据适配本地原始模式(TTL 6 小时)
  models.json    — 增强数据:标准化定价 + 能力标签(TTL 6 小时)
  rankings.json  — 流行度/吞吐量/延迟 + 使用分析(TTL 24 小时)
config/
  presets.json
  tier1-categories.json
  • 缓存文件位于 cache/ 目录下,不提交 — 首次运行时会从网络获取
  • TTL 过期后,CLI 会以 10 秒超时重新获取
  • 任何获取失败时,会回退到过期缓存并在 stderr 输出 [warn] — 因此只读/离线沙箱仍能应答(可能数据过时)
  • 成功的技能更新会删除模型数据缓存文件。下次模型命令会重新填充缓存。

沙箱注意事项

  • Codex CLI: 需要 -s workspace-write(CLI 写入 cache/)以及到 openrouter.ai 的网络出站。在 TTL 内,无需网络调用。
  • 在全新检出中的首次调用 是唯一严格需要网络的一次。
  • 自动更新需要对此技能目录的文件系统写入权限以及对 GitHub 的网络访问。如果不可用,会发出警告或跳过,模型命令仍会使用当前本地副本运行。

已知问题

  • OpenRouter 前端 API (/api/frontend/v1/models/find?active=true&fmt=cards) 是非官方的;如果失败,CLI 会在可用时回退到过期缓存并输出 [warn]。

数据源

  • 模型: https://openrouter.ai/api/frontend/v1/models/find?active=true&fmt=cards
  • 排名: 同一端点,加上 order=top-weekly、order=throughput-high-to-low 和 order=latency-low-to-high

相关技能