auto-coder 0.1.306__tar.gz → 0.1.308__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.
- {auto_coder-0.1.306 → auto_coder-0.1.308}/PKG-INFO +1 -1
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/auto_coder.egg-info/PKG-INFO +1 -1
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/agent/auto_demand_organizer.py +13 -20
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/agent/auto_filegroup.py +10 -16
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/agent/auto_learn_from_commit.py +22 -32
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/agent/auto_review_commit.py +12 -63
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/auto_coder.py +3 -6
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/auto_coder_runner.py +40 -8
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/commands/auto_command.py +31 -7
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/commands/tools.py +1 -1
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/__init__.py +2 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/action_yml_file_manager.py +75 -37
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/code_auto_generate.py +2 -2
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/code_auto_generate_diff.py +2 -2
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/code_auto_generate_editblock.py +2 -2
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/code_auto_generate_strict_diff.py +2 -2
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/code_auto_merge.py +2 -2
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/code_auto_merge_diff.py +2 -2
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/code_auto_merge_editblock.py +2 -2
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/code_auto_merge_strict_diff.py +2 -2
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/code_modification_ranker.py +5 -1
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/git_utils.py +73 -56
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/stream_out_type.py +3 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/memory/active_context_manager.py +16 -16
- auto_coder-0.1.308/src/autocoder/version.py +1 -0
- auto_coder-0.1.306/src/autocoder/version.py +0 -1
- {auto_coder-0.1.306 → auto_coder-0.1.308}/LICENSE +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/README.md +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/setup.cfg +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/setup.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/auto_coder.egg-info/SOURCES.txt +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/auto_coder.egg-info/dependency_links.txt +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/auto_coder.egg-info/entry_points.txt +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/auto_coder.egg-info/requires.txt +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/auto_coder.egg-info/top_level.txt +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/agent/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/agent/auto_guess_query.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/agent/auto_tool.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/agent/coder.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/agent/designer.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/agent/planner.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/agent/project_reader.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/auto_coder_rag.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/auto_coder_server.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/benchmark.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/chat/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/chat_auto_coder.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/chat_auto_coder_lang.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/command_args.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/command_parser.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/commands/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/commands/auto_web.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/JupyterClient.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/ShellClient.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/anything2images.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/anything2img.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/audio.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/auto_coder_lang.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/auto_configure.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/buildin_tokenizer.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/chunk_validation.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/cleaner.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/code_auto_execute.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/command_completer.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/command_generator.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/command_templates.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/computer_use.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/conf_import_export.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/conf_validator.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/const.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/context_pruner.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/conversation_pruner.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/files.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/global_cancel.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/image_to_page.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/index_import_export.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/interpreter.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/llm_rerank.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/mcp_hub.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/mcp_server.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/mcp_servers/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/mcp_servers/mcp_server_gpt4o_mini_search.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/mcp_tools.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/memory_manager.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/model_speed_test.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/printer.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/recall_validation.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/result_manager.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/screenshots.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/search.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/search_replace.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/shells.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/stats_panel.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/sys_prompt.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/text.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/types.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/common/utils_code_auto_generate.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/data/byzerllm.md +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/data/tokenizer.json +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/db/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/db/store.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/dispacher/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/dispacher/actions/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/dispacher/actions/action.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/dispacher/actions/copilot.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/events/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/events/event_content.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/events/event_manager.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/events/event_manager_singleton.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/events/event_store.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/events/event_types.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/index/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/index/entry.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/index/filter/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/index/filter/normal_filter.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/index/filter/quick_filter.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/index/for_command.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/index/index.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/index/symbols_utils.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/index/types.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/lang.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/memory/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/memory/active_package.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/memory/async_processor.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/memory/directory_mapper.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/models.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/plugins/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/plugins/dynamic_completion_example.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/plugins/git_helper_plugin.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/plugins/sample_plugin.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/plugins/token_helper_plugin.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/plugins/utils.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/privacy/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/privacy/model_filter.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/pyproject/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/api_server.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/cache/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/cache/base_cache.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/cache/cache_result_merge.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/cache/local_byzer_storage_cache.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/cache/local_duckdb_storage_cache.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/cache/rag_file_meta.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/cache/simple_cache.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/conversation_to_queries.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/doc_filter.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/document_retriever.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/lang.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/llm_wrapper.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/loaders/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/loaders/docx_loader.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/loaders/excel_loader.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/long_context_rag.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/qa_conversation_strategy.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/rag_config.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/rag_entry.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/raw_rag.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/relevant_utils.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/searchable.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/simple_directory_reader.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/simple_rag.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/stream_event/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/stream_event/event_writer.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/stream_event/types.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/token_checker.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/token_counter.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/token_limiter.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/token_limiter_utils.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/types.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/utils.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/rag/variable_holder.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/regexproject/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/run_context.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/suffixproject/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/tsproject/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/_markitdown.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/auto_project_type.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/conversation_store.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/llm_client_interceptors.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/llms.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/log_capture.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/model_provider_selector.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/multi_turn.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/operate_config_api.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/print_table.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/project_structure.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/queue_communicate.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/request_event_queue.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/request_queue.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/rest.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/stream_thinking.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/tests.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/thread_utils.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/src/autocoder/utils/types.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/tests/test_action_regex_project.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/tests/test_action_yml_file_manager.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/tests/test_chat_auto_coder.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/tests/test_code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/tests/test_command_completer.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/tests/test_planner.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/tests/test_plugins.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/tests/test_privacy.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/tests/test_queue_communicate.py +0 -0
- {auto_coder-0.1.306 → auto_coder-0.1.308}/tests/test_symbols_utils.py +0 -0
|
@@ -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
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
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
|
-
|
|
156
|
-
|
|
157
|
+
commit_id = self.action_manager.get_commit_id_from_file(yaml_file)
|
|
158
|
+
commit = repo.commit(commit_id)
|
|
157
159
|
# 查找对应的commit
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
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
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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
|
-
|
|
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
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
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
|
-
|
|
295
|
-
|
|
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
|
-
|
|
127
|
-
|
|
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
|
-
|
|
1432
|
-
|
|
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
|
-
|
|
1812
|
-
|
|
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
|
-
|
|
362
|
+
调用 coding 函数的之前,你需要尽可能先了解用户需求,了解项目状态,包括读取 active_context 文件来了解项目。
|
|
363
|
+
然后清晰的描述自己的需求,完整的实现步骤,以及尽可能对@文件和@@符号需要参考以及修改的文件和符号。
|
|
364
|
+
对于比较复杂的需求,你还可以使用 chat 函数来进行讨论,从而获取一些有用的信息。
|
|
365
|
+
如果成功执行了 coding 函数, 最好再调用一次 chat("/review /commit"),方便总结这次代码变更。
|
|
342
366
|
注意,review 完后,需要询问用户是否要做啥调整不,如果用户说不用,那么就停止。否则根据意图进行后续操作。
|
|
343
367
|
|
|
344
368
|
### 关于对话大小的问题
|