Commit Graph
21 Commits
Author SHA1 Message Date
chaos bdec3a6cb0 refactor(ai): 优化华为网关连接池配置与 Token 缓存查找逻辑 2026-07-08 17:24:31 +08:00
chaos af92152524 refactor(ai): 重构华为网关并修复长文本对话压缩逻辑 2026-07-08 17:14:07 +08:00
chaos 34eb36623c fix: auto_compact压缩后用摘要+用户问题重新请求模型,而非直接返回摘要 2026-07-08 17:00:42 +08:00
chaos 0ffbf20f6b fix: compact内部401刷新Token重试+清空黑名单防锁死 2026-07-08 16:51:33 +08:00
chaos 2b073f2e3f fix: content=None 导致 TypeError + /v1/models 本地返回 2026-07-08 16:27:35 +08:00
chaos 29d6fac6cc fix: 401 黑名单锁死 - 新Token也401时清空黑名单避免27分钟不可用 2026-07-08 15:50:57 +08:00
chaos 5899032aee fix: compact 504 超时修复
- 降低 auto_compact 阈值: 1.2MB → 350KB (426KB 请求也会导致上游 504)
- 预截断: compact 前每条消息限制 500 字, 大幅减少 token 数
- 降低批次大小: 800KB → 350KB 每批
- 429 限流自动重试: 最多 2 次, 递增等待 (5s, 10s)
- 504 超时自动重试: 1 次, 降级为 auto_compact
- compact 内部 429/504 重试: 最多 3 次
- 全局请求日志: before_request 捕获所有请求
2026-07-08 15:12:29 +08:00
chaos 368ffbe66c fix: 透明分批压缩 - /v1路由 + 超限自动compact无需客户端感知
关键改动:
1. /v1/<path> 路由: 与 /v2 相同代理逻辑,兼容标准OpenAI客户端
2. auto_compact(): chat/completions超限时自动分批压缩,返回标准OpenAI格式
   - 客户端完全无感知,不需要调用特殊端点
   - 支持stream=true(SSE)和stream=false
   - X-Auto-Compact响应头标识自动压缩发生
3. 非chat/completions超限仍返回413清晰错误
4. 修复compact SSE与Waitress的direct_passthrough兼容问题
2026-07-08 14:21:38 +08:00
chaos 85ea33eb4e fix: 解决 compact 命令断连问题 - 请求体超限413清晰错误 + /v2/compact分批压缩端点
根因: APIG请求体限制~1.25MB, 超限后JSON截断导致'model id缺失'400错误→客户端断连

修复:
1. 请求体超限校验: 返回413 + content_too_large清晰错误(而非上游的'model id缺失')
2. /v2/compact端点: 超长对话自动分批发送压缩,每批<800KB,最后合并总结
3. 动态超时: 根据请求体大小自动调整(60s→180s→300s)
4. 修复响应头转发: 剥离Content-Encoding避免客户端解压失败
5. 禁用flask-compress(与Waitress SSE兼容问题)
2026-07-08 14:06:21 +08:00
chaos a2a96282de feat: 启用响应压缩(gzip/brotli/zstd) + 优化SSE流式chunk_size
- 添加 flask-compress 中间件,长文本响应自动压缩(压缩率70-80%)
- 压缩阈值设为256字节,小响应不压缩
- SSE流式 chunk_size 从 4096 提升到 16384,减少分片开销
- 压缩白名单包含 text/event-stream,SSE也支持压缩
- 解决长文本响应体积过大导致超时/内存溢出的问题
2026-07-08 13:21:32 +08:00
chaos fab2a25bcc feat: 上游错误日志 + ModelArts错误→OpenAI格式转换
- 非200响应记录WARNING日志(含响应体前500字节)
- 华为云ModelArts错误格式(error_code/error_msg)转为OpenAI标准格式
- 解决客户端'压缩上下文'报错时错误格式不兼容问题
- 根因: prompt超196608 tokens触发ModelArts.81001
2026-07-02 17:23:34 +08:00
chaos e9c635dbd0 feat: 网关全面优化 - SSE流式转发/连接池/Token优先级/持久化
- 移除JWT格式过滤(token.count('.')>=2),改为len>200
- HUAWEI_TOKEN环境变量设为最高优先级
- Token持久化到/etc/huawei-gateway.env,重启自动恢复
- SSE流式转发(stream=True + iter_content)
- requests.Session连接池(20连接, 3次重试)
- Waitress线程数16→32
- 过滤hop-by-hop头(Connection/Keep-Alive/Upgrade)
- pip安装增加waitress依赖
- 新增独立huawei_gateway.py文件
2026-07-02 16:23:22 +08:00
chaos dbbac3d146 重大优化:Token黑名单+手动注入+已有frpc配置跳过输入
Python网关改进:
- Token黑名单机制:401失效token自动加入黑名单避免重复扫描
- /set_token API端点:支持手动注入有效Token
- /health 端点增加 blacklisted 计数
- 内存扫描结果先收集再过滤,避免立即缓存无效token

Shell部署脚本改进:
- 已有frpc配置时跳过frps连接信息输入,仅需网关端口
- 步骤重新编号 1-5: 检测frpc->检测配置->配置参数->处理代理->部署
2026-07-02 15:35:59 +08:00
chaos c0bc5190d6 改进 frpc 启动:sleep 2s、输出失败日志尾部、配置完整性预检
- sleep 1 -> 2s 给 frpc 更多启动时间
- 启动失败时 tail -5 输出 frpc 日志方便排查
- 增加配置基本校验(检查 serverAddr 和代理端口是否存在)
- warn -> error 级别提升
2026-07-02 15:21:23 +08:00
chaos f297b7adf4 修复管道模式:FRPS_ADDR 检查移到主线避免子shell exit无效
- 删除 read_required() 函数(子shell exit 无法终止主脚本)
- FRPS_ADDR 检查直接放在主线 if/else 中
- 管道模式下缺少 FRPS_ADDR 正确 exit 1 终止脚本
- 交互模式下 while 循环确保必填项非空
2026-07-02 15:16:23 +08:00
chaos 209d7eb6e8 增加 read_required 函数:管道模式下必填参数必须通过环境变量提供
- 新增 read_required(): 交互模式下反复提示直到输入非空值
- 管道模式下必填参数未环境变量提供时,报错并引导下载后交互执行
- FRPS_ADDR 改为必填,其余端口保持默认值
- 避免 curl | bash 静默跳过导致配置不完整
2026-07-02 15:13:18 +08:00
chaos 4da4ae9af8 重构 frpc 配置流程:支持交互式填写 + 自动创建独立配置
- Step 2 新增 frpc 连接参数交互输入:FRPS_ADDR/FRPS_PORT/FRPS_TOKEN/PROXY_NAME
- 找不到 frpc 配置时自动创建 /etc/frp/frpc.toml 完整配置
- 已有配置时追加代理规则(自动备份)
- unified build_proxy_block() 函数统一管理 TOML/INI 格式
- frpc 启动逻辑:无 systemd 时自动 nohup 启动
- 部署总结显示真实 frps 地址
- 所有参数支持环境变量覆盖用于管道模式
2026-07-02 15:01:17 +08:00
chaos d9eccdfd81 修复容器环境三个关键bug:systemd误判、变量名冲突、启动验证
- has_systemd(): 改为检查 /proc/1/comm 是否为 systemd,避免容器中 systemctl --version 误判
- read_or_default(): 简化为两参数,去掉变量名间接引用避免冲突
- 新增 confirm_or_default(): 处理 y/n 确认,管道模式默认 true
- safe_start_service(): systemd 启动失败自动回退到 nohup
- safe_start_service(): 启动后 sleep 1 并验证进程存活,失败输出日志路径
- get_service_status(): unknown -> inactive(更准确的措辞)
- 端口变量支持环境变量覆盖: GATEWAY_PORT/REMOTE_PORT
2026-07-02 14:54:00 +08:00
chaos a6fbf3c175 修复管道执行模式:支持 curl | bash 非交互式部署
- 新增 is_piped() 检测 stdin 是否为 tty
- 新增 read_or_default() 函数,管道模式下自动使用环境变量或默认值
- 所有 read -p 交互式输入替换为 read_or_default
- 支持环境变量覆盖: GATEWAY_PORT/REMOTE_PORT/APPEND_FRP/USE_VENV/INSTALL_FRP
- 修复 curl | bash 执行时 read 导致端口验证失败的 bug
2026-07-02 14:45:47 +08:00
chaos f480f251fb 优化华为云网关脚本:支持容器环境、生产级WSGI、智能内存扫描
- 新增 systemd 检测,容器环境自动使用 nohup 模式
- 优先使用 waitress/gunicorn 生产服务器
- 智能进程优先级扫描 + 分段内存读取
- 多镜像源下载回退机制
- 增加健康检查端点 /health
- 配置自动备份 + 端口有效性验证
- 虚拟环境支持避免 root pip 警告
2026-07-02 14:38:27 +08:00
chaos 9be2cbd58e initial commit 2026-07-02 14:28:25 +08:00