auto-coder 0.1.306__tar.gz → 0.1.307__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 (216) hide show
  1. {auto_coder-0.1.306 → auto_coder-0.1.307}/PKG-INFO +1 -1
  2. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/auto_coder.egg-info/PKG-INFO +1 -1
  3. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/agent/auto_demand_organizer.py +13 -20
  4. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/agent/auto_filegroup.py +10 -16
  5. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/agent/auto_learn_from_commit.py +22 -32
  6. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/agent/auto_review_commit.py +12 -63
  7. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/auto_coder.py +3 -6
  8. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/auto_coder_runner.py +40 -8
  9. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/commands/auto_command.py +31 -7
  10. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/__init__.py +2 -0
  11. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/action_yml_file_manager.py +75 -37
  12. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/code_auto_generate.py +2 -2
  13. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/code_auto_generate_diff.py +2 -2
  14. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/code_auto_generate_editblock.py +2 -2
  15. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/code_auto_generate_strict_diff.py +2 -2
  16. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/code_auto_merge.py +2 -2
  17. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/code_auto_merge_diff.py +2 -2
  18. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/code_auto_merge_editblock.py +2 -2
  19. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/code_auto_merge_strict_diff.py +2 -2
  20. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/code_modification_ranker.py +5 -1
  21. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/git_utils.py +73 -56
  22. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/stream_out_type.py +3 -0
  23. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/memory/active_context_manager.py +16 -16
  24. auto_coder-0.1.307/src/autocoder/version.py +1 -0
  25. auto_coder-0.1.306/src/autocoder/version.py +0 -1
  26. {auto_coder-0.1.306 → auto_coder-0.1.307}/LICENSE +0 -0
  27. {auto_coder-0.1.306 → auto_coder-0.1.307}/README.md +0 -0
  28. {auto_coder-0.1.306 → auto_coder-0.1.307}/setup.cfg +0 -0
  29. {auto_coder-0.1.306 → auto_coder-0.1.307}/setup.py +0 -0
  30. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/auto_coder.egg-info/SOURCES.txt +0 -0
  31. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/auto_coder.egg-info/dependency_links.txt +0 -0
  32. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/auto_coder.egg-info/entry_points.txt +0 -0
  33. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/auto_coder.egg-info/requires.txt +0 -0
  34. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/auto_coder.egg-info/top_level.txt +0 -0
  35. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/__init__.py +0 -0
  36. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/agent/__init__.py +0 -0
  37. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/agent/auto_guess_query.py +0 -0
  38. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/agent/auto_tool.py +0 -0
  39. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/agent/coder.py +0 -0
  40. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/agent/designer.py +0 -0
  41. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/agent/planner.py +0 -0
  42. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/agent/project_reader.py +0 -0
  43. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/auto_coder_rag.py +0 -0
  44. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/auto_coder_server.py +0 -0
  45. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/benchmark.py +0 -0
  46. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/chat/__init__.py +0 -0
  47. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/chat_auto_coder.py +0 -0
  48. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/chat_auto_coder_lang.py +0 -0
  49. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/command_args.py +0 -0
  50. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/command_parser.py +0 -0
  51. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/commands/__init__.py +0 -0
  52. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/commands/auto_web.py +0 -0
  53. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/commands/tools.py +0 -0
  54. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/JupyterClient.py +0 -0
  55. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/ShellClient.py +0 -0
  56. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/anything2images.py +0 -0
  57. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/anything2img.py +0 -0
  58. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/audio.py +0 -0
  59. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/auto_coder_lang.py +0 -0
  60. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/auto_configure.py +0 -0
  61. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/buildin_tokenizer.py +0 -0
  62. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/chunk_validation.py +0 -0
  63. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/cleaner.py +0 -0
  64. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/code_auto_execute.py +0 -0
  65. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/command_completer.py +0 -0
  66. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/command_generator.py +0 -0
  67. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/command_templates.py +0 -0
  68. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/computer_use.py +0 -0
  69. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/conf_import_export.py +0 -0
  70. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/conf_validator.py +0 -0
  71. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/const.py +0 -0
  72. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/context_pruner.py +0 -0
  73. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/conversation_pruner.py +0 -0
  74. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/files.py +0 -0
  75. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/global_cancel.py +0 -0
  76. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/image_to_page.py +0 -0
  77. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/index_import_export.py +0 -0
  78. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/interpreter.py +0 -0
  79. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/llm_rerank.py +0 -0
  80. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/mcp_hub.py +0 -0
  81. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/mcp_server.py +0 -0
  82. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/mcp_servers/__init__.py +0 -0
  83. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/mcp_servers/mcp_server_gpt4o_mini_search.py +0 -0
  84. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
  85. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/mcp_tools.py +0 -0
  86. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/memory_manager.py +0 -0
  87. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/model_speed_test.py +0 -0
  88. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/printer.py +0 -0
  89. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/recall_validation.py +0 -0
  90. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/result_manager.py +0 -0
  91. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/screenshots.py +0 -0
  92. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/search.py +0 -0
  93. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/search_replace.py +0 -0
  94. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/shells.py +0 -0
  95. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/stats_panel.py +0 -0
  96. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/sys_prompt.py +0 -0
  97. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/text.py +0 -0
  98. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/types.py +0 -0
  99. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/common/utils_code_auto_generate.py +0 -0
  100. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/data/byzerllm.md +0 -0
  101. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/data/tokenizer.json +0 -0
  102. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/db/__init__.py +0 -0
  103. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/db/store.py +0 -0
  104. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/dispacher/__init__.py +0 -0
  105. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/dispacher/actions/__init__.py +0 -0
  106. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/dispacher/actions/action.py +0 -0
  107. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/dispacher/actions/copilot.py +0 -0
  108. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
  109. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
  110. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/events/__init__.py +0 -0
  111. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/events/event_content.py +0 -0
  112. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/events/event_manager.py +0 -0
  113. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/events/event_manager_singleton.py +0 -0
  114. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/events/event_store.py +0 -0
  115. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/events/event_types.py +0 -0
  116. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/index/__init__.py +0 -0
  117. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/index/entry.py +0 -0
  118. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/index/filter/__init__.py +0 -0
  119. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/index/filter/normal_filter.py +0 -0
  120. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/index/filter/quick_filter.py +0 -0
  121. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/index/for_command.py +0 -0
  122. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/index/index.py +0 -0
  123. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/index/symbols_utils.py +0 -0
  124. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/index/types.py +0 -0
  125. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/lang.py +0 -0
  126. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/memory/__init__.py +0 -0
  127. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/memory/active_package.py +0 -0
  128. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/memory/async_processor.py +0 -0
  129. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/memory/directory_mapper.py +0 -0
  130. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/models.py +0 -0
  131. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/plugins/__init__.py +0 -0
  132. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/plugins/dynamic_completion_example.py +0 -0
  133. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/plugins/git_helper_plugin.py +0 -0
  134. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/plugins/sample_plugin.py +0 -0
  135. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/plugins/token_helper_plugin.py +0 -0
  136. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/plugins/utils.py +0 -0
  137. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/privacy/__init__.py +0 -0
  138. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/privacy/model_filter.py +0 -0
  139. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/pyproject/__init__.py +0 -0
  140. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/__init__.py +0 -0
  141. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/api_server.py +0 -0
  142. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/cache/__init__.py +0 -0
  143. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/cache/base_cache.py +0 -0
  144. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
  145. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/cache/cache_result_merge.py +0 -0
  146. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
  147. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/cache/local_byzer_storage_cache.py +0 -0
  148. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/cache/local_duckdb_storage_cache.py +0 -0
  149. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/cache/rag_file_meta.py +0 -0
  150. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/cache/simple_cache.py +0 -0
  151. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/conversation_to_queries.py +0 -0
  152. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/doc_filter.py +0 -0
  153. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/document_retriever.py +0 -0
  154. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/lang.py +0 -0
  155. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/llm_wrapper.py +0 -0
  156. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/loaders/__init__.py +0 -0
  157. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/loaders/docx_loader.py +0 -0
  158. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/loaders/excel_loader.py +0 -0
  159. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
  160. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
  161. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/long_context_rag.py +0 -0
  162. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/qa_conversation_strategy.py +0 -0
  163. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/rag_config.py +0 -0
  164. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/rag_entry.py +0 -0
  165. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/raw_rag.py +0 -0
  166. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/relevant_utils.py +0 -0
  167. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/searchable.py +0 -0
  168. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/simple_directory_reader.py +0 -0
  169. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/simple_rag.py +0 -0
  170. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/stream_event/__init__.py +0 -0
  171. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/stream_event/event_writer.py +0 -0
  172. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/stream_event/types.py +0 -0
  173. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/token_checker.py +0 -0
  174. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/token_counter.py +0 -0
  175. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/token_limiter.py +0 -0
  176. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/token_limiter_utils.py +0 -0
  177. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/types.py +0 -0
  178. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/utils.py +0 -0
  179. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/rag/variable_holder.py +0 -0
  180. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/regexproject/__init__.py +0 -0
  181. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/run_context.py +0 -0
  182. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/suffixproject/__init__.py +0 -0
  183. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/tsproject/__init__.py +0 -0
  184. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/__init__.py +0 -0
  185. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/_markitdown.py +0 -0
  186. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
  187. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
  188. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/auto_project_type.py +0 -0
  189. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
  190. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/conversation_store.py +0 -0
  191. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/llm_client_interceptors.py +0 -0
  192. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/llms.py +0 -0
  193. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/log_capture.py +0 -0
  194. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/model_provider_selector.py +0 -0
  195. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/multi_turn.py +0 -0
  196. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/operate_config_api.py +0 -0
  197. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/print_table.py +0 -0
  198. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/project_structure.py +0 -0
  199. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/queue_communicate.py +0 -0
  200. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/request_event_queue.py +0 -0
  201. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/request_queue.py +0 -0
  202. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/rest.py +0 -0
  203. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/stream_thinking.py +0 -0
  204. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/tests.py +0 -0
  205. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/thread_utils.py +0 -0
  206. {auto_coder-0.1.306 → auto_coder-0.1.307}/src/autocoder/utils/types.py +0 -0
  207. {auto_coder-0.1.306 → auto_coder-0.1.307}/tests/test_action_regex_project.py +0 -0
  208. {auto_coder-0.1.306 → auto_coder-0.1.307}/tests/test_action_yml_file_manager.py +0 -0
  209. {auto_coder-0.1.306 → auto_coder-0.1.307}/tests/test_chat_auto_coder.py +0 -0
  210. {auto_coder-0.1.306 → auto_coder-0.1.307}/tests/test_code_auto_merge_editblock.py +0 -0
  211. {auto_coder-0.1.306 → auto_coder-0.1.307}/tests/test_command_completer.py +0 -0
  212. {auto_coder-0.1.306 → auto_coder-0.1.307}/tests/test_planner.py +0 -0
  213. {auto_coder-0.1.306 → auto_coder-0.1.307}/tests/test_plugins.py +0 -0
  214. {auto_coder-0.1.306 → auto_coder-0.1.307}/tests/test_privacy.py +0 -0
  215. {auto_coder-0.1.306 → auto_coder-0.1.307}/tests/test_queue_communicate.py +0 -0
  216. {auto_coder-0.1.306 → auto_coder-0.1.307}/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.306
3
+ Version: 0.1.307
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.306
3
+ Version: 0.1.307
4
4
  Summary: AutoCoder: AutoCoder
5
5
  Author: allwefantasy
6
6
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
@@ -6,6 +6,8 @@ import byzerllm
6
6
  import pydantic
7
7
  import git
8
8
 
9
+ from autocoder.common.action_yml_file_manager import ActionYmlFileManager
10
+
9
11
 
10
12
  class DemandItem(pydantic.BaseModel):
11
13
  """单个需求项"""
@@ -44,6 +46,7 @@ class AutoDemandOrganizer:
44
46
  file_size_limit: 最多分析多少历史任务
45
47
  """
46
48
  self.project_dir = project_dir
49
+ self.action_file_manager = ActionYmlFileManager(project_dir)
47
50
  self.actions_dir = os.path.join(project_dir, "actions")
48
51
  self.llm = llm
49
52
  self.file_size_limit = file_size_limit
@@ -162,26 +165,16 @@ class AutoDemandOrganizer:
162
165
 
163
166
  if query and urls:
164
167
  commit_diff = ""
165
- if not self.skip_diff:
166
- # 计算文件的MD5用于匹配commit
167
- import hashlib
168
- file_md5 = hashlib.md5(open(yaml_path, 'rb').read()).hexdigest()
169
- response_id = f"auto_coder_{yaml_file}_{file_md5}"
170
- # 查找对应的commit
171
- try:
172
- for commit in repo.iter_commits():
173
- if response_id in commit.message:
174
- if commit.parents:
175
- parent = commit.parents[0]
176
- commit_diff = repo.git.diff(
177
- parent.hexsha, commit.hexsha)
178
- else:
179
- commit_diff = repo.git.show(commit.hexsha)
180
- break
181
- except git.exc.GitCommandError as e:
182
- logger.error(f"Git命令执行错误: {str(e)}")
183
- except Exception as e:
184
- logger.error(f"获取commit diff时出错: {str(e)}")
168
+ if not self.skip_diff:
169
+ commit_id = self.action_file_manager.get_commit_id_from_file(yaml_file)
170
+ commit = repo.commit(commit_id)
171
+ if commit:
172
+ if commit.parents:
173
+ parent = commit.parents[0]
174
+ commit_diff = repo.git.diff(
175
+ parent.hexsha, commit.hexsha)
176
+ else:
177
+ commit_diff = repo.git.show(commit.hexsha)
185
178
 
186
179
  querie_with_urls_and_diffs.append((query, urls, commit_diff))
187
180
 
@@ -4,6 +4,7 @@ import yaml
4
4
  from loguru import logger
5
5
  import byzerllm
6
6
  import pydantic
7
+ from autocoder.common.action_yml_file_manager import ActionYmlFileManager
7
8
 
8
9
 
9
10
  class FileGroup(pydantic.BaseModel):
@@ -40,6 +41,7 @@ class AutoFileGroup:
40
41
  actions_dir: 包含YAML文件的目录
41
42
  """
42
43
  self.project_dir = project_dir
44
+ self.action_manager = ActionYmlFileManager(project_dir)
43
45
  self.actions_dir = os.path.join(project_dir, "actions")
44
46
  self.llm = llm
45
47
  self.file_size_limit = file_size_limit
@@ -152,23 +154,15 @@ class AutoFileGroup:
152
154
  commit_diff = ""
153
155
  if not self.skip_diff:
154
156
  # 计算文件的MD5用于匹配commit
155
- file_md5 = hashlib.md5(open(yaml_path, 'rb').read()).hexdigest()
156
- response_id = f"auto_coder_{yaml_file}_{file_md5}"
157
+ commit_id = self.action_manager.get_commit_id_from_file(yaml_file)
158
+ commit = repo.commit(commit_id)
157
159
  # 查找对应的commit
158
- try:
159
- for commit in repo.iter_commits():
160
- if response_id in commit.message:
161
- if commit.parents:
162
- parent = commit.parents[0]
163
- commit_diff = repo.git.diff(
164
- parent.hexsha, commit.hexsha)
165
- else:
166
- commit_diff = repo.git.show(commit.hexsha)
167
- break
168
- except git.exc.GitCommandError as e:
169
- logger.error(f"Git命令执行错误: {str(e)}")
170
- except Exception as e:
171
- logger.error(f"获取commit diff时出错: {str(e)}")
160
+ if commit and commit.parents:
161
+ parent = commit.parents[0]
162
+ commit_diff = repo.git.diff(
163
+ parent.hexsha, commit.hexsha)
164
+ else:
165
+ commit_diff = repo.git.show(commit.hexsha)
172
166
 
173
167
  querie_with_urls_and_diffs.append((query, urls, commit_diff))
174
168
 
@@ -121,40 +121,30 @@ class AutoLearnFromCommit:
121
121
  if not self.skip_diff:
122
122
  # 使用 ActionManager 获取 commit ID
123
123
  commit_id = self.action_manager.get_commit_id_from_file(action_file)
124
- if commit_id:
125
- try:
126
- for commit in repo.iter_commits():
127
- if commit_id in commit.message:
128
- if commit.parents:
129
- parent = commit.parents[0]
130
- # 获取所有文件的前后内容
131
- for diff_item in parent.diff(commit):
132
- file_path = diff_item.a_path if diff_item.a_path else diff_item.b_path
133
-
134
- # 获取变更前内容
135
- before_content = None
136
- try:
137
- if diff_item.a_blob:
138
- before_content = repo.git.show(f"{parent.hexsha}:{file_path}")
139
- except git.exc.GitCommandError:
140
- pass # 文件可能是新增的
124
+ commit = repo.commit(commit_id)
125
+ if commit and commit.parents:
126
+ parent = commit.parents[0]
127
+ # 获取所有文件的前后内容
128
+ for diff_item in parent.diff(commit):
129
+ file_path = diff_item.a_path if diff_item.a_path else diff_item.b_path
130
+
131
+ # 获取变更前内容
132
+ before_content = None
133
+ try:
134
+ if diff_item.a_blob:
135
+ before_content = repo.git.show(f"{parent.hexsha}:{file_path}")
136
+ except git.exc.GitCommandError:
137
+ pass # 文件可能是新增的
141
138
 
142
- # 获取变更后内容
143
- after_content = None
144
- try:
145
- if diff_item.b_blob:
146
- after_content = repo.git.show(f"{commit.hexsha}:{file_path}")
147
- except git.exc.GitCommandError:
148
- pass # 文件可能被删除
139
+ # 获取变更后内容
140
+ after_content = None
141
+ try:
142
+ if diff_item.b_blob:
143
+ after_content = repo.git.show(f"{commit.hexsha}:{file_path}")
144
+ except git.exc.GitCommandError:
145
+ pass # 文件可能被删除
149
146
 
150
- changes[file_path] = (before_content, after_content)
151
- break
152
- except git.exc.GitCommandError as e:
153
- printer = Printer()
154
- printer.print_in_terminal("git_command_error", style="red", error=str(e))
155
- except Exception as e:
156
- printer = Printer()
157
- printer.print_in_terminal("get_commit_changes_error", style="red", error=str(e))
147
+ changes[file_path] = (before_content, after_content)
158
148
 
159
149
  querie_with_urls_and_changes.append((query, urls, changes))
160
150
 
@@ -9,6 +9,7 @@ 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
11
  import hashlib
12
+ from autocoder.common.action_yml_file_manager import ActionYmlFileManager
12
13
 
13
14
 
14
15
  def load_yaml_config(yaml_file: str) -> Dict:
@@ -41,6 +42,7 @@ class AutoReviewCommit:
41
42
  self.llm = llm
42
43
  self.skip_diff = skip_diff
43
44
  self.console = console or Console()
45
+ self.action_yml_manager = ActionYmlFileManager(source_dir=args.source_dir)
44
46
 
45
47
  @byzerllm.prompt()
46
48
  def review(self, querie_with_urls_and_changes: List[Tuple[str, List[str], Dict[str, Tuple[str, str]]]], query: str) -> Generator[str,None,None]:
@@ -141,66 +143,16 @@ class AutoReviewCommit:
141
143
  action_files = sorted(action_files, key=get_seq)
142
144
  action_files.reverse()
143
145
 
146
+ if not action_files:
147
+ return []
148
+
144
149
  action_file = action_files[0]
145
-
146
150
  querie_with_urls_and_changes = []
147
- repo = git.Repo(self.project_dir)
148
-
149
- # 收集所有query、urls和对应的文件变化
150
- for yaml_file in [action_file]:
151
- yaml_path = os.path.join(self.actions_dir, yaml_file)
152
- config = load_yaml_config(yaml_path)
153
151
 
154
- if not config:
155
- continue
156
-
157
- query = config.get('query', '')
158
- urls = config.get('urls', [])
159
-
160
- if query:
161
- changes = {}
162
- if not self.skip_diff:
163
- # 计算文件的MD5用于匹配commit
164
- with open(yaml_path, 'r', encoding='utf-8') as f:
165
- yaml_content = f.read()
166
- file_md5 = hashlib.md5(yaml_content.encode("utf-8")).hexdigest()
167
- response_id = f"auto_coder_{yaml_file}_{file_md5}"
168
- # 查找对应的commit
169
- try:
170
- for commit in repo.iter_commits():
171
- if response_id in commit.message:
172
- if commit.parents:
173
- parent = commit.parents[0]
174
- # 获取所有文件的前后内容
175
- for diff_item in parent.diff(commit):
176
- file_path = diff_item.a_path if diff_item.a_path else diff_item.b_path
177
-
178
- # 获取变更前内容
179
- before_content = None
180
- try:
181
- if diff_item.a_blob:
182
- before_content = repo.git.show(f"{parent.hexsha}:{file_path}")
183
- except git.exc.GitCommandError:
184
- pass # 文件可能是新增的
185
-
186
- # 获取变更后内容
187
- after_content = None
188
- try:
189
- if diff_item.b_blob:
190
- after_content = repo.git.show(f"{commit.hexsha}:{file_path}")
191
- except git.exc.GitCommandError:
192
- pass # 文件可能被删除
193
-
194
- changes[file_path] = (before_content, after_content)
195
- break
196
- except git.exc.GitCommandError as e:
197
- printer = Printer()
198
- printer.print_in_terminal("git_command_error", style="red", error=str(e))
199
- except Exception as e:
200
- printer = Printer()
201
- printer.print_in_terminal("get_commit_changes_error", style="red", error=str(e))
202
-
203
- querie_with_urls_and_changes.append((query, urls, changes))
152
+ # 使用ActionYmlFileManager获取提交变更
153
+ changes = self.action_yml_manager.get_commit_changes(action_file)
154
+ if changes:
155
+ querie_with_urls_and_changes = changes
204
156
 
205
157
  return querie_with_urls_and_changes
206
158
 
@@ -289,14 +241,11 @@ class AutoReviewCommit:
289
241
  printer = Printer()
290
242
  commit_file_name = None
291
243
  if commit_id:
244
+ # 利用ActionYmlFileManager获取文件名
292
245
  repo = git.Repo(self.project_dir)
293
246
  commit = repo.commit(commit_id)
294
- # auto_coder_000000001926_chat_action.yml_88614d5bd4046a068786c252fbc39c13
295
- msg = commit.message
296
- commit_file_info = msg.split("_")[0]
297
- if commit_file_info.startswith("auto_coder_"):
298
- commit_file_name = "_".join(msg.split("_",)[0:-1])
299
-
247
+ commit_file_name = self.action_yml_manager.get_file_name_from_commit_msg(commit.message)
248
+
300
249
  if not commit_file_name:
301
250
  raise ValueError(printer.get_message_from_key_with_format("no_commit_file_name",commit_id=commit_id))
302
251
 
@@ -27,7 +27,6 @@ from autocoder.utils.rest import HttpDoc
27
27
  from byzerllm.apps.byzer_storage.env import get_latest_byzer_retrieval_lib
28
28
  from autocoder.command_args import parse_args
29
29
  from autocoder.rag.api_server import serve, ServerArgs
30
- from autocoder.utils import open_yaml_file_in_editor, get_last_yaml_file
31
30
  from autocoder.utils.request_queue import (
32
31
  request_queue,
33
32
  RequestValue,
@@ -120,12 +119,10 @@ def main(input_args: Optional[List[str]] = None):
120
119
  # args.request_id = str(uuid.uuid4())
121
120
 
122
121
  if raw_args.command == "revert":
123
- repo_path = args.source_dir
124
-
125
122
  file_name = os.path.basename(args.file)
126
- revert_result = git_utils.revert_changes(
127
- repo_path, f"auto_coder_{file_name}"
128
- )
123
+ action_file_manager = ActionYmlFileManager(source_dir=args.source_dir)
124
+ revert_result = action_file_manager.revert_file(file_name)
125
+
129
126
  if revert_result:
130
127
  print(f"Successfully reverted changes for {args.file}")
131
128
  else:
@@ -17,6 +17,7 @@ from contextlib import contextmanager
17
17
  from typing import List, Dict, Any, Optional
18
18
  from autocoder.common import AutoCoderArgs
19
19
  from pydantic import BaseModel
20
+ from autocoder.common.action_yml_file_manager import ActionYmlFileManager
20
21
  from autocoder.common.result_manager import ResultManager
21
22
  from autocoder.version import __version__
22
23
  from autocoder.auto_coder import main as auto_coder_main
@@ -695,9 +696,7 @@ def revert():
695
696
 
696
697
  if "Successfully reverted changes" in s:
697
698
  result_manager.append(content=s, meta={"action": "revert","success":False, "input":{
698
- }})
699
-
700
- os.remove(file_path)
699
+ }})
701
700
  else:
702
701
  result_manager.append(content=s, meta={"action": "revert","success":False, "input":{
703
702
  }})
@@ -1428,12 +1427,33 @@ def commit(query: str):
1428
1427
  with open(os.path.join(execute_file), "w",encoding="utf-8") as f:
1429
1428
  f.write(yaml_content)
1430
1429
 
1431
- file_content = open(execute_file).read()
1432
- md5 = hashlib.md5(file_content.encode("utf-8")).hexdigest()
1430
+ args.file = execute_file
1431
+
1433
1432
  file_name = os.path.basename(execute_file)
1434
1433
  commit_result = git_utils.commit_changes(
1435
1434
  ".", f"{commit_message}\nauto_coder_{file_name}"
1436
1435
  )
1436
+
1437
+ printer = Printer()
1438
+
1439
+ action_yml_file_manager = ActionYmlFileManager(args.source_dir)
1440
+ action_file_name = os.path.basename(args.file)
1441
+ add_updated_urls = []
1442
+ commit_result.changed_files
1443
+ for file in commit_result.changed_files:
1444
+ add_updated_urls.append(os.path.join(args.source_dir, file))
1445
+
1446
+ args.add_updated_urls = add_updated_urls
1447
+ update_yaml_success = action_yml_file_manager.update_yaml_field(action_file_name, "add_updated_urls", add_updated_urls)
1448
+ if not update_yaml_success:
1449
+ printer.print_in_terminal("yaml_save_error", style="red", yaml_file=action_file_name)
1450
+
1451
+ if args.enable_active_context:
1452
+ active_context_manager = ActiveContextManager(llm, args.source_dir)
1453
+ task_id = active_context_manager.process_changes(args)
1454
+ printer.print_in_terminal("active_context_background_task",
1455
+ style="blue",
1456
+ task_id=task_id)
1437
1457
  git_utils.print_commit_info(commit_result=commit_result)
1438
1458
  if commit_message:
1439
1459
  printer.print_in_terminal("commit_message", style="green", model_name=target_model, message=commit_message)
@@ -1800,17 +1820,29 @@ def active_context(query: str):
1800
1820
  if len(commands_infos) > 0:
1801
1821
  if "list" in commands_infos:
1802
1822
  command = "list"
1823
+ if "run" in commands_infos:
1824
+ command = "run"
1803
1825
 
1804
1826
  args = get_final_config()
1827
+ printer = Printer()
1805
1828
  # 获取LLM实例
1806
1829
  llm = get_single_llm(args.model,product_mode=args.product_mode)
1830
+ action_file_manager = ActionYmlFileManager(args.source_dir)
1807
1831
 
1808
1832
  # 获取配置和参数
1809
1833
 
1810
1834
 
1811
- # 获取ActiveContextManager单例
1812
- active_context_manager = ActiveContextManager(llm, args)
1813
-
1835
+ active_context_manager = ActiveContextManager(llm, args.source_dir)
1836
+ if command == "run":
1837
+ file_name = commands_infos["run"]["args"][-1]
1838
+ args.file = action_file_manager.get_full_path_by_file_name(file_name)
1839
+ ## 因为更新了args.file
1840
+ active_context_manager = ActiveContextManager(llm, args.source_dir)
1841
+ task_id = active_context_manager.process_changes(args)
1842
+ printer.print_in_terminal("active_context_background_task",
1843
+ style="blue",
1844
+ task_id=task_id)
1845
+
1814
1846
  # 处理不同的命令
1815
1847
  if command == "list":
1816
1848
  # 获取所有任务
@@ -213,6 +213,8 @@ class CommandAutoTuner:
213
213
  @byzerllm.prompt()
214
214
  def _analyze(self, request: AutoCommandRequest) -> str:
215
215
  """
216
+ 你是 auto-coder.chat 软件,帮助用户完成编程方面的需求。我们的目标是根据用户输入和当前上下文,组合多个函数来完成用户的需求。
217
+
216
218
  ## 当前用户环境信息如下:
217
219
  <os_info>
218
220
  操作系统: {{ env_info.os_name }} {{ env_info.os_version }}
@@ -234,10 +236,11 @@ class CommandAutoTuner:
234
236
  {%- endif %}
235
237
  </os_info>
236
238
 
237
- 我们的目标是根据用户输入和当前上下文,组合多个函数来完成用户的需求。
238
-
239
+ 当前项目根目录:
240
+ {{ current_project }}
241
+
239
242
  {% if current_files %}
240
- ## 当前活跃区文件列表:
243
+ ## 当前用户手动添加关注的文件列表:
241
244
  <current_files>
242
245
  {% for file in current_files %}
243
246
  - {{ file }}
@@ -246,7 +249,7 @@ class CommandAutoTuner:
246
249
  {% endif %}
247
250
 
248
251
 
249
- ## 当前用户的配置选项如下:
252
+ ## 这是用户对你的配置
250
253
  <current_conf>
251
254
  {{ current_conf }}
252
255
  </current_conf>
@@ -260,6 +263,24 @@ class CommandAutoTuner:
260
263
  ## 函数组合说明:
261
264
  {{ command_combination_readme }}
262
265
 
266
+ ## active-context 项目追踪文档系统
267
+
268
+ 在 {{ current_project }}/.auto-coder/active-context 下,我们提供了对该项目每个文件目录的追踪。
269
+ 具体逻辑为:假设我们在当前项目有 ./src/package1/py1.py, 那么相应的在 .auto-coder/active-context 会有一个 ./src/package1 目录,
270
+ 该目录下可能会有一个 active-context.md 文件,该文件记录了该目录下所有文件相关信息,可以帮你更好的理解这个目录下的文档,你可以通过 read_files 函数来读取
271
+ 这个文件。注意,这个文件不一定存在。如果读取失败也是正常的。
272
+
273
+ ## 变更记录文档系统
274
+
275
+ 在 {{ current_project }}/actions 目录下,会有格式类似 000000001201_chat_action.yml 的文件,该文件记录了最近10次对话,
276
+ 你可以通过 read_files 函数来读取这些文件,从而更好的理解用户的需求。
277
+
278
+ 下面是一些字段的简单介绍
279
+ - query: 用户需求
280
+ - urls: 用户提供的上下文文件列表
281
+ - dynamic_urls: auto-coder.chat 自动感知的一些文件列表
282
+ - add_updated_urls: 这次需求发生变更的文件列表
283
+
263
284
  {% if conversation_history %}
264
285
  ## 历史对话:
265
286
  <conversation_history>
@@ -314,7 +335,8 @@ class CommandAutoTuner:
314
335
  "conversation_safe_zone_tokens": self.args.conversation_prune_safe_zone_tokens,
315
336
  "os_distribution": shells.get_os_distribution(),
316
337
  "current_user": shells.get_current_username(),
317
- "command_combination_readme": self._command_combination_readme.prompt()
338
+ "command_combination_readme": self._command_combination_readme.prompt(),
339
+ "current_project": os.path.abspath(self.args.source_dir)
318
340
  }
319
341
 
320
342
  @byzerllm.prompt()
@@ -337,8 +359,10 @@ class CommandAutoTuner:
337
359
  尽可通过了解项目后,多用 @文件和@@符号,这样 chat 函数可以更清晰的理解你关注的代码,文档和意图。
338
360
 
339
361
  ### 调用 coding 函数应该注意的事项
340
- 调用 coding 函数的时候,尽可能多的 @文件和@@符号,让需求更加清晰明了,建议多描述具体怎么完成对应的需求。
341
- 对于代码需求设计,尽可能使用 chat 函数。如果成功执行了 coding 函数, 最好再调用一次 chat("/review /commit"),方便总结这次代码变更。
362
+ 调用 coding 函数的之前,你需要尽可能先了解用户需求,了解项目状态,包括读取 active_context 文件来了解项目。
363
+ 然后清晰的描述自己的需求,完整的实现步骤,以及尽可能对@文件和@@符号需要参考以及修改的文件和符号。
364
+ 对于比较复杂的需求,你还可以使用 chat 函数来进行讨论,从而获取一些有用的信息。
365
+ 如果成功执行了 coding 函数, 最好再调用一次 chat("/review /commit"),方便总结这次代码变更。
342
366
  注意,review 完后,需要询问用户是否要做啥调整不,如果用户说不用,那么就停止。否则根据意图进行后续操作。
343
367
 
344
368
  ### 关于对话大小的问题
@@ -416,6 +416,8 @@ class AutoCoderArgs(pydantic.BaseModel):
416
416
 
417
417
  generate_max_rounds: Optional[int] = 5
418
418
 
419
+ revert_commit_id: Optional[str] = None
420
+
419
421
  class Config:
420
422
  protected_namespaces = ()
421
423