[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-76342":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":9,"pushedAt":9,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":15,"starSnapshotCount":15,"syncStatus":13,"lastSyncTime":29,"discoverSource":30},76342,"CPA-Helper","walkingddd\u002FCPA-Helper","walkingddd","CPA-Helper is a local, self-hosted multi-user management panel designed for CLIProxyAPI users. It features independent API keys per user, isolated usage statistics, detailed request tracking, model pricing maintenance, available model querying, administrator account management, and Codex account inspection.",null,"Go",281,27,2,3,0,1,9,194,7,4.34,"MIT License",false,"main",true,[],"2026-06-12 02:03:41","\u003Cdiv align=\"center\">\n  \u003Cimg src=\"frontend\u002Fpublic\u002Flogo.png\" alt=\"CPA-Helper Logo\" width=\"104\" height=\"104\" \u002F>\n  \u003Ch1>CPA-Helper\u003C\u002Fh1>\n  \u003Cp>\u003Cstrong>面向 CLIProxyAPI 的本地自托管多用户管理面板\u003C\u002Fstrong>\u003C\u002Fp>\n  \u003Cp>用量统计 · 请求追踪 · 用户权限调整 · API 密钥管理 · 模型价格维护 · Codex 凭证巡检\u003C\u002Fp>\n  \u003Cp>\n    \u003Ca href=\"README.en.md\">English\u003C\u002Fa>\n    \u003Cspan> · \u003C\u002Fspan>\n    \u003Cstrong>中文\u003C\u002Fstrong>\n  \u003C\u002Fp>\n  \u003Cp>\n    \u003Ca href=\"https:\u002F\u002Fgo.dev\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGo-1.25+-00ADD8?logo=go&logoColor=white\" alt=\"Go 1.25+\" \u002F>\u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fvuejs.org\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FVue-3.5+-42b883?logo=vuedotjs&logoColor=white\" alt=\"Vue 3.5+\" \u002F>\u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fvitejs.dev\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FVite-5.4+-646cff?logo=vite&logoColor=white\" alt=\"Vite 5.4+\" \u002F>\u003C\u002Fa>\n    \u003Ca href=\"LICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg\" alt=\"MIT License\" \u002F>\u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Flinux.do\">\u003Cimg src=\"https:\u002F\u002Fshorturl.at\u002FggSqS\" alt=\"LINUX DO\" \u002F>\u003C\u002Fa>\n  \u003C\u002Fp>\n\u003C\u002Fdiv>\n\n---\n\nCPA-Helper 是面向 CLIProxyAPI \u002F CPA 用户的本地自托管多用户管理面板，用于集中管理用量统计、请求明细、用户账号、API Key、模型价格、可用模型以及 Codex auth file 巡检维护。\n\n它支持按用户隔离 API Key 与用量数据：每个用户都可以独立创建和管理自己的 Key，并查看属于自己的请求、Token 与费用统计；管理员可以创建或禁用普通用户账号，查看全局用量和用户维度明细，适合个人、小团队或共享 CPA 服务的内网场景。项目采用 Go + SQLite + Vue 3 + Vite 构建，默认将运行数据写入仓库根目录的 `data\u002F` 目录。\n\n需要说明的是，Agent 发起的模型请求仍由 Agent 直接发送到 CPA，CPA-Helper 不代理或中转这些请求；它只调用 CPA 的 usage 队列、API KEY 创建与删除、凭证管理等接口，用于用量查看、密钥管理和凭证维护。\n\n## 目录\n\n- [项目特点](#项目特点)\n- [截图预览](#截图预览)\n- [技术栈](#技术栈)\n- [目录结构](#目录结构)\n- [环境要求](#环境要求)\n- [快速开始](#快速开始)\n- [配置说明](#配置说明)\n- [开发与检查](#开发与检查)\n- [贡献](#贡献)\n- [致谢](#致谢)\n- [许可证](#许可证)\n\n## 项目特点\n\n- **用量统计与费用估算**：按全局、用户和当前账号视角统计请求数、Token、成功率、延迟、模型分布和费用，并提供趋势图、排行榜和筛选视图。\n- **请求明细追踪**：管理员可按时间、用户、API Key 描述、服务商、模型、接口和失败状态筛选全局请求；普通用户只查看自己账号下的请求详情。\n- **用户与权限管理**：支持管理员和普通用户视图，管理员可创建、禁用普通用户账号，并维护用户昵称、登录账号、密码和角色。\n- **API Key 生命周期管理**：每个用户都可以独立创建、编辑、复制和删除自己的 API Key，并同步到 CPA；用量会按用户维度独立统计和展示。\n- **模型价格维护**：按 USD \u002F 百万 Token 维护输入、输出、缓存、思考价格，历史费用按当前价格实时重算。\n- **可用模型聚合查询**：通过当前账号绑定的 CPA API Key 查询可用模型，并关联本地价格信息。\n- **CLIProxyAPI \u002F CPAMC 集成**：配置服务地址、管理密钥、usage 队列和本地采集参数，将远端 usage 事件落入本地 SQLite。\n- **Codex auth file 巡检**：支持 Cron 调度、额度阈值、只检查不修改、并发 Worker、优先级规则、账号启停和删除维护。\n- **本地优先的数据策略**：默认使用 SQLite 和 `data\u002F` 目录，支持通过 `CPA_HELPER_DATA_DIR` 覆盖运行数据路径。\n- **现代化管理界面**：基于 Vue 3、Naive UI、ECharts 和 lucide 图标，支持浅色、暗色和跟随系统主题。\n\n## 截图预览\n\n### 管理端\n\n**历史用量**\n\n管理员可按时间、用户、模型和接口查看全局请求量、Token、费用、趋势和分布。\n\n![历史用量](pictures\u002F历史用量.png)\n\n**请求明细**\n\n管理员可筛选全局请求事件，普通用户可查看自己账号下的请求明细；详情以抽屉方式呈现。\n\n![请求明细](pictures\u002F请求明细.png)\n\n**用户管理**\n\n管理员可创建或禁用普通用户账号，维护昵称、角色、启停状态，并查看用户维度的今日用量概览。\n\n![用户管理](pictures\u002F用户管理.png)\n\n**模型价格**\n\n维护模型价格并按当前价格实时估算历史请求费用。\n\n![模型价格](pictures\u002F模型价格.png)\n\n**系统设置**\n\n集中配置 CLIProxyAPI \u002F CPAMC 地址、管理密钥、本地采集和轮询参数。\n\n![系统设置](pictures\u002F系统设置.png)\n\n### 账号巡检\n\n**巡检设置**\n\n配置 Codex auth file 巡检的 Cron 调度、额度阈值、超时、重试、Worker 数和优先级规则。\n\n![巡检设置](pictures\u002F巡检设置.png)\n\n**账号状态**\n\n查看 auth file 健康状态、额度窗口、账号类型、优先级和最近巡检维护结果。\n\n![账号状态](pictures\u002F账号状态.png)\n\n### 个人视图\n\n**我的账户**\n\n每个用户可查看自己的请求量、Token、费用、趋势和模型使用情况。\n\n![我的账户](pictures\u002F我的账户.png)\n\n**我的明细**\n\n每个用户可查看自己账号下的请求事件和详情，不与其他用户混在一起。\n\n![我的明细](pictures\u002F我的明细.png)\n\n**API 密钥**\n\n当前账号可独立创建和管理自己的 API Key，并查看今日请求、Token 和费用概览。\n\n![API密钥](pictures\u002FAPI密钥.png)\n\n**可用模型**\n\n通过绑定的 CPA API Key 查询可用模型，并展示来源 Key 与价格信息。\n\n![可用模型](pictures\u002F可用模型.png)\n\n**账户设置**\n\n查看当前登录账号并更新密码。\n\n![账户设置](pictures\u002F账户设置.png)\n\n## 技术栈\n\n- **后端**：Go 标准库 HTTP、SQLite、robfig\u002Fcron、modernc.org\u002Fsqlite。\n- **前端**：Vue 3、Vite、TypeScript、Vue Router、Naive UI、ECharts、lucide-vue-next。\n- **运行数据**：默认写入根目录 `data\u002F`，SQLite 数据库位于 `data\u002Fdb\u002Fcpa_helper.sqlite3`。\n- **接口风格**：后端统一提供 `\u002Fapi\u002F*` 接口，前端开发服务器通过 Vite proxy 转发到 `http:\u002F\u002F127.0.0.1:18317`。\n\n## 目录结构\n\n```text\nCPA-Helper\u002F\n├── backend\u002F                 # Go 后端项目\n│   ├── cmd\u002Fcpa-helper\u002F      # 应用入口\n│   ├── internal\u002Fapp\u002F        # 应用组合、路由、业务处理、数据库访问\n│   ├── internal\u002Fhttpserver\u002F # HTTP server 生命周期与优雅退出\n│   ├── internal\u002Fplatform\u002F   # 外部系统基础设施适配\n│   ├── internal\u002Fsecurity\u002F   # 密码、Session、API Key 安全工具\n│   ├── migrations\u002F          # 内嵌 goose SQLite 迁移\n│   ├── go.mod\n│   └── go.sum\n├── frontend\u002F                # Vue + Vite 前端项目\n│   ├── src\u002F                 # 应用、功能模块、共享组件与样式\n│   ├── public\u002F              # 静态资源\n│   └── package.json         # 前端依赖与脚本\n├── pictures\u002F                # README 截图素材\n├── docs\u002F                    # 参考文档\n├── data\u002F                    # 运行时数据目录，默认不提交\n├── VERSION                  # 应用版本号，Docker 标签和前端显示共用\n├── README.md\n├── README.en.md\n└── LICENSE\n```\n\n## 环境要求\n\n- Go 1.25 或更高版本。\n- Node.js 20 或更高版本。\n- npm。\n- 一个可访问的 CLIProxyAPI \u002F CPA 服务。默认地址为 `http:\u002F\u002F127.0.0.1:8317`。\n\n## 快速开始\n\n### 1. Docker Compose 部署（推荐）\n\n在部署目录创建 `docker-compose.yml`：\n\n```yaml\nservices:\n  cpa-helper:\n    image: walkingd\u002Fcpa-helper:latest\n    container_name: cpa-helper\n    restart: always\n    # 如需改为bridge,需将容器内部端口 18317 映射至主机\n    # 程序默认访问地址为 `http:\u002F\u002F127.0.0.1:18317`\n    network_mode: host\n    environment:\n      - TZ=Asia\u002FShanghai\n    volumes:\n      - .\u002Fdata:\u002Fapp\u002Fdata\n```\n\n然后直接拉取镜像并启动：\n\n```powershell\ndocker compose pull\ndocker compose up -d\n```\n\n访问：\n\n```text\nhttp:\u002F\u002F127.0.0.1:18317\n```\n\n首次访问时，系统会引导创建第一个管理员账号。\n\n### 2. 克隆项目\n\n```powershell\ngit clone \u003Cyour-repo-url>\ncd CPA-Helper\n```\n\n### 3. 启动后端\n\n所有后端命令都在 `backend\u002F` 目录运行：\n\n```powershell\ncd backend\ngo mod download\ngo run .\u002Fcmd\u002Fcpa-helper\n```\n\n如需本地编译二进制，输出到已忽略的 `backend\u002Fbin\u002F`：\n\n```powershell\ngo build -o bin\u002Fcpa-helper.exe .\u002Fcmd\u002Fcpa-helper\n```\n\n后端健康检查：\n\n```powershell\ncurl http:\u002F\u002F127.0.0.1:18317\u002Fapi\u002Fhealth\n```\n\n预期返回：\n\n```json\n{\"status\":\"ok\"}\n```\n\n### 4. 启动前端开发服务器\n\n新开一个终端，在 `frontend\u002F` 目录运行：\n\n```powershell\ncd frontend\nnpm install\nnpm run dev\n```\n\n如果本机已经有正式后端占用 `18317`，可以把测试后端启动到其他端口，并让 Vite 代理到测试后端：\n\n```powershell\n$env:CPA_HELPER_PROXY_TARGET=\"http:\u002F\u002F127.0.0.1:18318\"\nnpm run dev -- --host 127.0.0.1 --port 5174 --strictPort\n```\n\n打开浏览器访问：\n\n```text\nhttp:\u002F\u002F127.0.0.1:5173\n```\n\n首次访问时，系统会引导创建第一个管理员账号。\n\n### 5. 单服务预览或部署\n\n如果希望由 Go 后端托管前端静态文件，先构建前端：\n\n```powershell\ncd frontend\nnpm install\nnpm run build\n```\n\n然后启动后端：\n\n```powershell\ncd ..\u002Fbackend\ngo run .\u002Fcmd\u002Fcpa-helper\n```\n\n访问：\n\n```text\nhttp:\u002F\u002F127.0.0.1:18317\n```\n\n后端会在 `frontend\u002Fdist` 存在时托管构建后的单页应用。\n\n## 配置说明\n\n### CLIProxyAPI \u002F CPAMC\n\n进入“系统设置”页面后配置：\n\n- **CLIProxyAPI \u002F CPAMC 地址**：默认 `http:\u002F\u002F127.0.0.1:8317`。\n- **管理密钥**：用于访问 CLIProxyAPI Management API。\n- **开启本地采集**：启用后，CPA-Helper 会从 usage 队列读取事件并写入本地数据库。\n- **批量读取数、轮询间隔、重试间隔**：控制本地采集任务的吞吐与失败重试。\n\n### 数据目录\n\n默认运行数据目录：\n\n```text\ndata\u002F\n```\n\n默认 SQLite 数据库：\n\n```text\ndata\u002Fdb\u002Fcpa_helper.sqlite3\n```\n\n可以通过环境变量覆盖运行数据目录：\n\n```powershell\n$env:CPA_HELPER_DATA_DIR=\"\u003Cyour-data-dir>\"\n```\n\n然后再启动后端服务。\n\n### 账号巡检\n\n“巡检设置”页面用于维护 Codex auth file：\n\n- Cron 表达式决定自动巡检周期。\n- 额度阈值决定何时降级或恢复账号优先级。\n- “只检查不修改”开启时只记录计划操作，不会禁用账号或调整优先级。\n- 优先级规则按账号类型控制默认调度权重。\n- “账号状态”页面可查看健康、额度、最近巡检、启停状态和手动优先级。\n\n## 开发与检查\n\n### 本地隔离测试\n\n如果本机已经运行正式服务，测试时不要复用正式端口和真实数据目录。建议后端使用临时端口和临时数据目录：\n\n```powershell\ncd backend\n$env:CPA_HELPER_ADDR=\":18318\"\n$env:CPA_HELPER_DATA_DIR=\"$env:TEMP\\cpa-helper-test-data\"\ngo run .\u002Fcmd\u002Fcpa-helper\n```\n\n前端测试服务使用独立端口，并把 Vite 代理指向测试后端：\n\n```powershell\ncd frontend\n$env:CPA_HELPER_PROXY_TARGET=\"http:\u002F\u002F127.0.0.1:18318\"\nnpm run dev -- --host 127.0.0.1 --port 5174 --strictPort\n```\n\n自动化验证默认不要使用真实 CPA 地址和真实管理密钥。涉及自动巡检、账号启停、优先级调整或删除操作时，应使用假的 CLIProxyAPI \u002F CPAMC 测试替身，并优先开启“只检查不修改”；只有明确确认风险后才连接真实 CPA。\n\n### 版本管理\n\n项目版本统一写在根目录 `VERSION` 文件中，例如 `0.1.0`。GitHub Actions 会读取它并推送 `walkingd\u002Fcpa-helper:v0.1.0` 和 `walkingd\u002Fcpa-helper:latest`；前端构建也会读取同一个文件并显示为 `v0.1.0`。\n\n后端：\n\n```powershell\ncd backend\ngo fmt .\u002F...\ngo test .\u002F...\n```\n\n前端：\n\n```powershell\ncd frontend\nnpm run lint\nnpm run build\n```\n\n数据库结构：\n\n```powershell\ncd backend\ngo test .\u002F...\n```\n\nGo 后端启动时会自动运行内嵌的 goose SQLite 迁移；迁移文件位于 `backend\u002Fmigrations\u002F`，不再需要 Alembic。\nDocker 升级时只需要继续挂载旧的 `data\u002Fdb\u002Fcpa_helper.sqlite3`；迁移逻辑已经随 Go 二进制打包，不会读取旧源码目录。\n\n## 贡献\n\n欢迎提交 Issue 和 Pull Request。建议在提交前完成以下检查：\n\n- 后端通过 `go fmt .\u002F...` 和 `go test .\u002F...`。\n- 前端通过 `npm run lint` 和 `npm run build`。\n- 涉及关系型数据库结构变化时，同步新增或更新 `backend\u002Fmigrations\u002F` 下的 goose 迁移。\n- 不提交本地运行数据、虚拟环境、构建产物或密钥。\n\n## 致谢\n\n感谢 [Linux.do](https:\u002F\u002Flinux.do\u002F) 站点及其社区为项目开发与交流提供支持与启发。\n\n## 许可证\n\n本项目基于 [MIT License](LICENSE) 开源。\n","CPA-Helper 是一个面向 CLIProxyAPI 用户的本地自托管多用户管理面板，旨在帮助用户集中管理和监控 API Key、用量统计、请求明细、模型价格以及 Codex 凭证。其核心功能包括独立的用户 API Key 管理、详细的用量隔离与统计、全面的请求追踪能力、灵活的用户权限设置和模型价格维护。此外，它还支持管理员进行全局用量查看及用户账号管控，并能够执行 Codex 账号巡检。项目基于 Go 语言开发，前端采用 Vue 3 和 Vite 构建，适合个人开发者、小团队或需要共享 CPA 服务的内网环境使用。","2026-06-11 03:54:58","CREATED_QUERY"]