Files
litellm-config/AGENTS.md
T
vibe-code 96b81d52c4 feat: 合入火山免费额度自动消耗任务(每日23点洗过期包防扣费)
- 新增 volc_consume.py:消耗任务模块,直连 Ark 洗 9 天内过期资源包
  (旧 calculate_plan 均分×1.1/24h冲刺保留 + 双 clamp:2M 采集上限、余额−BUFFER 防扣费)
- volc_limit_sync.py:限额 v2 简化(stable_limit = usage+balance−BUFFER,删除峰值状态机 ~90 行),
  HARD_DAILY_LIMITS 统一 2M(pre-block 不滞后,1.8M 折扣作废),
  新增 _maybe_trigger_daily_consume(北京时间 23:00 ± 抖动,SETNX 去重,延迟导入)
- docker-compose 挂载 volc_consume.py;AGENTS.md/文档同步
2026-08-11 13:15:24 +00:00

5.8 KiB
Raw Blame History

OpenCode Agent Protocol - LiteLLM VolcSync

此文件定义了在该代码库中工作的 AI Agent 的行为准则、代码风格和工作流。

1. 项目上下文

此仓库包含用于 LiteLLM 的自定义回调脚本,核心功能是限制模型用量(特别是火山引擎/VolcEngine)。

  • 核心逻辑:通过 quota_interceptor 拦截请求,并通过 DailyLimitHandler 记录用量到 Redis。后台 active_monitor_loop 守护线程定期从火山引擎 API 同步配额到 Redis。
  • 架构:主逻辑在 volc_limit_sync.py(限额 + 同步守护 + 每日消耗调度),消耗任务拆分在 volc_consume.py(每日北京时间 23:00 由守护线程延迟导入触发;见 merge-auto-consume.md)。LiteLLM 通过 config.yaml 中 callbacks: ["volc_limit_sync.proxy_handler_instance"] 加载回调,模块加载时自动启动后台同步线程。
  • 关键文件:
    • volc_limit_sync.py: 核心文件,包含同步守护线程(active_monitor_loop)、LiteLLM 回调(DailyLimitHandler + quota_interceptor)、限额计算(v2 简化:stable_limit = usage + balance − BUFFER)、模型屏蔽/恢复、以及每日 23:00 消耗任务调度(_maybe_trigger_daily_consume,SETNX 去重)。
    • volc_consume.py: 消耗任务模块(每日 23:00 触发;手动 python volc_consume.py --dry-run / --force)。复用 volc_limit_sync 的拉包/归一化/用量记账设施,直连 Ark API 洗即将过期的免费资源包(防 30 天过期蒸发)。
    • config.yaml: LiteLLM 配置文件,包含模型定义和回调配置。
    • docker-compose.yml: 容器编排,仅挂载 config.yaml 和 volc_limit_sync.py。
    • debug_volc_sync.py / debug_volc_sync_manual.py: 调试脚本,用于手动验证 API 和 Redis 状态。
    • daily_limit.py.deprecated: 已废弃,功能已全部合并到 volc_limit_sync.py,仅保留作历史参考。

2. 环境与运行 (Build & Run)

本项目主要由 Python 脚本组成,没有复杂的构建过程。

依赖安装

pip install litellm redis requests

运行与调试

由于是脚本项目,通常直接运行 Python 文件进行测试。

  • 启动同步监控:

    # 必须配置必要的环境变量
    export VOLC_ACCESS_KEY="your_key"
    export VOLC_SECRET_KEY="your_secret"
    export REDIS_HOST="localhost"
    
    python volc_limit_sync.py
    
  • 调试模式: 设置环境变量 DAILY_LIMIT_LOG_LEVEL=DEBUG 可启用详细日志。

  • 消耗任务(手动触发):

    # 需要 HUOSHAN_API_KEY(Ark API Key)与 HUOSHAN_BASE_URL
    python volc_consume.py --dry-run   # 只计算每个模型的消耗计划,不发送请求
    python volc_consume.py --force     # 立即执行(绕过 23:00 时间限制)
    

    每日 23:00 由 volc_limit_sync.py 守护线程自动触发(consume:last_run:{日期} 去重)。

3. 代码风格指南 (Code Style)

3.1 基础规范

  • Python 版本:兼容 Python 3.8+。
  • 命名规范:
    • 变量/函数:snake_case (e.g., clean_model_name, get_effective_limit)
    • 常量:UPPER_CASE (e.g., LOG_LEVEL, REDIS_HOST)
    • 类名:PascalCase (e.g., DailyLimitHandler)
  • 类型提示 (Typing):
    • 不要 强制添加类型提示(Type Hints),保持与现有代码一致的动态类型风格,除非涉及复杂的数据结构。
  • 导入排序:标准库 -> 第三方库 (litellm, redis, requests) -> 本地模块。

3.2 日志与输出 (Logging)

重要:本项目使用自定义的日志风格,不要使用 Python 标准 logging 模块。

  • 必须使用 log(msg, level="INFO") 或 dprint(msg) 函数。
  • Emoji 前缀:日志消息通常以 Emoji 开头以增强可读性:
    • ℹ️ INFO: 一般信息
    • 🔍 DEBUG: 调试信息
    • ⚠️ WARNING: 警告/阻断
    • ❌ ERROR: 错误/异常
    • 📊 Usage: 用量统计
    • ♻️ RESTORE: 恢复模型
    • 🚫 BLOCK: 阻断模型

3.3 错误处理 (Error Handling)

由于这些脚本运行在 LiteLLM 主进程中,稳定性是第一优先级。

  • 防御性编程:关键逻辑(特别是涉及 Redis 或外部 API 的部分)必须包裹在 try-except 块中。
  • 禁止崩溃:回调函数内的异常不应导致 LiteLLM 崩溃。捕获异常并记录错误日志 (traceback.format_exc()),然后安全返回(pass 或返回默认值)。
  • 示例:
    try:
        # 危险操作
        redis_client.incr(key)
    except Exception as e:
        # 记录但不抛出,以免影响主业务
        log(f"❌ Redis failed: {e}", level="ERROR")
    

3.4 特定模式

  • LiteLLM 集成:
    • 检查 LITELLM_AVAILABLE 标志,确保脚本可以在没有 litellm 环境下独立运行(用于调试)。
    • 处理 litellm.exceptions 中的特定异常(如 ServiceUnavailableError)。
  • 时间处理:
    • 明确处理时区问题。本项目强制使用 北京时间 (UTC+8) 进行每日限额重置(00:00 CST)。

4. 测试 (Testing)

目前没有集成的测试框架(如 pytest)。

  • 验证方式:
    • 编写或运行 debug_*.py 脚本进行手动验证。
    • 使用 if __name__ == "__main__": 块在脚本底部包含自测逻辑。

5. Git 提交规范

  • 使用约定式提交 (Conventional Commits):
    • feat: 新功能 (e.g., feat: add support for deepseek-v3)
    • fix: 修复 (e.g., fix: resolve redis connection timeout)
    • docs: 文档更新
    • style: 代码格式调整
    • refactor: 重构

6. Cursor/Copilot 规则

  • 优先保持现有文件的代码结构,不要为了"整洁"而破坏原有的 try-except 结构。
  • 生成代码时,优先复用已有的 clean_model_name, generate_api_base_hash 等工具函数。