fawney19
|
5bfaee47cc
|
refactor(proxy): 端点检查统一使用 proxy_config 替代 proxy_param
将 endpoint_checker、handler_adapter_base、gemini adapter 及
provider_query 中的 proxy_param 参数替换为 proxy_config,
通过 build_proxy_client_kwargs 统一构建代理客户端参数,
以支持 tunnel 模式代理。同时清理未使用的 import。
|
2026-02-27 22:41:31 +08:00 |
|
fawney19
|
8de2f41924
|
fix(proxy-tunnel): 修复隧道连接池竞态与跨平台兼容问题
- 修复 TCP keepalive with_retries 在 Windows 上不可用的编译问题
- dispatcher 中 try_send 失败时记录警告日志而非静默丢弃
- 优化 handler_handles 清理策略,每 64 帧定期清理
- StreamState 记住原始连接引用,清理时避免连接池竞态
|
2026-02-27 21:41:43 +08:00 |
|
fawney19
|
ee356c5e6e
|
feat(proxy-tunnel): 实现隧道连接池与 TCP 底层优化
Rust 端:
- 支持每个 server 多条并行 WebSocket 连接 (tunnel_connections 配置)
- 手动控制 TCP 连接: connect/handshake 超时、keepalive、NODELAY (socket2)
- 预构建共享 TLS ClientConfig 避免每次重连重新解析根证书
- 增加 stale timeout 检测无数据连接,智能 backoff 按连接存活时长重置
- 每条连接独立 reconnect 计数器,仅主连接 (conn_idx=0) 发送心跳
- dispatcher 的错误帧和 PONG 改用 try_send 避免阻塞读循环
- stream_handler 增加 frame 发送超时保护防止写阻塞
Python 端:
- TunnelManager 改为连接池,按 least-loaded 策略分配请求
- handle_incoming_frame 按连接实例路由,unregister 精确移除单条连接
- 心跳和 PONG 回复改为 fire-and-forget 避免阻塞主读循环
- send_frame 增加超时保护防止 TCP 写阻塞级联
- WebSocket 先 accept 再认证,auth 加超时
- 调整 idle timeout (90s) 和 ping 间隔 (15s)
|
2026-02-27 21:25:42 +08:00 |
|
fawney19
|
a174cf1b02
|
feat(proxy-tunnel): 增强隧道连接稳定性与恢复速度
- writer 增加 WebSocket Ping keepalive,防止中间代理空闲超时断开
- 服务端增加应用层 PING 循环(30s 间隔),空闲超时延长至 180s
- 重连基础延迟从 1000ms 降低到 500ms
- 节点缓存 TTL 缩短至 15s,不可用节点 TTL 缩短至 5s 加速恢复感知
- 心跳检测间隔从 30s 缩短到 15s
|
2026-02-27 19:51:38 +08:00 |
|
fawney19
|
934723f5f5
|
fix(frontend): 移除代理节点配置的号池模式限制
取消 Popover 组件的 v-if="provider.pool_advanced" 条件,
使代理节点配置在所有模式下均可使用。
|
2026-02-27 19:25:53 +08:00 |
|
fawney19
|
892c4235ec
|
fix(frontend): 修正 system.ts 中 client 的导入方式为默认导入
|
2026-02-27 19:15:38 +08:00 |
|
fawney19
|
ddeb357c0e
|
feat(proxy): 增加 0.1.x 到 0.2.0 配置自动迁移,放宽 max_retries 上限至 999
- proxy: 启动时检测旧版配置并自动迁移(delegate_* -> upstream_*、单服务器 -> [[servers]]),备份原文件为 .v1.bak
- proxy: 升级后 systemd 重启改为 best-effort,失败不中断升级流程
- provider: max_retries 上限从 10 放宽到 999(前端、后端模型同步调整)
|
2026-02-27 19:12:02 +08:00 |
|
github-actions[bot]
|
7cb007b445
|
chore(proxy): update download links for proxy-v0.2.0
|
2026-02-27 10:52:41 +00:00 |
|
fawney19
|
50262a2f02
|
chore(proxy): bump version to 0.2.0
|
2026-02-27 18:46:01 +08:00 |
|
fawney19
|
178fe4be4b
|
Merge pull request #189 from AAEE86/fix
fix(frontend): 修复 Provider Key 列表只显示 100 条的问题
|
2026-02-27 18:37:16 +08:00 |
|
fawney19
|
4855e7cbca
|
fix(task-poller): 捕获 CancelledError 避免关闭时产生 traceback
视频任务轮询在应用关闭时,Redis 异步操作被取消会抛出
CancelledError,由于其继承自 BaseException 而非 Exception,
原有的异常处理无法捕获,导致 APScheduler 打印完整 traceback。
拆分 poll_pending_tasks 为入口方法和 _do_poll 内部方法,
在入口层捕获 CancelledError 后静默返回。
|
2026-02-27 18:23:07 +08:00 |
|
fawney19
|
d2450cbdc1
|
feat(claude-code): 增加 TLS 指纹伪装、Cache TTL 统一、CLI 限制与流超时冷却
- 新增 curl_cffi Transport,支持真实浏览器 TLS 指纹伪装 (Chrome/Node.js)
- 增加 Cache TTL Override 功能,强制统一 cache_control 类型防止行为指纹差异
- 增加 CLI-only 客户端限制,支持仅允许 Claude Code CLI 访问
- 池健康策略增加 stream timeout 计数与自动冷却机制
- OAuth 账号 Region 选择改为从 AWS API 动态获取,支持搜索和自定义输入
- 前端 PoolConfigDialog 增加对应配置 UI
|
2026-02-27 18:10:27 +08:00 |
|
AAEE86
|
bfee1019ed
|
fix(frontend): 修复 Provider Key 列表只显示 100 条的问题
- 在 getProviderKeys 中增加 skip/limit 自动分页拉取
- 默认每页 1000,循环获取直到无更多数据
- 避免后端默认 limit=100 导致账号展示被截断
|
2026-02-27 15:07:44 +08:00 |
|
fawney19
|
76a6d0ce8e
|
feat(pool): 增加 OAuth 账号池管理功能
- 新增 pool manager / strategy / health_policy / cost_tracker / redis_ops 等核心模块
- 新增 pool admin API 路由与 schemas
- 新增 OAuth 账号类型解析 (oauth_plan)
- 前端增加 PoolManagement 页面、PoolConfigDialog、PoolImportDialog、PoolStatusCard 组件
- 补充 pool config / cost tracker / health policy / manager / strategy / trace 等测试
|
2026-02-27 13:58:58 +08:00 |
|
fawney19
|
579b5e4623
|
feat(provider): 增加 Claude Code 适配器、高级配置能力与 OAuth 账号类型统一解析
- 新增 Claude Code provider adapter (context, envelope, plugin, constants)
- 扩展 provider admin 路由,支持 Claude Code 高级配置 (CRUD)
- 统一 OAuth 账号类型解析逻辑,前后端对齐
- 重构 BatchAssignModelsDialog / ModelMappingDialog,简化组件逻辑
- handler 基类增强: request_builder 支持 Claude Code 信封格式
- CLI stream/sync mixin 适配 Claude Code 流式与同步模式
- 扩展 candidate builder / failover / scheduler 对 Claude Code 的支持
- 前端增加请求时间线可视化 (HorizontalRequestTimeline)
- 补充 Claude Code envelope / runtime controls / distributed sessions 等测试
Closes #183
Closes #185
Co-Authored-By: AAEE86 <ppk0227@hotmail.com>
|
2026-02-27 13:54:46 +08:00 |
|
fawney19
|
f2f2a2dbc4
|
fix(proxy-node): 心跳和健康检查增加 tunnel 节点状态修正能力
- 心跳处理:收到心跳说明 tunnel 连通,若状态非 ONLINE 则修正
- 健康检查:移除 OFFLINE 过滤,允许检测 tunnel 重连后的状态恢复
- 前端配额刷新:就地更新 key metadata,避免重拉列表导致分页重置
|
2026-02-26 17:53:31 +08:00 |
|
fawney19
|
3fff147b9b
|
Merge pull request #184 from rcdfrd/feat/new-api-checkin-apikey-support
feat(new-api): 签到支持 API Key 认证模式
|
2026-02-26 17:52:37 +08:00 |
|
rcdfrd
|
a25f491f45
|
feat(new-api): 签到支持 API Key 认证模式
- 无 Cookie 时不再直接跳过,改为尝试以 API Key 发起签到请求
- 401/403 及认证失败类消息在 API Key 模式下静默跳过,不再误报 cookie_expired
- 将 message.lower() 预计算为 message_lower,避免重复调用
- 修正 already_indicators 与 auth_fail_indicators 中各条目也做 lower 处理,确保大小写不敏感比较一致
|
2026-02-26 15:42:42 +08:00 |
|
fawney19
|
8c2928c39d
|
refactor(proxy-node): 移除非 tunnel 模式兼容,注册和心跳统一为 tunnel 模式
- 注册接口移除 tunnel_mode 参数,固定按 name upsert 并标记为 tunnel 模式
- 心跳接口拒绝非 tunnel 模式节点,返回升级提示
- 移除按 ip+port 查找的旧模式分支
|
2026-02-26 13:54:32 +08:00 |
|
fawney19
|
7e73e7fab2
|
fix(proxy-node): tunnel 模式节点注册不再覆盖由连接管理的状态
register_node 对 tunnel 模式已有节点不再写 status 字段,
状态完全由 _update_tunnel_status 和 health_scheduler 管理,
避免心跳注册将已连接的 ONLINE 状态覆盖为 UNHEALTHY。
|
2026-02-26 13:38:08 +08:00 |
|
fawney19
|
61535dfb7e
|
feat(proxy-node): tunnel 节点支持连通性测试
通过 TunnelTransport 经 WebSocket tunnel 发送测试请求,
测量往返延迟并获取出口 IP,与手动代理节点测试语义一致。
|
2026-02-26 13:16:06 +08:00 |
|
fawney19
|
54332d31bc
|
fix(proxy-node): 监控 writer task 退出以避免 tunnel 连接半关闭时 dispatcher 阻塞
当对端关闭连接导致 write half 退出但 read half 仍打开时,
dispatcher 会在 ws_stream.next() 上永久阻塞。通过在 tokio::select!
中监控 writer_handle,检测到 writer 退出后立即触发重连。
|
2026-02-26 13:07:42 +08:00 |
|
fawney19
|
67b8eb5c2f
|
fix(proxy-node): tunnel 模式节点状态由连接管理,心跳不再覆盖
- resolver 中增加 tunnel 未连接节点的过滤,避免请求路由到不可达节点
- 心跳处理中 tunnel 模式节点仅更新指标,不改变在线状态
|
2026-02-26 12:50:08 +08:00 |
|
fawney19
|
27cef96789
|
refactor(proxy-node): 统一代理解析,全面支持 tunnel 模式
新增 resolve_ops_proxy_config 合并 proxy 和 tunnel_node_id 的解析,
避免各架构重复调用 _resolve_effective_node。所有架构连接器
(anyrouter/nekocode/sub2api/yescode) 和 HTTPClientPool 均适配
tunnel 模式,通过 TunnelTransport 替代传统代理。
|
2026-02-26 12:25:23 +08:00 |
|
fawney19
|
560345a889
|
feat(orchestration): 增加 AWS 账号被暂停 (suspended) 的错误识别和自动停用处理
- ErrorClassifier 新增 403 suspended 状态检测,归类为 ProviderAuthException
- ErrorHandlerService 新增 _is_account_suspended 静态方法,匹配多种 suspended 错误文本
- 403 suspended 的 OAuth key 自动标记为账号异常并停用
- 重构 _mark_oauth_key_blocked 支持自定义 reason 参数
- 将 _is_account_validation_required 调用改为静态方法调用
|
2026-02-26 11:32:31 +08:00 |
|
fawney19
|
f41bfecf0b
|
feat(usage): 增强 cURL/Replay 对 Vertex AI、OAuth 和 envelope 提供商的支持
- _resolve_provider_auth 返回 decrypted_auth_config 用于 Vertex AI URL 构建
- _build_provider_url_safe 新增 API 格式默认路径回退及模板变量防护
- Replay 适配器基于 api_format 智能匹配端点和 Key
- Replay 适配器支持 envelope 包装(kiro/codex/antigravity 等特殊提供商)
- 复用 target_provider_obj 减少重复 Provider 查询
|
2026-02-26 10:32:29 +08:00 |
|
fawney19
|
80438e1d61
|
fix(proxy-node): 修复服务重启后 tunnel 连接状态不一致的问题
- 启动时重置 DB 中残留的 tunnel_connected=True 状态
- health_scheduler 以 TunnelManager 内存实际连接为准判断节点状态
- tunnel 模式注册时初始状态设为 UNHEALTHY,等 tunnel 连接后再上线
|
2026-02-26 09:15:00 +08:00 |
|
fawney19
|
19f1be03fa
|
feat(nginx): 添加 WebSocket 隧道端点的 nginx 代理配置
|
2026-02-26 03:33:53 +08:00 |
|
fawney19
|
b6ca16e084
|
fix(headers): 兼容非 ASCII header 值,避免 httpx ASCII 编码报错
将 HeaderBuilder 中的 latin-1 透传方案替换为 ASCII 归一化策略:
- 对 x-codex-turn-metadata 做 JSON 重编码(ensure_ascii=true)保留语义
- 其他非 ASCII 头值仅转义非 ASCII 字符为 \uXXXX,保留 ASCII 字符原样
- 新增单测覆盖中文 header 与 codex turn metadata 场景
Close #180
Co-Authored-By: AAEE86 <ppk0227@hotmail.com>
|
2026-02-26 02:56:54 +08:00 |
|
fawney19
|
c0b80c923a
|
refactor(usage): 移除 RequestHeadersContent 中未使用的 diff props
移除 clientHeadersWithDiff 和 providerHeadersWithDiff 属性及相关计算逻辑
|
2026-02-26 02:36:37 +08:00 |
|
fawney19
|
61e0959a06
|
Merge branch 'feat/compare-view'
|
2026-02-26 02:32:29 +08:00 |
|
fawney19
|
0ecf8b703e
|
feat(api-keys): 支持独立密钥额度重置(手动+定时自动)
- 新增手动重置接口 PATCH /api/admin/api-keys/{id}/reset-usage
- 前端 ApiKeys 页面增加重置按钮,支持确认后归零已使用额度
- 新增独立密钥额度定时自动重置任务,支持配置周期和执行时间
- 支持 all/selected 两种重置模式,selected 模式可指定密钥
- 移除已废弃的 CleanupScheduler 兼容别名
|
2026-02-26 02:16:48 +08:00 |
|
fawney19
|
1a1bb0a99c
|
feat(admin): 新增数据管理模块,支持分类清空系统数据
添加 purge API 支持按类别清空配置、用户、使用记录、审计日志、请求体和统计数据,
前端系统设置页新增数据管理区块。
|
2026-02-26 01:20:24 +08:00 |
|
fawney19
|
5415057a5d
|
fix(models): 模型创建对话框支持连续添加
创建模式下提交后保持对话框打开,方便批量添加模型;
编辑模式提交后仍正常关闭对话框。按钮文案调整为"添加"。
|
2026-02-25 23:33:16 +08:00 |
|
fawney19
|
a2493b4bc0
|
fix(compatibility): 同族格式透传不再依赖格式转换开关
将 data_format_id 相同的格式对(如 claude:chat / claude:cli)的透传判断
提前到三层开关检查之前,使其无需开关即可直接透传。
同时用 pytest.mark.parametrize 精简同族格式测试用例。
|
2026-02-25 23:06:25 +08:00 |
|
fawney19
|
fd9040b9aa
|
refactor(proxy): 将 aether-proxy 从 HMAC 正向代理迁移到 WebSocket 隧道模式
移除 HMAC 认证、TLS 自签名证书、HTTP CONNECT 代理和代发(delegate)模式,
改为 aether-proxy 主动通过 WebSocket 连接 Aether 服务端建立隧道。
Aether 服务端新增:
- WebSocket 隧道端点 (proxy_tunnel.py)
- TunnelManager 管理隧道连接和请求分发
- TunnelTransport 作为 httpx 自定义 transport 层
- 基于二进制帧的隧道协议 (tunnel_protocol.py)
aether-proxy (Rust) 重构:
- 新增 tunnel 模块 (client/dispatcher/stream_handler/protocol)
- 支持多 Aether 服务端连接 ([[servers]] 配置)
- 移除 proxy/auth/delegate 模块和 hyper 依赖
- 改用 tokio-tungstenite 实现 WebSocket 客户端
同时:
- 添加浏览器指纹 Headers 绕过 Cloudflare 防护
- 删除节点时自动清理 Provider/Endpoint 的代理引用
- 数据库迁移: 新增 tunnel_mode/tunnel_connected/tunnel_connected_at 字段
|
2026-02-25 21:59:29 +08:00 |
|
LewisPen
|
adaf9e4b93
|
feat(usage): 响应头 Tab 增加并排对比模式
泛化 RequestHeadersContent 组件支持任意 header 对,
响应头 Tab 复用同一组件实现客户端/提供商响应头 Diff 对比。
|
2026-02-24 15:25:59 +08:00 |
|
fawney19
|
39b036abd5
|
refactor(docs/home): 重构首页导航和文档结构
- README 新增架构图(明暗主题 SVG),更新 Proxy 描述
- 首页导航栏将"文档"链接从底部按钮区移至顶部导航
- 删除独立的 body-rules-spec 文档
- GuideLayout 路由切换时自动滚动到顶部
- 架构图组件移除网格背景
|
2026-02-24 12:15:14 +08:00 |
|
fawney19
|
837bed3d47
|
feat(provider): 支持 Provider 级别代理节点配置,修正配额分组匹配
- Provider 详情抽屉新增代理节点设置入口(Globe 图标),支持选择/清除代理
- 更新 Antigravity 配额分组:修正模型匹配规则以适配当前模型命名
- 简化上游元数据合并逻辑,以上游返回为准,不再保留已下架模型条目
v0.5.16
|
2026-02-24 02:44:15 +08:00 |
|
fawney19
|
7e447fe54e
|
feat(antigravity): 对齐 AM 客户端标识,前端 OAuth 增加 TOTP 支持
- User-Agent 改为 Electron 浏览器格式,新增 x-client-name/x-client-version/x-vscode-sessionid/x-goog-api-client header
- 移除 MODEL_ALIAS_MAP 别名映射,改为仅剥离 -online 后缀
- thinking 自动注入关键字新增 gemini-3.1-pro
- 新增定时 Antigravity UA 版本刷新任务(每 6 小时 + 启动时)
- 前端 OAuth 设备授权新增 TOTP 验证码生成(otpauth),Region 改为按钮选择
- SSO OIDC 轮询日志 authorization_pending/slow_down 降级为 debug
|
2026-02-24 01:52:53 +08:00 |
|
fawney19
|
cd70c9148e
|
refactor(guide): 精简架构说明布局和样式细节
- 移除副标题描述段落,采用紧凑编号列表替代圆形大卡片布局
- 精简文案表述,缩减流程图间距和元素尺寸
- 移除架构图提供商标签的 hover 动效
- 调整核心调度条的字重和边框样式
|
2026-02-23 22:58:52 +08:00 |
|
fawney19
|
cd05ec770c
|
fix(guide): 架构图标签改为产品名称(Claude/Gemini)并调整节点间距
- 将 Source/Output 标签从 Anthropic/Google 改为 Claude/Gemini
- 增大虚线框与引擎卡片的垂直间距,改善布局层次
- 同步调整连接线路径坐标和动画时长
|
2026-02-23 22:41:53 +08:00 |
|
fawney19
|
a7675606a1
|
fix(guide): 更新架构图核心模块标签和布局细节
- 新增"缓存亲和"功能标签
- 将"分布式智能路由抉择"改为"智能调度 / 故障转移"
- 调整标签间距从 gap-2 到 gap-1.5
|
2026-02-23 22:33:34 +08:00 |
|
fawney19
|
bdd9d0a3dd
|
refactor(guide): 重构架构图为紧凑垂直布局,支持响应式缩放
将 ArchitectureDiagram 从 1300px 横向滚动画布改为 760x420 固定尺寸垂直流布局,
使用 CSS transform scale + ResizeObserver 实现自适应缩放,移除横向滚动条。
|
2026-02-23 21:56:20 +08:00 |
|
fawney19
|
e18a7ee435
|
refactor(guide): 重构指南页面为 Markdown 内容驱动架构
- 将各指南页面的内联硬编码内容抽取为独立 Markdown 文件
- 新增 MarkdownViewer 组件统一渲染 Markdown 内容
- 新增 ArchitectureDiagram 组件和架构演示组件
- 新增模块指南页面 (ModulesGuide)
- GuideLayout 支持子导航、页面过渡动画和图片 Lightbox
- guide-config 重构为支持 subItems 的导航结构
- 添加指南相关截图资源
|
2026-02-23 15:50:24 +08:00 |
|
fawney19
|
c43d22b0e4
|
fix(frontend): 移除缓存价格自动计算对 input_price > 0 的限制
当 input_price_per_1m 为 0 时,缓存价格(creation/read/1h)也应自动计算,
而非跳过赋值。
|
2026-02-22 15:26:40 +08:00 |
|
fawney19
|
1a45d0aa87
|
docs: 更新 README 项目定位描述,截图改为外链,新增 Aether Proxy 介绍段落
- 项目描述从"开源 AI API 网关"调整为"一站式 AI 基础设施平台"
- 移除内嵌截图,改为指向 GitHub Pages 的外链
- 新增 Aether Proxy 简介段落
- 精简部分 FAQ 内容
- aether-proxy 版本升至 0.1.6
|
2026-02-22 01:38:22 +08:00 |
|
github-actions[bot]
|
41835c8afe
|
chore(proxy): update download links for proxy-v0.1.6
|
2026-02-21 17:21:11 +00:00 |
|
fawney19
|
5da9197eee
|
feat(proxy): CI 添加 Docker 构建推送和 README 自动更新,HardwareTooltip 增强字段兼容
- build-proxy workflow 新增 docker job 构建多架构镜像推送 GHCR/Docker Hub
- build-proxy workflow 新增 update-readme job 自动更新下载链接表格
- Dockerfile 改用预编译二进制替代多阶段 Rust 编译
- 新增 docker-compose.yml 简化部署
- .env.example 精简为必要配置项
- README 补充 Docker 部署说明和下载表格标记
- HardwareTooltip 兼容 camelCase/snake_case 字段名,添加 pickRecord 辅助函数和原生 tooltip 回退
proxy-v0.1.6
|
2026-02-22 01:13:03 +08:00 |
|
fawney19
|
cf2eee222e
|
refactor: 前端全面替换 any 为 unknown 并统一错误处理,后端用量记录补写请求头/体
- 前端 API 层、stores、conversation 解析器、组件全面替换 any 为 unknown/具体类型
- 错误处理统一使用 parseApiError/getErrorStatus 替代 err.response?.data?.detail 模式
- 后端 handler/TaskService/UsageLifecycle/StreamTracker 链路传递 request_headers/request_body
- streaming/pending 状态更新时可补写客户端和提供商的请求头及请求体
- 新增 TaskService 和 UsageService 相关测试
|
2026-02-22 00:43:41 +08:00 |
|