[错误] ADK 虚拟文件系统路径使用 filepath 进行清理,因此 InMemoryBackend 和其中间件在 Windows 上返回空值
作者: newnewself创建于 2026年9月12日更新于 2026年9月12日
描述错误
ADK 将 filesystem.Backend 路径视为 虚拟的、斜杠分隔的 路径 - InMemoryBackend 的全局匹配和前缀匹配硬编码为 /:
// backend_inmemory.go
matchPath = strings.TrimPrefix(normalizedFilePath, basePath+"/")
matched, err := doublestar.Match(globPattern, matchPath) // "/" 是分隔符
return filepath.Clean(path) // ← 但这取决于主机normalizePath (以及 path.Base / path.Ext 调用点) 使用 path/filepath,因此在 Windows 上,每个存储的路径都会用反斜杠重写(/skills/my-skill/SKILL.md → \skills\my-skill\SKILL.md),而上面的匹配仍然假设为 /。没有匹配,并且后端返回一个空结果集,而不是错误。
内容来源: cloudwego/eino