feat: 优化 CUA 功能体验

This commit is contained in:
mofeng-git
2026-07-17 16:32:17 +08:00
parent 4031abd8d6
commit fdea52d59d
13 changed files with 1744 additions and 717 deletions

View File

@@ -6,25 +6,42 @@ use typeshare::typeshare;
#[serde(default)]
pub struct ComputerUseConfig {
pub enabled: bool,
pub provider: String,
pub base_url: String,
pub model: String,
#[typeshare(skip)]
pub openai_api_key: Option<String>,
pub max_steps: u32,
pub timeout_seconds: u32,
#[serde(alias = "openai_api_key")]
pub api_key: Option<String>,
}
impl Default for ComputerUseConfig {
fn default() -> Self {
Self {
enabled: false,
provider: "openai".to_string(),
base_url: "https://api.openai.com/v1/responses".to_string(),
model: "gpt-5.5".to_string(),
openai_api_key: None,
max_steps: 30,
timeout_seconds: 600,
api_key: None,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn legacy_openai_api_key_migrates_to_generic_key() {
let config: ComputerUseConfig = serde_json::from_value(serde_json::json!({
"enabled": true,
"provider": "openai",
"base_url": "https://example.test/v1/chat/completions",
"model": "vision-model",
"openai_api_key": "legacy-key",
"max_steps": 30,
"timeout_seconds": 600
}))
.unwrap();
assert_eq!(config.api_key.as_deref(), Some("legacy-key"));
assert_eq!(config.model, "vision-model");
}
}