Skip to content

feat(models): add MiniMax-M3 to native minimax providers + 1M context#36214

Merged
teknium1 merged 1 commit into
mainfrom
hermes/hermes-c12aae38
Jun 1, 2026
Merged

feat(models): add MiniMax-M3 to native minimax providers + 1M context#36214
teknium1 merged 1 commit into
mainfrom
hermes/hermes-c12aae38

Conversation

@teknium1

@teknium1 teknium1 commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

Summary

MiniMax-M3 now appears in the native MiniMax provider model pickers (minimax, minimax-oauth, minimax-cn), and resolves to its correct 1M context length on every surface.

Why this needed a manual edit

The native MiniMax provider lists are hardcoded in _PROVIDER_MODELS — they are not in _MODELS_DEV_PREFERRED, have no providers/ profile, and the MiniMax inference endpoint is Anthropic-format (/anthropic) with no OpenAI-style /v1/models listing. So new models don't auto-pull; they fall through to the static curated list and must be added by hand. (OpenRouter minimax/minimax-m3 and the Nous list were already updated in PR #36191.)

Changes

  • hermes_cli/models.py: add MiniMax-M3 to the top of the minimax, minimax-oauth, and minimax-cn lists.
  • agent/model_metadata.py: add DEFAULT_CONTEXT_LENGTHS key "minimax-m3": 1000000. Longest-key-first substring matching makes it win over the generic "minimax": 204800 catch-all, so M3 resolves to 1M (native + OpenRouter/Nous slug) while the M2.x series stays at 204,800.

Model facts (from MiniMax docs)

Validation

Input Resolves to
MiniMax-M3 / minimax/minimax-m3 1,000,000 ctx
MiniMax-M2.7 / minimax/minimax-m2.7 204,800 ctx (unchanged)

E2E-verified via live resolver test: MiniMax-M3 is first in all three native lists, and the longest-key-first substring match picks minimax-m3 for M3 while M2.x still hits the generic minimax key.

Infographic

minimax-m3-native-providers

Add MiniMax-M3 to the minimax, minimax-oauth, and minimax-cn curated
lists (these are hardcoded — the native Anthropic-format endpoint has no
/v1/models listing and the providers aren't in _MODELS_DEV_PREFERRED, so
new models don't auto-pull). Add a DEFAULT_CONTEXT_LENGTHS key
'minimax-m3' -> 1,000,000 so M3 resolves to its 1M context on every
surface (native ID + OpenRouter/Nous slug) via longest-key-first
substring match, while the M2.x series stays at 204,800.
@github-actions

github-actions Bot commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

🔎 Lint report: hermes/hermes-c12aae38 vs origin/main

ruff

Total: 0 on HEAD, 0 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 0 pre-existing issues carried over.

ty (type checker)

Total: 9556 on HEAD, 9556 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 4954 pre-existing issues carried over.

Diagnostics are surfaced as warnings — this check never fails the build.

@teknium1 teknium1 merged commit e3b3d4d into main Jun 1, 2026
19 of 21 checks passed
@teknium1 teknium1 deleted the hermes/hermes-c12aae38 branch June 1, 2026 03:18
@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have provider/minimax MiniMax (Anthropic transport) comp/cli CLI entry point, hermes_cli/, setup wizard comp/agent Core agent loop, run_agent.py, prompt builder labels Jun 1, 2026
CodyWangYaohui added a commit to CodyWangYaohui/hermes-agent that referenced this pull request Jun 1, 2026
- agent/auxiliary_client.py:265: _API_KEY_PROVIDER_AUX_MODELS_FALLBACK
  minimax           : M2.7          -> M3
  minimax-oauth     : M2.7-highspeed-> M3.0-Highspeed
  minimax-cn        : M2.7          -> M3
- plugins/model-providers/minimax/__init__.py: 3 ProviderProfile.default_aux_model
- plugins/memory/hindsight/__init__.py: _PROVIDER_DEFAULT_MODELS['minimax']
- tests/agent/test_minimax_provider.py: TestMinimaxAuxModel
  hardcoded M2.7 expectation updated to M3 (intent: 'aux is standard' is preserved)

Context: cody-custom M3 fix re-applied after upstream sync 6c73e8f.
PR NousResearch#36214 (MiniMax-M3 in providers) did NOT migrate the default_aux_model
field on minimax/minimax-cn/minimax-oauth provider profiles, nor the
auxiliary_client fallback dict, so the local patch is still required to
keep the cheap aux path on M3 instead of M2.7.

Patch re-apply notes:
- 4 of 5 hunks applied cleanly via git apply
- 1 hunk (auxiliary_client.py:265 FALLBACK dict) had context drift after
  the 603-commit sync (upstream added zai/kimi-coding/stepfun rows), so
  applied with a targeted sed replacement
- Updated test_minimax_provider.py::test_minimax_aux_is_standard to expect
  M3; the underlying intent ('aux is standard, not highspeed') is preserved
  by test_minimax_aux_not_highspeed which still passes
- Tests: 191/191 auxiliary_client, 28/28 minimax_oauth, 2/2 TestMinimaxAuxModel,
  180/180 minimax+aux+fallback (1 flaky unrelated env-monkeypatch test)
JoeKowal pushed a commit to JoeKowal/hermes-agent that referenced this pull request Jun 4, 2026
…NousResearch#36214)

Add MiniMax-M3 to the minimax, minimax-oauth, and minimax-cn curated
lists (these are hardcoded — the native Anthropic-format endpoint has no
/v1/models listing and the providers aren't in _MODELS_DEV_PREFERRED, so
new models don't auto-pull). Add a DEFAULT_CONTEXT_LENGTHS key
'minimax-m3' -> 1,000,000 so M3 resolves to its 1M context on every
surface (native ID + OpenRouter/Nous slug) via longest-key-first
substring match, while the M2.x series stays at 204,800.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/agent Core agent loop, run_agent.py, prompt builder comp/cli CLI entry point, hermes_cli/, setup wizard P3 Low — cosmetic, nice to have provider/minimax MiniMax (Anthropic transport) type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants