Files
openteam/.env.example
T
Sakurasan e865f69a41 fix: 修掉模型调用链路上的四处失效逻辑
- 超时:NewGateway 里 gw_timeout*time.Second 把已是 Duration 的值二次换算,
  int64 溢出后无论 OT_PROXY_TIMEOUT 填多少都等于没有超时,渠道 timeout_ms
  也从没被读过。现在非流式用 context deadline 约束整段时长,流式只约束首包
  (Transport.ResponseHeaderTimeout),正文不限时长,长回答不会被砍。
- 断连:上游请求改用 NewRequestWithContext 绑定客户端 context,客户端断开即
  取消上游并记 canceled,不再空转生成继续付费;PATCH 已写 200 头后不再往
  响应里追加错误体。
- 白名单:APIKey.AllowedModels 以前只存不用,现在 Auth 注入 context 并参与
  判定(用户黑名单 > 密钥白名单 > 用户白名单 > 全局)。
- 选路:模型已有渠道绑定时只用绑定渠道,都不可用直接 503 no_channel,不再
  把请求发给不认识它的渠道;新增运行期健康(连续 3 次网络错误/超时/429/5xx
  进 30s 冷却,成功清零),与 60s 一次的 /models 探测互补。
- 密钥 API:PATCH 回显更新后的完整对象;限额填 0 统一视为不限制(原来
  token 配额存 0 会让密钥第一次请求就被 429 打死,而请求配额存 0 又等于
  不限制,两个字段语义相反);前端编辑框总是提交白名单,清空能真的取消。

测试:新增 proxy 链路集成测试(超时生效、流式不被截断、断连取消并记账、
密钥白名单 403、连续 429 后候选剔除)与 channel 用例(绑定模型不退全局、
冷却阈值与到期恢复、成功清零)。
2026-10-16 19:15:51 +08:00

56 lines
1.8 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# openteam 服务配置示例 —— 复制为 .env 后修改
# 所有项均可用环境变量 OT_<KEY> 覆盖(点号转下划线,如 db.driver → OT_DB_DRIVER)
# 运行环境 development | production
OT_ENV=development
OT_PORT=8080
# 数据库(开发默认 SQLite;生产切 postgres)
OT_DB_DRIVER=sqlite
OT_DB_DSN=data/openteam.db
# OT_DB_DRIVER=postgres
# OT_DB_DSN=host=localhost user=openteam password=openteam dbname=openteam port=5432 sslmode=disable
# JWT(生产必须更换为随机长字符串)
OT_JWT_SECRET=change-me-to-a-long-random-string
OT_JWT_ACCESS_TTL=2h
OT_JWT_REFRESH_TTL=168h
OT_JWT_COOKIE_SECURE=false
# 注册策略:open(开放)| invite(邀请码)
OT_AUTH_REGISTRATION_MODE=open
# 渠道密钥加密主密钥(生产必须设置,32 字节以上)
OT_MASTER_KEY=change-me-master-key
# 默认上游渠道(首次启动自动创建 OpenAI 渠道)
OT_PROXY_UPSTREAM_KEY=
OT_PROXY_UPSTREAM_BASE_URL=https://api.openai.com
OT_PROXY_DEFAULT_MODEL=gpt-4o-mini
# 上游超时兜底值(渠道 timeout_ms 优先):
# 非流式 = 整段请求上限;流式 = 只约束首包,正文不限时长
OT_PROXY_TIMEOUT=300s
# 渠道健康检查
OT_PROXY_HEALTH_INTERVAL=60s
OT_PROXY_HEALTH_FAIL_THRESHOLD=2
# 调试:记录管理员的原始请求与响应到请求明细(默认关闭;流式记录全部事件)
OT_PROXY_LOG_RAW=false
# 限流(内存计数,Redis 后置):用户级每秒请求数上限(0=不限制)
OT_RATELIMIT_USER_RPS=20
# Passkey(WebAuthn):RPID 为域名,RPOrigin 为前端来源(需 HTTPS 或 localhost)
OT_WEBAUTHN_RP_ID=localhost
OT_WEBAUTHN_RP_ORIGIN=http://localhost:5173
OT_WEBAUTHN_RP_NAME=openteam
# 初始管理员(仅首次创建生效)
OT_ADMIN_USERNAME=admin
OT_ADMIN_EMAIL=admin@localhost
OT_ADMIN_PASSWORD=admin123
# 记录原始请求日志
OT_PROXY_LOG_RAW=false