fix(codex): 服务端压缩使用标准 Responses 合约

This commit is contained in:
ZheFox
2026-07-16 12:02:33 +08:00
parent 3976652942
commit 71fcb9c168
9 changed files with 139 additions and 24 deletions
@@ -122,8 +122,9 @@ pub(crate) fn apply_provider_request_routing_policy_to_decision(
input.requested_model.as_str(),
)
});
crate::ai_serving::apply_codex_openai_responses_lite_header_with_capabilities(
crate::ai_serving::apply_codex_openai_responses_lite_header_for_request_body_with_capabilities(
&mut decision.provider_request_headers,
decision.provider_request_body.as_ref(),
provider_type.as_str(),
provider_api_format.as_str(),
terminal_provider_model,
@@ -254,8 +255,9 @@ pub(crate) fn apply_provider_request_routing_policy_to_decision(
input.requested_model.as_str(),
)
});
crate::ai_serving::apply_codex_openai_responses_lite_header_with_capabilities(
crate::ai_serving::apply_codex_openai_responses_lite_header_for_request_body_with_capabilities(
&mut provider_request_headers,
Some(&provider_request_body),
provider_type.as_str(),
provider_api_format.as_str(),
provider_model,
@@ -531,8 +531,9 @@ pub(crate) async fn resolve_local_same_format_provider_candidate_payload_parts(
.get("model")
.and_then(Value::as_str)
.unwrap_or(prepared.mapped_model.as_str());
crate::ai_serving::apply_codex_openai_responses_lite_header_with_capabilities(
crate::ai_serving::apply_codex_openai_responses_lite_header_for_request_body_with_capabilities(
&mut provider_request_headers,
Some(&provider_request_body),
transport.provider.provider_type.as_str(),
prepared.provider_api_format.as_str(),
provider_model,
@@ -685,8 +685,9 @@ pub(crate) async fn resolve_local_openai_responses_candidate_payload_parts(
Some(trace_id),
transport.key.decrypted_auth_config.as_deref(),
);
crate::ai_serving::apply_codex_openai_responses_lite_header_with_capabilities(
crate::ai_serving::apply_codex_openai_responses_lite_header_for_request_body_with_capabilities(
&mut provider_request_headers,
Some(&provider_request_body),
transport.provider.provider_type.as_str(),
provider_api_format,
mapped_model.as_str(),
@@ -4,6 +4,7 @@ pub(crate) use aether_ai_formats::api::{
aggregate_standard_chat_stream_sync_response, aggregate_standard_cli_stream_sync_response,
api_format_alias_matches, api_format_storage_aliases,
apply_codex_openai_compact_terminal_headers, apply_codex_openai_responses_chat_body_edits,
apply_codex_openai_responses_lite_header_for_request_body_with_capabilities,
apply_codex_openai_responses_lite_header_with_capabilities,
apply_codex_openai_responses_special_body_edits,
apply_codex_openai_responses_special_body_edits_with_source_model_and_capabilities,
@@ -3464,8 +3464,9 @@ async fn provider_query_execute_standard_test_candidate(
.get("model")
.and_then(Value::as_str)
.unwrap_or(request_model);
crate::ai_serving::apply_codex_openai_responses_lite_header_with_capabilities(
crate::ai_serving::apply_codex_openai_responses_lite_header_for_request_body_with_capabilities(
&mut request_headers,
Some(&provider_request_body),
transport.provider.provider_type.as_str(),
provider_api_format,
final_provider_model,
@@ -705,18 +705,15 @@ async fn gateway_executes_codex_cli_stream_via_local_decision_gate_after_oauth_r
seen_execution_runtime_request.thread_id,
seen_execution_runtime_request.prompt_cache_key
);
assert_eq!(seen_execution_runtime_request.responses_lite, "true");
assert!(!seen_execution_runtime_request.has_top_level_tools);
assert!(!seen_execution_runtime_request.has_top_level_instructions);
assert!(seen_execution_runtime_request.has_additional_tools);
assert!(!seen_execution_runtime_request.parallel_tool_calls);
assert!(seen_execution_runtime_request.responses_lite.is_empty());
assert!(seen_execution_runtime_request.has_top_level_tools);
assert!(seen_execution_runtime_request.has_top_level_instructions);
assert!(!seen_execution_runtime_request.has_additional_tools);
assert!(seen_execution_runtime_request.parallel_tool_calls);
assert_eq!(seen_execution_runtime_request.reasoning_effort, "low");
assert_eq!(
seen_execution_runtime_request.reasoning_context,
"all_turns"
);
assert!(seen_execution_runtime_request.reasoning_context.is_empty());
assert!(seen_execution_runtime_request.has_compaction_trigger);
assert!(!seen_execution_runtime_request.has_context_management);
assert!(seen_execution_runtime_request.has_context_management);
let stored_candidates = request_candidate_repository
.list_by_request_id("trace-codex-cli-stream-local-123")