更快得到帮助 :如果你还不确定这是不是 Bug,或想先确认使用方法,建议先到用户交流群(企业微信,二维码见 README)里提问;确定为缺陷后,请完整填写以下信息,方便复现与定位。
提交前确认
问题描述
助手回复里引用的本地图片,只要路径不在「用户主目录 / /tmp / 当前会话 workDir 及其 git 根」之内(例如 E:\project\render.jpg),sidecar 的 /local-file、/preview-fs、/api/filesystem/file 都会返回 403 Access denied: path outside allowed directory,前端随后直接移除 <img>,界面上没有任何提示,图片就这样消失了。
期望:能正常显示;或者至少显示一个“无权限访问该路径”的占位/提示,并提供可配置的额外允许目录。
运行环境
使用方式: 桌面端
操作系统: Windows
系统版本: Windows 11 Pro 10.0.26200
桌面端版本: v0.6.7(关于页显示已是最新)
安装来源: GitHub Release
Bun 版本: 不适用
Node 版本: 不适用
Provider / 模型配置
与 Provider 无关,属于本地文件服务的路径校验问题,任何模型都能复现。
复现步骤
在工作目录为 C:\Users\<user> 的会话里,让助手在回复中用 Markdown 引用另一块盘上的图片,例如 ,或者直接在正文写出该绝对路径。
回复渲染后图片区域为空:markdown 内联图被移除,末尾的图片画廊也不显示。
把同一张图复制到 C:\Users\<user>\ 下并引用新路径,图片可以正常显示。
是否稳定复现: 是
错误信息与日志
直接请求 sidecar 验证(端口为本机实际端口):
# 同一张图,放在不同位置
C:/Users/< user> /test.jpg local-file 200 / preview-fs 200 / api/filesystem/file 200
C:/Users/< user> /AppData/Local/Temp/t.jpg 200 / 200 / 200
E:/test.jpg 403 / 403 / 403
D:/test.jpg 403 / 403 / 403
GET /api/filesystem/file? path=E%3A%2Ftest.jpg
-> 403 {" error" :" Access denied: path outside allowed directory" }
从打包后的 sidecar 看,允许判断逻辑大致如下(混淆后的函数名):
function sZ6 ( q ) { let K = Zd ( q ) , $ = Zd ( os . homedir ( ) ) , z = Zd ( "/tmp" ) ;
if ( ss5 ( K , $ ) || ss5 ( K , z ) ) return true ;
if ( B6q ( K ) ) return true ; // VW7:只由会话 workDir / git 根 / checkpoint 改动文件动态加入
return false ; }
前端 Hj() 在 resolveImageSrc 返回 null 或加载失败时直接 e.remove() 掉 img,所以用户看不到任何报错。
诊断信息(可选)
相关 Event IDs: 无
已粘贴到 Issue 正文的诊断报告: 否
诊断包文件附件: 无
截图或录屏
(可附:回复中图片位置为空白的截图)
补充信息
典型场景:Windows 上项目和素材多数放在非系统盘(E:\、D:\)。会话 workDir 设在用户目录时,助手生成或引用的渲染图、截图全部显示不出来,用户会误以为是“模型看不了图”或者“对话不支持图片”。
目前的绕行办法:把图片复制到 %USERPROFILE% 下再引用;或者把会话 workDir 设成图片所在的项目目录。
建议:
在设置里加一个「额外允许读取的目录」配置项(写入 VW7 白名单);
或者把本会话中助手通过 Read/Write/Bash 实际访问过的文件所在目录自动加入白名单(checkpoint 改动文件现在已有类似逻辑);
前端在 403 时显示占位和原因,不要静默删除。
可参考 [BUG] 0.5.4 整理文件夹下的放置得图片,结果显示图片以及文字说明,其中的图片显示不出来 #1240 (v0.6.0 已修的图片位置问题)。本问题与之不同,是路径白名单导致的。
提交前确认
问题描述
助手回复里引用的本地图片,只要路径不在「用户主目录 /
/tmp/ 当前会话 workDir 及其 git 根」之内(例如E:\project\render.jpg),sidecar 的/local-file、/preview-fs、/api/filesystem/file都会返回403 Access denied: path outside allowed directory,前端随后直接移除<img>,界面上没有任何提示,图片就这样消失了。期望:能正常显示;或者至少显示一个“无权限访问该路径”的占位/提示,并提供可配置的额外允许目录。
运行环境
Provider / 模型配置
与 Provider 无关,属于本地文件服务的路径校验问题,任何模型都能复现。
复现步骤
C:\Users\<user>的会话里,让助手在回复中用 Markdown 引用另一块盘上的图片,例如,或者直接在正文写出该绝对路径。C:\Users\<user>\下并引用新路径,图片可以正常显示。是否稳定复现: 是
错误信息与日志
直接请求 sidecar 验证(端口为本机实际端口):
从打包后的 sidecar 看,允许判断逻辑大致如下(混淆后的函数名):
前端
Hj()在resolveImageSrc返回 null 或加载失败时直接e.remove()掉 img,所以用户看不到任何报错。诊断信息(可选)
截图或录屏
(可附:回复中图片位置为空白的截图)
补充信息
%USERPROFILE%下再引用;或者把会话 workDir 设成图片所在的项目目录。