diff --git a/apps/ai-game-creator-shell/src/features/project-workspace/ResourceReferenceInput.tsx b/apps/ai-game-creator-shell/src/features/project-workspace/ResourceReferenceInput.tsx index c7f03be38..40567649c 100644 --- a/apps/ai-game-creator-shell/src/features/project-workspace/ResourceReferenceInput.tsx +++ b/apps/ai-game-creator-shell/src/features/project-workspace/ResourceReferenceInput.tsx @@ -616,6 +616,7 @@ function ResourceReferenceEditor({ } | null>(null); // Skill 清单来自宿主:只在用户真正打开 `$` 候选时查一次。输入区挂载即发起 // Tauri 调用会让「工作区路径非法时不产生任何后端访问」的边界失效。 + // 查询失败时放开 requested 标记:一次瞬时失败不能让这个输入区此后永远拿不到技能候选。 useEffect(() => { if (skillQuery === null || skillCatalogRequestedRef.current) return; const invoke = resolveTauriInvoke(); @@ -634,6 +635,7 @@ function ResourceReferenceEditor({ ); }) .catch(() => { + skillCatalogRequestedRef.current = false; setBuiltinSkills([]); }); void invoke< @@ -657,6 +659,7 @@ function ResourceReferenceEditor({ ); }) .catch(() => { + skillCatalogRequestedRef.current = false; setClientSkills([]); }); }, [skillQuery]);