用途:为 SGLang 自有的环境变量(SGLANG_* 以及正在淘汰的旧别名 SGL_*)提供统一约定,覆盖新增、重命名、审查环境变量,以及改动 python/sglang/srt/environ.py 的场景。
主要能力与规则:一是定义位置。所有 sglang 环境变量以 EnvField 描述符形式定义在 Envs 类中,不再新增 os.getenv("SGLANG_...")、get_bool_env_var 或 get_int_env_var 调用点;新条目归入已有分区注释。是否走 Envs 由归属决定:SGLANG_* 与需集中管理的上游厂商别名走 Envs;CUDA_、NCCL_、TORCH_、OMP_、RANK、MASTER_ADDR 等由外部工具或启动器设置,仍用 os.getenv。SGL_* 是弃用别名,导入时由 _convert_SGL_to_SGLANG 改写并给出 DeprecationWarning。
二是类型化描述符:EnvBool、EnvInt、EnvFloat、EnvStr、EnvTuple;未设置需与具体值区分时默认用 None;多状态开关用 IntEnum 作为 EnvInt 默认值。
三是访问方式:统一通过 from sglang.srt.environ import envs 与 envs.SGLANG_FOO.get() 读取;提供 get、set、clear、is_set、override 等 API,测试用 override 上下文管理器,多个覆盖可用 ExitStack,子进程会继承 override。temp_set_env 只用于非 sglang 键。
四是命名:新前缀固定为 SGLANG_,第二段用动词区分意图,如 ENABLE、DISABLE、USE、FORCE、LOG、TEST、DEBUG、OPT。禁止 DISABLE_FOO = EnvBool(True) 这种双重否定组合。
五是重命名与弃用:用 EnvBoolWithAlias / EnvIntWithAlias 保留旧键,或在 _convert_SGL_to_SGLANG 中调用 _print_deprecated_env,迁移到命令行参数时用 _warn_deprecated_env_to_cli_flag;重命名时不得静默改变默认值。
六是环境变量与 CLI 参数的取舍:面向用户、按部署切换的放 server_args.py;专家开关、A/B kill-switch、厂商集成放 environ.py;测试与调试钩子用 TEST_ / DEBUG_ 前缀;两者不要互相转发或重复。
限制与范围外:外部/厂商变量消费原样使用,不纳入 Envs;已存在的 get_bool_env_var / get_int_env_var 调用点保持原状,批量迁移不在该技能范围;已进入 Envs 的上游别名键不适用 SGLANG_ 前缀规则。具体代码示例与完整 API 细节以官方资料为准。