diff --git a/apps/ai-game-creator-shell/src-tauri/src/agent/runtime_actions/provider_request_builders.rs b/apps/ai-game-creator-shell/src-tauri/src/agent/runtime_actions/provider_request_builders.rs index 7d5873f3a..402854ac5 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/agent/runtime_actions/provider_request_builders.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/agent/runtime_actions/provider_request_builders.rs @@ -25,7 +25,7 @@ fn provider_command_exec_contract() -> &'static str { #[cfg(target_os = "linux")] fn provider_command_start_contract() -> &'static str { - "command.start 使用 {\"program\":\"受信任 PATH 中的裸可执行名\",\"args\":[\"逐项 argv\"],\"cwd\":\"项目内相对目录\",\"timeoutSeconds\":300}" + "command.start 使用 {\"program\":\"受信任 PATH 中的裸可执行名\",\"args\":[\"逐项 argv\"],\"cwd\":\"项目内相对目录\",\"timeoutSeconds\":300};Linux 持久进程同样固定运行在 bubblewrap workspace-write、network-disabled 沙箱内" } #[cfg(not(target_os = "linux"))] @@ -493,9 +493,12 @@ mod tests { assert_eq!(supervisor_prompt.matches("command.exec 使用").count(), 1); assert_eq!(supervisor_prompt.matches("command.start 使用").count(), 1); #[cfg(target_os = "linux")] - assert!( - !supervisor_prompt.contains("command.exec 使用 {\"program\":\"cargo|npm|node|git|rg\"") - ); + { + assert!(!supervisor_prompt + .contains("command.exec 使用 {\"program\":\"cargo|npm|node|git|rg\"")); + assert!(provider_command_start_contract().contains("workspace-write")); + assert!(provider_command_start_contract().contains("network-disabled")); + } let ordinary_state = start_game_creator_agent_runtime_task_at( &root,