快速结论:该报错通常出现在 Windows 11 + WSL2 上以 Docker 自托管 Dify、从本地安装插件时:uv 把缓存写到 bind-mounted 的 /app/storage/cwd/.uv-cache(即宿主机 Windows 文件系统),在 rename/写入缓存归档时触发 permission denied。优先排查 volumes/plugin_daemon 是否位于 Windows-backed 挂载,并考虑把 uv 缓存迁移到容器本地路径。
适用环境:Dify 自托管(Docker),镜像版本 langgenius/dify-api:1.17.1(commit 09d52fdf8248);uv 0.12.2(x86_64-unknown-linux-gnu);插件 dify-plugin 0.6.2 / 0.9.1;宿主系统 Windows 11 + WSL2;存储位于 Windows-backed 文件系统。
最快修复方案:暂无确认的一步修复方案。Issue 中的修复方向(设置 UV_CACHE_DIR=/tmp/.uv-cache 并让 plugin-daemon 读取该变量、在运行 uv 前创建目录)需要等待发布包含该改动的新 dify-plugin-daemon 镜像,单独设置环境变量在现有镜像上不会完全生效。
注意事项:上述修复属于 Issue 讨论中提出的方向,尚未在报告者环境中验证;在旧镜像上仅改 compose 环境变量不足以解决,需等对应 daemon 镜像发布。此外,把卷迁移到 Linux VM 内会改变现有 .uv-cache 的位置,可能需要迁移或清理说明。
问题场景
在 Windows 11 + WSL2 上通过 Docker 自托管 Dify,从本地存储安装插件(如 knowledgebase_update、Telegram trigger 等本地插件包)时,插件运行时在初始化环境、安装依赖阶段失败。插件启动日志显示 uv 在 /app/storage/cwd/.uv-cache 下写入或重命名缓存文件失败,导致插件无法启动。
报错原文
failed to launch plugin: failed to install dependencies: failed to install dependencies: exit status 1, output:
TRACE Querying interpreter executable at /app/storage/cwd/r3-yama...pp/storage/cwd/.uv-cache/archive-v0/hZHhpY4aKEuVpUxw: Permission
denied (os error 13)
failed to init environment
× Failed to download `gevent==26.5.0`
├─▶ Failed to read from the distribution cache
╰─▶ failed to rename file from /app/storage/cwd/.uv-cache/.tmprH7LXW to
/app/storage/cwd/.uv-cache/archive-v0/dKnt3qnqidIf_yYO: Permission
denied (os error 13)
failed to init environment
原因分析
根据 Issue 讨论,问题并非“Dify 无法安装插件”本身,而是 uv 把缓存写在 bind-mounted 的插件工作目录上:daemon 实际使用的是 /app/storage/cwd/.uv-cache,该路径位于 volumes/plugin_daemon 之下。在 WSL2 下,该卷位于 Windows-backed 文件系统,uv 在缓存中重命名临时文件时遇到 permission denied(os error 13),与日志现象一致。修复方向是让 uv 缓存不再使用该卷,改为放到容器本地路径(如 /tmp/.uv-cache)。
环境排查
- 确认宿主系统与运行方式:是否为 Windows 11 + WSL2,Docker 是否运行在 WSL 内。
- 确认
volumes/plugin_daemon与volumes/storage实际所在的文件系统:是 Linux 原生 FS,还是 Windows-backed 挂载(如C:\Users\user\dify\...)。 - 确认 Dify 镜像/版本:报告中使用
langgenius/dify-api:1.17.1。 - 确认 uv 版本:日志中为 uv 0.12.2(x86_64-unknown-linux-gnu)。
- 确认涉及的插件依赖:如
dify-plugin0.6.2(依赖requests→urllib3)、dify-plugin0.9.1(依赖gevent)。
解决步骤
- 先确认存储位置:检查
volumes/plugin_daemon是否落在 Windows-backed 文件系统。报告者在 Issue 中确认其volumes/storage位于C:\Users\user\dify\...(经 WSL2 访问),与权限异常一致。 - 在 compose 与 env 示例中为 plugin_daemon 传入
UV_CACHE_DIR=/tmp/.uv-cache(Issue 中提到的提供方式)。 - 等待并升级到包含相应改动的 dify-plugin-daemon 镜像:该镜像中 daemon 会读取
UV_CACHE_DIR(默认/tmp/.uv-cache),而不是硬编码PLUGIN_WORKING_PATH/.uv-cache,并在运行 uv 前创建该目录。 - 若暂时无法升级镜像,可优先尝试将
volumes/plugin_daemon(及相关存储卷)迁移到 WSL2 Linux VM 内的原生 Linux 文件系统,避开 Windows-backed 挂载的重命名/权限问题;此方向属于讨论中的排查思路,未在 Issue 中验证。
验证方法
在完成镜像升级(或迁移卷位置)后,重新从本地存储安装此前失败的插件,观察插件是否成功启动、依赖安装是否完成,日志中不再出现针对 .uv-cache 的 Permission denied (os error 13) 或 failed to init environment。若仍失败,可继续保留完整 uv 日志以便定位缓存路径是否已被正确切换。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。

![[Bug] MCP provider detail endpoint returns 500 "invalid input syntax for type uuid" — server_identifier passed where a provider UUID is expe](https://www.chat-gpts.plus/wp-content/uploads/2026/09/41512-4d065714-768x403.jpg)
