refactor: remove kimi-k2.5-free from all fallback chains and reorder multimodal-looker

kimi-k2.5-free is no longer available. Remove from all agent and category
fallback chains (sisyphus, multimodal-looker, prometheus, metis, atlas,
writing). Reorder multimodal-looker to: gpt-5.3-codex medium -> k2p5 ->
gemini-3-flash -> glm-4.6v -> gpt-5-nano.
This commit is contained in:
YeonGyu-Kim 2026-03-04 11:24:39 +09:00
parent 1ef5c17c35
commit 8c2dcb75cb
3 changed files with 24 additions and 37 deletions

View File

@ -9,7 +9,6 @@ export const CLI_AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
fallbackChain: [ fallbackChain: [
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" },
{ providers: ["kimi-for-coding"], model: "k2p5" }, { providers: ["kimi-for-coding"], model: "k2p5" },
{ providers: ["opencode"], model: "kimi-k2.5-free" },
{ providers: ["zai-coding-plan"], model: "glm-4.7" }, { providers: ["zai-coding-plan"], model: "glm-4.7" },
{ providers: ["opencode"], model: "glm-4.7-free" }, { providers: ["opencode"], model: "glm-4.7-free" },
], ],
@ -45,12 +44,9 @@ export const CLI_AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
"multimodal-looker": { "multimodal-looker": {
fallbackChain: [ fallbackChain: [
{ providers: ["openai", "opencode"], model: "gpt-5.3-codex", variant: "medium" }, { providers: ["openai", "opencode"], model: "gpt-5.3-codex", variant: "medium" },
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" },
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" },
{ providers: ["zai-coding-plan"], model: "glm-4.6v" },
{ providers: ["kimi-for-coding"], model: "k2p5" }, { providers: ["kimi-for-coding"], model: "k2p5" },
{ providers: ["opencode"], model: "kimi-k2.5-free" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" },
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-haiku-4-5" }, { providers: ["zai-coding-plan"], model: "glm-4.6v" },
{ providers: ["opencode"], model: "gpt-5-nano" }, { providers: ["opencode"], model: "gpt-5-nano" },
], ],
}, },
@ -58,7 +54,6 @@ export const CLI_AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
fallbackChain: [ fallbackChain: [
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" },
{ providers: ["kimi-for-coding"], model: "k2p5" }, { providers: ["kimi-for-coding"], model: "k2p5" },
{ providers: ["opencode"], model: "kimi-k2.5-free" },
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" },
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro" },
], ],
@ -67,7 +62,6 @@ export const CLI_AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
fallbackChain: [ fallbackChain: [
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" },
{ providers: ["kimi-for-coding"], model: "k2p5" }, { providers: ["kimi-for-coding"], model: "k2p5" },
{ providers: ["opencode"], model: "kimi-k2.5-free" },
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" },
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" },
], ],
@ -82,7 +76,6 @@ export const CLI_AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
atlas: { atlas: {
fallbackChain: [ fallbackChain: [
{ providers: ["kimi-for-coding"], model: "k2p5" }, { providers: ["kimi-for-coding"], model: "k2p5" },
{ providers: ["opencode"], model: "kimi-k2.5-free" },
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-5" }, { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-5" },
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" },
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro" },

View File

@ -31,7 +31,7 @@ describe("AGENT_MODEL_REQUIREMENTS", () => {
// #then - fallbackChain has claude-opus-4-6 first, big-pickle last // #then - fallbackChain has claude-opus-4-6 first, big-pickle last
expect(sisyphus).toBeDefined() expect(sisyphus).toBeDefined()
expect(sisyphus.fallbackChain).toBeArray() expect(sisyphus.fallbackChain).toBeArray()
expect(sisyphus.fallbackChain).toHaveLength(4) expect(sisyphus.fallbackChain).toHaveLength(3)
expect(sisyphus.requiresAnyModel).toBe(true) expect(sisyphus.requiresAnyModel).toBe(true)
const primary = sisyphus.fallbackChain[0] const primary = sisyphus.fallbackChain[0]
@ -39,7 +39,7 @@ describe("AGENT_MODEL_REQUIREMENTS", () => {
expect(primary.model).toBe("claude-opus-4-6") expect(primary.model).toBe("claude-opus-4-6")
expect(primary.variant).toBe("max") expect(primary.variant).toBe("max")
const last = sisyphus.fallbackChain[3] const last = sisyphus.fallbackChain[2]
expect(last.providers[0]).toBe("opencode") expect(last.providers[0]).toBe("opencode")
expect(last.model).toBe("big-pickle") expect(last.model).toBe("big-pickle")
}) })
@ -91,10 +91,10 @@ describe("AGENT_MODEL_REQUIREMENTS", () => {
const multimodalLooker = AGENT_MODEL_REQUIREMENTS["multimodal-looker"] const multimodalLooker = AGENT_MODEL_REQUIREMENTS["multimodal-looker"]
// when - accessing multimodal-looker requirement // when - accessing multimodal-looker requirement
// then - fallbackChain exists with gpt-5.3-codex first, gemini-3-flash second, gpt-5-nano last // then - fallbackChain: gpt-5.3-codex -> k2p5 -> gemini-3-flash -> glm-4.6v -> gpt-5-nano
expect(multimodalLooker).toBeDefined() expect(multimodalLooker).toBeDefined()
expect(multimodalLooker.fallbackChain).toBeArray() expect(multimodalLooker.fallbackChain).toBeArray()
expect(multimodalLooker.fallbackChain).toHaveLength(6) expect(multimodalLooker.fallbackChain).toHaveLength(5)
const primary = multimodalLooker.fallbackChain[0] const primary = multimodalLooker.fallbackChain[0]
expect(primary.providers).toEqual(["openai", "opencode"]) expect(primary.providers).toEqual(["openai", "opencode"])
@ -102,9 +102,13 @@ describe("AGENT_MODEL_REQUIREMENTS", () => {
expect(primary.variant).toBe("medium") expect(primary.variant).toBe("medium")
const secondary = multimodalLooker.fallbackChain[1] const secondary = multimodalLooker.fallbackChain[1]
expect(secondary.model).toBe("gemini-3-flash") expect(secondary.providers).toEqual(["kimi-for-coding"])
expect(secondary.model).toBe("k2p5")
const last = multimodalLooker.fallbackChain[5] const tertiary = multimodalLooker.fallbackChain[2]
expect(tertiary.model).toBe("gemini-3-flash")
const last = multimodalLooker.fallbackChain[4]
expect(last.providers).toEqual(["openai", "github-copilot", "opencode"]) expect(last.providers).toEqual(["openai", "github-copilot", "opencode"])
expect(last.model).toBe("gpt-5-nano") expect(last.model).toBe("gpt-5-nano")
}) })
@ -157,19 +161,19 @@ describe("AGENT_MODEL_REQUIREMENTS", () => {
expect(primary.providers[0]).toBe("openai") expect(primary.providers[0]).toBe("openai")
}) })
test("atlas has valid fallbackChain with kimi-k2.5-free as primary", () => { test("atlas has valid fallbackChain with claude-sonnet-4-6 as primary", () => {
// given - atlas agent requirement // given - atlas agent requirement
const atlas = AGENT_MODEL_REQUIREMENTS["atlas"] const atlas = AGENT_MODEL_REQUIREMENTS["atlas"]
// when - accessing Atlas requirement // when - accessing Atlas requirement
// then - fallbackChain exists with kimi-k2.5-free as first entry // then - fallbackChain exists with claude-sonnet-4-6 as first entry
expect(atlas).toBeDefined() expect(atlas).toBeDefined()
expect(atlas.fallbackChain).toBeArray() expect(atlas.fallbackChain).toBeArray()
expect(atlas.fallbackChain.length).toBeGreaterThan(0) expect(atlas.fallbackChain.length).toBeGreaterThan(0)
const primary = atlas.fallbackChain[0] const primary = atlas.fallbackChain[0]
expect(primary.model).toBe("kimi-k2.5-free") expect(primary.model).toBe("claude-sonnet-4-6")
expect(primary.providers[0]).toBe("opencode") expect(primary.providers[0]).toBe("anthropic")
}) })
test("hephaestus supports openai, github-copilot, venice, and opencode providers", () => { test("hephaestus supports openai, github-copilot, venice, and opencode providers", () => {
@ -339,27 +343,23 @@ describe("CATEGORY_MODEL_REQUIREMENTS", () => {
expect(primary.providers[0]).toBe("google") expect(primary.providers[0]).toBe("google")
}) })
test("writing has valid fallbackChain with kimi-k2.5-free as primary", () => { test("writing has valid fallbackChain with gemini-3-flash as primary", () => {
// given - writing category requirement // given - writing category requirement
const writing = CATEGORY_MODEL_REQUIREMENTS["writing"] const writing = CATEGORY_MODEL_REQUIREMENTS["writing"]
// when - accessing writing requirement // when - accessing writing requirement
// then - fallbackChain: kimi-k2.5-free -> gemini-3-flash -> claude-sonnet-4-6 // then - fallbackChain: gemini-3-flash -> claude-sonnet-4-6
expect(writing).toBeDefined() expect(writing).toBeDefined()
expect(writing.fallbackChain).toBeArray() expect(writing.fallbackChain).toBeArray()
expect(writing.fallbackChain).toHaveLength(3) expect(writing.fallbackChain).toHaveLength(2)
const primary = writing.fallbackChain[0] const primary = writing.fallbackChain[0]
expect(primary.model).toBe("kimi-k2.5-free") expect(primary.model).toBe("gemini-3-flash")
expect(primary.providers[0]).toBe("opencode") expect(primary.providers[0]).toBe("google")
const second = writing.fallbackChain[1] const second = writing.fallbackChain[1]
expect(second.model).toBe("gemini-3-flash") expect(second.model).toBe("claude-sonnet-4-6")
expect(second.providers[0]).toBe("google") expect(second.providers[0]).toBe("anthropic")
const third = writing.fallbackChain[2]
expect(third.model).toBe("claude-sonnet-4-6")
expect(third.providers[0]).toBe("anthropic")
}) })
test("all 8 categories have valid fallbackChain arrays", () => { test("all 8 categories have valid fallbackChain arrays", () => {

View File

@ -16,7 +16,6 @@ export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
sisyphus: { sisyphus: {
fallbackChain: [ fallbackChain: [
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" },
{ providers: ["opencode"], model: "kimi-k2.5-free" },
{ providers: ["zai-coding-plan", "opencode"], model: "glm-5" }, { providers: ["zai-coding-plan", "opencode"], model: "glm-5" },
{ providers: ["opencode"], model: "big-pickle" }, { providers: ["opencode"], model: "big-pickle" },
], ],
@ -54,9 +53,8 @@ export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
"multimodal-looker": { "multimodal-looker": {
fallbackChain: [ fallbackChain: [
{ providers: ["openai", "opencode"], model: "gpt-5.3-codex", variant: "medium" }, { providers: ["openai", "opencode"], model: "gpt-5.3-codex", variant: "medium" },
{ providers: ["kimi-for-coding"], model: "k2p5" },
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" },
{ providers: ["opencode"], model: "kimi-k2.5-free" },
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" },
{ providers: ["zai-coding-plan"], model: "glm-4.6v" }, { providers: ["zai-coding-plan"], model: "glm-4.6v" },
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5-nano" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5-nano" },
], ],
@ -65,14 +63,12 @@ export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
fallbackChain: [ fallbackChain: [
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" },
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" },
{ providers: ["opencode"], model: "kimi-k2.5-free" },
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro" },
], ],
}, },
metis: { metis: {
fallbackChain: [ fallbackChain: [
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" }, { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-opus-4-6", variant: "max" },
{ providers: ["opencode"], model: "kimi-k2.5-free" },
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2", variant: "high" },
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3.1-pro", variant: "high" },
], ],
@ -86,7 +82,6 @@ export const AGENT_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
}, },
atlas: { atlas: {
fallbackChain: [ fallbackChain: [
{ providers: ["opencode"], model: "kimi-k2.5-free" },
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-6" }, { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-6" },
{ providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" }, { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.2" },
], ],
@ -147,7 +142,6 @@ export const CATEGORY_MODEL_REQUIREMENTS: Record<string, ModelRequirement> = {
}, },
writing: { writing: {
fallbackChain: [ fallbackChain: [
{ providers: ["opencode"], model: "kimi-k2.5-free" },
{ providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" }, { providers: ["google", "github-copilot", "opencode"], model: "gemini-3-flash" },
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-6" }, { providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-4-6" },
], ],