From 588768bff080f9537b4effd82f1a941da766e150 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 15:58:08 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=99=20ui-design-doc=20=E4=B8=89=E4=B8=AA?= =?UTF-8?q?=E8=A7=82=E5=AF=9F=E7=9A=84=20rejected=20=E6=91=98=E8=A6=81?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E8=84=B1=E6=95=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit agent/runtime_tools/ui_design_doc.rs 让 rejected 接收项目根并复用 redact_agent_runtime_project_paths:项目上下文缺失时的报错会带上宿主路径,原先把 rejected 当成「只含模型参数」直接透出,摘要会泄露绝对路径 --- .../src/agent/runtime_tools/ui_design_doc.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/apps/ai-game-creator-shell/src-tauri/src/agent/runtime_tools/ui_design_doc.rs b/apps/ai-game-creator-shell/src-tauri/src/agent/runtime_tools/ui_design_doc.rs index 423d63859..ca9a24160 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/agent/runtime_tools/ui_design_doc.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/agent/runtime_tools/ui_design_doc.rs @@ -35,11 +35,11 @@ pub(in crate::agent) fn observe_agent_runtime_ui_design_doc_from_images( let tool = UI_DESIGN_DOC_FROM_IMAGES_TOOL; let arguments = match serde_json::from_value::(input.clone()) { Ok(arguments) => arguments, - Err(error) => return rejected(tool, format!("{tool} 输入无效:{error}")), + Err(error) => return rejected(root, tool, format!("{tool} 输入无效:{error}")), }; let expected_project_id = match game_creator_agent_runtime_context_project_id(root) { Ok(project_id) => project_id, - Err(error) => return rejected(tool, error), + Err(error) => return rejected(root, tool, error), }; let revision_before = read_game_creator_agent_runtime_project_revision(root) .ok() @@ -83,11 +83,11 @@ pub(in crate::agent) async fn observe_agent_runtime_ui_design_doc_run_workflow( let tool = UI_DESIGN_DOC_RUN_WORKFLOW_TOOL; let arguments = match serde_json::from_value::(input.clone()) { Ok(arguments) => arguments, - Err(error) => return rejected(tool, format!("{tool} 输入无效:{error}")), + Err(error) => return rejected(root, tool, format!("{tool} 输入无效:{error}")), }; let expected_project_id = match game_creator_agent_runtime_context_project_id(root) { Ok(project_id) => project_id, - Err(error) => return rejected(tool, error), + Err(error) => return rejected(root, tool, error), }; let revision_before = read_game_creator_agent_runtime_project_revision(root) .ok() @@ -142,11 +142,11 @@ pub(in crate::agent) fn observe_agent_runtime_ui_design_doc_into_js( let tool = UI_DESIGN_DOC_INTO_JS_TOOL; let arguments = match serde_json::from_value::(input.clone()) { Ok(arguments) => arguments, - Err(error) => return rejected(tool, format!("{tool} 输入无效:{error}")), + Err(error) => return rejected(root, tool, format!("{tool} 输入无效:{error}")), }; let expected_project_id = match game_creator_agent_runtime_context_project_id(root) { Ok(project_id) => project_id, - Err(error) => return rejected(tool, error), + Err(error) => return rejected(root, tool, error), }; match generate_ui_design_code_at(GenerateUiDesignCodeInput { project_path: root.to_string_lossy().into_owned(), @@ -166,12 +166,12 @@ pub(in crate::agent) fn observe_agent_runtime_ui_design_doc_into_js( } } -/// 输入解析失败:模型只给了参数,摘要里不含宿主路径,无需再脱敏。 -fn rejected(tool: &str, summary: String) -> AgentRuntimeToolObservation { +/// 输入解析失败或项目上下文缺失:统一脱敏,避免摘要把宿主路径带给 provider。 +fn rejected(root: &Path, tool: &str, summary: String) -> AgentRuntimeToolObservation { AgentRuntimeToolObservation { tool: tool.to_string(), status: "rejected".to_string(), - summary, + summary: redact_agent_runtime_project_paths(root, &summary, 240), detail: None, } }