快速结论:当 SKILL.md 文件使用 Windows 风格的 CRLF(\r\n)换行符打包上传时,Dify 的 frontmatter 解析逻辑会在未规范化换行符的情况下出错,导致 name 字段解析为空,报错 “config asset name must not be blank”。优先检查并转换 SKILL.md 的换行符为 LF(Unix)格式。
适用环境:Dify 1.17.0,Self Hosted(Docker)部署。该报错出现在 Skill ZIP 上传功能中,属于 1.17.0 新增功能,已验证该版本存在此问题。
最快修复方案:将 SKILL.md 的换行符从 CRLF 转换为 LF(Unix)格式后再打包上传。可使用 dos2unix SKILL.md 命令,或在编辑器中设置为”使用 Unix 换行符保存”。
注意事项:此方案为临时规避手段,Dify 官方尚未发布修复补丁。根本解决方案需要 Dify 在 _decode_skill_md 或 _parse_frontmatter 中先规范化 \r\n → \n 再进行解析。
问题场景
用户在使用 Dify 1.17.0(Self Hosted Docker 部署)时,创建或编辑 Skill 包,SKILL.md 文件使用了 Windows 风格换行符(CRLF / \r\n),打包成 .zip 后通过 Dify Console 的 Skills 上传功能上传,立即触发 API 错误,上传失败。
报错原文
{
"code": "invalid_request",
"message": "config asset name must not be blank"
}
原因分析
问题出在 Dify 的 _parse_frontmatter 函数解析 SKILL.md 时未先规范化换行符。该函数检查 content.startswith("---"),然后按字面 "---" 分隔符进行拆分,将中间部分交给 yaml.safe_load 解析。当 SKILL.md 使用 CRLF 换行符时,\r 字符会干扰 frontmatter 分隔符的匹配或 YAML 值的解析,导致 name 字段在经过 str(...).strip() 后变成空值。
当 name 为空时,会通过 SkillManifest 验证并到达共享的 validate_config_name 辅助函数,触发通用的 “config asset name must not be blank” 错误,而不是更明确的 “SKILL.md frontmatter name is required” 错误提示。
另外,现有测试套件只使用了基于 LF 换行符的 SKILL.md 测试文件,因此未捕获此边界情况,这也与该功能在 1.17.0 才全新引入的事实相符。
环境排查
- 确认 Dify 版本是否为 1.17.0(该问题仅在此版本的新功能中被验证)
- 检查 SKILL.md 文件使用的换行符类型(CRLF 还是 LF)
- 确认部署方式(Cloud 或 Self Hosted)——目前证据仅覆盖 Self Hosted Docker
解决步骤
- 在上传前检查 SKILL.md 的换行符类型。可在终端中执行
file SKILL.md查看输出是否包含 “with CRLF line terminators”。 - 将 SKILL.md 转换为 LF 换行符。优先尝试:
- 使用 Linux/macOS 命令:
dos2unix SKILL.md或sed -i 's/\r$//' SKILL.md - 或在编辑器中打开文件,将换行符设置为 LF(Unix)后保存
- 使用 Linux/macOS 命令:
- 重新将修改后的 SKILL.md 打包为 .zip。
- 再次通过 Dify Console 的 Skills 上传功能上传该 ZIP 包。
验证方法
上传后确认不再出现上述 “config asset name must not be blank” 错误,并且 Skill 包成功导入。也可在 Chrome DevTools 的 Network 标签页中确认上传请求返回状态码为 2xx 而非 4xx。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[RFC] RL CI Matrix for vLLM: Behavioral + Physical + Protocol Coverage](https://www.chat-gpts.plus/wp-content/uploads/2026/09/45585-41fefa5f-768x403.jpg)
![[RFC]: Partial Cache Hits for Hybrid Models](https://www.chat-gpts.plus/wp-content/uploads/2026/09/45702-8c7caa82-768x403.jpg)
