cli: fail fast when explicit model provider is not configured#987
Closed
caozuoba wants to merge 1 commit intoHKUDS:mainfrom
Closed
cli: fail fast when explicit model provider is not configured#987caozuoba wants to merge 1 commit intoHKUDS:mainfrom
caozuoba wants to merge 1 commit intoHKUDS:mainfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds a fail-fast precheck in CLI startup to catch explicit model/provider mismatches early.
Before this change, configs like
model=anthropic/...with onlyproviders.zhipu.apiKeyset could fail later at runtime with a less actionable provider error.Now the CLI exits early with a clear configuration message.
What changed
_ensure_explicit_model_provider_configured(config, model)innanobot/cli/commands.py._make_provider(...)before provider construction.tests/test_commands.pyfor:_make_providerfail-fast behaviorWhy this approach
Validation
Automated tests
A/B manual verification
Use your local launcher (
nanobot,nb, or a full executable path).Below,
<nanobot_cmd>means whichever command works in your environment.Scenario A (guard case): explicit provider mismatch should fail fast
Config setup:
agents.defaults.model = anthropic/claude-opus-4-5providers.zhipu.apiKeyis setCommand:
Expected:
Model 'anthropic/...' requires provider 'anthropic'providers.anthropic.apiKeyor switch modelScenario B (happy path): matched provider should proceed normally
Config setup:
agents.defaults.model = glm-4.7-flashproviders.zhipu.apiKeyis setCommand:
Expected:
startup test passed)Notes