Skip to content

Repository files navigation

Sub2API Batch Tester

CI License Platform

面向 Sub2API 管理员的 Windows 和 Android 批量连接测试客户端。登录自己的兼容 Sub2API 管理站点后,可以集中查看账号、自动读取模型信息,并对选定账号批量发起真实连接测试。测试完成后,还可以按最新测试结果筛选账号,并在明确确认后批量删除选中的账号。

这是独立的第三方客户端,不是 Sub2API 官方产品。它通过 Sub2API 的管理接口工作;除你在确认对话框中明确同意的账号删除操作外,不会修改你的 Sub2API 服务端数据。

目录

适用场景

如果你维护的 Sub2API 站点中有多个账号,并且需要频繁确认它们是否还能正常完成连接测试,这个工具适合你。它将网站中逐个点击“测试连接”的操作集中到 Windows 或 Android 界面中,支持按测试结果筛选、选择账号、设置并发数、查看实时进度和取消任务,也能在确认后删除不再需要的账号。

它不适合以下用途:

  • 代替 Sub2API 服务端、批量创建账号或修改账号配置;
  • 绕过上游平台的使用限制、风控或计费规则;
  • 充当账号、密钥或密码管理器;
  • 保存或同步测试历史到多个设备。

功能概览

  • 使用你自己的 Sub2API 站点地址、管理员邮箱和密码登录,不内置任何站点、账号或令牌。
  • 支持“记住登录”:密码不保存;Windows 将刷新令牌保存到 Credential Manager,Android 将刷新令牌保存到系统 Keystore 支持的安全存储,站点地址和邮箱等普通偏好保存在应用设置中。
  • 支持 TOTP 两步验证。
  • 登录或刷新账号后,自动在后台读取模型元数据;加载期间显示“正在获取模型…”,不会把尚未完成的查询误显示为 0/N。
  • 支持按当前已选账号或筛选结果刷新模型范围;模型旁的 x/y 表示该模型出现在多少个已查询账号的模型列表中。
  • 支持测试已选账号或当前筛选结果,测试并发可选 1、3 或 5。
  • 实时显示排队、测试中、可用、配额耗尽、超时 / 待复测、失败、取消、耗时和错误摘要。
  • 支持按账号最近一次测试结果筛选“可用 / 配额耗尽 / 超时 / 待复测 / 错误”,方便在测试后集中处理账号。
  • 支持批量删除已选账号。删除前会列出具体账号并要求一次确认;若选中账号中包含超时结果,会明确提示该结果未能判定账号状态。删除请求会真实发送到你的 Sub2API 站点,账号后续是否可恢复取决于服务端实现。
  • 支持取消正在执行的批量任务。
  • 对缺失分页信息、缺失模型显示名和新增非终态 SSE 记录做了兼容处理,以降低 Sub2API 非破坏性更新带来的影响。

平台支持

平台 Release 资产 已验证范围 说明
Windows 10/11 x64 windows-x64-setup.exe 登录、TOTP、记住登录、账号与模型加载、批量测试、取消和删除确认 NSIS 当前用户安装包;当前未进行 Windows 代码签名。
Android 9 / API 28 及以上,arm64-v8a android-arm64-v8a.apk API 28:安装、冷启动和登录界面;API 35:登录、TOTP、记住登录、会话恢复、账号与模型加载、批量测试、取消和删除确认 已签名的直接安装 APK;批量任务只在应用保持前台时运行。

Android 首个发布版本只提供 arm64-v8a APK,不提供 iOS、AAB、后台保活、后台批处理、云同步或自动更新。不同厂商系统和未验证的旧版本 Android 不作绝对兼容承诺。

下载与安装

系统要求

  • Windows:Windows 10 或 Windows 11,x64 架构。
  • Android:Android 9 / API 28 或更高版本,64 位 ARM(arm64-v8a)设备。
  • 可访问你自己的 Sub2API 管理站点。
  • 首次安装时如系统没有 WebView2 Runtime,安装程序会下载 Microsoft WebView2 引导程序,因此需要网络。

从 GitHub Release 安装

  1. 打开本项目的 Releases 页面

  2. 按设备下载对应安装包,以及同一 Release 中的 SHA256SUMS.txt。v1.2.1 提供:

    • Sub2API-Batch-Tester_1.2.1_windows-x64-setup.exe
    • Sub2API-Batch-Tester_1.2.1_android-arm64-v8a.apk
    • LICENSE.txt
  3. 可选但推荐:校验下载文件的 SHA-256。

Get-FileHash .\Sub2API-Batch-Tester_1.2.1_windows-x64-setup.exe -Algorithm SHA256

输出的哈希值应与 SHA256SUMS.txt 中同名文件的值一致。

Android 可在支持 sha256sum 的终端中执行:

sha256sum Sub2API-Batch-Tester_1.2.1_android-arm64-v8a.apk

Windows

运行 .exe,按提示完成“当前用户”安装,再从开始菜单启动“Sub2API 批量连接测试”。

安装程序当前未进行代码签名。Windows 可能显示 SmartScreen 提示。请只从本项目的 GitHub Release 下载文件,并在继续前先核对文件名、发布页面和 SHA-256;无法确认来源时不要运行。

Android

在 Android 手机上打开或传输 .apk 后安装。首次通过浏览器、文件管理器或 ADB 安装时,系统可能要求授予该来源“安装未知应用”的权限;这是 Android 对直接安装 APK 的系统提示。Release APK 已使用发布签名,仍应在安装前核对 Release 页面和 SHA-256。

Android 批量测试需要应用保持在前台。切换到后台、锁屏、被系统终止或网络中断时,正在进行的任务可能不会继续完成;重新回到应用后请按实际结果重新测试。

卸载

Windows 可在“已安装的应用”中找到 Sub2API Batch Tester 后卸载;Android 可在系统应用设置中卸载。卸载不会替你修改 Sub2API 服务端的数据。

首次使用

1. 登录站点

在登录页填写:

  • 站点地址:Sub2API 根地址,例如 https://your-sub2api.example。如果复制的是包含 /api/v1 的地址,也可以直接粘贴,软件会自动规范化。生产环境建议使用 HTTPS;http:// 仅适合可信的本地测试环境。
  • 管理员邮箱:你自己站点的管理员邮箱。
  • 密码:对应管理员密码。
  • 记住登录:需要下次自动恢复会话时保持勾选;在公用电脑上建议取消勾选。

如果管理员账号启用了 TOTP,完成密码登录后会出现 6 位动态验证码输入框。

2. 等待账号与模型信息加载

登录成功后,账号表格会先显示。软件随后在后台读取账号可见的模型列表;模型选择器显示“正在获取模型…”时,表示模型元数据仍在加载。

这一步读取的是模型元数据,不会调用连接测试接口。模型加载完成后,默认模型 GPT-5.6 Terra 以及其他可见模型会出现在下拉列表中。

3. 选择测试对象

你可以:

  • 使用搜索框按账号名称、平台、类型或 ID 筛选;
  • 使用“全部测试结果 / 可用 / 配额耗尽 / 超时 / 待复测 / 错误”筛选最近一次测试的结果;
  • 勾选少数指定账号,然后点击“测试已选”;
  • 不勾选账号,直接点击“测试筛选结果”。

Windows 使用账号表格;Android 使用适合窄屏的账号卡片和“选择当前筛选结果”控件。两端共享同一选择、筛选、模型和批量测试逻辑,不需要横向滚动表格。

建议第一次使用时先选择少量账号,以确认站点、模型和网络环境都符合预期。

4. 选择模型和并发数

默认模型是 GPT-5.6 Terra,模型 ID 为 gpt-5.6-terra。打开模型下拉框时,软件会按当前已选账号或筛选结果刷新该范围的模型信息。

并发数可选 1、3、5:

并发数 适合的场景
1 排查单个账号,或担心上游限流时。
3 默认值,适合大多数日常检查。
5 速度更快,但会同时向更多账号发起测试请求。

连接测试是由 Sub2API 服务端执行的真实请求。请根据你的上游平台规则、限流策略和账号额度谨慎选择测试范围与并发数。

5. 查看或取消任务

测试开始后,表格会持续更新每个账号的状态和耗时。点击任务区域中的取消按钮,会停止尚未完成的账号测试;已经完成的结果会保留在当前窗口中。

6. 按结果筛选或删除账号

测试完成后,可以用工具栏中的“测试结果”下拉框集中查看不同结果:

  • 可用:最近一次测试成功的账号;
  • 配额耗尽:最近一次测试返回 usage_limit_reached 的账号;
  • 超时 / 待复测:未获得有效最终测试结论,且客户端已识别请求超时、服务端返回 HTTP 408/504,或可疑传输/流结束发生在接近 90 秒请求上限时的账号。它不表示账号失效。
  • 错误:最近一次测试有明确的非超时失败结论,例如模型不支持、认证错误或服务端业务错误。

“全部测试结果”不会隐藏账号;切换到上述任一具体结果时,未测试、排队中、测试中和已取消的账号不会显示。这些筛选只使用当前应用会话中的最新测试结果,关闭软件后结果不会保留。

如需删除账号,先勾选需要删除的行,再点击“删除已选 N”。随后会出现确认对话框,列出待删除账号的名称和 ID。请逐项确认无误后点击确认按钮。

  • 删除会真实调用你的 Sub2API 管理接口,不是只从软件表格中隐藏账号。
  • 若待删除清单包含“超时 / 待复测”账号,确认对话框会提示这些账号未获得有效测试结论;仍只保留本次一次确认,不会自动删除或增加额外确认步骤。
  • 删除后是否可恢复由 Sub2API 服务端实现决定;本软件不保存可用于恢复账号的数据,也不提供恢复入口。
  • 删除和连接测试不能同时进行。请等待当前批量测试完成或取消完成后,再发起删除。
  • 删除完成后,软件会重新同步账号列表,以反映服务端可能级联处理的关联账号。若部分请求未获成功响应,软件会显示详情;仍在同步后列表中的账号会保持选中,便于你检查后重试。

模型与测试范围

模型列表中的 x/y 不是成功率:

  • x:在成功读取模型元数据的账号中,返回该模型的账号数量;
  • y:本次查询的账号总数;
  • 未知:因网络、权限或接口错误而无法读取模型列表的账号数量。

因此,x/y 只说明模型元数据的可见性,不表示这些账号一定能成功完成连接测试。最终可用性以实际测试结果为准。

测试状态说明

状态 含义 是否最终状态
排队中 已加入本次批量任务,尚未开始请求。
测试中 Sub2API 正在对该账号执行连接测试。
可用 服务端返回测试成功。
配额耗尽 服务端错误中包含 usage_limit_reached,软件将它从普通失败中单独标出。
超时 / 待复测 没有获得有效最终测试结论,且已识别为请求超时、HTTP 408/504,或接近 90 秒上限的可疑传输/流结束。不能据此判断账号失效。
失败 明确的非超时失败,例如模型不支持、认证错误、非超时网络错误或服务端业务错误。
已取消 用户取消任务后,该账号没有完成测试。

账号表格中的“启用 / 停用”是 Sub2API 账号自身的管理状态,与上表中的测试结果是两回事。

工具栏的“测试结果”筛选只匹配账号的最近一次最终测试结果:

筛选项 会显示的账号 不会显示的账号
全部测试结果 所有账号
可用 状态为“可用”的账号 未测试、处理中、配额耗尽、错误、已取消
配额耗尽 状态为“配额耗尽”的账号 未测试、处理中、可用、错误、已取消
超时 / 待复测 状态为“超时 / 待复测”的账号 未测试、处理中、可用、配额耗尽、错误、已取消
错误 状态为“失败”的账号 未测试、处理中、可用、配额耗尽、超时 / 待复测、已取消

这里的“错误”不包含“超时 / 待复测”或“已取消”;“超时 / 待复测”表示未得到有效测试结论,“已取消”表示用户主动中止了本次任务。重新测试某个账号后,它会以新的结果参与筛选。

筛选与批量删除

批量删除用于从 Sub2API 当前账号列表中清理你确认不再需要的账号。建议先测试、按结果筛选,再手动勾选要删除的账号。软件不会因为一个账号显示“配额耗尽”或“错误”而自动删除它。

删除的实际语义由你所使用的 Sub2API 服务端决定。当前上游实现使用软删除;删除父账号时,服务端还可能级联处理关联的影子账号。因此,请不要把“删除”理解为本软件在本地隐藏一行数据,也不要假定所有站点都提供相同的恢复方式。

删除流程如下:

  1. 在表格中勾选一个或多个账号。
  2. 点击“删除已选 N”。
  3. 在确认对话框中核对账号名称和 ID。打开对话框后,本次待删除清单会固定,不会因随后切换筛选或选择而改变。
  4. 点击确认按钮,软件逐个向站点提交删除请求。
  5. 查看结果:软件会重新同步账号列表;显示服务端确认成功的数量,以及未获成功响应的账号 ID 和错误原因。最终以同步后的账号列表为准。

在请求进行期间,表格选择、刷新、模型加载和测试操作会暂停,以避免操作对象发生变化。确认对话框中的“取消”只会关闭对话框,不会删除任何账号。

测试逻辑与网站同步

软件调用的是当前支持的 Sub2API 管理测试接口:

POST /api/v1/admin/accounts/{account_id}/test

软件不是绕过 Sub2API 直接模拟请求,而是让你的 Sub2API 服务端执行测试,并读取其 SSE 流中的最终结果。

软件的批量测试结果保留在当前应用会话中,不会自动写成 Sub2API 网站上的历史测试记录。回到网站并刷新页面后,不会自动出现本软件中的“可用 / 超时 / 待复测 / 失败 / 配额耗尽”结果;如果需要在网站中再次确认,可以在网站中重新发起测试。

批量删除是另一项独立操作。只有在确认对话框中确认后,软件才会调用以下接口删除选中的账号:

DELETE /api/v1/admin/accounts/{account_id}

删除请求完成后,软件会重新同步 Sub2API 当前账号列表。这样,服务端处理的关联账号(例如随父账号级联处理的影子账号)也能在表格中得到反映。与测试结果不同,删除会直接改变站点数据;刷新网站页面后可以看到服务端返回的当前账号列表。账号后续是否可恢复取决于所使用的 Sub2API 服务端实现。

同一账号在不同时间、不同模型或不同上游网络状态下可能得到不同结果。请在比较网站与软件结果时确认测试模型和时间接近。

隐私与本地数据

本项目不包含遥测、账号云同步或内置第三方站点。应用运行时的业务请求只会发送到你在登录页填写的 Sub2API 站点。

数据 保存位置 说明
管理员密码 不保存 仅用于本次登录请求。
刷新令牌 Windows Credential Manager / Android 系统 Keystore 支持的安全存储 仅在启用“记住登录”且服务器返回刷新令牌时保存;不会写入普通设置、日志或前端持久化数据。
站点地址、邮箱、上次模型、并发设置 应用本地设置 用于下次填写和恢复偏好。
测试结果 当前应用内存 关闭应用后不会作为历史记录同步。
删除操作记录 不保存 软件只显示本次操作结果;账号是否被删除以 Sub2API 站点中的实际状态为准。

退出登录会删除保存的刷新令牌,但会保留站点地址和邮箱等普通偏好,方便重新登录。Android 端如果安全存储不可用,本次已完成的普通登录仍可继续使用,只会关闭“记住登录”并在界面中说明。

请不要在 GitHub Issue、Pull Request、截图、日志或讨论中提交真实站点地址、邮箱、账号名称、密码、访问令牌、刷新令牌或完整请求响应。

兼容性边界

软件当前依赖以下 Sub2API 管理接口:

GET  /api/v1/admin/accounts
GET  /api/v1/admin/accounts/{account_id}/models
POST /api/v1/admin/accounts/{account_id}/test
DELETE /api/v1/admin/accounts/{account_id}

已覆盖的非破坏性兼容情形包括:新增 JSON 字段、原始响应与常见数据包裹响应、缺少部分分页元数据、缺少模型显示名,以及 SSE 中新增或无关的非终态记录。

如果 Sub2API 移除了上述接口、修改了必须字段的语义,或改变了认证和测试协议,这属于破坏性更新,需要同步更新本项目。软件不承诺兼容所有未来版本。

Android 的最低支持版本是 API 28;发布前会在 API 28 模拟器上验证安装、冷启动和登录界面,并在当前 API 级别模拟器上做完整主流程验证。Android 厂商对后台执行、电池优化和网络切换的策略不同,因此 v1.2.1 明确只保证应用保持前台时的批量任务行为。

常见问题

登录失败怎么办?

确认站点地址可在浏览器中访问、管理员账号具备权限,并检查密码和 TOTP 验证码。地址可以包含 /api/v1,但不应包含无关的登录页面路径。

模型一直显示“正在获取模型…”怎么办?

先确认账号列表是否能正常加载,再检查站点网络、管理员权限和服务端日志。模型元数据请求会针对账号分别执行;部分账号失败时,其他账号仍可返回模型信息。

为什么模型旁显示 0/N?

模型加载期间不会显示 0/N。加载完成后,如果默认模型没有出现在某些账号的模型元数据中,才可能显示较低数量或 0/N。这不等同于连接测试的最终失败结果。

为什么测试结果和网站里手动测试不一样?

测试是实时的。上游服务、模型可用性、额度、网络和测试模型都可能在两次请求之间变化。请使用同一模型,并在接近的时间重新比较。

切换到“可用 / 配额耗尽 / 超时 / 待复测 / 错误”后,为什么没有看到某些账号?

这些筛选只显示最近一次测试已经得到对应最终结果的账号。未测试、排队中、测试中和已取消的账号会被隐藏。请选择“全部测试结果”查看所有账号,或重新测试这些账号后再筛选。

为什么账号显示“超时 / 待复测”?

这表示软件没有获得可用于判断账号状态的最终测试结论:请求可能在约 90 秒上限超时,服务端可能返回 HTTP 408/504,或接近该上限时连接/流提前结束。它不等同于账号失效,也不会进入“错误”筛选。请在网络、站点和上游状态稳定后重新测试,再决定是否处理该账号。

删除已选账号后还能恢复吗?

是否能够恢复取决于你所使用的 Sub2API 服务端。当前上游实现使用软删除,但本软件没有恢复入口,也不会保存恢复所需的数据。请查阅站点的管理功能或服务端文档,并在确认账号名称和 ID 无误后再提交删除。

删除时出现“部分账号未获成功响应”怎么办?

这表示其中一部分请求已收到成功响应,另一部分被服务端拒绝、超时或因网络等原因未收到成功响应。软件会重新同步当前账号列表;仍在列表中的账号会保持选中。查看错误详情、检查站点权限或网络后,可以重新尝试删除这些账号。

Windows SmartScreen 出现提示怎么办?

当前安装程序未代码签名。请先确认文件来自本项目 GitHub Release,并使用 SHA256SUMS.txt 校验哈希;无法确认来源时不要继续运行。

Android 提示无法安装 APK 怎么办?

确认下载的是 android-arm64-v8a.apk,而不是 Windows .exe;设备需要 Android 9 / API 28 或更高版本和 64 位 ARM 架构。确认 SHA-256 后,在系统提示时允许当前浏览器或文件管理器安装未知应用。若设备已安装来自不同签名证书的同包名应用,先卸载旧应用再安装。

Android 锁屏或切后台后测试为什么没有继续?

v1.2.1 不申请后台保活或通知权限。批量测试设计为前台任务,切后台、锁屏、系统省电策略或网络中断均可能使未完成测试不能继续;回到前台后请重新确认和测试未完成账号。

软件会自动更新吗?

目前没有自动更新功能。新版本会发布在 GitHub Releases 页面。

从源码构建

开发环境

  • Windows 10/11 x64
  • Node.js 20 LTS、22 LTS 或 24 及更高版本
  • Rust stable
  • Visual Studio Build Tools(C++ x64 工具链)
  • WebView2 Runtime
  • Android 开发还需要 JDK 17、Android SDK/NDK、Android API 28 和当前 API 级别的 system image,以及 ADB。完整命令见 Android 开发说明

命令

npm ci
npm run icons:generate
npm test
npm run check
npm run build
cargo fmt --manifest-path src-tauri/Cargo.toml --check
cargo clippy --manifest-path src-tauri/Cargo.toml --all-targets -- -D warnings
cargo test --manifest-path src-tauri/Cargo.toml
npm run build:installer

Tauri 的原始构建输出路径(文件名含空格):

src-tauri/target/release/bundle/nsis/Sub2API Batch Tester_1.2.1_x64-setup.exe

Android 调试构建示例:

npm exec tauri -- android build --debug --target x86_64 --apk

上传到 GitHub Release 时,发布资产统一命名为 Sub2API-Batch-Tester_1.2.1_windows-x64-setup.exeSub2API-Batch-Tester_1.2.1_android-arm64-v8a.apk;SHA256SUMS.txt 使用相同名称。

项目结构

src/                 Vue 界面、状态组合函数和前端单元测试
src-tauri/src/       Tauri 命令、会话、本地凭据、Sub2API API 客户端和批量队列
src-tauri/icon-source/ 已确认主图、Android 前景/背景和图标生成清单
src-tauri/gen/android/ Android 原生工程、系统栏与 Keystore 初始化桥接
src-tauri/tests/     Rust 集成测试
docs/                面向维护者的架构说明
.github/             CI 与 Issue 模板

更多实现边界见 架构说明Android 开发说明

贡献、许可证与上游项目

与 Sub2API 的关系

本项目是独立的第三方桌面客户端,不是 Sub2API 官方产品,也不表示获得 Sub2API 维护者的认可或背书。

本项目仅通过 HTTP 管理接口与 Wei-Shaw/sub2api 交互,不包含、链接、修改或分发 Sub2API 的源代码或二进制文件。

截至本版本发布时,Sub2API 上游项目采用 GNU Lesser General Public License v3.0(LGPL-3.0)。该许可证适用于 Sub2API 本身;本项目按 MIT License 发布。使用本工具时,也请遵守上游项目和所使用平台的规则。

About

Windows and Android client for batch testing Sub2API account connections.

Topics

Resources

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages