From 9339b64bae945f13d23f7913e2e50373ca6e4c21 Mon Sep 17 00:00:00 2001 From: iven Date: Mon, 6 Apr 2026 15:15:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20audit=20findings=20=E2=80=94=20test=20co?= =?UTF-8?q?mpilation,=20artifact=20pipeline,=20typo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - C-1: Add event_sender: None to ToolContext in file_write.rs and file_read.rs test helper functions (compilation fix) - I-1: file_write tool now echoes content preview in output JSON, enabling streamStore.ts artifact auto-creation pipeline to work - S-2: Fix typo "LLM 锥应错误" → "LLM 响应错误" in loop_runner.rs --- crates/zclaw-runtime/src/loop_runner.rs | 2 +- .../zclaw-runtime/src/tool/builtin/file_read.rs | 1 + .../zclaw-runtime/src/tool/builtin/file_write.rs | 16 +++++++++++++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/crates/zclaw-runtime/src/loop_runner.rs b/crates/zclaw-runtime/src/loop_runner.rs index 9877774..f8f9afa 100644 --- a/crates/zclaw-runtime/src/loop_runner.rs +++ b/crates/zclaw-runtime/src/loop_runner.rs @@ -744,7 +744,7 @@ impl AgentLoop { } Ok(Some(Err(e))) => { tracing::error!("[AgentLoop] Chunk error: {}", e); - let _ = tx.send(LoopEvent::Error(format!("LLM 锥应错误: {}", e.to_string()))).await; + let _ = tx.send(LoopEvent::Error(format!("LLM 响应错误: {}", e.to_string()))).await; stream_errored = true; } Ok(None) => break, // Stream ended normally diff --git a/crates/zclaw-runtime/src/tool/builtin/file_read.rs b/crates/zclaw-runtime/src/tool/builtin/file_read.rs index c0a5b84..25fa015 100644 --- a/crates/zclaw-runtime/src/tool/builtin/file_read.rs +++ b/crates/zclaw-runtime/src/tool/builtin/file_read.rs @@ -140,6 +140,7 @@ mod tests { session_id: None, skill_executor: None, path_validator, + event_sender: None, }; let tool = FileReadTool::new(); diff --git a/crates/zclaw-runtime/src/tool/builtin/file_write.rs b/crates/zclaw-runtime/src/tool/builtin/file_write.rs index 684e068..0f1803c 100644 --- a/crates/zclaw-runtime/src/tool/builtin/file_write.rs +++ b/crates/zclaw-runtime/src/tool/builtin/file_write.rs @@ -119,11 +119,24 @@ impl Tool for FileWriteTool { file.write_all(&bytes) .map_err(|e| ZclawError::ToolError(format!("Failed to write file: {}", e)))?; + // Echo content preview in output for artifact auto-creation in frontend + let content_preview: String = if content.len() <= 5000 { + content.to_string() + } else { + let truncation_point = content.char_indices() + .take_while(|(i, _)| *i < 5000) + .last() + .map(|(i, c)| i + c.len_utf8()) + .unwrap_or(5000.min(content.len())); + format!("{}...[truncated, {} total bytes]", &content[..truncation_point], content.len()) + }; + Ok(json!({ "success": true, "bytes_written": bytes.len(), "path": validated_path.to_string_lossy(), - "mode": mode + "mode": mode, + "content": content_preview })) } } @@ -150,6 +163,7 @@ mod tests { session_id: None, skill_executor: None, path_validator, + event_sender: None, } }