@@ -50,11 +50,17 @@ def config_group():
5050 type = str ,
5151 help = "Model for module clustering (recommend top-tier)"
5252)
53+ @click .option (
54+ "--fallback-model" ,
55+ type = str ,
56+ help = "Fallback model for documentation generation"
57+ )
5358def config_set (
5459 api_key : Optional [str ],
5560 base_url : Optional [str ],
5661 main_model : Optional [str ],
57- cluster_model : Optional [str ]
62+ cluster_model : Optional [str ],
63+ fallback_model : Optional [str ]
5864):
5965 """
6066 Set configuration values for CodeWiki.
@@ -69,15 +75,15 @@ def config_set(
6975 \b
7076 # Set all configuration
7177 $ codewiki config set --api-key sk-abc123 --base-url https://api.anthropic.com \\
72- --main-model claude-sonnet-4 --cluster-model claude-sonnet-4
78+ --main-model claude-sonnet-4 --cluster-model claude-sonnet-4 --fallback-model glm-4p5
7379
7480 \b
7581 # Update only API key
7682 $ codewiki config set --api-key sk-new-key
7783 """
7884 try :
7985 # Check if at least one option is provided
80- if not any ([api_key , base_url , main_model , cluster_model ]):
86+ if not any ([api_key , base_url , main_model , cluster_model , fallback_model ]):
8187 click .echo ("No options provided. Use --help for usage information." )
8288 sys .exit (EXIT_CONFIG_ERROR )
8389
@@ -96,6 +102,9 @@ def config_set(
96102 if cluster_model :
97103 validated_data ['cluster_model' ] = validate_model_name (cluster_model )
98104
105+ if fallback_model :
106+ validated_data ['fallback_model' ] = validate_model_name (fallback_model )
107+
99108 # Create config manager and save
100109 manager = ConfigManager ()
101110 manager .load () # Load existing config if present
@@ -104,7 +113,8 @@ def config_set(
104113 api_key = validated_data .get ('api_key' ),
105114 base_url = validated_data .get ('base_url' ),
106115 main_model = validated_data .get ('main_model' ),
107- cluster_model = validated_data .get ('cluster_model' )
116+ cluster_model = validated_data .get ('cluster_model' ),
117+ fallback_model = validated_data .get ('fallback_model' )
108118 )
109119
110120 # Display success messages
@@ -138,6 +148,9 @@ def config_set(
138148 " Recommended models: claude-opus, claude-sonnet-4, gpt-4, gpt-4-turbo"
139149 )
140150
151+ if fallback_model :
152+ click .secho (f"✓ Fallback model: { fallback_model } " , fg = "green" )
153+
141154 click .echo ("\n " + click .style ("Configuration updated successfully." , fg = "green" , bold = True ))
142155
143156 except ConfigurationError as e :
@@ -177,7 +190,7 @@ def config_show(output_json: bool):
177190 click .secho ("\n ✗ Configuration not found." , fg = "red" , err = True )
178191 click .echo ("\n Please run 'codewiki config set' to configure your API credentials:" )
179192 click .echo (" codewiki config set --api-key <key> --base-url <url> \\ " )
180- click .echo (" --main-model <model> --cluster-model <model>" )
193+ click .echo (" --main-model <model> --cluster-model <model> --fallback-model <model> " )
181194 click .echo ("\n For more help: codewiki config set --help" )
182195 sys .exit (EXIT_CONFIG_ERROR )
183196
@@ -192,6 +205,7 @@ def config_show(output_json: bool):
192205 "base_url" : config .base_url if config else "" ,
193206 "main_model" : config .main_model if config else "" ,
194207 "cluster_model" : config .cluster_model if config else "" ,
208+ "fallback_model" : config .fallback_model if config else "glm-4p5" ,
195209 "default_output" : config .default_output if config else "docs" ,
196210 "config_file" : str (manager .config_file_path )
197211 }
@@ -216,6 +230,7 @@ def config_show(output_json: bool):
216230 click .echo (f" Base URL: { config .base_url or 'Not set' } " )
217231 click .echo (f" Main Model: { config .main_model or 'Not set' } " )
218232 click .echo (f" Cluster Model: { config .cluster_model or 'Not set' } " )
233+ click .echo (f" Fallback Model: { config .fallback_model or 'Not set' } " )
219234 else :
220235 click .secho (" Not configured" , fg = "yellow" )
221236
@@ -339,8 +354,9 @@ def config_validate(quick: bool, verbose: bool):
339354 click .echo ("[4/5] Checking model configuration..." )
340355 click .echo (f" Main model: { config .main_model } " )
341356 click .echo (f" Cluster model: { config .cluster_model } " )
357+ click .echo (f" Fallback model: { config .fallback_model } " )
342358
343- if not config .main_model or not config .cluster_model :
359+ if not config .main_model or not config .cluster_model or not config . fallback_model :
344360 click .secho ("✗ Models not configured" , fg = "red" )
345361 sys .exit (EXIT_CONFIG_ERROR )
346362
@@ -349,6 +365,7 @@ def config_validate(quick: bool, verbose: bool):
349365 else :
350366 click .secho (f"✓ Main model configured: { config .main_model } " , fg = "green" )
351367 click .secho (f"✓ Cluster model configured: { config .cluster_model } " , fg = "green" )
368+ click .secho (f"✓ Fallback model configured: { config .fallback_model } " , fg = "green" )
352369
353370 # Warn about non-top-tier cluster model
354371 if not is_top_tier_model (config .cluster_model ):
0 commit comments