From 5a0f3b80376aa41d074de43fbef53882d41ea34d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Thu, 24 Sep 2026 16:16:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=BF=E4=B8=BB=EF=BC=9A=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E9=94=9A=E4=B8=8D=E5=AE=9A=E7=9A=84=E6=8B=92=E5=8D=95=E4=B8=8D?= =?UTF-8?q?=E5=86=8D=E5=86=99=E8=AF=8A=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - `ProjectRootUnanchored` 从 `is_reportable()` 拿掉,与 `ProjectRootUnusable` 同类:符号链接 / 权限 / 目录被删都是用户自己就能修的文件系统事实,留痕只会变成噪声 - 它不再被 `direct_turn_rejection` 覆写成 `direct-codex-failure:v2 …` 诊断文案,界面按 `Display` 显示「无法锚定 Direct 调用项目目录:{cause}」,两侧对同一变体的分类不再自相矛盾 - 同步 `only_host_and_environment_rejections_are_reportable` 用例与 `is_reportable` 的文档注释 --- .../src-tauri/src/agent/direct_turn_error.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) 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());