执行摘要
本次 PR 修复了 SLIME 仓库中多个模型配置脚本的 shell 变量引用问题,当文件系统存在特定文件(如名为 "1" 的文件)时,未引用的 $MOE_LAYER_FREQ 变量会导致参数解析错误,进而引发模型启动失败。通过添加双引号,确保参数正确传递,解决了这一潜在问题,并提升了脚本的鲁棒性。
功能与动机
动机源于 shell 的 glob 扩展机制:如果当前目录有文件名为 "1",未引用的 $MOE_LAYER_FREQ(其值如 [1,1,1])会被扩展为文件名 "1",而非原数组字符串,导致 --moe-layer-freq 参数错误。PR body 通过示例清晰展示了此问题,并指出在 SLIME 上下文中,这会使得模型配置参数不正确,影响启动流程。
实现拆解
修改涉及 8 个位于 scripts/models/ 的 shell 脚本文件,均将 --moe-layer-freq $MOE_LAYER_FREQ 行改为 --moe-layer-freq "$MOE_LAYER_FREQ"。关键变更如下表所示:
| 文件路径 |
修改前 |
修改后 |
| scripts/models/qwen3.5-35B-A3B.sh |
--moe-layer-freq $MOE_LAYER_FREQ |
--moe-layer-freq "$MOE_LAYER_FREQ" |
| scripts/models/deepseek-v3.sh |
--moe-layer-freq $MOE_LAYER_FREQ |
--moe-layer-freq "$MOE_LAYER_FREQ" |
| 其他类似文件(共 6 个) |
同上 |
同上 |
所有修改点一致,旨在防止 shell 路径名扩展干扰参数传递,确保 $MOE_LAYER_FREQ 变量值作为整体字符串处理。
评论区精华
本 PR 没有 review 评论,变更直接合并,表明问题清晰且修复方案被认可,无讨论或争议,简化了审查流程。
风险与影响
- 风险:添加引号是安全实践,但需确保 $MOE_LAYER_FREQ 变量值在引号内仍为有效字符串;若其他脚本变量未类似引用,可能存在类似 glob 扩展风险,但整体风险低。
- 影响:修复了特定环境下的模型配置错误,提升脚本鲁棒性和用户体验;对系统无性能或安全影响,但提醒团队在 shell 脚本中始终引用变量以避免意外扩展。
关联脉络
与历史 PR #1719(修复 Qwen3-235B-A22B 启动脚本的 JSON 格式)类似,都针对模型脚本的 bug 修复,反映了仓库中脚本维护的持续优化趋势。这些变更虽小,但共同提升了配置可靠性和开发者体验,强调了在基础设施代码中注重细节的重要性。
参与讨论