diff --git a/apps/ai-game-creator-shell/src-tauri/src/agent/direct_turn_error.rs b/apps/ai-game-creator-shell/src-tauri/src/agent/direct_turn_error.rs index 537dbb819..21684a950 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/agent/direct_turn_error.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/agent/direct_turn_error.rs @@ -470,8 +470,9 @@ impl DirectTurnError { /// 命令边界要不要为这条**拒单**补一份运行错误诊断。 /// /// 只有"宿主 / 环境的事实故障、用户自己改不了"才值得进 `.agent/runtime/errors` 与应用日志; - /// 空内容、`clientTurnId` 形状、另一轮在跑、权限策略、目录不是绝对路径都是用户的正常操作结果, - /// 留痕只会变成噪声。判据按变体分,不看文案。 + /// 空内容、`clientTurnId` 形状、另一轮在跑、权限策略、目录锚不定 / 不是绝对路径都是用户自己 + /// 就能修的操作结果,留痕只会变成噪声;它们仍按 `Display` 给用户一句可读的话。判据按变体分, + /// 不看文案。 /// /// 回合级失败恒为 `false`:它们在上游(`record_direct_codex_failure`)已经写过诊断,边界再写一次 /// 就是同一件事留两份。 @@ -479,11 +480,12 @@ impl DirectTurnError { match self { // 连接 / 配置 / 凭据 / 脚手架未就绪与宿主状态取不到:现场只有宿主知道,必须留痕。 Self::EnvironmentNotReady { .. } | Self::HostStateUnavailable { .. } => true, - // 项目目录锚不定是文件系统事实(符号链接 / 权限 / 目录被删),不是用户输入。 - Self::ProjectRootUnanchored { .. } => true, Self::ClientTurnIdMissing | Self::ClientTurnIdMalformed { .. } | Self::TurnAlreadyRunning { .. } + // 项目目录锚不定(符号链接 / 权限 / 目录被删)与目录不存在同类:都是用户能自己修好的 + // 文件系统事实,诊断文案不该顶替那句"无法锚定 Direct 调用项目目录:{cause}"。 + | Self::ProjectRootUnanchored { .. } | Self::ProjectRootUnusable | Self::PermissionRejected { .. } | Self::InputRejected { .. } @@ -1000,7 +1002,7 @@ mod tests { detail: "宿主 CLI 回合身份读取中断".into(), } .is_reportable()); - assert!(DirectTurnError::ProjectRootUnanchored { + assert!(!DirectTurnError::ProjectRootUnanchored { cause: "拒绝访问".into(), } .is_reportable());