51 lines · 1.7 KB · Rust
RawDownload
use agent::{EditFileMode, EditFileToolInput};use agent_settings::AgentProfileId;use anyhow::Result;use async_trait::async_trait; use crate::example::{Example, ExampleContext, ExampleMetadata}; pub struct FileOverwriteExample; /*This eval tests a fix for a destructive behavior of the `edit_file` tool.Previously, it would rewrite existing files too aggressively, which oftenresulted in content loss. Model           | Pass rate----------------|----------Sonnet 3.7      | 100%Gemini 2.5 Pro  |  80%*/ #[async_trait(?Send)]impl Example for FileOverwriteExample {    fn meta(&self) -> ExampleMetadata {        let thread_json = include_str!("threads/overwrite-file.json");         ExampleMetadata {            name: "file_overwrite".to_string(),            url: "https://github.com/zed-industries/zed.git".to_string(),            revision: "023a60806a8cc82e73bd8d88e63b4b07fc7a0040".to_string(),            language_server: None,            max_assertions: Some(1),            profile_id: AgentProfileId::default(),            existing_thread_json: Some(thread_json.to_string()),            max_turns: None,        }    }     async fn conversation(&self, cx: &mut ExampleContext) -> Result<()> {        let response = cx.proceed_with_max_turns(1).await?;        let tool_use = response.expect_tool_call("edit_file", cx)?;        let input = tool_use.parse_input::<EditFileToolInput>()?;        let file_overwritten = match input.mode {            EditFileMode::Edit => false,            EditFileMode::Create | EditFileMode::Overwrite => {                input.path.ends_with("src/language_model_selector.rs")            }        };         cx.assert(!file_overwritten, "File should be edited, not overwritten")    }}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t