# ApiManager **Repository Path**: mfcom/api-manager ## Basic Information - **Project Name**: ApiManager - **Description**: 管理API密钥的wpf程序 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-28 - **Last Updated**: 2026-06-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ApiManager [English](README_en.md) API 密钥管理与批量测试桌面工具,支持 OpenAI 兼容接口。 ## 功能特性 - **分组管理** — 按接口地址和模型对密钥进行分组,支持增删改查,右键菜单编辑/删除分组 - **批量测试** — 一键测试分组内或全部密钥,20 并发,30s 超时,显示进度并支持取消 - **智能分发** — 粘贴未知密钥,自动探测各分组接口,识别密钥归属并归类 - **统计仪表盘** — 可视化展示累计添加/剔除/当前总数/可用数,柱状图与环形图 - **密钥导入** — 支持明文和 Base64 编码,自动解码、去重、智能清理无效字符(中文/特殊符号等) - **导出/复制** — 按分组导出为 txt 文件或复制到剪贴板 - **一键剔除** — 批量移除测试失败的密钥 - **剔除管理(剔除标签页)** - 查看所有已剔除密钥及其错误原因 - 单条重测 / 全部重测,测试失败时自动更新错误信息 - 可配置跳过重测的错误类型(多选下拉,选择持久化到本地 JSON 文件) - 自动重测(可设置间隔秒数),自动跳过已配置的错误类型 - 重测成功后自动恢复到原分组(支持按分组 ID 或分组名称匹配) - 清除所有剔除记录 - **获取模型** — 双击"模型:"标签自动获取接口的模型列表并选择 - **审计日志** — 添加和移除操作记录到数据库;运行异常写入本地日志文件 - **深色主题** — 基于 OKLCH 色彩空间的自定义暗色 UI ## 技术栈 | 组件 | 技术 | |---|---| | 框架 | .NET 10 (Preview) + WPF | | 语言 | C# | | 数据库 | MySQL (MySqlConnector) | | 色彩 | Wacton.Unicolour (OKLCH) | | 字体 | 微软雅黑 / Cascadia Code | ## 快速开始 ### 1. 克隆项目 ```bash git clone https://gitee.com/mfcom/api-manager.git cd api-manager ``` ### 2. 配置数据库 复制示例配置文件并填入你的 MySQL 连接信息: ```bash cp appsettings.example.json appsettings.json ``` 编辑 `appsettings.json`: ```json { "ConnectionString": "Server=你的服务器;Port=3306;Database=api_manager;Uid=用户名;Pwd=密码;Min Pool Size=1;Charset=utf8mb4;" } ``` 需要提前创建数据库本身,例如 `api_manager`。应用启动时会检查所需表是否存在,只创建缺失的表/列/索引/约束,不会删除、重建或清空已有表。 ### 3. 构建运行 ```bash dotnet build ApiManager.csproj dotnet run --project ApiManager.csproj ``` ### 4. 运行测试 ```bash dotnet test ApiManager.Tests/ApiManager.Tests.csproj ``` ## 数据库配置 应用使用以下 5 张表: | 表名 | 用途 | |---|---| | `groups` | 密钥分组(名称、接口地址、模型) | | `keys` | 存储各分组的 API 密钥 | | `test_results` | 测试结果(状态、延迟、错误) | | `add_events` | 密钥添加审计日志 | | `removed_keys` | 密钥移除审计日志(含原因) | `keys.api_key` 会有意以明文保存,便于直接连接 MySQL 查看和复制密钥。 ## 日志 运行日志写入: ```text %LOCALAPPDATA%/ApiManager/logs/api-manager-yyyyMMdd.log ``` 如果系统无法获取本地应用数据目录,则回退到程序目录下的 `logs/`。 ## 发布 生成单文件自包含 exe(无需安装 .NET 运行时): ```bash dotnet publish ApiManager.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true ``` 产物位于 `bin/Release/net10.0-windows/win-x64/publish/`,约 112MB。 ## 项目结构 ```text ApiManager/ ├── ApiManager.csproj # 项目文件 ├── ApiManager.slnx # 解决方案 ├── App.xaml / App.xaml.cs # 应用入口 ├── appsettings.example.json # 配置模板 ├── Controls/ │ ├── KeyListItem.xaml # 密钥行控件 │ └── PlaceholderService.cs # 输入框占位符 ├── Models/ │ └── RemovedKeyInfo.cs # 剔除密钥信息模型 ├── Services/ │ ├── AppLogger.cs # 本地日志 │ ├── DatabaseService.cs # MySQL 数据库操作与安全建表 │ └── KeyTestService.cs # API 密钥测试服务 ├── Utils/ │ ├── DesignColors.cs # 深色主题配色 (OKLCH) │ └── KeyNormalizer.cs # 密钥格式化/解码 └── Windows/ ├── MainWindow.xaml # 主窗口 └── GroupDialog.xaml # 分组编辑对话框 ``` 测试项目位于仓库内的 `ApiManager.Tests/`。 ## 许可证 MIT