一个零依赖、本地运行的 OpenAI 兼容模型性能测试台。提供商、URL、API Key 和模型统一写在本地 providers.md;打开网页后会自动向所有启用的 URL 发起测试,并把每一次成功或失败保存为独立 JSON。
需要 Node.js 20 或更高版本。本项目没有第三方依赖,不需要 npm install。
node server.jsWindows 也可以双击 start.cmd。然后打开:
http://127.0.0.1:4317
端口可通过环境变量修改:
$env:PORT=8080
node server.js- 打开项目根目录的
providers.md。 - 复制一个
## 提供商名称区块,填写url、api_key和models,并设置enabled: true。需要一次测试多个 URL 时创建多个区块。 - 运行服务并打开网页。只要全局
auto_test: true,页面就会立即测试全部启用配置。 - 修改文件后可在网页点击“重新读取”,再点“测试全部 URL”。页面中的临时手动配置仍然保留为可选入口。
- 在历史区按“提供商 / 模型”看趋势,或在对比区选择两个组合查看聚合表现。
示例:
auto_test: true
repetitions: 2
max_tokens: 800
timeout_seconds: 180
## 提供商 A
enabled: true
url: https://api-a.example.com/v1
api_key: sk-a
models: auto
## 提供商 B
enabled: true
url: https://api-b.example.com/v1
api_key: sk-b
models: model-b-fast, model-b-codemodels: auto 表示通过每个 URL 的 GET /models 自动发现全部模型;也可以用逗号显式列出模型,适合没有模型列表接口或只想测试部分模型的服务。不同 URL 最好使用不同的二级标题,因为标题就是历史记录中的提供商名称。
Base URL 可填写以下任意形式,程序会规范化端点:
https://api.example.com/v1
https://api.example.com/v1/chat/completions
http://127.0.0.1:11434
- TTFT:从发出 HTTP 请求到收到首个非空内容或推理增量。
- 首可见内容:从请求发出到首个可见
content增量;推理模型可能比 TTFT 晚。 - Token/s:
输出 Token / (总耗时 - TTFT)。 - ms/Token:
(总耗时 - TTFT) / 输出 Token。 - Token 数来源:优先读取流末尾的
usage.completion_tokens;兼容服务没有返回 usage 时,用文本长度估算并在界面标≈。 - 任务静态得分:本地正则规则检查接口、上升沿、饱和、复位、非阻塞赋值和自检 testbench。它用于快速对照,不等同于仿真或正式 HDL 质量评审。
- 每次尝试保存在
data/runs/*.json,包含指标、提示词快照、模型完整输出和错误信息。 - 直接复制或剪切整个
data文件夹即可带走全部历史;网页也可导出完整 JSON 或扁平 CSV。 - 文件批次的 API Key 只从
providers.md读入服务端内存并转发给目标 API,不会进入测试结果或浏览器接口。临时手动测试的 Key 仍只保存在当前页面内存。 - 提供商 URL 会随结果保存,用于稳定地区分历史来源。不要把密钥放在 URL 中,程序也会拒绝带用户名/密码的 URL。
- 服务默认只监听
127.0.0.1。如果主动改为局域网地址,请自行保护访问权限。
固定提示词位于:
prompts/opencode-system.mdprompts/verilog-task.md
服务启动时计算两者的 SHA-256 短哈希,每条记录同时保存版本、哈希和完整快照。系统上下文借鉴 OpenCode 的公开编码代理定位、项目规则与环境上下文装配方式,而不是复制某个厂商模型的隐藏提示词:
API 请求使用 POST /chat/completions、stream: true 和 stream_options.include_usage。可参照 OpenAI Chat Completions API 文档。
npm.cmd test
npm.cmd run check测试覆盖 Markdown 多提供商解析、一次批量访问多个 URL、URL 规范化、指标公式、Verilog 静态评分、SSE 流解析、usage 统计和落盘导出。