Open Source DeepWiki: AI-Powered Wiki Generator for GitHub/Gitlab/Bitbucket Repositories. Join the discord: https://discord.gg/gMwThUMeme
This report presents the forensic synthetic code analysis of AsyncFuncAI/deepwiki-open, a Python project with 17,290 GitHub stars. SynthScan v2.0 examined 35,342 lines of code across 102 source files, recording 393 pattern matches distributed across 18 syntactic categories. The overall adjusted score of 15.4 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 393 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | test/test_extract_repo_name.py | 90 | except Exception as e: | CODE |
| LOW | tests/run_tests.py | 37 | except Exception as e: | CODE |
| LOW⚡ | tests/unit/test_all_embedders.py | 281 | except Exception as e: | CODE |
| LOW⚡ | tests/unit/test_all_embedders.py | 291 | except Exception as e: | CODE |
| LOW⚡ | tests/unit/test_all_embedders.py | 308 | except Exception as e: | CODE |
| LOW⚡ | tests/unit/test_all_embedders.py | 320 | except Exception as e: | CODE |
| LOW | tests/unit/test_all_embedders.py | 45 | except Exception as e: | CODE |
| LOW | tests/unit/test_all_embedders.py | 173 | except Exception as e: | CODE |
| LOW | tests/unit/test_all_embedders.py | 188 | except Exception as e: | CODE |
| LOW | tests/unit/test_all_embedders.py | 389 | except Exception as e: | CODE |
| LOW | tests/unit/test_all_embedders.py | 413 | except Exception as e: | CODE |
| LOW | tests/unit/test_google_embedder.py | 70 | except Exception as e: | CODE |
| LOW | tests/unit/test_google_embedder.py | 105 | except Exception as e: | CODE |
| LOW | tests/unit/test_google_embedder.py | 152 | except Exception as e: | CODE |
| LOW⚡ | tests/integration/test_full_integration.py | 38 | except Exception as e: | CODE |
| LOW | tests/integration/test_full_integration.py | 67 | except Exception as e: | CODE |
| LOW | tests/integration/test_full_integration.py | 103 | except Exception as e: | CODE |
| LOW | tests/integration/test_full_integration.py | 137 | except Exception as e: | CODE |
| MEDIUM⚡ | tests/api/test_api.py | 42 | print(f"Error: {response.status_code}") | CODE |
| MEDIUM⚡ | tests/api/test_api.py | 45 | print(f"Error details: {error_data.get('detail', 'Unknown error')}") | CODE |
| MEDIUM⚡ | tests/api/test_api.py | 47 | print(f"Error content: {response.content}") | CODE |
| LOW⚡ | tests/api/test_api.py | 57 | except Exception as e: | CODE |
| MEDIUM⚡ | tests/api/test_api.py | 58 | print(f"Error: {str(e)}") | CODE |
| LOW⚡ | api/bedrock_client.py | 149 | except Exception as e: | CODE |
| LOW | api/bedrock_client.py | 295 | except Exception as e: | CODE |
| LOW | api/bedrock_client.py | 364 | except Exception as e: | CODE |
| LOW | api/dashscope_client.py | 86 | except Exception as e: | CODE |
| LOW | api/dashscope_client.py | 226 | except Exception as e: | CODE |
| LOW | api/dashscope_client.py | 267 | except Exception as e: | CODE |
| LOW | api/dashscope_client.py | 300 | except Exception as e: | CODE |
| LOW | api/dashscope_client.py | 481 | except Exception as e: | CODE |
| LOW | api/dashscope_client.py | 524 | except Exception as e: | CODE |
| LOW | api/dashscope_client.py | 607 | except Exception as e: | CODE |
| LOW | api/dashscope_client.py | 770 | except Exception as e: | CODE |
| LOW | api/dashscope_client.py | 803 | except Exception as e: | CODE |
| LOW | api/dashscope_client.py | 822 | except Exception as e: | CODE |
| LOW | api/dashscope_client.py | 702 | except Exception as e: | STRING |
| LOW | api/dashscope_client.py | 724 | except Exception as e: | STRING |
| LOW | api/config.py | 124 | except Exception as e: | CODE |
| MEDIUM | api/config.py | 105 | def load_json_config(filename): | CODE |
| LOW | api/data_pipeline.py | 66 | except Exception as e: | CODE |
| LOW | api/data_pipeline.py | 155 | except Exception as e: | CODE |
| LOW | api/data_pipeline.py | 350 | except Exception as e: | CODE |
| LOW | api/data_pipeline.py | 384 | except Exception as e: | CODE |
| LOW | api/data_pipeline.py | 534 | except Exception as e: | CODE |
| LOW | api/data_pipeline.py | 588 | except Exception as e: | CODE |
| LOW | api/data_pipeline.py | 616 | except Exception as e: | CODE |
| LOW | api/data_pipeline.py | 659 | except Exception as e: | CODE |
| LOW | api/data_pipeline.py | 691 | except Exception as e: | CODE |
| LOW | api/data_pipeline.py | 835 | except Exception as e: | CODE |
| LOW | api/data_pipeline.py | 869 | except Exception: | CODE |
| LOW | api/data_pipeline.py | 901 | except Exception as e: | CODE |
| LOW⚡ | api/openrouter_client.py | 341 | except Exception as e: | CODE |
| LOW⚡ | api/openrouter_client.py | 452 | except Exception as e_chunk: | CODE |
| LOW⚡ | api/openrouter_client.py | 455 | except Exception as e_stream: | CODE |
| LOW | api/openrouter_client.py | 222 | except Exception as xml_parse_error: | CODE |
| LOW | api/openrouter_client.py | 299 | except Exception as rebuild_error: | CODE |
| LOW | api/openrouter_client.py | 309 | except Exception as xml_error: | CODE |
| LOW | api/openrouter_client.py | 391 | except Exception as e_proc: | CODE |
| LOW | api/openrouter_client.py | 520 | except Exception as e_chunk: | CODE |
| 72 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | README.fr.md | 169 | │ ├── rag.py # Génération Augmentée par Récupération (RAG) | CODE |
| MEDIUM | Ollama-instruction.md | 160 | "model": "nomic-embed-text" # Change this to another embedding model | CODE |
| MEDIUM | README.vi.md | 152 | │ ├── rag.py # Retrieval Augmented Generation (RAG) | CODE |
| MEDIUM | README.ru.md | 168 | │ ├── rag.py # RAG: генерация с дополнением | CODE |
| MEDIUM | api/data_pipeline.py | 62 | # Use OpenAI embedding model encoding | COMMENT |
| MEDIUM⚡ | api/simple_chat.py | 193 | # If filePath exists, modify the query for RAG to focus on the file | COMMENT |
| MEDIUM⚡ | api/simple_chat.py | 200 | # Try to perform RAG retrieval | COMMENT |
| MEDIUM⚡ | api/simple_chat.py | 202 | # This will use the actual RAG implementation | COMMENT |
| MEDIUM⚡ | api/simple_chat.py | 234 | # Continue without RAG if there's an error | COMMENT |
| MEDIUM | api/simple_chat.py | 91 | # Create a new RAG instance for this request | COMMENT |
| MEDIUM | api/simple_chat.py | 324 | # Add a note that we're skipping RAG due to size constraints or because it's the isolated API | COMMENT |
| MEDIUM | api/prompts.py | 3 | # System prompt for RAG | COMMENT |
| MEDIUM | api/prompts.py | 30 | # Template for RAG | STRING |
| MEDIUM | api/README.md | 127 | ### 2. Smart Retrieval (RAG) | COMMENT |
| MEDIUM⚡ | api/websocket_wiki.py | 200 | # If filePath exists, modify the query for RAG to focus on the file | COMMENT |
| MEDIUM⚡ | api/websocket_wiki.py | 207 | # Try to perform RAG retrieval | COMMENT |
| MEDIUM⚡ | api/websocket_wiki.py | 209 | # This will use the actual RAG implementation | COMMENT |
| MEDIUM⚡ | api/websocket_wiki.py | 241 | # Continue without RAG if there's an error | COMMENT |
| MEDIUM | api/websocket_wiki.py | 88 | # Create a new RAG instance for this request | COMMENT |
| MEDIUM | api/websocket_wiki.py | 436 | # Add a note that we're skipping RAG due to size constraints or because it's the isolated API | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/integration/test_full_integration.py | 20 | # Check if Google embedder config exists | COMMENT |
| LOW⚡ | tests/integration/test_full_integration.py | 29 | # Check if GoogleEmbedderClient is in CLIENT_CLASSES | COMMENT |
| LOW⚡ | tests/api/test_api.py | 40 | # Check if the request was successful | COMMENT |
| LOW | api/bedrock_client.py | 308 | # Check if client is initialized | COMMENT |
| LOW | api/dashscope_client.py | 207 | # Check if it's a ChatCompletion object (non-streaming response) | COMMENT |
| LOW | api/config.py | 197 | # Check if model_client is OllamaClient | COMMENT |
| LOW | api/config.py | 217 | # Check if model_client is GoogleEmbedderClient | COMMENT |
| LOW | api/data_pipeline.py | 86 | # Check if Git is installed | COMMENT |
| LOW | api/data_pipeline.py | 95 | # Check if repository already exists | COMMENT |
| LOW | api/data_pipeline.py | 266 | # Check if file is in an included directory | COMMENT |
| LOW | api/data_pipeline.py | 274 | # Check if file matches included file patterns | COMMENT |
| LOW | api/data_pipeline.py | 296 | # Check if file is in an excluded directory | COMMENT |
| LOW | api/data_pipeline.py | 303 | # Check if file matches excluded file patterns | COMMENT |
| LOW | api/data_pipeline.py | 316 | # Check if file should be processed based on inclusion/exclusion rules | COMMENT |
| LOW | api/data_pipeline.py | 357 | # Check if file should be processed based on inclusion/exclusion rules | COMMENT |
| LOW | api/data_pipeline.py | 483 | # Check if it's a GitHub-like URL structure | COMMENT |
| LOW | api/data_pipeline.py | 518 | # Check if we got an error response | COMMENT |
| LOW | api/data_pipeline.py | 814 | # Check if the repository directory already exists and is not empty | COMMENT |
| LOW⚡ | api/openrouter_client.py | 176 | # Check if the content is XML and ensure it's properly formatted | COMMENT |
| LOW⚡ | api/openrouter_client.py | 183 | # Check if it's a wiki_structure XML | COMMENT |
| LOW | api/openrouter_client.py | 117 | # Check if API key is set | COMMENT |
| LOW⚡ | api/simple_chat.py | 313 | # Check if filePath is provided and fetch file content if it exists | COMMENT |
| LOW | api/simple_chat.py | 80 | # Check if request contains very large input | COMMENT |
| LOW | api/simple_chat.py | 151 | # Check if this is a Deep Research request | COMMENT |
| LOW | api/simple_chat.py | 169 | # Check if this is a continuation request | COMMENT |
| LOW | api/simple_chat.py | 254 | # Check if this is the first iteration | COMMENT |
| LOW | api/simple_chat.py | 257 | # Check if this is the final iteration | COMMENT |
| LOW | api/simple_chat.py | 354 | # Check if OpenRouter API key is set | COMMENT |
| LOW | api/simple_chat.py | 377 | # Check if an API key is set for Openai | COMMENT |
| LOW | api/simple_chat.py | 401 | # Check if AWS credentials are set | COMMENT |
| LOW | api/rag.py | 63 | # Check if dialog_turns exists and is a list | COMMENT |
| LOW | api/rag.py | 178 | # Check if Ollama model exists before proceeding | COMMENT |
| LOW⚡ | api/websocket_wiki.py | 425 | # Check if filePath is provided and fetch file content if it exists | COMMENT |
| LOW | api/websocket_wiki.py | 77 | # Check if request contains very large input | COMMENT |
| LOW | api/websocket_wiki.py | 158 | # Check if this is a Deep Research request | COMMENT |
| LOW | api/websocket_wiki.py | 176 | # Check if this is a continuation request | COMMENT |
| LOW | api/websocket_wiki.py | 261 | # Check if this is the first iteration | COMMENT |
| LOW | api/websocket_wiki.py | 264 | # Check if this is the final iteration | COMMENT |
| LOW | api/websocket_wiki.py | 466 | # Check if OpenRouter API key is set | COMMENT |
| LOW | api/websocket_wiki.py | 489 | # Check if an API key is set for Openai | COMMENT |
| LOW | api/websocket_wiki.py | 513 | # Check if an API key is set for Litellm | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/test_extract_repo_name.py | 28 | def test_extract_repo_name_github_standard_url(self): | CODE |
| LOW | test/test_extract_repo_name.py | 47 | def test_extract_repo_name_gitlab_urls(self): | CODE |
| LOW⚡ | test/test_extract_repo_name.py | 62 | def test_extract_repo_name_bitbucket_urls(self): | CODE |
| LOW⚡ | test/test_extract_repo_name.py | 70 | def test_extract_repo_name_local_paths(self): | CODE |
| LOW⚡ | test/test_extract_repo_name.py | 80 | def test_extract_repo_name_current_implementation_bug(self): | CODE |
| LOW | test/test_extract_repo_name.py | 105 | def test_extract_repo_name_edge_cases(self): | CODE |
| LOW⚡ | tests/unit/test_all_embedders.py | 272 | def test_prepare_data_pipeline(self, is_ollama=None): | CODE |
| LOW⚡ | tests/unit/test_all_embedders.py | 311 | def test_rag_embedder_type_detection(self): | CODE |
| LOW⚡ | tests/unit/test_all_embedders.py | 327 | def test_embedder_type_env_var(self, embedder_type=None): | CODE |
| LOW | tests/unit/test_all_embedders.py | 103 | def test_embedder_type_detection(self): | CODE |
| LOW | tests/unit/test_all_embedders.py | 149 | def test_get_embedder_with_explicit_type(self): | CODE |
| LOW | tests/unit/test_all_embedders.py | 176 | def test_get_embedder_with_legacy_params(self): | CODE |
| LOW | tests/unit/test_all_embedders.py | 191 | def test_get_embedder_auto_detection(self): | CODE |
| LOW | tests/unit/test_all_embedders.py | 203 | def test_google_embedder_client(self): | CODE |
| LOW | tests/unit/test_all_embedders.py | 230 | def test_openai_embedder_via_adalflow(self): | CODE |
| LOW | tests/unit/test_all_embedders.py | 340 | def _test_single_embedder_type(self, embedder_type): | CODE |
| LOW | tests/unit/test_all_embedders.py | 374 | def test_binary_assumptions_in_rag(self): | CODE |
| LOW | tests/unit/test_all_embedders.py | 392 | def test_binary_assumptions_in_data_pipeline(self): | CODE |
| LOW | tests/unit/test_google_embedder.py | 23 | def test_google_embedder_client(): | CODE |
| LOW | tests/integration/test_full_integration.py | 73 | def test_google_embedder_with_env(): | CODE |
| LOW | api/bedrock_client.py | 183 | def _format_prompt_for_provider(self, provider: str, prompt: str, messages=None) -> Dict[str, Any]: | CODE |
| LOW | api/bedrock_client.py | 442 | def convert_inputs_to_api_kwargs( | CODE |
| LOW | api/dashscope_client.py | 68 | def get_first_message_content(completion: ChatCompletion) -> str: | CODE |
| LOW | api/dashscope_client.py | 96 | def handle_streaming_response(generator: Stream[ChatCompletionChunk]): | CODE |
| LOW | api/dashscope_client.py | 305 | def convert_inputs_to_api_kwargs( | CODE |
| LOW | api/data_pipeline.py | 434 | def transform_documents_and_save_to_db( | CODE |
| LOW | api/data_pipeline.py | 619 | def get_bitbucket_file_content(repo_url: str, file_path: str, access_token: str = None) -> str: | CODE |
| LOW | api/data_pipeline.py | 770 | def _extract_repo_name_from_url(self, repo_url_or_path: str, repo_type: str) -> str: | CODE |
| LOW⚡ | api/openrouter_client.py | 346 | async def unexpected_error_generator(): | CODE |
| LOW⚡ | api/openrouter_client.py | 355 | async def model_type_error_generator(): | CODE |
| LOW⚡ | api/openrouter_client.py | 359 | def _process_completion_response(self, data: Dict) -> GeneratorOutput: | CODE |
| LOW⚡ | api/openrouter_client.py | 459 | async def _process_async_streaming_response(self, response): | CODE |
| LOW | api/openrouter_client.py | 71 | def convert_inputs_to_api_kwargs( | CODE |
| LOW | api/openrouter_client.py | 328 | async def connection_error_generator(): | CODE |
| LOW | api/openrouter_client.py | 395 | def _process_streaming_response(self, response): | CODE |
| LOW | api/ollama_patch.py | 21 | def check_ollama_model_exists(model_name: str, ollama_host: str = None) -> bool: | CODE |
| LOW | api/api.py | 36 | def get_adalflow_default_root_path(): | CODE |
| LOW⚡ | api/azureai_client.py | 75 | def get_first_message_content(completion: ChatCompletion) -> str: | CODE |
| LOW⚡ | api/azureai_client.py | 81 | # def _get_chat_completion_usage(completion: ChatCompletion) -> OpenAICompletionUsage: | COMMENT |
| LOW⚡ | api/azureai_client.py | 90 | def handle_streaming_response(generator: Stream[ChatCompletionChunk]): | CODE |
| LOW | api/azureai_client.py | 348 | def convert_inputs_to_api_kwargs( | STRING |
| LOW | api/rag.py | 251 | def _validate_and_filter_embeddings(self, documents: List) -> List: | CODE |
| LOW | api/openai_client.py | 58 | def get_first_message_content(completion: ChatCompletion) -> str: | CODE |
| LOW | api/openai_client.py | 65 | # def _get_chat_completion_usage(completion: ChatCompletion) -> OpenAICompletionUsage: | COMMENT |
| LOW | api/openai_client.py | 92 | def handle_streaming_response(generator: Stream[ChatCompletionChunk]): | CODE |
| LOW | api/openai_client.py | 270 | def convert_inputs_to_api_kwargs( | STRING |
| LOW | api/openai_client.py | 384 | def parse_image_generation_response(self, response: List[Image]) -> GeneratorOutput: | STRING |
| LOW | api/google_embedder_client.py | 161 | def convert_inputs_to_api_kwargs( | CODE |
| LOW | src/app/api/wiki/projects/route.ts | 22 | function isDeleteProjectCachePayload(obj: unknown): obj is DeleteProjectCachePayload { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/api/test_api.py | 14 | # Define the API endpoint | COMMENT |
| MEDIUM | tests/api/test_api.py | 17 | # Define the request payload | COMMENT |
| MEDIUM | api/bedrock_client.py | 116 | # Create a session with the provided credentials | COMMENT |
| MEDIUM⚡ | api/bedrock_client.py | 133 | # Create a new session with the assumed role credentials | COMMENT |
| MEDIUM⚡ | api/bedrock_client.py | 141 | # Create the Bedrock client | COMMENT |
| MEDIUM⚡ | api/openrouter_client.py | 168 | # Create a generator that yields the content | COMMENT |
| MEDIUM⚡ | api/simple_chat.py | 307 | # Create the prompt with context | COMMENT |
| MEDIUM | api/simple_chat.py | 91 | # Create a new RAG instance for this request | COMMENT |
| MEDIUM | api/simple_chat.py | 463 | # Create a streaming response | COMMENT |
| MEDIUM | api/simple_chat.py | 568 | # Create a simplified prompt without context | COMMENT |
| MEDIUM | api/api.py | 380 | # Create a dictionary with metadata and pages | COMMENT |
| MEDIUM | api/rag.py | 103 | # Create a new dialog turn using our custom implementation | COMMENT |
| MEDIUM⚡ | api/websocket_wiki.py | 419 | # Create the prompt with context | COMMENT |
| MEDIUM | api/websocket_wiki.py | 88 | # Create a new RAG instance for this request | COMMENT |
| MEDIUM | api/websocket_wiki.py | 772 | # Create a simplified prompt without context | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | api/bedrock_client.py | 183 | CODE | |
| LOW | api/bedrock_client.py | 250 | CODE | |
| LOW | api/bedrock_client.py | 304 | CODE | |
| LOW | api/bedrock_client.py | 442 | CODE | |
| LOW | api/dashscope_client.py | 197 | CODE | |
| LOW | api/dashscope_client.py | 305 | CODE | |
| LOW | api/dashscope_client.py | 391 | CODE | |
| LOW | api/dashscope_client.py | 498 | CODE | |
| LOW | api/dashscope_client.py | 748 | CODE | |
| LOW | api/dashscope_client.py | 844 | CODE | |
| LOW | api/config.py | 129 | CODE | |
| LOW | api/data_pipeline.py | 27 | CODE | |
| LOW | api/data_pipeline.py | 72 | CODE | |
| LOW | api/data_pipeline.py | 161 | CODE | |
| LOW | api/data_pipeline.py | 537 | CODE | |
| LOW | api/data_pipeline.py | 619 | CODE | |
| LOW | api/data_pipeline.py | 243 | CODE | |
| LOW | api/data_pipeline.py | 839 | CODE | |
| LOW | api/openrouter_client.py | 112 | CODE | |
| LOW | api/openrouter_client.py | 395 | CODE | |
| LOW | api/openrouter_client.py | 459 | CODE | |
| LOW | api/openrouter_client.py | 169 | CODE | |
| LOW | api/simple_chat.py | 77 | CODE | |
| LOW | api/simple_chat.py | 464 | CODE | |
| LOW | api/ollama_patch.py | 71 | CODE | |
| LOW | api/api.py | 276 | CODE | |
| LOW | api/api.py | 322 | CODE | |
| LOW | api/api.py | 578 | CODE | |
| LOW | api/azureai_client.py | 348 | CODE | |
| LOW | api/rag.py | 59 | CODE | |
| LOW | api/rag.py | 251 | CODE | |
| LOW | api/rag.py | 345 | CODE | |
| LOW | api/openai_client.py | 270 | CODE | |
| LOW | api/openai_client.py | 411 | CODE | |
| LOW | api/openai_client.py | 488 | CODE | |
| LOW | api/google_embedder_client.py | 78 | CODE | |
| LOW | api/google_embedder_client.py | 92 | CODE | |
| LOW | api/websocket_wiki.py | 65 | CODE | |
| LOW | api/tools/embedder.py | 6 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/test_extract_repo_name.py | 9 | CODE | |
| LOW | test/test_extract_repo_name.py | 12 | CODE | |
| LOW | test/test_extract_repo_name.py | 12 | CODE | |
| LOW | tests/run_tests.py | 111 | CODE | |
| LOW | tests/run_tests.py | 117 | CODE | |
| LOW | tests/run_tests.py | 123 | CODE | |
| LOW | tests/unit/test_google_embedder.py | 6 | CODE | |
| LOW | api/bedrock_client.py | 3 | CODE | |
| LOW | api/bedrock_client.py | 9 | CODE | |
| LOW | api/bedrock_client.py | 9 | CODE | |
| LOW | api/bedrock_client.py | 9 | CODE | |
| LOW | api/bedrock_client.py | 12 | CODE | |
| LOW | api/dashscope_client.py | 5 | CODE | |
| LOW | api/openrouter_client.py | 3 | CODE | |
| LOW | api/openrouter_client.py | 3 | CODE | |
| LOW | api/openrouter_client.py | 3 | CODE | |
| LOW | api/openrouter_client.py | 7 | CODE | |
| LOW | api/openrouter_client.py | 8 | CODE | |
| LOW | api/simple_chat.py | 2 | CODE | |
| LOW | api/ollama_patch.py | 1 | CODE | |
| LOW | api/api.py | 3 | CODE | |
| LOW | api/api.py | 3 | CODE | |
| LOW | api/api.py | 6 | CODE | |
| LOW | api/api.py | 10 | CODE | |
| LOW | api/rag.py | 3 | CODE | |
| LOW | api/rag.py | 5 | CODE | |
| LOW | api/main.py | 67 | CODE | |
| LOW | api/google_embedder_client.py | 6 | CODE | |
| LOW | api/google_embedder_client.py | 13 | CODE | |
| LOW | api/google_embedder_client.py | 13 | CODE | |
| LOW | api/websocket_wiki.py | 2 | CODE | |
| LOW | api/websocket_wiki.py | 3 | CODE | |
| LOW | api/websocket_wiki.py | 3 | CODE | |
| LOW | api/websocket_wiki.py | 9 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | api/data_pipeline.py | 461 | Retrieves the content of a file from a GitHub repository using the GitHub API. Supports both public GitHub (git | STRING |
| HIGH | api/data_pipeline.py | 538 | Retrieves the content of a file from a GitLab repository (cloud or self-hosted). Args: repo_url (str): | STRING |
| HIGH | api/data_pipeline.py | 696 | Retrieves the content of a file from a Git repository (GitHub or GitLab). Args: repo_type (str): Type | STRING |
| HIGH | api/openai_client.py | 539 | Encode image to base64 string. Args: image_path: Path to image file. Returns: | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Ollama-instruction.md | 9 | ## Step 1: Install Ollama | COMMENT |
| LOW | Ollama-instruction.md | 27 | ## Step 2: Download Required Models | COMMENT |
| LOW | Ollama-instruction.md | 38 | ## Step 3: Set Up DeepWiki | COMMENT |
| LOW | Ollama-instruction.md | 72 | ## Step 4: Use DeepWiki with Ollama | COMMENT |
| LOW | api/README.md | 15 | ### Step 1: Install Dependencies | COMMENT |
| LOW | api/README.md | 22 | ### Step 2: Set Up Environment Variables | COMMENT |
| LOW | api/README.md | 109 | ### Step 3: Start the API Server | COMMENT |
| LOW | src/app/[owner]/[repo]/page.tsx | 1331 | // Step 1: Get project info to determine default branch | COMMENT |
| LOW | src/app/[owner]/[repo]/page.tsx | 1353 | // Step 2: Paginate to fetch full file tree | COMMENT |
| LOW⚡ | src/app/[owner]/[repo]/page.tsx | 1378 | // Step 3: Format file paths | COMMENT |
| LOW⚡ | src/app/[owner]/[repo]/page.tsx | 1384 | // Step 4: Try to fetch README.md content | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | litellm-config.yml | 2 | # ----------------------- | COMMENT |
| MEDIUM⚡ | litellm-config.yml | 4 | # ----------------------- | COMMENT |
| MEDIUM⚡ | litellm-config.yml | 11 | # ----------------------- | COMMENT |
| MEDIUM⚡ | litellm-config.yml | 13 | # ----------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | README.zh-tw.md | 258 | OPENAI_API_KEY=your_api_key | CODE |
| HIGH | api/azureai_client.py | 144 | export AZURE_OPENAI_API_KEY="your_api_key" | CODE |
| HIGH | api/azureai_client.py | 161 | api_key="your_api_key", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/test_all_embedders.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/unit/test_google_embedder.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/config.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/data_pipeline.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/simple_chat.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/ollama_patch.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/api.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | api/azureai_client.py | 69 | __all__ = ["AzureAIClient"] | CODE |
| LOW | api/rag.py | 46 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/main.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/websocket_wiki.py | 34 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/messages/zh.json | 90 | "placeholder": "询问关于此仓库的问题...", | CODE |
| LOW | src/messages/kr.json | 90 | "placeholder": "이 저장소에 대해 질문해 보세요...", | CODE |
| LOW | src/messages/ja.json | 90 | "placeholder": "このリポジトリについて質問する...", | CODE |
| LOW | src/messages/ru.json | 99 | "placeholder": "Задайте вопрос об этом репозитории...", | CODE |
| LOW | src/messages/en.json | 99 | "placeholder": "Ask a question about this repository...", | CODE |
| LOW | src/messages/fr.json | 99 | "placeholder": "Posez une question sur ce dépôt...", | CODE |
| LOW | src/messages/pt-br.json | 99 | "placeholder": "Faça uma pergunta sobre este repositório...", | CODE |
| LOW | src/messages/zh-tw.json | 88 | "placeholder": "詢問關於此儲存庫的問題...", | CODE |
| LOW | src/messages/vi.json | 90 | "placeholder": "Đặt một câu hỏi về repository này...", | CODE |
| LOW | src/messages/es.json | 90 | "placeholder": "Haz una pregunta sobre este repositorio...", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | package-lock.json | 8459 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", | CODE |
| LOW | api/bedrock_client.py | 160 | # For now, just return the sync client | COMMENT |
| LOW | api/bedrock_client.py | 438 | # For now, just call the sync method | COMMENT |
| MEDIUM | src/components/Ask.tsx | 386 | const completionNote = "\n\n## Final Conclusion\nAfter multiple iterations of deep research, we've gathered | CODE |
| MEDIUM | src/components/Ask.tsx | 466 | const completionNote = "\n\n## Final Conclusion\nAfter multiple iterations of deep research, we've gathered sign | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/app/[owner]/[repo]/page.tsx | 1331 | // Step 1: Get project info to determine default branch | COMMENT |
| LOW | src/app/[owner]/[repo]/page.tsx | 1353 | // Step 2: Paginate to fetch full file tree | COMMENT |
| LOW⚡ | src/app/[owner]/[repo]/page.tsx | 1378 | // Step 3: Format file paths | COMMENT |
| LOW⚡ | src/app/[owner]/[repo]/page.tsx | 1384 | // Step 4: Try to fetch README.md content | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/__init__.py | 1 | # Tests for DeepWiki | COMMENT |
| LOW | tests/unit/__init__.py | 1 | # Unit tests | COMMENT |
| LOW | tests/integration/__init__.py | 1 | # Integration tests | COMMENT |
| LOW | tests/api/__init__.py | 1 | # API tests | COMMENT |
| LOW | api/azureai_client.py | 481 | # model_client=OpenAIClient(), | COMMENT |
| LOW | api/openai_client.py | 201 | raise ValueError( | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | api/dashscope_client.py | 120 | CODE | |
| LOW | api/data_pipeline.py | 730 | CODE | |
| LOW | api/azureai_client.py | 468 | CODE | |
| LOW | api/openai_client.py | 536 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | api/openai_client.py | 590 | # Example usage: | COMMENT |