#1281·eino

[错误] ADK 虚拟文件系统路径使用 filepath 进行清理,因此 InMemoryBackend 和其中间件在 Windows 上返回空值

作者: newnewself创建于 2026年9月12日更新于 2026年9月12日

描述错误

ADK 将 filesystem.Backend 路径视为 虚拟的、斜杠分隔的 路径 - InMemoryBackend 的全局匹配和前缀匹配硬编码为 /:

go
// 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),而上面的匹配仍然假设为 /。没有匹配,并且后端返回一个空结果集,而不是错误。