Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions hiclaw-controller/internal/agentconfig/generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -392,9 +392,10 @@ func defaultModelSpec(modelName string) ModelSpec {
"deepseek-reasoner": {256000, 128000, false, true},
"kimi-k2.5": {256000, 128000, true, true},
"glm-5": {200000, 128000, false, true},
"MiniMax-M2.7": {200000, 128000, false, true},
"MiniMax-M2.7-highspeed": {200000, 128000, false, true},
"MiniMax-M2.7": {204800, 128000, false, true},
"MiniMax-M2.7-highspeed": {204800, 128000, false, true},
"MiniMax-M2.5": {200000, 128000, false, true},
"MiniMax-M3": {1000000, 128000, true, true},
}

p, found := presets[modelName]
Expand Down Expand Up @@ -455,7 +456,7 @@ func (g *Generator) allModelSpecs(selectedModel string) []ModelSpec {
"qwen3.6-plus", "qwen3.5-plus",
"deepseek-chat", "deepseek-reasoner",
"kimi-k2.5", "glm-5",
"MiniMax-M2.7", "MiniMax-M2.7-highspeed", "MiniMax-M2.5",
"MiniMax-M2.7", "MiniMax-M2.7-highspeed", "MiniMax-M2.5", "MiniMax-M3",
}

specs := make([]ModelSpec, 0, len(allModels)+1)
Expand All @@ -479,7 +480,7 @@ func (g *Generator) allModelAliases(selectedModel string) map[string]interface{}
"qwen3.6-plus", "qwen3.5-plus",
"deepseek-chat", "deepseek-reasoner",
"kimi-k2.5", "glm-5",
"MiniMax-M2.7", "MiniMax-M2.7-highspeed", "MiniMax-M2.5",
"MiniMax-M2.7", "MiniMax-M2.7-highspeed", "MiniMax-M2.5", "MiniMax-M3",
}

aliases := make(map[string]interface{})
Expand Down
10 changes: 10 additions & 0 deletions hiclaw-controller/internal/agentconfig/generator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,16 @@ func TestDefaultModelSpec(t *testing.T) {
t.Errorf("claude-opus-4-6 should have vision: %v", spec.Input)
}

minimaxM27 := defaultModelSpec("MiniMax-M2.7")
if minimaxM27.ContextWindow != 204800 || len(minimaxM27.Input) != 1 {
t.Errorf("MiniMax-M2.7 spec = %+v, want 204800 context and text input", minimaxM27)
}

minimaxM3 := defaultModelSpec("MiniMax-M3")
if minimaxM3.ContextWindow != 1000000 || len(minimaxM3.Input) != 2 || minimaxM3.Input[1] != "image" {
t.Errorf("MiniMax-M3 spec = %+v, want 1000000 context and vision input", minimaxM3)
}

unknown := defaultModelSpec("unknown-model-xyz")
if unknown.ContextWindow != 150000 {
t.Errorf("unknown model ctx = %d, want 150000", unknown.ContextWindow)
Expand Down
2 changes: 1 addition & 1 deletion install/hiclaw-install.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -675,7 +675,7 @@ $script:KnownModels = @(
"gpt-5.4", "gpt-5.3-codex", "gpt-5-mini", "gpt-5-nano",
"claude-opus-4-6", "claude-sonnet-4-6", "claude-haiku-4-5",
"qwen3.6-plus", "qwen3.5-plus", "deepseek-chat", "deepseek-reasoner",
"kimi-k2.5", "glm-5", "MiniMax-M2.7", "MiniMax-M2.7-highspeed", "MiniMax-M2.5"
"kimi-k2.5", "glm-5", "MiniMax-M2.7", "MiniMax-M2.7-highspeed", "MiniMax-M2.5", "MiniMax-M3"
)

function Test-KnownModel {
Expand Down
2 changes: 1 addition & 1 deletion install/hiclaw-install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -1116,7 +1116,7 @@ resolve_embedded_image() {
# ============================================================
# Known models list — used to detect custom models during install
# ============================================================
KNOWN_MODELS="gpt-5.4 gpt-5.3-codex gpt-5-mini gpt-5-nano claude-opus-4-6 claude-sonnet-4-6 claude-haiku-4-5 qwen3.6-plus qwen3.5-plus deepseek-chat deepseek-reasoner kimi-k2.5 glm-5 MiniMax-M2.7 MiniMax-M2.7-highspeed MiniMax-M2.5"
KNOWN_MODELS="gpt-5.4 gpt-5.3-codex gpt-5-mini gpt-5-nano claude-opus-4-6 claude-sonnet-4-6 claude-haiku-4-5 qwen3.6-plus qwen3.5-plus deepseek-chat deepseek-reasoner kimi-k2.5 glm-5 MiniMax-M2.7 MiniMax-M2.7-highspeed MiniMax-M2.5 MiniMax-M3"

is_known_model() {
local model="$1"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,12 @@ case "${MODEL_NAME}" in
CTX=200000; MAX=64000 ;;
deepseek-chat|deepseek-reasoner|kimi-k2.5)
CTX=256000; MAX=128000 ;;
glm-5|MiniMax-M2.7|MiniMax-M2.7-highspeed|MiniMax-M2.5)
MiniMax-M3)
CTX=1000000; MAX=128000 ;;
glm-5|MiniMax-M2.5)
CTX=200000; MAX=128000 ;;
MiniMax-M2.7|MiniMax-M2.7-highspeed)
CTX=204800; MAX=128000 ;;
*)
CTX=150000; MAX=128000 ;;
esac
Expand All @@ -112,7 +116,7 @@ fi

# Resolve input modalities: only vision-capable models get "image"
case "${MODEL_NAME}" in
gpt-5.4|gpt-5.3-codex|gpt-5-mini|gpt-5-nano|claude-opus-4-6|claude-sonnet-4-6|claude-haiku-4-5|qwen3.6-plus|qwen3.5-plus|kimi-k2.5)
gpt-5.4|gpt-5.3-codex|gpt-5-mini|gpt-5-nano|claude-opus-4-6|claude-sonnet-4-6|claude-haiku-4-5|qwen3.6-plus|qwen3.5-plus|kimi-k2.5|MiniMax-M3)
INPUT='["text", "image"]' ;;
*)
INPUT='["text"]' ;;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,10 @@
{ "id": "deepseek-reasoner", "name": "deepseek-reasoner", "reasoning": true, "contextWindow": 256000, "maxTokens": 128000, "input": ["text"] },
{ "id": "kimi-k2.5", "name": "kimi-k2.5", "reasoning": true, "contextWindow": 256000, "maxTokens": 128000, "input": ["text", "image"] },
{ "id": "glm-5", "name": "glm-5", "reasoning": true, "contextWindow": 200000, "maxTokens": 128000, "input": ["text"] },
{ "id": "MiniMax-M2.7", "name": "MiniMax-M2.7", "reasoning": true, "contextWindow": 200000, "maxTokens": 128000, "input": ["text"] },
{ "id": "MiniMax-M2.7-highspeed", "name": "MiniMax-M2.7-highspeed", "reasoning": true, "contextWindow": 200000, "maxTokens": 128000, "input": ["text"] },
{ "id": "MiniMax-M2.5", "name": "MiniMax-M2.5", "reasoning": true, "contextWindow": 200000, "maxTokens": 128000, "input": ["text"] }
{ "id": "MiniMax-M2.7", "name": "MiniMax-M2.7", "reasoning": true, "contextWindow": 204800, "maxTokens": 128000, "input": ["text"] },
{ "id": "MiniMax-M2.7-highspeed", "name": "MiniMax-M2.7-highspeed", "reasoning": true, "contextWindow": 204800, "maxTokens": 128000, "input": ["text"] },
{ "id": "MiniMax-M2.5", "name": "MiniMax-M2.5", "reasoning": true, "contextWindow": 200000, "maxTokens": 128000, "input": ["text"] },
{ "id": "MiniMax-M3", "name": "MiniMax-M3", "reasoning": true, "contextWindow": 1000000, "maxTokens": 128000, "input": ["text", "image"] }
]
}
}
Expand Down Expand Up @@ -86,7 +87,8 @@
"agentteams-gateway/glm-5": { "alias": "glm-5" },
"agentteams-gateway/MiniMax-M2.7": { "alias": "MiniMax-M2.7" },
"agentteams-gateway/MiniMax-M2.7-highspeed": { "alias": "MiniMax-M2.7-highspeed" },
"agentteams-gateway/MiniMax-M2.5": { "alias": "MiniMax-M2.5" }
"agentteams-gateway/MiniMax-M2.5": { "alias": "MiniMax-M2.5" },
"agentteams-gateway/MiniMax-M3": { "alias": "MiniMax-M3" }
},
"maxConcurrent": 4,
"subagents": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,12 @@ case "${MODEL_NAME}" in
CTX=200000; MAX=64000 ;;
deepseek-chat|deepseek-reasoner|kimi-k2.5)
CTX=256000; MAX=128000 ;;
glm-5|MiniMax-M2.7|MiniMax-M2.7-highspeed|MiniMax-M2.5)
MiniMax-M3)
CTX=1000000; MAX=128000 ;;
glm-5|MiniMax-M2.5)
CTX=200000; MAX=128000 ;;
MiniMax-M2.7|MiniMax-M2.7-highspeed)
CTX=204800; MAX=128000 ;;
*)
CTX=150000; MAX=128000 ;;
esac
Expand All @@ -59,7 +63,7 @@ esac

# Resolve input modalities: only vision-capable models get "image"
case "${MODEL_NAME}" in
gpt-5.4|gpt-5.3-codex|gpt-5-mini|gpt-5-nano|claude-opus-4-6|claude-sonnet-4-6|claude-haiku-4-5|qwen3.6-plus|qwen3.5-plus|kimi-k2.5)
gpt-5.4|gpt-5.3-codex|gpt-5-mini|gpt-5-nano|claude-opus-4-6|claude-sonnet-4-6|claude-haiku-4-5|qwen3.6-plus|qwen3.5-plus|kimi-k2.5|MiniMax-M3)
INPUT='["text", "image"]' ;;
*)
INPUT='["text"]' ;;
Expand Down
7 changes: 4 additions & 3 deletions manager/configs/known-models.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
{ "id": "deepseek-reasoner", "name": "deepseek-reasoner", "reasoning": true, "contextWindow": 256000, "maxTokens": 128000, "input": ["text"] },
{ "id": "kimi-k2.5", "name": "kimi-k2.5", "reasoning": true, "contextWindow": 256000, "maxTokens": 128000, "input": ["text", "image"] },
{ "id": "glm-5", "name": "glm-5", "reasoning": true, "contextWindow": 200000, "maxTokens": 128000, "input": ["text"] },
{ "id": "MiniMax-M2.7", "name": "MiniMax-M2.7", "reasoning": true, "contextWindow": 200000, "maxTokens": 128000, "input": ["text"] },
{ "id": "MiniMax-M2.7-highspeed", "name": "MiniMax-M2.7-highspeed", "reasoning": true, "contextWindow": 200000, "maxTokens": 128000, "input": ["text"] },
{ "id": "MiniMax-M2.5", "name": "MiniMax-M2.5", "reasoning": true, "contextWindow": 200000, "maxTokens": 128000, "input": ["text"] }
{ "id": "MiniMax-M2.7", "name": "MiniMax-M2.7", "reasoning": true, "contextWindow": 204800, "maxTokens": 128000, "input": ["text"] },
{ "id": "MiniMax-M2.7-highspeed", "name": "MiniMax-M2.7-highspeed", "reasoning": true, "contextWindow": 204800, "maxTokens": 128000, "input": ["text"] },
{ "id": "MiniMax-M2.5", "name": "MiniMax-M2.5", "reasoning": true, "contextWindow": 200000, "maxTokens": 128000, "input": ["text"] },
{ "id": "MiniMax-M3", "name": "MiniMax-M3", "reasoning": true, "contextWindow": 1000000, "maxTokens": 128000, "input": ["text", "image"] }
]
10 changes: 6 additions & 4 deletions manager/configs/manager-openclaw.json.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,10 @@
{ "id": "deepseek-reasoner", "name": "deepseek-reasoner", "reasoning": true, "contextWindow": 256000, "maxTokens": 128000, "input": ["text"] },
{ "id": "kimi-k2.5", "name": "kimi-k2.5", "reasoning": true, "contextWindow": 256000, "maxTokens": 128000, "input": ["text", "image"] },
{ "id": "glm-5", "name": "glm-5", "reasoning": true, "contextWindow": 200000, "maxTokens": 128000, "input": ["text"] },
{ "id": "MiniMax-M2.7", "name": "MiniMax-M2.7", "reasoning": true, "contextWindow": 200000, "maxTokens": 128000, "input": ["text"] },
{ "id": "MiniMax-M2.7-highspeed", "name": "MiniMax-M2.7-highspeed", "reasoning": true, "contextWindow": 200000, "maxTokens": 128000, "input": ["text"] },
{ "id": "MiniMax-M2.5", "name": "MiniMax-M2.5", "reasoning": true, "contextWindow": 200000, "maxTokens": 128000, "input": ["text"] }
{ "id": "MiniMax-M2.7", "name": "MiniMax-M2.7", "reasoning": true, "contextWindow": 204800, "maxTokens": 128000, "input": ["text"] },
{ "id": "MiniMax-M2.7-highspeed", "name": "MiniMax-M2.7-highspeed", "reasoning": true, "contextWindow": 204800, "maxTokens": 128000, "input": ["text"] },
{ "id": "MiniMax-M2.5", "name": "MiniMax-M2.5", "reasoning": true, "contextWindow": 200000, "maxTokens": 128000, "input": ["text"] },
{ "id": "MiniMax-M3", "name": "MiniMax-M3", "reasoning": true, "contextWindow": 1000000, "maxTokens": 128000, "input": ["text", "image"] }
]
}
}
Expand Down Expand Up @@ -93,7 +94,8 @@
"agentteams-gateway/glm-5": { "alias": "glm-5" },
"agentteams-gateway/MiniMax-M2.7": { "alias": "MiniMax-M2.7" },
"agentteams-gateway/MiniMax-M2.7-highspeed": { "alias": "MiniMax-M2.7-highspeed" },
"agentteams-gateway/MiniMax-M2.5": { "alias": "MiniMax-M2.5" }
"agentteams-gateway/MiniMax-M2.5": { "alias": "MiniMax-M2.5" },
"agentteams-gateway/MiniMax-M3": { "alias": "MiniMax-M3" }
},
"maxConcurrent": 8,
"subagents": {
Expand Down
8 changes: 6 additions & 2 deletions manager/scripts/init/start-manager-agent.sh
Original file line number Diff line number Diff line change
Expand Up @@ -646,8 +646,12 @@ case "${MODEL_NAME}" in
export MODEL_CONTEXT_WINDOW=200000 MODEL_MAX_TOKENS=64000 ;;
deepseek-chat|deepseek-reasoner|kimi-k2.5)
export MODEL_CONTEXT_WINDOW=256000 MODEL_MAX_TOKENS=128000 ;;
glm-5|MiniMax-M2.7|MiniMax-M2.7-highspeed|MiniMax-M2.5)
MiniMax-M3)
export MODEL_CONTEXT_WINDOW=1000000 MODEL_MAX_TOKENS=128000 ;;
glm-5|MiniMax-M2.5)
export MODEL_CONTEXT_WINDOW=200000 MODEL_MAX_TOKENS=128000 ;;
MiniMax-M2.7|MiniMax-M2.7-highspeed)
export MODEL_CONTEXT_WINDOW=204800 MODEL_MAX_TOKENS=128000 ;;
*)
export MODEL_CONTEXT_WINDOW=150000 MODEL_MAX_TOKENS=128000 ;;
esac
Expand All @@ -668,7 +672,7 @@ log "Matrix E2EE: ${MATRIX_E2EE_ENABLED}"

# Resolve input modalities: only vision-capable models get "image"
case "${MODEL_NAME}" in
gpt-5.4|gpt-5.3-codex|gpt-5-mini|gpt-5-nano|claude-opus-4-6|claude-sonnet-4-6|claude-haiku-4-5|qwen3.6-plus|qwen3.5-plus|kimi-k2.5)
gpt-5.4|gpt-5.3-codex|gpt-5-mini|gpt-5-nano|claude-opus-4-6|claude-sonnet-4-6|claude-haiku-4-5|qwen3.6-plus|qwen3.5-plus|kimi-k2.5|MiniMax-M3)
export MODEL_INPUT='["text", "image"]' ;;
*)
export MODEL_INPUT='["text"]' ;;
Expand Down
Loading