auto-coder 0.1.259__tar.gz → 0.1.261__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 (178) hide show
  1. {auto_coder-0.1.259 → auto_coder-0.1.261}/PKG-INFO +1 -1
  2. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/auto_coder.egg-info/PKG-INFO +1 -1
  3. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/auto_coder.egg-info/SOURCES.txt +9 -0
  4. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/agent/auto_review_commit.py +51 -24
  5. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/auto_coder.py +24 -1
  6. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/chat_auto_coder.py +377 -399
  7. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/chat_auto_coder_lang.py +20 -0
  8. auto_coder-0.1.261/src/autocoder/commands/auto_command.py +1174 -0
  9. auto_coder-0.1.261/src/autocoder/commands/tools.py +533 -0
  10. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/__init__.py +8 -0
  11. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/auto_coder_lang.py +61 -8
  12. auto_coder-0.1.261/src/autocoder/common/auto_configure.py +304 -0
  13. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/code_auto_merge.py +2 -2
  14. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/code_auto_merge_diff.py +2 -2
  15. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/code_auto_merge_editblock.py +2 -2
  16. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/code_auto_merge_strict_diff.py +2 -2
  17. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/code_modification_ranker.py +8 -7
  18. auto_coder-0.1.261/src/autocoder/common/command_completer.py +881 -0
  19. auto_coder-0.1.261/src/autocoder/common/conf_validator.py +245 -0
  20. auto_coder-0.1.261/src/autocoder/common/conversation_pruner.py +131 -0
  21. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/git_utils.py +82 -1
  22. auto_coder-0.1.261/src/autocoder/common/index_import_export.py +101 -0
  23. auto_coder-0.1.261/src/autocoder/common/result_manager.py +115 -0
  24. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/shells.py +22 -6
  25. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/utils_code_auto_generate.py +2 -2
  26. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/dispacher/actions/action.py +45 -4
  27. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +13 -1
  28. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/index/filter/quick_filter.py +22 -7
  29. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +13 -6
  30. auto_coder-0.1.261/src/autocoder/utils/project_structure.py +15 -0
  31. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/utils/thread_utils.py +4 -0
  32. auto_coder-0.1.261/src/autocoder/utils/types.py +0 -0
  33. auto_coder-0.1.261/src/autocoder/version.py +1 -0
  34. auto_coder-0.1.259/src/autocoder/common/command_completer.py +0 -324
  35. auto_coder-0.1.259/src/autocoder/version.py +0 -1
  36. {auto_coder-0.1.259 → auto_coder-0.1.261}/LICENSE +0 -0
  37. {auto_coder-0.1.259 → auto_coder-0.1.261}/README.md +0 -0
  38. {auto_coder-0.1.259 → auto_coder-0.1.261}/setup.cfg +0 -0
  39. {auto_coder-0.1.259 → auto_coder-0.1.261}/setup.py +0 -0
  40. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/auto_coder.egg-info/dependency_links.txt +0 -0
  41. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/auto_coder.egg-info/entry_points.txt +0 -0
  42. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/auto_coder.egg-info/requires.txt +0 -0
  43. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/auto_coder.egg-info/top_level.txt +0 -0
  44. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/__init__.py +0 -0
  45. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/agent/__init__.py +0 -0
  46. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/agent/auto_demand_organizer.py +0 -0
  47. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/agent/auto_filegroup.py +0 -0
  48. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/agent/auto_guess_query.py +0 -0
  49. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/agent/auto_tool.py +0 -0
  50. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/agent/coder.py +0 -0
  51. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/agent/designer.py +0 -0
  52. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/agent/planner.py +0 -0
  53. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/agent/project_reader.py +0 -0
  54. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/auto_coder_rag.py +0 -0
  55. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/auto_coder_rag_client_mcp.py +0 -0
  56. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/auto_coder_rag_mcp.py +0 -0
  57. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/auto_coder_server.py +0 -0
  58. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/benchmark.py +0 -0
  59. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/chat/__init__.py +0 -0
  60. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/command_args.py +0 -0
  61. {auto_coder-0.1.259/src/autocoder/common/mcp_servers → auto_coder-0.1.261/src/autocoder/commands}/__init__.py +0 -0
  62. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/JupyterClient.py +0 -0
  63. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/ShellClient.py +0 -0
  64. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/anything2images.py +0 -0
  65. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/anything2img.py +0 -0
  66. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/audio.py +0 -0
  67. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/buildin_tokenizer.py +0 -0
  68. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/chunk_validation.py +0 -0
  69. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/cleaner.py +0 -0
  70. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/code_auto_execute.py +0 -0
  71. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/code_auto_generate.py +0 -0
  72. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/code_auto_generate_diff.py +0 -0
  73. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
  74. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
  75. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/command_generator.py +0 -0
  76. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/command_templates.py +0 -0
  77. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/const.py +0 -0
  78. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/files.py +0 -0
  79. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/global_cancel.py +0 -0
  80. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/image_to_page.py +0 -0
  81. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/interpreter.py +0 -0
  82. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/llm_rerank.py +0 -0
  83. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/mcp_hub.py +0 -0
  84. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/mcp_server.py +0 -0
  85. {auto_coder-0.1.259/src/autocoder/db → auto_coder-0.1.261/src/autocoder/common/mcp_servers}/__init__.py +0 -0
  86. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
  87. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/mcp_tools.py +0 -0
  88. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/memory_manager.py +0 -0
  89. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/model_speed_test.py +0 -0
  90. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/printer.py +0 -0
  91. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/recall_validation.py +0 -0
  92. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/screenshots.py +0 -0
  93. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/search.py +0 -0
  94. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/search_replace.py +0 -0
  95. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/sys_prompt.py +0 -0
  96. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/text.py +0 -0
  97. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/common/types.py +0 -0
  98. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/data/byzerllm.md +0 -0
  99. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/data/tokenizer.json +0 -0
  100. {auto_coder-0.1.259/src/autocoder/dispacher/actions → auto_coder-0.1.261/src/autocoder/db}/__init__.py +0 -0
  101. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/db/store.py +0 -0
  102. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/dispacher/__init__.py +0 -0
  103. {auto_coder-0.1.259/src/autocoder/dispacher/actions/plugins → auto_coder-0.1.261/src/autocoder/dispacher/actions}/__init__.py +0 -0
  104. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/dispacher/actions/copilot.py +0 -0
  105. {auto_coder-0.1.259/src/autocoder/index → auto_coder-0.1.261/src/autocoder/dispacher/actions/plugins}/__init__.py +0 -0
  106. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/dispacher/actions/plugins/action_translate.py +0 -0
  107. {auto_coder-0.1.259/src/autocoder/index/filter → auto_coder-0.1.261/src/autocoder/index}/__init__.py +0 -0
  108. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/index/entry.py +0 -0
  109. {auto_coder-0.1.259/src/autocoder/rag → auto_coder-0.1.261/src/autocoder/index/filter}/__init__.py +0 -0
  110. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/index/filter/normal_filter.py +0 -0
  111. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/index/for_command.py +0 -0
  112. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/index/index.py +0 -0
  113. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/index/symbols_utils.py +0 -0
  114. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/index/types.py +0 -0
  115. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/lang.py +0 -0
  116. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/models.py +0 -0
  117. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/privacy/__init__.py +0 -0
  118. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/privacy/model_filter.py +0 -0
  119. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/pyproject/__init__.py +0 -0
  120. {auto_coder-0.1.259/src/autocoder/rag/cache → auto_coder-0.1.261/src/autocoder/rag}/__init__.py +0 -0
  121. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/api_server.py +0 -0
  122. {auto_coder-0.1.259/src/autocoder/rag/stream_event → auto_coder-0.1.261/src/autocoder/rag/cache}/__init__.py +0 -0
  123. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/cache/base_cache.py +0 -0
  124. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
  125. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
  126. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/cache/simple_cache.py +0 -0
  127. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/doc_filter.py +0 -0
  128. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/document_retriever.py +0 -0
  129. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/llm_wrapper.py +0 -0
  130. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/loaders/__init__.py +0 -0
  131. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/loaders/docx_loader.py +0 -0
  132. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/loaders/excel_loader.py +0 -0
  133. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
  134. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
  135. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/long_context_rag.py +0 -0
  136. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/rag_config.py +0 -0
  137. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/rag_entry.py +0 -0
  138. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/raw_rag.py +0 -0
  139. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/relevant_utils.py +0 -0
  140. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/simple_directory_reader.py +0 -0
  141. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/simple_rag.py +0 -0
  142. {auto_coder-0.1.259/src/autocoder/utils/auto_coder_utils → auto_coder-0.1.261/src/autocoder/rag/stream_event}/__init__.py +0 -0
  143. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/stream_event/event_writer.py +0 -0
  144. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/stream_event/types.py +0 -0
  145. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/token_checker.py +0 -0
  146. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/token_counter.py +0 -0
  147. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/token_limiter.py +0 -0
  148. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/types.py +0 -0
  149. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/utils.py +0 -0
  150. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/rag/variable_holder.py +0 -0
  151. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/regexproject/__init__.py +0 -0
  152. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/suffixproject/__init__.py +0 -0
  153. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/tsproject/__init__.py +0 -0
  154. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/utils/__init__.py +0 -0
  155. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/utils/_markitdown.py +0 -0
  156. {auto_coder-0.1.259/src/autocoder/utils/chat_auto_coder_utils → auto_coder-0.1.261/src/autocoder/utils/auto_coder_utils}/__init__.py +0 -0
  157. /auto_coder-0.1.259/src/autocoder/utils/types.py → /auto_coder-0.1.261/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
  158. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/utils/conversation_store.py +0 -0
  159. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/utils/llm_client_interceptors.py +0 -0
  160. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/utils/llms.py +0 -0
  161. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/utils/log_capture.py +0 -0
  162. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/utils/model_provider_selector.py +0 -0
  163. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/utils/multi_turn.py +0 -0
  164. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/utils/operate_config_api.py +0 -0
  165. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/utils/print_table.py +0 -0
  166. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/utils/queue_communicate.py +0 -0
  167. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/utils/request_event_queue.py +0 -0
  168. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/utils/request_queue.py +0 -0
  169. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/utils/rest.py +0 -0
  170. {auto_coder-0.1.259 → auto_coder-0.1.261}/src/autocoder/utils/tests.py +0 -0
  171. {auto_coder-0.1.259 → auto_coder-0.1.261}/tests/test_action_regex_project.py +0 -0
  172. {auto_coder-0.1.259 → auto_coder-0.1.261}/tests/test_chat_auto_coder.py +0 -0
  173. {auto_coder-0.1.259 → auto_coder-0.1.261}/tests/test_code_auto_merge_editblock.py +0 -0
  174. {auto_coder-0.1.259 → auto_coder-0.1.261}/tests/test_command_completer.py +0 -0
  175. {auto_coder-0.1.259 → auto_coder-0.1.261}/tests/test_planner.py +0 -0
  176. {auto_coder-0.1.259 → auto_coder-0.1.261}/tests/test_privacy.py +0 -0
  177. {auto_coder-0.1.259 → auto_coder-0.1.261}/tests/test_queue_communicate.py +0 -0
  178. {auto_coder-0.1.259 → auto_coder-0.1.261}/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.259
3
+ Version: 0.1.261
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.259
3
+ Version: 0.1.261
4
4
  Summary: AutoCoder: AutoCoder
5
5
  Author: allwefantasy
6
6
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
@@ -31,6 +31,9 @@ src/autocoder/agent/designer.py
31
31
  src/autocoder/agent/planner.py
32
32
  src/autocoder/agent/project_reader.py
33
33
  src/autocoder/chat/__init__.py
34
+ src/autocoder/commands/__init__.py
35
+ src/autocoder/commands/auto_command.py
36
+ src/autocoder/commands/tools.py
34
37
  src/autocoder/common/JupyterClient.py
35
38
  src/autocoder/common/ShellClient.py
36
39
  src/autocoder/common/__init__.py
@@ -38,6 +41,7 @@ src/autocoder/common/anything2images.py
38
41
  src/autocoder/common/anything2img.py
39
42
  src/autocoder/common/audio.py
40
43
  src/autocoder/common/auto_coder_lang.py
44
+ src/autocoder/common/auto_configure.py
41
45
  src/autocoder/common/buildin_tokenizer.py
42
46
  src/autocoder/common/chunk_validation.py
43
47
  src/autocoder/common/cleaner.py
@@ -54,11 +58,14 @@ src/autocoder/common/code_modification_ranker.py
54
58
  src/autocoder/common/command_completer.py
55
59
  src/autocoder/common/command_generator.py
56
60
  src/autocoder/common/command_templates.py
61
+ src/autocoder/common/conf_validator.py
57
62
  src/autocoder/common/const.py
63
+ src/autocoder/common/conversation_pruner.py
58
64
  src/autocoder/common/files.py
59
65
  src/autocoder/common/git_utils.py
60
66
  src/autocoder/common/global_cancel.py
61
67
  src/autocoder/common/image_to_page.py
68
+ src/autocoder/common/index_import_export.py
62
69
  src/autocoder/common/interpreter.py
63
70
  src/autocoder/common/llm_rerank.py
64
71
  src/autocoder/common/mcp_hub.py
@@ -68,6 +75,7 @@ src/autocoder/common/memory_manager.py
68
75
  src/autocoder/common/model_speed_test.py
69
76
  src/autocoder/common/printer.py
70
77
  src/autocoder/common/recall_validation.py
78
+ src/autocoder/common/result_manager.py
71
79
  src/autocoder/common/screenshots.py
72
80
  src/autocoder/common/search.py
73
81
  src/autocoder/common/search_replace.py
@@ -145,6 +153,7 @@ src/autocoder/utils/model_provider_selector.py
145
153
  src/autocoder/utils/multi_turn.py
146
154
  src/autocoder/utils/operate_config_api.py
147
155
  src/autocoder/utils/print_table.py
156
+ src/autocoder/utils/project_structure.py
148
157
  src/autocoder/utils/queue_communicate.py
149
158
  src/autocoder/utils/request_event_queue.py
150
159
  src/autocoder/utils/request_queue.py
@@ -8,6 +8,7 @@ from rich.console import Console
8
8
  from autocoder.common.printer import Printer
9
9
  from autocoder.common import AutoCoderArgs
10
10
  from autocoder.common.utils_code_auto_generate import stream_chat_with_continue
11
+ import hashlib
11
12
 
12
13
 
13
14
  def load_yaml_config(yaml_file: str) -> Dict:
@@ -41,13 +42,13 @@ class AutoReviewCommit:
41
42
  self.console = console or Console()
42
43
 
43
44
  @byzerllm.prompt()
44
- def review(self, querie_with_urls_and_diffs: List[Tuple[str, List[str], str]], query: str) -> Generator[str,None,None]:
45
+ def review(self, querie_with_urls_and_changes: List[Tuple[str, List[str], Dict[str, Tuple[str, str]]]], query: str) -> Generator[str,None,None]:
45
46
  """
46
47
  如果前面我们对话提供了文档,请参考上面的文档对提交的代码变更进行审查,提供改进建议。
47
48
 
48
49
  下面包含最新一次提交的信息:
49
50
  <commit>
50
- {% for query,urls,diff in querie_with_urls_and_diffs %}
51
+ {% for query,urls,changes in querie_with_urls_and_changes %}
51
52
  ## 任务需求
52
53
  {{ query }}
53
54
 
@@ -57,9 +58,18 @@ class AutoReviewCommit:
57
58
  {% endfor %}
58
59
 
59
60
  代码变更:
60
- ```diff
61
- {{ diff }}
62
- ```
61
+ {% for file_path, (before, after) in changes.items() %}
62
+ ##File: {{ file_path }}
63
+ ##修改前:
64
+
65
+ {{ before or "New file" }}
66
+
67
+ ##File: {{ file_path }}
68
+ ##修改后:
69
+
70
+ {{ after or "File deleted" }}
71
+
72
+ {% endfor %}
63
73
  {% endfor %}
64
74
  </commit>
65
75
 
@@ -70,7 +80,7 @@ class AutoReviewCommit:
70
80
  - 实现逻辑:算法和数据结构的选择是否合适
71
81
 
72
82
  2. 潜在问题检查
73
- - 常见错误:是否存在空指针,数组越界,类型转换,未声明变量,typo等低级错误
83
+ - 常见错误:缩进(比如python),闭合标签(前端vue,reactjs),是否存在空指针,数组越界,类型转换,未声明变量,typo等低级错误
74
84
  - 安全性:是否存在安全隐患
75
85
  - 性能:是否有性能问题
76
86
  - 并发:是否有并发安全问题
@@ -83,8 +93,7 @@ class AutoReviewCommit:
83
93
  - 依赖关系:组件耦合是否合理
84
94
  - 复用性:是否有重复代码
85
95
 
86
- 返回格式说明:
87
- 返回 markdown 格式,包含以下内容:
96
+ 评审结果包含以下内容:
88
97
  1. issues: 发现的具体问题列表
89
98
  2. suggestions: 对应的改进建议列表
90
99
  3. severity: 问题的严重程度(low/medium/high)
@@ -130,10 +139,10 @@ class AutoReviewCommit:
130
139
 
131
140
  action_file = action_files[0]
132
141
 
133
- querie_with_urls_and_diffs = []
142
+ querie_with_urls_and_changes = []
134
143
  repo = git.Repo(self.project_dir)
135
144
 
136
- # 收集所有query、urls和对应的commit diff
145
+ # 收集所有query、urls和对应的文件变化
137
146
  for yaml_file in [action_file]:
138
147
  yaml_path = os.path.join(self.actions_dir, yaml_file)
139
148
  config = load_yaml_config(yaml_path)
@@ -145,11 +154,12 @@ class AutoReviewCommit:
145
154
  urls = config.get('urls', [])
146
155
 
147
156
  if query and urls:
148
- commit_diff = ""
157
+ changes = {}
149
158
  if not self.skip_diff:
150
- # 计算文件的MD5用于匹配commit
151
- import hashlib
152
- file_md5 = hashlib.md5(open(yaml_path, 'rb').read()).hexdigest()
159
+ # 计算文件的MD5用于匹配commit
160
+ with open(yaml_path, 'r', encoding='utf-8') as f:
161
+ yaml_content = f.read()
162
+ file_md5 = hashlib.md5(yaml_content.encode("utf-8")).hexdigest()
153
163
  response_id = f"auto_coder_{yaml_file}_{file_md5}"
154
164
  # 查找对应的commit
155
165
  try:
@@ -157,21 +167,38 @@ class AutoReviewCommit:
157
167
  if response_id in commit.message:
158
168
  if commit.parents:
159
169
  parent = commit.parents[0]
160
- commit_diff = repo.git.diff(
161
- parent.hexsha, commit.hexsha)
162
- else:
163
- commit_diff = repo.git.show(commit.hexsha)
170
+ # 获取所有文件的前后内容
171
+ for diff_item in parent.diff(commit):
172
+ file_path = diff_item.a_path if diff_item.a_path else diff_item.b_path
173
+
174
+ # 获取变更前内容
175
+ before_content = None
176
+ try:
177
+ if diff_item.a_blob:
178
+ before_content = repo.git.show(f"{parent.hexsha}:{file_path}")
179
+ except git.exc.GitCommandError:
180
+ pass # 文件可能是新增的
181
+
182
+ # 获取变更后内容
183
+ after_content = None
184
+ try:
185
+ if diff_item.b_blob:
186
+ after_content = repo.git.show(f"{commit.hexsha}:{file_path}")
187
+ except git.exc.GitCommandError:
188
+ pass # 文件可能被删除
189
+
190
+ changes[file_path] = (before_content, after_content)
164
191
  break
165
192
  except git.exc.GitCommandError as e:
166
193
  printer = Printer()
167
194
  printer.print_in_terminal("git_command_error", style="red", error=str(e))
168
195
  except Exception as e:
169
196
  printer = Printer()
170
- printer.print_in_terminal("get_commit_diff_error", style="red", error=str(e))
197
+ printer.print_in_terminal("get_commit_changes_error", style="red", error=str(e))
171
198
 
172
- querie_with_urls_and_diffs.append((query, urls, commit_diff))
199
+ querie_with_urls_and_changes.append((query, urls, changes))
173
200
 
174
- return querie_with_urls_and_diffs
201
+ return querie_with_urls_and_changes
175
202
 
176
203
 
177
204
  def review_commit(self,query: str, conversations: List[Dict]) -> Generator[str,None,None]:
@@ -183,15 +210,15 @@ class AutoReviewCommit:
183
210
  """
184
211
  printer = Printer()
185
212
  # 获取最新的提交信息
186
- commits = self.parse_history_tasks()
187
- if not commits:
213
+ changes = self.parse_history_tasks()
214
+ if not changes:
188
215
  printer.print_in_terminal("no_latest_commit", style="red")
189
216
  return None
190
217
 
191
218
  # 调用LLM进行代码审查
192
219
  try:
193
220
  # 获取 prompt 内容
194
- query = self.review.prompt(commits, query)
221
+ query = self.review.prompt(changes, query)
195
222
  new_conversations = conversations.copy()[0:-1]
196
223
  new_conversations.append({"role": "user", "content": query})
197
224
  # 构造对话消息
@@ -48,6 +48,7 @@ from autocoder.utils.auto_coder_utils.chat_stream_out import stream_out
48
48
  from autocoder.common.printer import Printer
49
49
  from autocoder.rag.token_counter import count_tokens
50
50
  from autocoder.privacy.model_filter import ModelPathFilter
51
+ from autocoder.common.result_manager import ResultManager
51
52
 
52
53
  console = Console()
53
54
 
@@ -1062,6 +1063,7 @@ def main(input_args: Optional[List[str]] = None):
1062
1063
  os.makedirs(memory_dir, exist_ok=True)
1063
1064
  memory_file = os.path.join(memory_dir, "chat_history.json")
1064
1065
  console = Console()
1066
+ result_manager = ResultManager()
1065
1067
  if args.new_session:
1066
1068
  if os.path.exists(memory_file):
1067
1069
  with open(memory_file, "r") as f:
@@ -1077,6 +1079,13 @@ def main(input_args: Optional[List[str]] = None):
1077
1079
  "conversation_history": []}
1078
1080
  with open(memory_file, "w") as f:
1079
1081
  json.dump(chat_history, f, ensure_ascii=False)
1082
+
1083
+ result_manager.add_result(content=get_message("new_session_started"), meta={
1084
+ "action": "chat",
1085
+ "input": {
1086
+ "query": args.query
1087
+ }
1088
+ })
1080
1089
  console.print(
1081
1090
  Panel(
1082
1091
  get_message("new_session_started"),
@@ -1268,6 +1277,12 @@ def main(input_args: Optional[List[str]] = None):
1268
1277
  with open(args.target_file, "w") as f:
1269
1278
  f.write(chat_content)
1270
1279
 
1280
+ result_manager = ResultManager()
1281
+ result_manager.append(content=result,
1282
+ meta={"action": "chat","input":{
1283
+ "query":args.query
1284
+ }})
1285
+
1271
1286
  # Update chat history with user's response
1272
1287
  chat_history["ask_conversation"].append(
1273
1288
  {"role": "assistant", "content": result}
@@ -1342,7 +1357,15 @@ def main(input_args: Optional[List[str]] = None):
1342
1357
  model_name=model_name,
1343
1358
  args=args
1344
1359
  )
1345
-
1360
+
1361
+ result_manager = ResultManager()
1362
+ result_manager.append(content=assistant_response, meta={
1363
+ "action": "chat",
1364
+ "input": {
1365
+ "query": args.query
1366
+ }
1367
+ })
1368
+
1346
1369
  # 打印耗时和token统计
1347
1370
  if last_meta:
1348
1371
  elapsed_time = time.time() - start_time