From 4184c5fce222ea70f90c8da236162876cefdfaa9 Mon Sep 17 00:00:00 2001 From: kdletters <61648117+kdletters@users.noreply.github.com> Date: Tue, 6 Oct 2026 00:10:58 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=A7=E7=BB=AD=E6=94=B6=E6=95=9B=E7=AD=96?= =?UTF-8?q?=E5=88=92=E5=B7=A5=E4=BD=9C=E5=8C=BA=E4=B8=8E=E4=BA=A4=E4=BB=98?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 保留计划合同 serde 与工作区读写失败正文 避免目录枚举和文本搜索把权限错误当成空结果 --- .../src-tauri/src/agent/design_tools.rs | 11 +++++++---- .../src-tauri/src/agent/direct_delivery.rs | 5 +++-- .../plans/【里程碑】AGC错误具体文本展示-2026-10-04.md | 1 + 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/apps/ai-game-creator-shell/src-tauri/src/agent/design_tools.rs b/apps/ai-game-creator-shell/src-tauri/src/agent/design_tools.rs index 5dc6c824c..5237b0715 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/agent/design_tools.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/agent/design_tools.rs @@ -499,7 +499,7 @@ pub(crate) fn list_design_workspace_files( Ok(entries) => entries .collect::, _>>() .map_err(|error| format!("读取工作区失败:{error}"))?, - Err(_) => continue, + Err(error) => return Err(format!("读取工作区目录失败:{error}")), }; entries.sort_by_key(|entry| entry.file_name()); for entry in entries { @@ -881,9 +881,12 @@ fn search_design_text( return Ok(()); } if path.is_file() { - let Ok(text) = fs::read_to_string(path) else { - return Ok(()); - }; + let text = fs::read_to_string(path).map_err(|error| { + format!( + "搜索工作区文件失败:{}:{error}", + design_tool_location(root, path) + ) + })?; let display = design_tool_location(root, path); for (index, line) in text.lines().enumerate() { if line.contains(query) { diff --git a/apps/ai-game-creator-shell/src-tauri/src/agent/direct_delivery.rs b/apps/ai-game-creator-shell/src-tauri/src/agent/direct_delivery.rs index da2c19017..72c372230 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/agent/direct_delivery.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/agent/direct_delivery.rs @@ -39,7 +39,7 @@ pub(super) async fn update_plan( input: &Value, ) -> Result { let mut plan: DirectPlanInput = serde_json::from_value(input.clone()) - .map_err(|_| "direct-plan-invalid: 计划只接受explanation与plan(step,status)")?; + .map_err(|error| format!("direct-plan-invalid: 计划参数解析失败:{error}"))?; if plan.plan.is_empty() || plan.plan.len() > 32 { return Err("direct-plan-invalid: 计划需包含1到32步".into()); } @@ -177,7 +177,8 @@ struct FrozenContract { } fn normalized_contract(input: &Value, new_web_game: bool) -> Result { - let mut input: ContractInput = serde_json::from_value(input.clone()).map_err(|_| "delivery-contract-invalid: 只接受 scope、changeKind 和明确类型的 requirements,不接受通过声明")?; + let mut input: ContractInput = serde_json::from_value(input.clone()) + .map_err(|error| format!("delivery-contract-invalid: 合同参数解析失败:{error}"))?; input.scope = input.scope.trim().to_string(); if input.scope.is_empty() || input.scope.chars().count() > 1200 diff --git a/docs/project-memory/plans/【里程碑】AGC错误具体文本展示-2026-10-04.md b/docs/project-memory/plans/【里程碑】AGC错误具体文本展示-2026-10-04.md index fc4a57ef6..ddf2a199a 100644 --- a/docs/project-memory/plans/【里程碑】AGC错误具体文本展示-2026-10-04.md +++ b/docs/project-memory/plans/【里程碑】AGC错误具体文本展示-2026-10-04.md @@ -80,3 +80,4 @@ DirectProject 回合失败在确认不是客户端内部不可归类故障时, - 项目权限策略读取还有两条调用方会在 IPC 异常时直接返回 `false`;现把脱敏后的读取错误同时写入工作台状态和项目聊天错误,不再把“未获权限”与“策略读取失败”混为一谈。 - 策划 Agent 的 Tauri 事件订阅失败原先只放行回合等待、没有任何用户提示;现把订阅 IPC 正文写入项目聊天错误出口,避免只收到不完整的最终态。 - 专业 Agent 历史回读与项目清单同步的后台 Promise 失败原先只返回 `failed` 或静默结束;现把具体读取/同步正文写入项目聊天错误出口。 +- Direct 交付计划/合同 JSON 解析、策划工作区目录枚举与文本搜索还有 `map_err(|_|)` / `Err(_)` 丢细节;现保留 serde、目录和文件读取正文,安全路径边界仍单独拒绝。