From c9b4813e68ed4018aa1ca8ca5c88e3a7000f2d1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Fri, 2 Oct 2026 15:08:23 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E5=B7=B2=E6=97=A0=E6=B6=88?= =?UTF-8?q?=E8=B4=B9=E8=80=85=E7=9A=84=20toolOutputTokenLimit=20=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - main.rs/config.rs/cli.rs 删除字段、默认值、校验、patch 合并与 CLI 展示 - 默认配置 game-creator.config.json 删除该键,旧配置里多余的键会被 serde 忽略 - 前端 types/RuntimeConfigDialog 与界面测试同步移除 - 该配置在 context_compaction 删除后已无任何 prompt 构建消费者 --- .../game-creator.config.json | 1 - .../src/agent/codex_app_server/mod.rs | 1 - .../src-tauri/src/agent/direct_runtime/mod.rs | 1 - .../src-tauri/src/cli.rs | 8 ------- .../src-tauri/src/config.rs | 21 ------------------ .../src-tauri/src/main.rs | 12 ---------- .../src-tauri/src/project/model_usage.rs | 1 - apps/ai-game-creator-shell/src/app/types.ts | 3 --- .../runtime-config/RuntimeConfigDialog.tsx | 22 ------------------- .../tests/appSurface/chat-composer.suite.ts | 1 - .../tests/appSurface/harness.ts | 1 - .../tests/appSurface/home.suite.ts | 1 - .../appSurface/runtime-settings.suite.ts | 8 ------- 13 files changed, 81 deletions(-) diff --git a/apps/ai-game-creator-shell/game-creator.config.json b/apps/ai-game-creator-shell/game-creator.config.json index 4aa61279a..cc8d7ffda 100644 --- a/apps/ai-game-creator-shell/game-creator.config.json +++ b/apps/ai-game-creator-shell/game-creator.config.json @@ -13,7 +13,6 @@ "webSearchEnabled": true, "contextWindowTokens": 128000, "autoCompactTokenLimit": 64000, - "toolOutputTokenLimit": 12000, "requestTimeoutMs": 180000, "maxRetries": 10, "retryBackoffMs": 500 diff --git a/apps/ai-game-creator-shell/src-tauri/src/agent/codex_app_server/mod.rs b/apps/ai-game-creator-shell/src-tauri/src/agent/codex_app_server/mod.rs index 3f28cb2a9..af4a38a1f 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/agent/codex_app_server/mod.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/agent/codex_app_server/mod.rs @@ -6364,7 +6364,6 @@ mod tests { web_search_enabled: false, context_window_tokens: 128_000, auto_compact_token_limit: 64_000, - tool_output_token_limit: 12_000, request_timeout_ms: 10_000, max_retries: 0, retry_backoff_ms: 100, diff --git a/apps/ai-game-creator-shell/src-tauri/src/agent/direct_runtime/mod.rs b/apps/ai-game-creator-shell/src-tauri/src/agent/direct_runtime/mod.rs index a6b101c07..63ee4fb73 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/agent/direct_runtime/mod.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/agent/direct_runtime/mod.rs @@ -5390,7 +5390,6 @@ mod tests { web_search_enabled: false, context_window_tokens: 128_000, auto_compact_token_limit: 64_000, - tool_output_token_limit: 12_000, request_timeout_ms: 10_000, max_retries: 0, retry_backoff_ms: 100, diff --git a/apps/ai-game-creator-shell/src-tauri/src/cli.rs b/apps/ai-game-creator-shell/src-tauri/src/cli.rs index 1850fe457..c708fa1ca 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/cli.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/cli.rs @@ -295,10 +295,6 @@ pub(crate) fn game_creator_llm_status_lines(status: &GameCreatorLlmConfigStatus) "llm.autoCompactTokenLimit={}", status.auto_compact_token_limit ), - format!( - "llm.toolOutputTokenLimit={}", - status.tool_output_token_limit - ), format!("llm.requestTimeoutMs={}", status.request_timeout_ms), format!("llm.maxRetries={}", status.max_retries), format!("llm.retryBackoffMs={}", status.retry_backoff_ms), @@ -359,10 +355,6 @@ pub(crate) fn game_creator_llm_status_lines(status: &GameCreatorLlmConfigStatus) "llm.agent.{}.autoCompactTokenLimit={}", agent.agent_id, agent.auto_compact_token_limit )); - lines.push(format!( - "llm.agent.{}.toolOutputTokenLimit={}", - agent.agent_id, agent.tool_output_token_limit - )); lines.push(format!( "llm.agent.{}.requestTimeoutMs={}", agent.agent_id, agent.request_timeout_ms diff --git a/apps/ai-game-creator-shell/src-tauri/src/config.rs b/apps/ai-game-creator-shell/src-tauri/src/config.rs index 8a16b71a8..5db150977 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/config.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/config.rs @@ -375,7 +375,6 @@ pub(crate) fn check_game_creator_llm_config_from_config() -> GameCreatorLlmConfi web_search_enabled: true, context_window_tokens: DEFAULT_GAME_CREATOR_LLM_CONTEXT_WINDOW_TOKENS, auto_compact_token_limit: DEFAULT_GAME_CREATOR_LLM_AUTO_COMPACT_TOKEN_LIMIT, - tool_output_token_limit: DEFAULT_GAME_CREATOR_LLM_TOOL_OUTPUT_TOKEN_LIMIT, request_timeout_ms: GAME_CREATOR_LLM_REQUEST_TIMEOUT_MS, max_retries: DEFAULT_GAME_CREATOR_LLM_MAX_RETRIES, retry_backoff_ms: DEFAULT_RETRY_BACKOFF_MS, @@ -640,7 +639,6 @@ pub(crate) fn check_game_creator_llm_config_values( web_search_enabled: config.web_search_enabled, context_window_tokens: config.context_window_tokens, auto_compact_token_limit: config.auto_compact_token_limit, - tool_output_token_limit: config.tool_output_token_limit, request_timeout_ms: config.request_timeout_ms, max_retries: config.max_retries, retry_backoff_ms: config.retry_backoff_ms, @@ -679,7 +677,6 @@ pub(crate) fn check_game_creator_agent_llm_config_values( web_search_enabled: config.web_search_enabled, context_window_tokens: config.context_window_tokens, auto_compact_token_limit: config.auto_compact_token_limit, - tool_output_token_limit: config.tool_output_token_limit, request_timeout_ms: config.request_timeout_ms, max_retries: config.max_retries, retry_backoff_ms: config.retry_backoff_ms, @@ -720,11 +717,6 @@ pub(crate) fn validate_game_creator_llm_context_config( "配置项 {config_path}.autoCompactTokenLimit 必须大于 0" )); } - if config.tool_output_token_limit == 0 { - return Err(format!( - "配置项 {config_path}.toolOutputTokenLimit 必须大于 0" - )); - } if config .auto_compact_token_limit .saturating_add(CONTEXT_SAFETY_MARGIN_TOKENS) @@ -734,11 +726,6 @@ pub(crate) fn validate_game_creator_llm_context_config( "配置项 {config_path}.autoCompactTokenLimit 必须至少为 contextWindowTokens 预留 {CONTEXT_SAFETY_MARGIN_TOKENS} tokens" )); } - if config.tool_output_token_limit > config.auto_compact_token_limit { - return Err(format!( - "配置项 {config_path}.toolOutputTokenLimit 不能大于 autoCompactTokenLimit" - )); - } Ok(()) } @@ -4245,9 +4232,6 @@ pub(crate) fn merge_game_creator_llm_config( if let Some(value) = patch.auto_compact_token_limit { config.auto_compact_token_limit = value; } - if let Some(value) = patch.tool_output_token_limit { - config.tool_output_token_limit = value; - } if let Some(value) = patch.request_timeout_ms { config.request_timeout_ms = value; } @@ -4296,9 +4280,6 @@ pub(crate) fn merge_game_creator_llm_patch( if let Some(value) = patch.auto_compact_token_limit { config.auto_compact_token_limit = Some(value); } - if let Some(value) = patch.tool_output_token_limit { - config.tool_output_token_limit = Some(value); - } if let Some(value) = patch.request_timeout_ms { config.request_timeout_ms = Some(value); } @@ -4606,7 +4587,6 @@ pub(crate) fn normalize_game_creator_llm_patch_config( for (field, value) in [ ("contextWindowTokens", patch.context_window_tokens), ("autoCompactTokenLimit", patch.auto_compact_token_limit), - ("toolOutputTokenLimit", patch.tool_output_token_limit), ] { if value.is_some_and(|value| value == 0) { return Err(format!("配置项 agentLlm.{agent_id}.{field} 必须大于 0")); @@ -4627,7 +4607,6 @@ pub(crate) fn is_empty_game_creator_llm_patch(patch: &GameCreatorLlmConfigFile) && patch.web_search_enabled.is_none() && patch.context_window_tokens.is_none() && patch.auto_compact_token_limit.is_none() - && patch.tool_output_token_limit.is_none() && patch.request_timeout_ms.is_none() && patch.max_retries.is_none() && patch.retry_backoff_ms.is_none() diff --git a/apps/ai-game-creator-shell/src-tauri/src/main.rs b/apps/ai-game-creator-shell/src-tauri/src/main.rs index df1ffc84e..9c7efbcaf 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/main.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/main.rs @@ -790,7 +790,6 @@ struct GameCreatorLlmConfigStatus { web_search_enabled: bool, context_window_tokens: u64, auto_compact_token_limit: u64, - tool_output_token_limit: u64, request_timeout_ms: u64, max_retries: u32, retry_backoff_ms: u64, @@ -812,7 +811,6 @@ struct GameCreatorAgentLlmConfigStatus { web_search_enabled: bool, context_window_tokens: u64, auto_compact_token_limit: u64, - tool_output_token_limit: u64, request_timeout_ms: u64, max_retries: u32, retry_backoff_ms: u64, @@ -863,8 +861,6 @@ struct GameCreatorLlmConfigFile { #[serde(skip_serializing_if = "Option::is_none")] auto_compact_token_limit: Option, #[serde(skip_serializing_if = "Option::is_none")] - tool_output_token_limit: Option, - #[serde(skip_serializing_if = "Option::is_none")] request_timeout_ms: Option, #[serde(skip_serializing_if = "Option::is_none")] max_retries: Option, @@ -916,8 +912,6 @@ struct GameCreatorLlmConfig { context_window_tokens: u64, #[serde(default = "default_game_creator_llm_auto_compact_token_limit")] auto_compact_token_limit: u64, - #[serde(default = "default_game_creator_llm_tool_output_token_limit")] - tool_output_token_limit: u64, request_timeout_ms: u64, max_retries: u32, retry_backoff_ms: u64, @@ -1310,7 +1304,6 @@ const DEFAULT_GAME_CREATOR_LLM_API_KIND: &str = "openai_responses"; const DEFAULT_GAME_CREATOR_LLM_REASONING_EFFORT: &str = "high"; const DEFAULT_GAME_CREATOR_LLM_CONTEXT_WINDOW_TOKENS: u64 = 128_000; const DEFAULT_GAME_CREATOR_LLM_AUTO_COMPACT_TOKEN_LIMIT: u64 = 64_000; -const DEFAULT_GAME_CREATOR_LLM_TOOL_OUTPUT_TOKEN_LIMIT: u64 = 12_000; const DEFAULT_GAME_CREATOR_LLM_MAX_RETRIES: u32 = 10; fn default_game_creator_agent_mode() -> String { @@ -1329,10 +1322,6 @@ fn default_game_creator_llm_auto_compact_token_limit() -> u64 { DEFAULT_GAME_CREATOR_LLM_AUTO_COMPACT_TOKEN_LIMIT } -fn default_game_creator_llm_tool_output_token_limit() -> u64 { - DEFAULT_GAME_CREATOR_LLM_TOOL_OUTPUT_TOKEN_LIMIT -} - const DEFAULT_CANVAS_SYNC_API_BASE_URL: &str = "https://dev.genarrative.world"; const DEFAULT_GAME_CREATOR_APP_CONFIG_JSON: &str = include_str!("../../game-creator.config.json"); const GAME_CREATOR_LLM_MAX_OUTPUT_TOKENS: u32 = 320000; @@ -1425,7 +1414,6 @@ impl Default for GameCreatorLlmConfig { web_search_enabled: false, context_window_tokens: DEFAULT_GAME_CREATOR_LLM_CONTEXT_WINDOW_TOKENS, auto_compact_token_limit: DEFAULT_GAME_CREATOR_LLM_AUTO_COMPACT_TOKEN_LIMIT, - tool_output_token_limit: DEFAULT_GAME_CREATOR_LLM_TOOL_OUTPUT_TOKEN_LIMIT, request_timeout_ms: GAME_CREATOR_LLM_REQUEST_TIMEOUT_MS, max_retries: DEFAULT_GAME_CREATOR_LLM_MAX_RETRIES, retry_backoff_ms: DEFAULT_RETRY_BACKOFF_MS, diff --git a/apps/ai-game-creator-shell/src-tauri/src/project/model_usage.rs b/apps/ai-game-creator-shell/src-tauri/src/project/model_usage.rs index 7090b48d6..024baef1d 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/project/model_usage.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/project/model_usage.rs @@ -373,7 +373,6 @@ mod tests { web_search_enabled: false, context_window_tokens: 128_000, auto_compact_token_limit: 64_000, - tool_output_token_limit: 12_000, request_timeout_ms: 10_000, max_retries: 0, retry_backoff_ms: 100, diff --git a/apps/ai-game-creator-shell/src/app/types.ts b/apps/ai-game-creator-shell/src/app/types.ts index 5d0c1e99a..28ec9cab4 100644 --- a/apps/ai-game-creator-shell/src/app/types.ts +++ b/apps/ai-game-creator-shell/src/app/types.ts @@ -547,7 +547,6 @@ export interface GameCreatorLlmConfigStatus { webSearchEnabled: boolean; contextWindowTokens?: number; autoCompactTokenLimit?: number; - toolOutputTokenLimit?: number; error: string | null; agents?: GameCreatorAgentLlmConfigStatus[]; } @@ -564,7 +563,6 @@ export interface GameCreatorAgentLlmConfigStatus { webSearchEnabled: boolean; contextWindowTokens?: number; autoCompactTokenLimit?: number; - toolOutputTokenLimit?: number; error: string | null; } @@ -599,7 +597,6 @@ export interface GameCreatorLlmConfig { webSearchEnabled: boolean; contextWindowTokens: number; autoCompactTokenLimit: number; - toolOutputTokenLimit: number; requestTimeoutMs: number; maxRetries: number; retryBackoffMs: number; diff --git a/apps/ai-game-creator-shell/src/features/runtime-config/RuntimeConfigDialog.tsx b/apps/ai-game-creator-shell/src/features/runtime-config/RuntimeConfigDialog.tsx index 1b4a52659..a69222be7 100644 --- a/apps/ai-game-creator-shell/src/features/runtime-config/RuntimeConfigDialog.tsx +++ b/apps/ai-game-creator-shell/src/features/runtime-config/RuntimeConfigDialog.tsx @@ -71,7 +71,6 @@ const defaultRuntimeConfigDraft: GameCreatorAppConfig = { webSearchEnabled: true, contextWindowTokens: 128000, autoCompactTokenLimit: 64000, - toolOutputTokenLimit: 12000, requestTimeoutMs: 180000, maxRetries: 10, retryBackoffMs: 500, @@ -194,12 +193,6 @@ function normalizeRuntimeConfigDraft( : defaultRuntimeConfigDraft.llm.autoCompactTokenLimit, 1, ), - toolOutputTokenLimit: clampRuntimeConfigNumber( - typeof config.llm.toolOutputTokenLimit === 'number' - ? config.llm.toolOutputTokenLimit - : defaultRuntimeConfigDraft.llm.toolOutputTokenLimit, - 1, - ), requestTimeoutMs: clampRuntimeConfigNumber( config.llm.requestTimeoutMs, 1000, @@ -1018,21 +1011,6 @@ export function RuntimeConfigDialog({ } /> -