auto-coder 0.1.245__tar.gz → 0.1.246__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of auto-coder might be problematic. Click here for more details.

Files changed (159) hide show
  1. {auto_coder-0.1.245 → auto_coder-0.1.246}/PKG-INFO +1 -1
  2. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/auto_coder.egg-info/PKG-INFO +1 -1
  3. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/auto_coder.py +59 -75
  4. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/chat_auto_coder.py +4 -3
  5. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/auto_coder_lang.py +6 -6
  6. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/index/entry.py +9 -3
  7. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/index/filter/normal_filter.py +9 -8
  8. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/index/index.py +11 -5
  9. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/models.py +8 -0
  10. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/tsproject/__init__.py +2 -2
  11. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +6 -5
  12. auto_coder-0.1.246/src/autocoder/version.py +1 -0
  13. auto_coder-0.1.245/src/autocoder/version.py +0 -1
  14. {auto_coder-0.1.245 → auto_coder-0.1.246}/LICENSE +0 -0
  15. {auto_coder-0.1.245 → auto_coder-0.1.246}/README.md +0 -0
  16. {auto_coder-0.1.245 → auto_coder-0.1.246}/setup.cfg +0 -0
  17. {auto_coder-0.1.245 → auto_coder-0.1.246}/setup.py +0 -0
  18. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/auto_coder.egg-info/SOURCES.txt +0 -0
  19. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/auto_coder.egg-info/dependency_links.txt +0 -0
  20. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/auto_coder.egg-info/entry_points.txt +0 -0
  21. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/auto_coder.egg-info/requires.txt +0 -0
  22. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/auto_coder.egg-info/top_level.txt +0 -0
  23. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/__init__.py +0 -0
  24. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/agent/__init__.py +0 -0
  25. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/agent/auto_demand_organizer.py +0 -0
  26. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/agent/auto_filegroup.py +0 -0
  27. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/agent/auto_guess_query.py +0 -0
  28. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/agent/auto_review_commit.py +0 -0
  29. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/agent/auto_tool.py +0 -0
  30. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/agent/coder.py +0 -0
  31. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/agent/designer.py +0 -0
  32. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/agent/planner.py +0 -0
  33. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/agent/project_reader.py +0 -0
  34. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/auto_coder_rag.py +0 -0
  35. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/auto_coder_rag_client_mcp.py +0 -0
  36. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/auto_coder_rag_mcp.py +0 -0
  37. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/auto_coder_server.py +0 -0
  38. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/benchmark.py +0 -0
  39. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/chat/__init__.py +0 -0
  40. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/chat_auto_coder_lang.py +0 -0
  41. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/command_args.py +0 -0
  42. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/JupyterClient.py +0 -0
  43. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/ShellClient.py +0 -0
  44. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/__init__.py +0 -0
  45. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/anything2images.py +0 -0
  46. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/anything2img.py +0 -0
  47. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/audio.py +0 -0
  48. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/buildin_tokenizer.py +0 -0
  49. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/chunk_validation.py +0 -0
  50. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/cleaner.py +0 -0
  51. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/code_auto_execute.py +0 -0
  52. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/code_auto_generate.py +0 -0
  53. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/code_auto_generate_diff.py +0 -0
  54. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
  55. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
  56. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/code_auto_merge.py +0 -0
  57. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/code_auto_merge_diff.py +0 -0
  58. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/code_auto_merge_editblock.py +0 -0
  59. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/code_auto_merge_strict_diff.py +0 -0
  60. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/code_modification_ranker.py +0 -0
  61. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/command_completer.py +0 -0
  62. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/command_generator.py +0 -0
  63. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/command_templates.py +0 -0
  64. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/const.py +0 -0
  65. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/files.py +0 -0
  66. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/git_utils.py +0 -0
  67. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/image_to_page.py +0 -0
  68. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/interpreter.py +0 -0
  69. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/llm_rerank.py +0 -0
  70. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/mcp_hub.py +0 -0
  71. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/mcp_server.py +0 -0
  72. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/mcp_servers/__init__.py +0 -0
  73. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
  74. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/mcp_tools.py +0 -0
  75. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/memory_manager.py +0 -0
  76. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/printer.py +0 -0
  77. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/recall_validation.py +0 -0
  78. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/screenshots.py +0 -0
  79. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/search.py +0 -0
  80. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/search_replace.py +0 -0
  81. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/sys_prompt.py +0 -0
  82. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/text.py +0 -0
  83. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/types.py +0 -0
  84. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/common/utils_code_auto_generate.py +0 -0
  85. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/data/tokenizer.json +0 -0
  86. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/db/__init__.py +0 -0
  87. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/db/store.py +0 -0
  88. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/dispacher/__init__.py +0 -0
  89. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/dispacher/actions/__init__.py +0 -0
  90. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/dispacher/actions/action.py +0 -0
  91. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/dispacher/actions/copilot.py +0 -0
  92. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
  93. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
  94. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/dispacher/actions/plugins/action_translate.py +0 -0
  95. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/index/__init__.py +0 -0
  96. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/index/filter/__init__.py +0 -0
  97. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/index/filter/quick_filter.py +0 -0
  98. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/index/for_command.py +0 -0
  99. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/index/symbols_utils.py +0 -0
  100. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/index/types.py +0 -0
  101. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/lang.py +0 -0
  102. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/pyproject/__init__.py +0 -0
  103. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/__init__.py +0 -0
  104. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/api_server.py +0 -0
  105. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/cache/__init__.py +0 -0
  106. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/cache/base_cache.py +0 -0
  107. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
  108. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
  109. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/cache/simple_cache.py +0 -0
  110. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/doc_filter.py +0 -0
  111. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/document_retriever.py +0 -0
  112. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/llm_wrapper.py +0 -0
  113. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/loaders/__init__.py +0 -0
  114. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/loaders/docx_loader.py +0 -0
  115. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/loaders/excel_loader.py +0 -0
  116. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
  117. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
  118. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/long_context_rag.py +0 -0
  119. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/rag_config.py +0 -0
  120. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/rag_entry.py +0 -0
  121. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/raw_rag.py +0 -0
  122. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/relevant_utils.py +0 -0
  123. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/simple_directory_reader.py +0 -0
  124. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/simple_rag.py +0 -0
  125. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/stream_event/__init__.py +0 -0
  126. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/stream_event/event_writer.py +0 -0
  127. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/stream_event/types.py +0 -0
  128. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/token_checker.py +0 -0
  129. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/token_counter.py +0 -0
  130. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/token_limiter.py +0 -0
  131. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/types.py +0 -0
  132. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/utils.py +0 -0
  133. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/rag/variable_holder.py +0 -0
  134. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/regexproject/__init__.py +0 -0
  135. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/suffixproject/__init__.py +0 -0
  136. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/utils/__init__.py +0 -0
  137. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/utils/_markitdown.py +0 -0
  138. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
  139. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
  140. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/utils/conversation_store.py +0 -0
  141. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/utils/llm_client_interceptors.py +0 -0
  142. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/utils/llms.py +0 -0
  143. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/utils/log_capture.py +0 -0
  144. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/utils/multi_turn.py +0 -0
  145. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/utils/operate_config_api.py +0 -0
  146. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/utils/print_table.py +0 -0
  147. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/utils/queue_communicate.py +0 -0
  148. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/utils/request_event_queue.py +0 -0
  149. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/utils/request_queue.py +0 -0
  150. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/utils/rest.py +0 -0
  151. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/utils/tests.py +0 -0
  152. {auto_coder-0.1.245 → auto_coder-0.1.246}/src/autocoder/utils/types.py +0 -0
  153. {auto_coder-0.1.245 → auto_coder-0.1.246}/tests/test_action_regex_project.py +0 -0
  154. {auto_coder-0.1.245 → auto_coder-0.1.246}/tests/test_chat_auto_coder.py +0 -0
  155. {auto_coder-0.1.245 → auto_coder-0.1.246}/tests/test_code_auto_merge_editblock.py +0 -0
  156. {auto_coder-0.1.245 → auto_coder-0.1.246}/tests/test_command_completer.py +0 -0
  157. {auto_coder-0.1.245 → auto_coder-0.1.246}/tests/test_planner.py +0 -0
  158. {auto_coder-0.1.245 → auto_coder-0.1.246}/tests/test_queue_communicate.py +0 -0
  159. {auto_coder-0.1.245 → auto_coder-0.1.246}/tests/test_symbols_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: auto-coder
3
- Version: 0.1.245
3
+ Version: 0.1.246
4
4
  Summary: AutoCoder: AutoCoder
5
5
  Author: allwefantasy
6
6
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: auto-coder
3
- Version: 0.1.245
3
+ Version: 0.1.246
4
4
  Summary: AutoCoder: AutoCoder
5
5
  Author: allwefantasy
6
6
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
@@ -300,86 +300,66 @@ def main(input_args: Optional[List[str]] = None):
300
300
  llm.setup_sub_client("chat_model", chat_model)
301
301
 
302
302
  if args.product_mode == "lite":
303
- default_model = args.model
303
+ default_model = args.model
304
+ model_info = models_module.get_model_by_name(default_model)
304
305
  llm = byzerllm.SimpleByzerLLM(default_model_name=default_model)
305
- api_key_dir = os.path.expanduser("~/.auto-coder/keys")
306
- api_key_file = os.path.join(api_key_dir, "api.deepseek.com")
307
-
308
- if not os.path.exists(api_key_file):
309
- raise Exception(f"API key file not found: {api_key_file}")
310
-
311
- with open(api_key_file, "r") as f:
312
- api_key = f.read()
313
-
314
306
  llm.deploy(
315
307
  model_path="",
316
- pretrained_model_type="saas/openai",
317
- udf_name=default_model,
308
+ pretrained_model_type=model_info["model_type"],
309
+ udf_name=args.model,
318
310
  infer_params={
319
- "saas.base_url": "https://api.deepseek.com/v1",
320
- "saas.api_key": api_key,
321
- "saas.model": "deepseek-chat",
322
- "saas.is_reasoning": False
311
+ "saas.base_url": model_info["base_url"],
312
+ "saas.api_key": model_info["api_key"],
313
+ "saas.model": model_info["model_name"],
314
+ "saas.is_reasoning": model_info["is_reasoning"]
323
315
  }
324
- )
325
-
326
- code_llm = byzerllm.SimpleByzerLLM(default_model)
327
- code_llm.deploy(
328
- model_path="",
329
- pretrained_model_type="saas/openai",
330
- udf_name=default_model,
331
- infer_params={
332
- "saas.base_url": "https://api.deepseek.com/v1",
333
- "saas.api_key": api_key,
334
- "saas.model": "deepseek-chat",
335
- "saas.is_reasoning": False
336
- }
337
- )
338
-
339
- chat_llm = byzerllm.SimpleByzerLLM(default_model_name="deepseek_r1_chat")
340
- chat_llm.deploy(
341
- model_path="",
342
- pretrained_model_type="saas/openai",
343
- udf_name="deepseek_r1_chat",
344
- infer_params={
345
- "saas.base_url": "https://api.deepseek.com/v1",
346
- "saas.api_key": api_key,
347
- "saas.model": "deepseek-reasoner",
348
- "saas.is_reasoning": True
349
- }
350
- )
316
+ )
317
+
318
+ if models_module.check_model_exists("deepseek_r1_chat"):
319
+ r1_model_info = models_module.get_model_by_name("deepseek_r1_chat")
320
+ api_key = r1_model_info["api_key"]
321
+ chat_llm = byzerllm.SimpleByzerLLM(default_model_name="deepseek_r1_chat")
322
+ chat_llm.deploy(
323
+ model_path="",
324
+ pretrained_model_type="saas/openai",
325
+ udf_name="deepseek_r1_chat",
326
+ infer_params={
327
+ "saas.base_url": "https://api.deepseek.com/v1",
328
+ "saas.api_key": api_key,
329
+ "saas.model": "deepseek-reasoner",
330
+ "saas.is_reasoning": True
331
+ }
332
+ )
351
333
 
352
- generate_rerank_llm = byzerllm.SimpleByzerLLM(default_model_name="deepseek_r1_chat")
353
- generate_rerank_llm.deploy(
354
- model_path="",
355
- pretrained_model_type="saas/openai",
356
- udf_name="deepseek_r1_chat",
357
- infer_params={
358
- "saas.base_url": "https://api.deepseek.com/v1",
359
- "saas.api_key": api_key,
360
- "saas.model": "deepseek-reasoner",
361
- "saas.is_reasoning": True
362
- }
363
- )
334
+ generate_rerank_llm = byzerllm.SimpleByzerLLM(default_model_name="deepseek_r1_chat")
335
+ generate_rerank_llm.deploy(
336
+ model_path="",
337
+ pretrained_model_type="saas/openai",
338
+ udf_name="deepseek_r1_chat",
339
+ infer_params={
340
+ "saas.base_url": "https://api.deepseek.com/v1",
341
+ "saas.api_key": api_key,
342
+ "saas.model": "deepseek-reasoner",
343
+ "saas.is_reasoning": True
344
+ }
345
+ )
364
346
 
365
- index_filter_llm = byzerllm.SimpleByzerLLM(default_model_name="deepseek_r1_chat")
366
- index_filter_llm.deploy(
367
- model_path="",
368
- pretrained_model_type="saas/openai",
369
- udf_name="deepseek_r1_chat",
370
- infer_params={
371
- "saas.base_url": "https://api.deepseek.com/v1",
372
- "saas.api_key": api_key,
373
- "saas.model": "deepseek-reasoner",
374
- "saas.is_reasoning": True
375
- }
376
- )
377
-
378
- # 这四个模型如果用户没有设置,就会使用默认的
379
- llm.setup_sub_client("code_model", code_llm)
380
- llm.setup_sub_client("chat_model", chat_llm)
381
- llm.setup_sub_client("generate_rerank_model", generate_rerank_llm)
382
- llm.setup_sub_client("index_filter_model", index_filter_llm)
347
+ index_filter_llm = byzerllm.SimpleByzerLLM(default_model_name="deepseek_r1_chat")
348
+ index_filter_llm.deploy(
349
+ model_path="",
350
+ pretrained_model_type="saas/openai",
351
+ udf_name="deepseek_r1_chat",
352
+ infer_params={
353
+ "saas.base_url": "https://api.deepseek.com/v1",
354
+ "saas.api_key": api_key,
355
+ "saas.model": "deepseek-reasoner",
356
+ "saas.is_reasoning": True
357
+ }
358
+ )
359
+
360
+ llm.setup_sub_client("chat_model", chat_llm)
361
+ llm.setup_sub_client("generate_rerank_model", generate_rerank_llm)
362
+ llm.setup_sub_client("index_filter_model", index_filter_llm)
383
363
 
384
364
  if args.product_mode == "lite":
385
365
  # Set up default models based on configuration
@@ -1367,12 +1347,16 @@ def main(input_args: Optional[List[str]] = None):
1367
1347
  llm_config={}
1368
1348
  )
1369
1349
 
1370
-
1350
+
1351
+ model_name = getattr(chat_llm, 'default_model_name', None)
1352
+ if not model_name:
1353
+ model_name = "unknown(without default model name)"
1371
1354
 
1372
1355
  assistant_response, last_meta = stream_out(
1373
1356
  v,
1374
1357
  request_id=args.request_id,
1375
- console=console
1358
+ console=console,
1359
+ model_name=model_name
1376
1360
  )
1377
1361
 
1378
1362
  # 打印耗时和token统计
@@ -2706,9 +2706,10 @@ def main():
2706
2706
  memory["mode"] = "normal"
2707
2707
 
2708
2708
  # 处理 user_input 的空格
2709
- temp_user_input = user_input.lstrip() # 去掉左侧空格
2710
- if temp_user_input.startswith('/'):
2711
- user_input = temp_user_input
2709
+ if user_input:
2710
+ temp_user_input = user_input.lstrip() # 去掉左侧空格
2711
+ if temp_user_input.startswith('/'):
2712
+ user_input = temp_user_input
2712
2713
 
2713
2714
  if (
2714
2715
  memory["mode"] == "auto_detect"
@@ -14,8 +14,8 @@ MESSAGES = {
14
14
  "no_latest_commit": "Unable to get latest commit information",
15
15
  "code_review_error": "Code review process error: {{error}}",
16
16
  "index_file_too_large": "⚠️ File {{ file_path }} is too large ({{ file_size }} > {{ max_length }}), splitting into chunks...",
17
- "index_update_success": "✅ Successfully updated index for {{ file_path }} (md5: {{ md5 }}) in {{ duration }}s",
18
- "index_build_error": "❌ Error building index for {{ file_path }}: {{ error }}",
17
+ "index_update_success": "✅ {{ model_name }} Successfully updated index for {{ file_path }} (md5: {{ md5 }}) in {{ duration }}s",
18
+ "index_build_error": "❌ {{ model_name }} Error building index for {{ file_path }}: {{ error }}",
19
19
  "index_build_summary": "📊 Total Files: {{ total_files }}, Need to Build Index: {{ num_files }}",
20
20
  "building_index_progress": "⏳ Building Index: {{ counter }}/{{ num_files }}...",
21
21
  "index_source_dir_mismatch": "⚠️ Source directory mismatch (file_path: {{ file_path }}, source_dir: {{ source_dir }})",
@@ -54,7 +54,7 @@ MESSAGES = {
54
54
  "code_merge_start": "Auto merge the code...",
55
55
  "code_execution_warning": "Content(send to model) is {{ content_length }} tokens (you may collect too much files), which is larger than the maximum input length {{ max_length }}",
56
56
  "quick_filter_start": "Starting filter context(quick_filter)...",
57
- "normal_filter_start": "Starting filter context(normal_filter)...",
57
+ "normal_filter_start": "{{ model_name }} Starting filter context(normal_filter)...",
58
58
  "pylint_check_failed": "⚠️ Pylint check failed: {{ error_message }}",
59
59
  "pylint_error": "❌ Error running pylint: {{ error_message }}",
60
60
  "unmerged_blocks_warning": "⚠️ Found {{ num_blocks }} unmerged blocks, the changes will not be applied. Please review them manually then try again.",
@@ -93,8 +93,8 @@ MESSAGES = {
93
93
  "no_latest_commit": "无法获取最新的提交信息",
94
94
  "code_review_error": "代码审查过程出错: {{error}}",
95
95
  "index_file_too_large": "⚠️ 文件 {{ file_path }} 过大 ({{ file_size }} > {{ max_length }}), 正在分块处理...",
96
- "index_update_success": "✅ 成功更新 {{ file_path }} 的索引 (md5: {{ md5 }}), 耗时 {{ duration }} 秒",
97
- "index_build_error": "❌ 构建 {{ file_path }} 索引时出错: {{ error }}",
96
+ "index_update_success": "✅ {{ model_name }} 成功更新 {{ file_path }} 的索引 (md5: {{ md5 }}), 耗时 {{ duration }} 秒",
97
+ "index_build_error": "❌ {{ model_name }} 构建 {{ file_path }} 索引时出错: {{ error }}",
98
98
  "index_build_summary": "📊 总文件数: {{ total_files }}, 需要构建索引: {{ num_files }}",
99
99
  "building_index_progress": "⏳ 正在构建索引: {{ counter }}/{{ num_files }}...",
100
100
  "index_source_dir_mismatch": "⚠️ 源目录不匹配 (文件路径: {{ file_path }}, 源目录: {{ source_dir }})",
@@ -133,7 +133,7 @@ MESSAGES = {
133
133
  "code_merge_start": "正在自动合并代码...",
134
134
  "code_execution_warning": "发送给模型的内容长度为 {{ content_length }} tokens(您可能收集了太多文件),超过了最大输入长度 {{ max_length }}",
135
135
  "quick_filter_start": "开始查找上下文(quick_filter)...",
136
- "normal_filter_start": "开始查找上下文(normal_filter)...",
136
+ "normal_filter_start": "{{ model_name }} 开始查找上下文(normal_filter)...",
137
137
  "pylint_check_failed": "⚠️ Pylint 检查失败: {{ error_message }}",
138
138
  "pylint_error": "❌ 运行 Pylint 时出错: {{ error_message }}",
139
139
  "begin_index_source_code": "🚀 开始为 {{ source_dir }} 中的源代码建立索引",
@@ -101,13 +101,19 @@ def build_index_and_filter_files(
101
101
  )
102
102
  )
103
103
 
104
- if not args.skip_filter_index and args.index_filter_model:
105
- printer.print_in_terminal("quick_filter_start", style="blue")
104
+ if not args.skip_filter_index and args.index_filter_model:
105
+ model_name = getattr(index_manager.index_filter_llm, 'default_model_name', None)
106
+ if not model_name:
107
+ model_name = "unknown(without default model name)"
108
+ printer.print_in_terminal("quick_filter_start", style="blue", model_name=model_name)
106
109
  quick_filter = QuickFilter(index_manager,stats,sources)
107
110
  final_files = quick_filter.filter(index_manager.read_index(),args.query)
108
111
 
109
112
  if not args.skip_filter_index and not args.index_filter_model:
110
- printer.print_in_terminal("normal_filter_start", style="blue")
113
+ model_name = getattr(index_manager.llm, 'default_model_name', None)
114
+ if not model_name:
115
+ model_name = "unknown(without default model name)"
116
+ printer.print_in_terminal("normal_filter_start", style="blue",model_name=model_name)
111
117
  normal_filter = NormalFilter(index_manager,stats,sources)
112
118
  final_files = normal_filter.filter(index_manager.read_index(),args.query)
113
119
 
@@ -60,7 +60,7 @@ class NormalFilter():
60
60
  phase_end = time.monotonic()
61
61
  self.stats["timings"]["normal_filter"]["level1_filter"] = phase_end - phase_start
62
62
 
63
- # Phase 4: Level 2 filtering - Related files
63
+ # Phase 4: Level 2 filtering - Related files
64
64
  if target_files is not None and self.args.index_filter_level >= 2:
65
65
  logger.info(
66
66
  "Phase 4: Performing Level 2 filtering (related files)...")
@@ -84,13 +84,14 @@ class NormalFilter():
84
84
  phase_end = time.monotonic()
85
85
  self.stats["timings"]["normal_filter"]["level2_filter"] = phase_end - phase_start
86
86
 
87
- if not final_files:
88
- logger.warning("No related files found, using all files")
89
- for source in self.sources:
90
- final_files[get_file_path(source.module_name)] = TargetFile(
91
- file_path=source.module_name,
92
- reason="No related files found, use all files",
93
- )
87
+ # if not final_files:
88
+ # logger.warning("No related files found, using all files")
89
+ # for source in self.sources:
90
+ # final_files[get_file_path(source.module_name)] = TargetFile(
91
+ # file_path=source.module_name,
92
+ # reason="No related files found, use all files",
93
+ # )
94
+
94
95
 
95
96
  # Phase 5: Relevance verification
96
97
  logger.info("Phase 5: Performing relevance verification...")
@@ -195,7 +195,7 @@ class IndexManager:
195
195
  return True
196
196
  return False
197
197
 
198
- def build_index_for_single_source(self, source: SourceCode):
198
+ def build_index_for_single_source(self, source: SourceCode):
199
199
  file_path = source.module_name
200
200
  if not os.path.exists(file_path):
201
201
  return None
@@ -205,6 +205,10 @@ class IndexManager:
205
205
 
206
206
  md5 = hashlib.md5(source.source_code.encode("utf-8")).hexdigest()
207
207
 
208
+ model_name = getattr(self.index_llm, 'default_model_name', None)
209
+ if not model_name:
210
+ model_name = "unknown(without default model name)"
211
+
208
212
  try:
209
213
  start_time = time.monotonic()
210
214
  source_code = source.source_code
@@ -230,13 +234,14 @@ class IndexManager:
230
234
  symbols = self.get_all_file_symbols.with_llm(
231
235
  self.index_llm).run(source.module_name, source_code)
232
236
  time.sleep(self.anti_quota_limit)
233
-
237
+
234
238
  self.printer.print_in_terminal(
235
239
  "index_update_success",
236
240
  style="green",
237
241
  file_path=file_path,
238
242
  md5=md5,
239
- duration=time.monotonic() - start_time
243
+ duration=time.monotonic() - start_time,
244
+ model_name=model_name
240
245
  )
241
246
 
242
247
  except Exception as e:
@@ -246,7 +251,8 @@ class IndexManager:
246
251
  "index_build_error",
247
252
  style="red",
248
253
  file_path=file_path,
249
- error=str(e)
254
+ error=str(e),
255
+ model_name=model_name
250
256
  )
251
257
  return None
252
258
 
@@ -464,7 +470,7 @@ class IndexManager:
464
470
  {file.file_path: file for file in all_results}.values())
465
471
  return FileList(file_list=all_results)
466
472
 
467
- def _query_index_with_thread(self, query, func):
473
+ def _query_index_with_thread(self, query, func):
468
474
  all_results = []
469
475
  lock = threading.Lock()
470
476
  completed_threads = 0
@@ -113,6 +113,14 @@ def get_model_by_name(name: str) -> Dict:
113
113
  raise Exception(get_message_with_format("model_not_found", model_name=name))
114
114
  return v[0]
115
115
 
116
+
117
+ def check_model_exists(name: str) -> bool:
118
+ """
119
+ 检查模型是否存在
120
+ """
121
+ models = load_models()
122
+ return any(m["name"] == name.strip() for m in models)
123
+
116
124
  def update_model_with_api_key(name: str, api_key: str) -> Dict:
117
125
  """
118
126
  根据模型名称查找并更新模型的 api_key_path。
@@ -1,5 +1,5 @@
1
1
  from autocoder.common import SourceCode, AutoCoderArgs
2
- from autocoder import common as FileUtils
2
+ from autocoder import common as CommonUtils
3
3
  from autocoder.utils.rest import HttpDoc
4
4
  import os
5
5
  from typing import Optional, Generator, List, Dict, Any
@@ -164,7 +164,7 @@ class TSProject:
164
164
  logger.warning(f"Failed to read file: {file_path}. Error: {str(e)}")
165
165
  return None
166
166
 
167
- if not FileUtils.has_sufficient_content(source_code, min_line_count=1):
167
+ if not CommonUtils.has_sufficient_content(source_code, min_line_count=1):
168
168
  return None
169
169
 
170
170
  return SourceCode(module_name=module_name, source_code=source_code)
@@ -141,7 +141,8 @@ def multi_stream_out(
141
141
  def stream_out(
142
142
  stream_generator: Generator[Tuple[str, Dict[str, Any]], None, None],
143
143
  request_id: Optional[str] = None,
144
- console: Optional[Console] = None
144
+ console: Optional[Console] = None,
145
+ model_name: Optional[str] = None
145
146
  ) -> Tuple[str, Optional[Dict[str, Any]]]:
146
147
  """
147
148
  处理流式输出事件并在终端中展示
@@ -164,7 +165,7 @@ def stream_out(
164
165
 
165
166
  try:
166
167
  with Live(
167
- Panel("", title="Response", border_style="green"),
168
+ Panel("", title=f"Response[ {model_name} ]", border_style="green"),
168
169
  refresh_per_second=4,
169
170
  console=console
170
171
  ) as live:
@@ -209,7 +210,7 @@ def stream_out(
209
210
  live.update(
210
211
  Panel(
211
212
  Markdown(display_content),
212
- title="Response",
213
+ title=f"Response[ {model_name} ]",
213
214
  border_style="green",
214
215
  height=min(50, live.console.height - 4)
215
216
  )
@@ -223,7 +224,7 @@ def stream_out(
223
224
  live.update(
224
225
  Panel(
225
226
  Markdown(assistant_response),
226
- title="Final Response",
227
+ title=f"Final Response[ {model_name} ]",
227
228
  border_style="blue"
228
229
  )
229
230
  )
@@ -231,7 +232,7 @@ def stream_out(
231
232
  except Exception as e:
232
233
  console.print(Panel(
233
234
  f"Error: {str(e)}",
234
- title="Error",
235
+ title=f"Error[ {model_name} ]",
235
236
  border_style="red"
236
237
  ))
237
238
  # import traceback
@@ -0,0 +1 @@
1
+ __version__ = "0.1.246"
@@ -1 +0,0 @@
1
- __version__ = "0.1.245"
File without changes
File without changes
File without changes
File without changes