Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
server
command
github.com/is7qin/c3api 入口:配置 → DB/ent → 各模块装配 → 优雅退出。
|
github.com/is7qin/c3api 入口:配置 → DB/ent → 各模块装配 → 优雅退出。 |
|
internal
|
|
|
auth
Package auth 承载用户认证体系:bcrypt 密码哈希(与 sub2api 同参数)、 JWT 签发/验证(HS256,TTL 24h)与 RBAC 中间件(/user 组 RequireJWT + 快照用户状态校验;/admin = 静态 token OR platform_admin JWT)。
|
Package auth 承载用户认证体系:bcrypt 密码哈希(与 sub2api 同参数)、 JWT 签发/验证(HS256,TTL 24h)与 RBAC 中间件(/user 组 RequireJWT + 快照用户状态校验;/admin = 静态 token OR platform_admin JWT)。 |
|
billing
Package billing 计费核心:service_tier 归一化 + 价格矩阵纯函数 + 余额快照 + 批量扣费 flusher(T2/T3)。
|
Package billing 计费核心:service_tier 归一化 + 价格矩阵纯函数 + 余额快照 + 批量扣费 flusher(T2/T3)。 |
|
credential
Package credential 是账号凭据抽象层:类型注册表 + Provider 分发,为后续 多种号池类型(codex oauth、codex personal_access_token、claude code 等) 打地基。
|
Package credential 是账号凭据抽象层:类型注册表 + Provider 分发,为后续 多种号池类型(codex oauth、codex personal_access_token、claude code 等) 打地基。 |
|
discovery
Package discovery Redis 实例发现(spec 2026-08-25-redis-instance-discovery-design, 基建面见 2026-08-25-redis-foundation-design):单 ZSET 心跳成员协议替换手工 cluster.instances 设置——实例心跳注册、活体计数即多实例预算分摊基数 N。
|
Package discovery Redis 实例发现(spec 2026-08-25-redis-instance-discovery-design, 基建面见 2026-08-25-redis-foundation-design):单 ZSET 心跳成员协议替换手工 cluster.instances 设置——实例心跳注册、活体计数即多实例预算分摊基数 N。 |
|
domain
SPDX-License-Identifier: AGPL-3.0-or-later Dual-licensed: AGPL-3.0-or-later (open source) or commercial license (closed-source deployment exemption); see LICENSE and LICENSE.commercial.
|
SPDX-License-Identifier: AGPL-3.0-or-later Dual-licensed: AGPL-3.0-or-later (open source) or commercial license (closed-source deployment exemption); see LICENSE and LICENSE.commercial. |
|
handler
Package handler provides primitives to interact with the openapi HTTP API.
|
Package handler provides primitives to interact with the openapi HTTP API. |
|
handler/httpface
Package httpface 管理面/用户面 HTTP 边界:响应书写(WriteJSON/WriteErr/ WriteServiceErr,service 错误→HTTP 状态映射表唯一一份)+ 请求参数边界 (ClampLimit——两面包共享的分页上限钳制)。
|
Package httpface 管理面/用户面 HTTP 边界:响应书写(WriteJSON/WriteErr/ WriteServiceErr,service 错误→HTTP 状态映射表唯一一份)+ 请求参数边界 (ClampLimit——两面包共享的分页上限钳制)。 |
|
handler/user
Package user provides primitives to interact with the openapi HTTP API.
|
Package user provides primitives to interact with the openapi HTTP API. |
|
invalidate
Package invalidate 管理面变更的去抖定向失效(Phase 6 O2):
|
Package invalidate 管理面变更的去抖定向失效(Phase 6 O2): |
|
notify
Package notify 多实例变更广播(#14 T1 基础层):PG LISTEN/NOTIFY 定向刷新。
|
Package notify 多实例变更广播(#14 T1 基础层):PG LISTEN/NOTIFY 定向刷新。 |
|
protoconv
Package protoconv 提供网关级协议转换(W5,只补差语义):客户端协议请求体 → 模板协议请求体(ConvertRequest)、模板协议响应 → 客户端协议响应 (ConvertResponse 非流式 JSON / StreamMapper 流式 SSE 事件映射)。
|
Package protoconv 提供网关级协议转换(W5,只补差语义):客户端协议请求体 → 模板协议请求体(ConvertRequest)、模板协议响应 → 客户端协议响应 (ConvertResponse 非流式 JSON / StreamMapper 流式 SSE 事件映射)。 |
|
proxy
Package proxy 是 AI 请求热路径:分组 key 鉴权 → 调度器选号 → SDK 转发 → 用量采集。
|
Package proxy 是 AI 请求热路径:分组 key 鉴权 → 调度器选号 → SDK 转发 → 用量采集。 |
|
repository
SPDX-License-Identifier: AGPL-3.0-or-later Dual-licensed: AGPL-3.0-or-later (open source) or commercial license (closed-source deployment exemption); see LICENSE and LICENSE.commercial.
|
SPDX-License-Identifier: AGPL-3.0-or-later Dual-licensed: AGPL-3.0-or-later (open source) or commercial license (closed-source deployment exemption); see LICENSE and LICENSE.commercial. |
|
rule
Package rule 实现规则引擎(可编排状态管理):事件 → 有界 channel → 规则 worker (priority 首中匹配)→ 状态/冷却/权重更新。
|
Package rule 实现规则引擎(可编排状态管理):事件 → 有界 channel → 规则 worker (priority 首中匹配)→ 状态/冷却/权重更新。 |
|
scheduler
Package scheduler 实现内存优先的账号调度:规则驱动的状态管理(internal/rule 引擎 事件投递 + apply 回调)、选号(格式硬过滤 + 模型硬白名单 + 全模型账号 tier2 兜底 + 预生成加权轮询序列)、并发槽、快照缓存与异步状态回写。
|
Package scheduler 实现内存优先的账号调度:规则驱动的状态管理(internal/rule 引擎 事件投递 + apply 回调)、选号(格式硬过滤 + 模型硬白名单 + 全模型账号 tier2 兜底 + 预生成加权轮询序列)、并发槽、快照缓存与异步状态回写。 |
|
sdkbridge
Package sdkbridge 是 SDK 适配层与网关之间的契约面(T1,零 SDK 依赖——SDK 调用从 T2 起):统一失效回调 + 失效处理链装配(写失效字段 / 调度摘除 / 审计)、网关侧信封错误(P2-1)与凭据传递形态(AccountCredential 派生在 internal/domain)。
|
Package sdkbridge 是 SDK 适配层与网关之间的契约面(T1,零 SDK 依赖——SDK 调用从 T2 起):统一失效回调 + 失效处理链装配(写失效字段 / 调度摘除 / 审计)、网关侧信封错误(P2-1)与凭据传递形态(AccountCredential 派生在 internal/domain)。 |
|
server
Package server 装配 chi 路由:/api/admin/*(静态 token OR platform_admin JWT)+ /api/user/*(JWT 保护,register/login 公开)+ 三个 AI 端点 + /healthz。
|
Package server 装配 chi 路由:/api/admin/*(静态 token OR platform_admin JWT)+ /api/user/*(JWT 保护,register/login 公开)+ 三个 AI 端点 + /healthz。 |
|
service
SPDX-License-Identifier: AGPL-3.0-or-later Dual-licensed: AGPL-3.0-or-later (open source) or commercial license (closed-source deployment exemption); see LICENSE and LICENSE.commercial.
|
SPDX-License-Identifier: AGPL-3.0-or-later Dual-licensed: AGPL-3.0-or-later (open source) or commercial license (closed-source deployment exemption); see LICENSE and LICENSE.commercial. |
|
service/errors
Package serviceerr 定义 service 层错误哨兵(单一真相)。
|
Package serviceerr 定义 service 层错误哨兵(单一真相)。 |
|
snapshot
Package snapshot 统一网关各内存快照的生命周期:启动就绪(ReloadAll 全量首刷) + NOTIFY 事件分发(按 scope 精确重载)+ 状态可观测(Status)。
|
Package snapshot 统一网关各内存快照的生命周期:启动就绪(ReloadAll 全量首刷) + NOTIFY 事件分发(按 scope 精确重载)+ 状态可观测(Status)。 |
|
usage
归属说明:retention worker 放 usage 包——原 Recorder.janitorLoop(逐行 DELETE)已删除,保留策略整体移交本 worker;保留天数与 Recorder 配置同源 (config usage.log_retention_days),故与 Recorder 同包管理。
|
归属说明:retention worker 放 usage 包——原 Recorder.janitorLoop(逐行 DELETE)已删除,保留策略整体移交本 worker;保留天数与 Recorder 配置同源 (config usage.log_retention_days),故与 Recorder 同包管理。 |
|
verification
Package verification 邮箱验证码的 Redis 存储(spec 2026-08-25-emailcode-redis-migration §2):一个 (purpose,email) 一个 HASH,四命令直映 service.EmailCodeStore,零 Lua。
|
Package verification 邮箱验证码的 Redis 存储(spec 2026-08-25-emailcode-redis-migration §2):一个 (purpose,email) 一个 HASH,四命令直映 service.EmailCodeStore,零 Lua。 |
|
worker
SPDX-License-Identifier: AGPL-3.0-or-later
|
SPDX-License-Identifier: AGPL-3.0-or-later |
|
pkg
|
|
|
aiclient
Package aiclient 是 openai/anthropic 官方 SDK 的唯一引用点:客户端懒构建 + 鉴权头注入 + 非流式超时策略。
|
Package aiclient 是 openai/anthropic 官方 SDK 的唯一引用点:客户端懒构建 + 鉴权头注入 + 非流式超时策略。 |
|
httpx
Package httpx 构造共享的上游 HTTP 客户端(规格 §10.2 连接层参数)。
|
Package httpx 构造共享的上游 HTTP 客户端(规格 §10.2 连接层参数)。 |
|
logx
Package logx 是 zap 的薄包装:业务代码只允许经本包取日志,禁止直接 import zap。
|
Package logx 是 zap 的薄包装:业务代码只允许经本包取日志,禁止直接 import zap。 |
|
redisx
Package redisx 全仓唯一 Redis 客户端构造点(spec 2026-08-25-redis-foundation-design §2.2):cmd/server/main.go 调 Open,产物 *redis.Client 以构造注入分发。
|
Package redisx 全仓唯一 Redis 客户端构造点(spec 2026-08-25-redis-foundation-design §2.2):cmd/server/main.go 调 Open,产物 *redis.Client 以构造注入分发。 |
|
sserelay
Package sserelay 提供原始字节级 SSE relay:从 io.Reader 增量读取 SSE 帧, 原样转发给 http.ResponseWriter,自适应批量 Flush,并以 Observer 旁路暴露 事件信息(仅用于 usage 提取,不参与转发决策)。
|
Package sserelay 提供原始字节级 SSE relay:从 io.Reader 增量读取 SSE 帧, 原样转发给 http.ResponseWriter,自适应批量 Flush,并以 Observer 旁路暴露 事件信息(仅用于 usage 提取,不参与转发决策)。 |
|
tools
|
|
|
fakeupstream
command
fakeupstream 模拟 OpenAI chat/completions 上游:支持流式(chunks 个事件 + usage + [DONE])。
|
fakeupstream 模拟 OpenAI chat/completions 上游:支持流式(chunks 个事件 + usage + [DONE])。 |
|
loadtest
command
loadtest 对网关打压测:固定并发 goroutine 持续请求,支持流式首字节和非流式完整响应延迟。
|
loadtest 对网关打压测:固定并发 goroutine 持续请求,支持流式首字节和非流式完整响应延迟。 |
|
loadtest/setup
command
setup 构造多租户压测数据(Phase 3a 数据模型 + Phase 5 计费字段): 模板(三格式 × 随机模型池)→ 公开组 → 账号(分散模板/组/上游)→ 用户(可选 余额/并发区间)→ 逐个登录建 key(可选多 key/并发/额度区间),key 明文写文件 (loadtest -keys 用)。
|
setup 构造多租户压测数据(Phase 3a 数据模型 + Phase 5 计费字段): 模板(三格式 × 随机模型池)→ 公开组 → 账号(分散模板/组/上游)→ 用户(可选 余额/并发区间)→ 逐个登录建 key(可选多 key/并发/额度区间),key 明文写文件 (loadtest -keys 用)。 |
Click to show internal directories.
Click to hide internal directories.
