refactor: add execution backend selection

This commit is contained in:
kris
2026-04-03 00:21:19 +08:00
parent a3a4f3e980
commit 8a62e72fd5
11 changed files with 1067 additions and 318 deletions

View File

@@ -610,8 +610,9 @@ export async function selectExecutionBackend(input: {
primary: { provider: string; status: string };
backups: Array<{ provider: string; status: string }>;
}) {
if (input.primary.provider === "master_codex_node" && input.primary.status === "ready") {
return { backendId: "master-codex-node" };
const primaryBackend = resolveBackendByProvider(input.primary.provider);
if (input.primary.status === "ready") {
return primaryBackend;
}
const qwen = input.backups.find((item) => item.provider === "aliyun_qwen_api" && item.status === "ready");
if (qwen) {
@@ -621,12 +622,20 @@ export async function selectExecutionBackend(input: {
if (openai) {
return { backendId: "openai-api" };
}
return { backendId: "master-codex-node" };
const master = input.backups.find((item) => item.provider === "master_codex_node" && item.status === "ready");
if (master) {
return { backendId: "master-codex-node" };
}
return primaryBackend;
}
export const selectExecutionBackendForTesting = selectExecutionBackend;
```
补充说明:
- selector 的运行时语义以“`ready primary` 优先,否则按 `aliyun_qwen -> openai -> master_codex_node` 顺序回退,最后再回 primary 兜底”为准。
- 如果同一 provider 存在多个账号,只要其中任何一个是 `ready`,该 backend 就视为可选。
`/Users/kris/code/boss/src/lib/boss-master-agent.ts` 中,把 provider fallback 的选择逻辑收进一个单独调用:
```ts