Prhub

#26553 Add env-var-conventions skill

原始 PR 作者 hnyls2002 合并时间 2026-05-28 17:58 文件变更 2 提交数 3 评论 2 代码增减 +204 / -0

执行摘要

新增环境变量约定技能文档及组件规则引用

SGLang 项目缺乏统一的环境变量管理规范,导致开发者随意使用 os.getenv 或辅助函数,新变量定义分散。本 PR 旨在通过一份权威的 Claude 技能文档,系统化定义环境变量的定义位置、类型描述符、访问方式、命名规范及弃用流程,并确保任何环境变量相关修改都遵循该约定。

建议所有参与环境变量相关开发的工程师仔细阅读该技能文档,并在代码审查中依据约定检查。对于希望了解 SGLang 环境变量设计原则的读者也值得参考。

讨论亮点

gemini-code-assist[bot] 提出的两条改进建议

  1. 建议在 SKILL.md 中同时提及 get_int_env_var 辅助函数,因为 common.py 中它同样带有 FIXME 警告,防止开发者误用。作者在后续提交中补充了这一细节。

  2. 指出“双否定”描述不准确,建议区分标志默认值与双否定模式。作者修正了措辞,明确提醒避免定义默认值为 True 的否定标志(如 DISABLE_FOO = EnvBool(True)),因为会导致调用处出现 if not 这样的双否定写法。

实现拆解

  1. 新增技能文档.claude/skills/env-var-conventions/SKILL.md,+203 行):以规则形式组织,包含:
    • 规则 1:定义在 Envs 类,并提供决策表区分 SGLANG_*、上游变量、外部变量和弃用的 SGL_*
    • 规则 2:使用类型化描述符,列出 EnvBoolEnvIntEnvFloatEnvStrEnvTuple
    • 规则 3:通过 envs.X.get() 访问,仅 UPDATE_ENV_VARS 支持批量覆盖。
    • 规则 4:命名以 SGLANG_* 开头,避免负数或否定默认值。
    • 规则 5:重命名分两阶段(新增别名 + 弃用旧名 → 移除旧名)。
    • 规则 6:若存在对应 CLI 标志,确保两者行为一致,并提供 --help 输出验证。
  2. 更新组件修改规则.claude/rules/modify-component-must-read.md,+1 行):将 env-var-conventions 技能加入对 SGLANG_* 相关修改的必读列表。
    整项变更为纯文档和流程规范,无运行时代码改动。
文件 模块 状态 重要度
.claude/skills/env-var-conventions/SKILL.md 技能文档 added 5.36
.claude/rules/modify-component-must-read.md 组件规则 modified 1.58

关键符号

ToolStrictLevel

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

建议显式提及 get_int_env_var 辅助函数 documentation

gemini-code-assist[bot] 指出除 get_bool_env_var 外,common.py 中还有 get_int_env_var 也带有 FIXME 警告,应在技能中一并提及以防止开发者误用。

结论:作者在后续提交中补充了对 get_int_env_var 的提及。 · 已解决

澄清双否定 terminologies documentation

gemini-code-assist[bot] 指出“双否定”描述不准确,建议区分标志默认值的含义,避免代码中出现 !DISABLE_FOO 的模式。

结论:作者修订了措辞,明确了避免否定默认值标志(如 DISABLE_FOO = EnvBool(True))导致的双否定。 · 已解决

风险与影响

此 PR 仅为文档和流程规范变更,不修改任何生产代码,风险极低。唯一潜在风险是如果未来环境变量实际行为与文档描述不一致,可能误导开发者。需要维护团队持续同步文档与实际代码。

直接影响:所有新增或修改环境变量的开发者必须阅读该技能,遵循统一约定,有助于减少设计缺陷。间接影响:长期将规范环境变量管理,淘汰 utils/common.py 中的遗留帮助函数,提高代码可维护性。影响范围限于仓库内部开发流程,对用户无感知。

纯文档变更

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论