Agent skill
models-config
Model configuration editor for ~/.pi/agent/models.json with multi-protocol curl testing support.
Install this agent skill to your Project
npx add-skill https://github.com/Dwsy/agent/tree/main/skills/models-config
SKILL.md
Models Config Skill
功能
编辑和管理 ~/.pi/agent/models.json 配置文件,支持多种 API 协议的测试和验证,以及从 https://models.dev/api.json 自动获取模型价格信息。
配置结构
{
"providers": {
"provider-name": {
"baseUrl": "https://api.example.com",
"apiKey": "sk-xxx",
"api": "anthropic-messages|openai-completions|openai-responses",
"authHeader": true
}
}
}
使用方法
基本操作
# 编辑配置文件
bat ~/.pi/agent/models.json
# 验证 JSON 格式
python3 -m json.tool ~/.pi/agent/models.json
协议类型
| API 类型 | 用途 | 端点格式 |
|---|---|---|
anthropic-messages |
Claude 消息 API | /v1/messages |
openai-completions |
OpenAI Completions API | /v1/chat/completions |
openai-responses |
OpenAI Responses API | /v1/responses |
测试方法
1. Anthropic Messages API
export ANTHROPIC_BASE_URL=https://api.xairouter.com
export ANTHROPIC_AUTH_TOKEN=sk-XvsJhNdiXcDYA3e5hzD1AJP5ploMAaFuMTUxp3bHRfCiZRNt
curl $ANTHROPIC_BASE_URL/v1/messages \
-H "x-api-key: $ANTHROPIC_AUTH_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello"}]
}'
2. OpenAI Completions API (Chat)
export OPENAI_BASE_URL=http://127.0.0.1:8317/v1
export OPENAI_API_KEY=proxypal-local
curl $OPENAI_BASE_URL/chat/completions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "content-type: application/json" \
-d '{
"model": "glm-4.7",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello"}]
}'
3. OpenAI Responses API
export OPENAI_BASE_URL=http://127.0.0.1:8317/v1
export OPENAI_API_KEY=proxypal-local
curl $OPENAI_BASE_URL/responses \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "content-type: application/json" \
-d '{
"model": "glm-4.7",
"input": "Hello"
}'
4. 简化测试脚本
#!/usr/bin/env bash
# test-model.sh
PROVIDER=$1
BASE_URL=$2
API_KEY=$3
MODEL=$4
echo "Testing $PROVIDER with model $MODEL..."
case "$PROVIDER" in
anthropic)
curl -s "$BASE_URL/v1/messages" \
-H "x-api-key: $API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d "{\"model\":\"$MODEL\",\"max_tokens\":256,\"messages\":[{\"role\":\"user\",\"content\":\"Hi\"}]}" \
| jq .
;;
openai-chat)
curl -s "$BASE_URL/chat/completions" \
-H "Authorization: Bearer $API_KEY" \
-H "content-type: application/json" \
-d "{\"model\":\"$MODEL\",\"max_tokens\":256,\"messages\":[{\"role\":\"user\",\"content\":\"Hi\"}]}" \
| jq .
;;
openai-responses)
curl -s "$BASE_URL/responses" \
-H "Authorization: Bearer $API_KEY" \
-H "content-type: application/json" \
-d "{\"model\":\"$MODEL\",\"input\":\"Hi\"}" \
| jq .
;;
esac
使用示例:
# 测试 Anthropic
bash test-model.sh anthropic \
https://api.xairouter.com \
sk-XvsJhNdiXcDYA3e5hzD1AJP5ploMAaFuMTUxp3bHRfCiZRNt \
claude-sonnet-4-5
# 测试 OpenAI Chat
bash test-model.sh openai-chat \
http://127.0.0.1:8317/v1 \
proxypal-local \
glm-4.7
常见配置
本地服务 (ProxyPal)
{
"proxypal": {
"baseUrl": "http://127.0.0.1:8317/v1",
"apiKey": "proxypal-local",
"api": "openai-completions",
"authHeader": true
}
}
Cloud 服务 (xAIRouter)
{
"xairouter": {
"baseUrl": "https://api.xairouter.com",
"apiKey": "sk-xxx",
"api": "anthropic-messages",
"authHeader": true
}
}
Ngrok 隧道
{
"ngrok": {
"baseUrl": "https://xxx.ngrok-free.dev/v1",
"apiKey": "proxypal-local",
"api": "openai-responses",
"authHeader": true
}
}
价格更新功能
从 https://models.dev/api.json 获取模型价格并更新到配置文件。
使用方法
# 更新所有模型价格
bun ~/.pi/agent/skills/models-config/update-prices.ts
工作原理
- 从 https://models.dev/api.json 获取最新价格数据
- 读取
~/.pi/agent/models.json配置文件 - 按 model ID 智能匹配价格信息
- 更新 cost 字段(input/output/cacheRead/cacheWrite)
- 显示更新摘要
匹配规则
优先级(从高到低):
- 精确匹配:model ID 完全相同
- 标准化匹配:去除前缀、版本号后相同
anthropic/claude-sonnet-4-5→claude-sonnet-4-5claude-sonnet-4-5-20250929→claude-sonnet-4-5
- 模糊匹配:基于 Levenshtein 距离的相似度匹配(≥70%)
- 自动匹配最佳相似度的模型
- 显示匹配相似度百分比
支持的别名映射:
| 你的模型 ID | 匹配到 |
|---|---|
opus4.5 |
claude-opus-4-5 |
claude-sonnet-4-5-20250929 |
claude-sonnet-4-5 |
claude-haiku-4-5-20251001 |
claude-haiku-4-5 |
z-ai/glm4.7 |
glm-4.7 |
minimaxai/minimax-m2.1 |
minimax-m2.1 |
模糊匹配示例
即使你的供应商不在 models.dev 中,只要模型名称相似,也会自动匹配:
bun ~/.pi/agent/skills/models-config/update-prices.ts
# 输出示例:
✓ Updated: claude-sonnet-4-5
Old: {"input":0,"output":0,"cacheRead":0,"cacheWrite":0}
New: {"input":2.6,"output":13,"cacheRead":0.26,"cacheWrite":3.2}
✓ Updated: glm-4.7
Fuzzy matched "glm-4.7" -> "zai-glm-4.7" (85.7% similarity)
Old: {"input":0,"output":0,"cacheRead":0,"cacheWrite":0}
New: {"input":0,"output":0,"cacheRead":0,"cacheWrite":0}
=== Summary ===
Updated: 15 models
Not found: 3 models
Models without price data:
- custom-model-x
- experimental-beta
注意事项
-
baseUrl 格式:
anthropic-messages: 不需要/v1后缀openai-*: 通常需要/v1后缀
-
认证方式:
- Anthropic:
x-api-keyheader - OpenAI:
Authorization: Bearerheader
- Anthropic:
-
测试前检查:
- 确认服务端口已启动(如
curl http://127.0.0.1:8317) - 检查 API Key 有效性
- 验证网络连通性
- 确认服务端口已启动(如
-
价格更新:
- 模糊匹配阈值:70% 相似度
- 匹配成功会显示相似度百分比
- 未匹配的模型会在摘要中列出
- 价格单位:美元/百万 tokens ($/1M tokens)
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
undo-redo
Use the undo_redo tool to rewind or reapply buffered file changes or inspect diffs without UI navigation. Use when you need to adjust or verify changes in the current session history.
exa
使用 Exa.ai API 进行高质量的互联网搜索。需要 EXA_API_KEY 环境变量。
backend-unit-test
后端单元测试技能。触发场景: - 用户要求运行/创建单元测试 - 用户要求验证数据 - 用户要求用 Maven 运行测试 - 关键词:test, maven test, junit, springboot test, 单元测试, 测试验证 核心:不改 pom,用 reactor 模式运行。
mermaid-flow-image
将流程需求整理为可渲染的 Mermaid(简化版/详细版),并通过 Kroki 生成可发送的高分辨率 PNG 图片。适用于“把架构流程画出来并直接发图”的场景。
web-browser
Allows to interact with web pages by performing actions such as clicking buttons, filling out forms, and navigating links. It works by remote controlling Google Chrome or Chromium browsers using the Chrome DevTools Protocol (CDP). When Claude needs to browse the web, it can use this skill to do so.
ralph-loop-gen
任务管理系统模板生成器 - 根据用户输入或JSON配置生成完整的任务管理结构(模板生成器,非直接执行器)
Didn't find tool you were looking for?