fix: route deepseek through opencode
This commit is contained in:
@@ -21,6 +21,8 @@ const MAX_PREVIEW_CHARS: usize = 6000;
|
||||
const WORKDIR_MAX_CHARS: usize = 512;
|
||||
const SCHEDULER_HEARTBEAT_STALE_MS: i64 = 5 * 60 * 1000;
|
||||
const CODEX_STATS_TIME_ZONE: &str = "Asia/Shanghai";
|
||||
const DEEPSEEK_CHAT_MODEL: &str = "deepseek-chat";
|
||||
const MINIMAX_M27_MODEL: &str = "minimax-m2.7";
|
||||
|
||||
#[derive(Clone)]
|
||||
struct Config {
|
||||
@@ -130,13 +132,17 @@ fn normalize_code_model(value: &str) -> String {
|
||||
let lower = raw.to_ascii_lowercase();
|
||||
let leaf = lower.rsplit('/').next().unwrap_or(&lower);
|
||||
if leaf == "m2.7" || leaf == "minimax-m2.7" {
|
||||
return "minimax-m2.7".to_string();
|
||||
return MINIMAX_M27_MODEL.to_string();
|
||||
}
|
||||
if leaf == "deepseek" || leaf == "deepseek-chat" {
|
||||
return DEEPSEEK_CHAT_MODEL.to_string();
|
||||
}
|
||||
raw.to_string()
|
||||
}
|
||||
|
||||
fn code_agent_port(model: &str) -> &'static str {
|
||||
if normalize_code_model(model) == "minimax-m2.7" {
|
||||
let normalized = normalize_code_model(model);
|
||||
if normalized == MINIMAX_M27_MODEL || normalized == DEEPSEEK_CHAT_MODEL {
|
||||
"opencode"
|
||||
} else {
|
||||
"codex"
|
||||
@@ -208,7 +214,7 @@ fn config_from_env() -> Result<Config, String> {
|
||||
return Err("DATABASE_URL is required".to_string());
|
||||
}
|
||||
let default_model = normalize_code_model(&env_string("CODE_QUEUE_DEFAULT_MODEL", "gpt-5.5"));
|
||||
let model_source = env_string("CODE_QUEUE_MODELS", "gpt-5.5,gpt-5.4-mini,gpt-5.4,minimax-m2.7");
|
||||
let model_source = env_string("CODE_QUEUE_MODELS", "gpt-5.5,gpt-5.4-mini,gpt-5.4,deepseek-chat,minimax-m2.7");
|
||||
let mut code_models = vec![default_model.clone()];
|
||||
for item in model_source.split(',') {
|
||||
let model = normalize_code_model(item);
|
||||
|
||||
@@ -304,7 +304,9 @@ const codeQueueEnvironmentHint = [
|
||||
].join("\n");
|
||||
const maxTaskAttempts = 99;
|
||||
const workdirMaxLength = 512;
|
||||
const defaultCodeModels = ["gpt-5.5", "gpt-5.4-mini", "gpt-5.4", "minimax-m2.7"];
|
||||
const deepseekChatModel = "deepseek-chat";
|
||||
const minimaxM27Model = "minimax-m2.7";
|
||||
const defaultCodeModels = ["gpt-5.5", "gpt-5.4-mini", "gpt-5.4", deepseekChatModel, minimaxM27Model];
|
||||
const codeExecutionModes: CodeExecutionMode[] = ["default", "windows-native"];
|
||||
const codexStatsTimeZone = "Asia/Shanghai";
|
||||
const schedulerHeartbeatStaleMs = 5 * 60 * 1000;
|
||||
@@ -503,12 +505,14 @@ function normalizeCodeModel(value: string): string {
|
||||
if (raw.length === 0) return raw;
|
||||
const lower = raw.toLowerCase();
|
||||
const leaf = lower.includes("/") ? lower.split("/").at(-1) ?? lower : lower;
|
||||
if (leaf === "minimax-m2.7" || leaf === "m2.7") return "minimax-m2.7";
|
||||
if (leaf === "minimax-m2.7" || leaf === "m2.7") return minimaxM27Model;
|
||||
if (leaf === "deepseek" || leaf === "deepseek-chat") return deepseekChatModel;
|
||||
return raw;
|
||||
}
|
||||
|
||||
function codeAgentPortForModel(model: string): "codex" | "opencode" {
|
||||
return normalizeCodeModel(model) === "minimax-m2.7" ? "opencode" : "codex";
|
||||
const normalized = normalizeCodeModel(model);
|
||||
return normalized === minimaxM27Model || normalized === deepseekChatModel ? "opencode" : "codex";
|
||||
}
|
||||
|
||||
function codeAgentPortInfo(kind: "codex" | "opencode"): JsonRecord {
|
||||
|
||||
Reference in New Issue
Block a user