A Low-Code MCP Framework for Building Complex and Innovative RAG Pipelines
This report presents the forensic synthetic code analysis of OpenBMB/UltraRAG, a Python project with 5,675 GitHub stars. SynthScan v2.0 examined 67,340 lines of code across 208 source files, recording 502 pattern matches distributed across 14 syntactic categories. The overall adjusted score of 10.5 places this repository in the Low 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).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
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 502 distinct pattern matches across 14 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 |
|---|---|---|---|---|
| HIGH | ui/backend/pipeline_manager.py | 611 | Execute multi-turn conversation generation. Args: callback: Stream callback function dy | STRING |
| HIGH | ui/backend/pipeline_manager.py | 661 | Run chat pipeline execution. Args: callback: Stream callback function dynamic_params: O | STRING |
| HIGH | ui/backend/pipeline_manager.py | 2271 | Parse arbitrary YAML text and return safe Python object. Args: yaml_content: YAML content string Retur | STRING |
| HIGH | ui/backend/pipeline_manager.py | 2327 | Save YAML text content directly to file. Args: name: Pipeline name yaml_content: YAML content strin | STRING |
| HIGH | ui/backend/pipeline_manager.py | 2363 | Rename a pipeline file. Args: old_name: Current pipeline name new_name: New pipeline name Retu | STRING |
| HIGH | ui/backend/pipeline_manager.py | 3164 | Upload multiple files to knowledge base. Args: file_objs: List of file objects to upload Returns: | STRING |
| HIGH | ui/backend/pipeline_manager.py | 3239 | Delete a knowledge base file or collection. Args: category: File category (raw, corpus, chunks, collection, | STRING |
| HIGH | ui/backend/pipeline_manager.py | 3290 | Delete a Milvus collection. Args: name: Collection name Returns: Dictionary with deletion stat | STRING |
| HIGH | ui/backend/pipeline_manager.py | 3382 | Run knowledge base pipeline tool. Args: pipeline_name: Name of the pipeline to run target_file_path | STRING |
| HIGH | servers/benchmark/src/benchmark.py | 19 | Load data from file in various formats (jsonl, json, parquet). Args: path: Path to the data file li | STRING |
| HIGH | servers/benchmark/src/benchmark.py | 114 | Load benchmark data from file with key mapping and optional shuffling. Args: benchmark: Dictionary containi | STRING |
| HIGH | servers/reranker/src/reranker.py | 158 | Rerank passages for queries using the initialized reranker backend. Args: query_list: List of query | STRING |
| HIGH | servers/corpus/src/corpus.py | 23 | Validate and sanitize file path to prevent path traversal attacks. Args: user_path: User-provided file | STRING |
| HIGH | servers/retriever/src/retriever.py | 870 | Search for passages using query embeddings. Args: query_list: List of query strings top | STRING |
| HIGH | servers/retriever/src/retriever.py | 1064 | Search using remote retriever deployment. Args: retriever_url: URL of remote retriever service | STRING |
| HIGH | servers/retriever/src/index_backends/faiss_backend.py | 180 | Search for similar passages using FAISS index. Args: query_embeddings: 2D numpy array of query embe | STRING |
| HIGH | servers/retriever/src/index_backends/milvus_backend.py | 86 | Resolve Milvus URI from config. Args: index_path: URI string from config Returns: | STRING |
| HIGH | servers/retriever/src/index_backends/milvus_backend.py | 314 | Search for similar passages using Milvus index. Args: query_embeddings: 2D numpy array of query emb | STRING |
| HIGH | servers/prompt/src/prompt.py | 21 | Validate template path to prevent path traversal. Args: template_path: Path to template file | STRING |
| HIGH | servers/prompt/src/prompt.py | 48 | Load Jinja2 template from file with security validation. Args: template_path: Path to template file Re | STRING |
| HIGH | servers/evaluation/src/evaluation.py | 371 | Evaluate retrieval results using pytrec_eval. Args: qrels_path: Path to TREC qrels file run_path: P | STRING |
| HIGH | servers/evaluation/src/evaluation.py | 428 | Save evaluation results to JSON file and optionally display as Markdown table. Args: results: Dictionary of | STRING |
| HIGH | servers/generation/src/generation.py | 86 | Extract text content from various prompt formats. Args: prompt_ls: List of prompts in various forma | STRING |
| HIGH | servers/generation/src/generation.py | 125 | Convert image path to data URL. Args: path_or_url: Image file path or URL Returns: | STRING |
| HIGH | servers/generation/src/generation.py | 289 | Internal method to generate responses from message lists. Args: msg_ls: List of message lists (one | STRING |
| HIGH | servers/generation/src/generation.py | 513 | Generate responses with multimodal inputs (text + images). Args: multimodal_path: List of image pat | STRING |
| HIGH | servers/generation/src/local_generation.py | 46 | Extract text content from various prompt formats. Args: prompt_ls: List of prompts in various forma | STRING |
| HIGH | servers/generation/src/local_generation.py | 81 | Convert image path to data URL. Args: path_or_url: Image file path or URL Returns: | STRING |
| HIGH | servers/router/src/router.py | 25 | Route queries to state1 or state2 based on query value. Args: query_list: List of query strings Return | STRING |
| HIGH | src/ultrarag/server.py | 330 | Register a prompt with UltraRAG-specific output annotation support. Args: name_or_fn: Prompt name o | STRING |
| HIGH | src/ultrarag/server.py | 480 | Build a tool/prompt entry for server.yaml. Args: meta: Metadata dictionary containing function info | STRING |
| HIGH | src/ultrarag/client.py | 391 | Pad sub-list to match skeleton structure. Args: skeleton: Skeleton list structure paren | STRING |
| HIGH | src/ultrarag/client.py | 606 | Get input data for a tool execution step. Args: server_name: Name of the server tool_na | STRING |
| HIGH | src/ultrarag/client.py | 1189 | Load pipeline context from configuration files. Args: config_path: Path to pipeline configuration file | STRING |
| HIGH | src/ultrarag/api.py | 151 | Get a proxy for the specified server. Args: server: Name of the server to access Returns: | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/backend/kb_visibility_store.py | 412 | except Exception: | STRING |
| LOW | ui/backend/chat_store.py | 353 | except Exception: | STRING |
| LOW | ui/backend/chat_store.py | 372 | except Exception: | STRING |
| LOW⚡ | ui/backend/app.py | 98 | except Exception as e: | CODE |
| LOW⚡ | ui/backend/app.py | 535 | except Exception as exc: | CODE |
| LOW⚡ | ui/backend/app.py | 541 | except Exception as exc: | CODE |
| LOW | ui/backend/app.py | 308 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 418 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 455 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 914 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 934 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 953 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 984 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 1003 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 1016 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 1044 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 1067 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 1113 | except Exception: | CODE |
| LOW | ui/backend/app.py | 1393 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 1424 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 1479 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 1620 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 1711 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 1728 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 1825 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 1924 | except Exception as exc: | CODE |
| LOW | ui/backend/app.py | 1987 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 2029 | except Exception as exc: | CODE |
| LOW | ui/backend/app.py | 2034 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 2047 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 2108 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 2458 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 2475 | except Exception: | CODE |
| LOW | ui/backend/app.py | 2478 | except Exception: | CODE |
| LOW | ui/backend/app.py | 2554 | except Exception: | CODE |
| LOW | ui/backend/app.py | 2570 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 2681 | except Exception as e: | CODE |
| LOW | ui/backend/app.py | 2771 | except Exception: | CODE |
| LOW | ui/backend/app.py | 2822 | except Exception: | CODE |
| MEDIUM | ui/backend/pipeline_manager.py | 50 | def _safe_stdio_del(self): | CODE |
| MEDIUM | ui/backend/pipeline_manager.py | 1072 | def run_bg(): | CODE |
| MEDIUM | ui/backend/pipeline_manager.py | 1919 | def _run() -> None: | CODE |
| LOW⚡ | ui/backend/pipeline_manager.py | 1492 | except Exception: | CODE |
| LOW⚡ | ui/backend/pipeline_manager.py | 1846 | except Exception: | CODE |
| LOW⚡ | ui/backend/pipeline_manager.py | 1911 | except Exception as exc: | CODE |
| LOW⚡ | ui/backend/pipeline_manager.py | 1923 | except Exception as exc: | CODE |
| LOW⚡ | ui/backend/pipeline_manager.py | 3491 | except Exception: | CODE |
| LOW⚡ | ui/backend/pipeline_manager.py | 3496 | except Exception as exc: | CODE |
| LOW⚡ | ui/backend/pipeline_manager.py | 3502 | except Exception: | CODE |
| LOW | ui/backend/pipeline_manager.py | 59 | except Exception as exc: # pragma: no cover - best effort guard | CODE |
| LOW | ui/backend/pipeline_manager.py | 64 | except Exception as exc: # pragma: no cover - defensive | CODE |
| LOW | ui/backend/pipeline_manager.py | 89 | except Exception as exc: | CODE |
| LOW | ui/backend/pipeline_manager.py | 93 | except Exception as exc: # pragma: no cover - defensive | CODE |
| LOW | ui/backend/pipeline_manager.py | 195 | except Exception: | CODE |
| LOW | ui/backend/pipeline_manager.py | 254 | except Exception: | CODE |
| LOW | ui/backend/pipeline_manager.py | 334 | except Exception: | CODE |
| LOW | ui/backend/pipeline_manager.py | 417 | except Exception as e: | CODE |
| LOW | ui/backend/pipeline_manager.py | 428 | except Exception as e: | CODE |
| LOW | ui/backend/pipeline_manager.py | 437 | except Exception as e: | CODE |
| LOW | ui/backend/pipeline_manager.py | 522 | except Exception as e: | CODE |
| 114 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | script/case_study.py | 324 | let lightboxEl = null; | CODE |
| HIGH⚡ | script/case_study.py | 325 | let lightboxImgEl = null; | CODE |
| HIGH⚡ | script/case_study.py | 326 | let lightboxCloseBtn = null; | CODE |
| HIGH⚡ | script/case_study.py | 479 | (function w(x){ if(x==null)return; if(Array.isArray(x)){x.forEach(w);} | CODE |
| HIGH⚡ | script/case_study.py | 481 | else if(typeof x==="string"&&isImagePath(x)){out.push(x);} })(v); | CODE |
| HIGH⚡ | script/case_study.py | 486 | (function w(x){ if(!ok)return; if(x==null)return; if(Array.isArray(x)){x.forEach(w);} | CODE |
| HIGH⚡ | script/case_study.py | 495 | var stepName = String((st && st.step) != null ? st.step : "unknown"); | CODE |
| HIGH⚡ | script/case_study.py | 496 | var memory = (st && st.memory) != null ? st.memory : {}; | CODE |
| HIGH | script/case_study.py | 377 | openLightbox(img.dataset.fullSrc || img.src, altLabel || img.alt || ""); | CODE |
| HIGH | script/case_study.py | 436 | history.replaceState(null, "", `#case-${state.idx}`); | CODE |
| HIGH | script/case_study.py | 462 | var names = steps.map(function(s){ return (s && s.step) ? s.step : "unknown"; }); | CODE |
| HIGH | script/case_study.py | 532 | } else if (imagesOnly && imgs.length > 0) { | CODE |
| HIGH | script/case_study.py | 548 | else { try { pt = JSON.stringify(val, null, 2); } catch(e) { pt = String(val); } } | CODE |
| HIGH | script/case_study.py | 583 | var allOpen = bodies.length > 0 && bodies.every(function(c){ return c.classList.contains("open"); }); | CODE |
| HIGH | script/case_study.py | 612 | history.replaceState(null, "", `#case-${state.idx}`); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/frontend/src/shared/lib/pipelinePreview.ts | 424 | export function serializePipelinePreviewToYaml(nodes: PipelinePreviewNode[]): string { | CODE |
| LOW | ui/frontend/src/shared/api/pipelines.ts | 46 | export async function stopPipelineChatGeneration(sessionId: string): Promise<unknown> { | CODE |
| LOW | ui/frontend/src/shared/api/pipelines.ts | 67 | export async function startPipelineBackgroundChat( | CODE |
| LOW | ui/frontend/src/shared/api/backgroundTasks.ts | 33 | export async function clearCompletedBackgroundTasks(): Promise<{ status: string; count: number }> { | CODE |
| LOW⚡ | ui/frontend/src/pages/ChatPage.tsx | 255 | function getCurrentUserMemoryCollectionNameSet(rawUserId: string): Set<string> { | CODE |
| LOW⚡ | ui/frontend/src/pages/ChatPage.tsx | 260 | function filterCurrentUserMemoryCollections( | CODE |
| LOW⚡ | ui/frontend/src/pages/ChatPage.tsx | 270 | function isInternalMemoryCollection(name: string): boolean { | CODE |
| LOW⚡ | ui/frontend/src/pages/ChatPage.tsx | 276 | function filterVisibleKbCollections(collections: KbFileEntry[]): KbFileEntry[] { | CODE |
| LOW | ui/backend/auth.py | 328 | def _ensure_users_table_columns(self, conn: sqlite3.Connection) -> None: | CODE |
| LOW | ui/backend/auth.py | 339 | def _ensure_default_admin_user(self, conn: sqlite3.Connection) -> None: | CODE |
| LOW | ui/backend/kb_visibility_store.py | 50 | def normalize_collection_name(self, raw_name: Any) -> str: | STRING |
| LOW | ui/backend/kb_visibility_store.py | 275 | def filter_viewable_collections( | STRING |
| LOW⚡ | ui/backend/app.py | 105 | def _normalize_memory_user_id(raw_user_id: Optional[str]) -> str: | CODE |
| LOW⚡ | ui/backend/app.py | 112 | def _is_internal_memory_collection_name(raw_name: Any) -> bool: | CODE |
| LOW⚡ | ui/backend/app.py | 119 | def _current_user_memory_collection_names(user_id: str) -> Set[str]: | CODE |
| LOW⚡ | ui/backend/app.py | 550 | def _filter_collections_by_acl( | CODE |
| LOW | ui/backend/app.py | 142 | def _sanitize_export_filename(title: str) -> str: | CODE |
| LOW | ui/backend/app.py | 161 | def _build_content_disposition(filename: str) -> str: | CODE |
| LOW | ui/backend/app.py | 424 | def _run_memory_sync_background( | CODE |
| LOW | ui/backend/app.py | 503 | def _get_authenticated_user_id() -> Optional[str]: | CODE |
| LOW | ui/backend/app.py | 516 | def _ensure_legacy_collection_visibility(collection_names: List[str]) -> None: | CODE |
| LOW | ui/backend/app.py | 618 | def _build_effective_model_settings(raw_settings: Any) -> Dict[str, Dict[str, str]]: | CODE |
| LOW | ui/backend/app.py | 635 | def _get_authenticated_user_model_settings() -> Dict[str, Dict[str, str]]: | CODE |
| LOW | ui/backend/app.py | 863 | def auth_update_model_settings() -> Response: | CODE |
| LOW | ui/backend/app.py | 1314 | def _normalize_chat_history_for_store(raw_messages: Any) -> list[dict[str, Any]]: | CODE |
| LOW | ui/backend/app.py | 1402 | def _stream_with_chat_persistence(base_stream): | CODE |
| LOW⚡ | ui/backend/pipeline_manager.py | 1479 | def get_memory_collection_name(user_id: Optional[str]) -> str: | CODE |
| LOW⚡ | ui/backend/pipeline_manager.py | 1487 | def pipeline_uses_memory_retrieval(pipeline_name: Optional[str]) -> bool: | CODE |
| LOW⚡ | ui/backend/pipeline_manager.py | 1841 | def _get_collection_row_count(client: Any, collection_name: str) -> int: | CODE |
| LOW⚡ | ui/backend/pipeline_manager.py | 1850 | def clear_user_memory_collection_vectors(user_id: Optional[str]) -> Dict[str, Any]: | CODE |
| LOW⚡ | ui/backend/pipeline_manager.py | 1916 | def _trigger_memory_sync_async(user_id: str) -> None: | CODE |
| LOW⚡ | ui/backend/pipeline_manager.py | 1929 | def _resolve_memory_server_alias_from_session( | CODE |
| LOW | ui/backend/pipeline_manager.py | 147 | def _normalize_collection_name(raw_name: str) -> str: | CODE |
| LOW | ui/backend/pipeline_manager.py | 162 | def _make_safe_collection_name(display_name: str) -> tuple[str, str]: | CODE |
| LOW | ui/backend/pipeline_manager.py | 232 | def _extract_display_name_from_desc(desc: str, fallback: str) -> str: | CODE |
| LOW | ui/backend/pipeline_manager.py | 309 | def _is_generation_server_path(server_path: str) -> bool: | CODE |
| LOW | ui/backend/pipeline_manager.py | 314 | def _is_retriever_server_path(server_path: str) -> bool: | CODE |
| LOW | ui/backend/pipeline_manager.py | 329 | def _resolve_generation_server_alias(pipeline_name: Optional[str]) -> str: | CODE |
| LOW | ui/backend/pipeline_manager.py | 347 | def _extract_non_empty_model_settings(raw_settings: Any) -> Dict[str, Dict[str, str]]: | CODE |
| LOW | ui/backend/pipeline_manager.py | 528 | def _build_demo_backend_overrides( | CODE |
| LOW | ui/backend/pipeline_manager.py | 1579 | def _list_project_memory_files(user_id: str) -> List[Path]: | CODE |
| LOW | ui/backend/pipeline_manager.py | 1589 | def _snapshot_project_memory_files(user_id: str, files: List[Path]) -> Dict[str, Any]: | CODE |
| LOW | ui/backend/pipeline_manager.py | 1607 | def _parse_project_memory_turn_chunks( | CODE |
| LOW | ui/backend/pipeline_manager.py | 1952 | def _resolve_memory_server_alias(pipeline_name: Optional[str]) -> Optional[str]: | CODE |
| LOW | ui/backend/pipeline_manager.py | 2005 | def resolve_memory_collection_for_pipeline( | CODE |
| LOW | ui/backend/pipeline_manager.py | 2023 | def trigger_memory_sync_for_pipeline( | CODE |
| LOW | ui/backend/pipeline_manager.py | 2037 | def _normalize_memory_user_id(user_id: Optional[str]) -> str: | CODE |
| LOW | ui/backend/pipeline_manager.py | 2071 | def _auto_save_memory_chat_turn( | CODE |
| LOW | ui/backend/pipeline_manager.py | 2270 | def parse_pipeline_yaml_content(yaml_content: str) -> Dict: | CODE |
| LOW | ui/backend/pipeline_manager.py | 2860 | def clear_completed_background_tasks(user_id: str = "") -> int: | CODE |
| LOW | ui/backend/pipeline_manager.py | 3289 | def _delete_milvus_collection(name: str) -> Dict[str, str]: | CODE |
| LOW | docs/llms.txt | 529 | def output_extract_from_boxed(ans_ls: List[str]) -> Dict[str, List[str]] | CODE |
| LOW | docs/llms.txt | 543 | def evisrag_output_extract_from_special(ans_ls: List[str]) -> Dict[str, List[str]] | CODE |
| LOW | docs/llms.txt | 567 | def surveycpm_parse_search_response(response_ls: List[str], surveycpm_hard_mode: bool = True) -> Dict[str, List] | CODE |
| LOW | docs/llms.txt | 574 | def surveycpm_process_passages(ret_psg_ls: List[List[List[str]]]) -> Dict[str, List[str]] | CODE |
| LOW | docs/llms.txt | 993 | def qa_rag_boxed_multiple_choice( | CODE |
| LOW | docs/llms.txt | 1769 | async def retriever_batch_websearch( | CODE |
| LOW | docs/llms.txt | 5487 | def output_extract_from_boxed(ans_ls: List[str]) -> Dict[str, List[str]]: | CODE |
| LOW | script/case_study.py | 109 | def _estimate_case_count_from_steps(steps: List[dict]) -> int: | CODE |
| LOW | servers/memory/src/memory.py | 41 | def _ensure_user_memory_paths(user_id: str) -> tuple[Path, Path]: | CODE |
| 31 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/backend/app.py | 461 | CODE | |
| LOW | ui/backend/app.py | 1267 | CODE | |
| LOW | ui/backend/app.py | 2353 | CODE | |
| LOW | ui/backend/app.py | 2462 | CODE | |
| LOW | ui/backend/app.py | 1402 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 1044 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 1156 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 1380 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 1445 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 1487 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 1672 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 1850 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 1973 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 2293 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 2458 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 2937 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 3238 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 3313 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 3370 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 1198 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 1521 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 2301 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 2944 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 3580 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 2536 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 3594 | CODE | |
| LOW | script/case_study.py | 29 | CODE | |
| LOW | script/case_study.py | 109 | CODE | |
| LOW | script/case_study.py | 120 | CODE | |
| LOW | servers/benchmark/src/benchmark.py | 15 | CODE | |
| LOW | servers/reranker/src/reranker.py | 36 | CODE | |
| LOW | servers/reranker/src/reranker.py | 151 | CODE | |
| LOW | servers/corpus/src/corpus.py | 131 | CODE | |
| LOW | servers/corpus/src/corpus.py | 169 | CODE | |
| LOW | servers/corpus/src/corpus.py | 364 | CODE | |
| LOW | servers/corpus/src/corpus.py | 515 | CODE | |
| LOW | servers/corpus/src/corpus.py | 674 | CODE | |
| LOW | servers/corpus/src/corpus.py | 849 | CODE | |
| LOW | servers/corpus/src/corpus.py | 971 | CODE | |
| LOW | servers/corpus/src/corpus.py | 399 | CODE | |
| LOW | servers/retriever/src/retriever.py | 82 | CODE | |
| LOW | servers/retriever/src/retriever.py | 186 | CODE | |
| LOW | servers/retriever/src/retriever.py | 505 | CODE | |
| LOW | servers/retriever/src/retriever.py | 685 | CODE | |
| LOW | servers/retriever/src/retriever.py | 863 | CODE | |
| LOW | servers/retriever/src/retriever.py | 128 | CODE | |
| LOW | servers/retriever/src/index_backends/milvus_backend.py | 217 | CODE | |
| LOW | …rs/retriever/src/websearch_backends/zhipuai_backend.py | 38 | CODE | |
| LOW | …rs/retriever/src/websearch_backends/zhipuai_backend.py | 68 | CODE | |
| LOW | servers/prompt/src/prompt.py | 294 | CODE | |
| LOW | servers/prompt/src/prompt.py | 732 | CODE | |
| LOW | servers/prompt/src/prompt.py | 797 | CODE | |
| LOW | servers/prompt/src/prompt.py | 826 | CODE | |
| LOW | servers/prompt/src/prompt.py | 862 | CODE | |
| LOW | servers/prompt/src/prompt.py | 908 | CODE | |
| LOW | servers/evaluation/src/evaluation.py | 365 | CODE | |
| LOW | servers/evaluation/src/evaluation.py | 423 | CODE | |
| LOW | servers/evaluation/src/evaluation.py | 502 | CODE | |
| LOW | servers/evaluation/src/evaluation.py | 559 | CODE | |
| LOW | servers/evaluation/src/evaluation.py | 583 | CODE | |
| 30 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | AGENTS.md | 30 | │ ├── client.py # CLI + pipeline engine + run/build orchestration | CODE |
| MEDIUM | docs/llms.txt | 2642 | # RAG Demo for UltraRAG UI | COMMENT |
| MEDIUM | docs/llms.txt | 3276 | # Vanilla RAG with Corpus Indexing Demo | COMMENT |
| MEDIUM | docs/llms.txt | 3792 | ## What is RAG? | COMMENT |
| MEDIUM | docs/llms.txt | 3928 | ## Build RAG Pipeline | COMMENT |
| MEDIUM | docs/llms.txt | 3951 | ### Write RAG Pipeline | COMMENT |
| MEDIUM | examples/experiments/rag_deploy.yaml | 1 | # RAG Deploy Demo | COMMENT |
| MEDIUM | examples/experiments/rag_loop.yaml | 1 | # RAG Loop Demo | COMMENT |
| MEDIUM | examples/experiments/rag_branch.yaml | 1 | # RAG Branch Demo | COMMENT |
| MEDIUM | examples/experiments/rag_multiple_choice.yaml | 1 | # Vanilla RAG Demo for Multiple Choice Datasets | COMMENT |
| MEDIUM | examples/experiments/rag_wow.yaml | 1 | # Vanilla RAG Demo for WoW Dataset | COMMENT |
| MEDIUM | examples/experiments/vanilla_rag.yaml | 1 | # Vanilla RAG Demo | COMMENT |
| MEDIUM | examples/experiments/rag_full.yaml | 1 | # Vanilla RAG with Corpus Indexing Demo | COMMENT |
| MEDIUM | examples/experiments/multimodal_rag.yaml | 1 | # Multi-Modal RAG Demo | COMMENT |
| MEDIUM | examples/demos/RAG_memory.yaml | 1 | # RAG Memory Demo for UltraRAG UI | COMMENT |
| MEDIUM | examples/demos/RAG_web.yaml | 1 | # RAG Demo for UltraRAG UI | COMMENT |
| MEDIUM | examples/demos/RAG.yaml | 1 | # RAG Demo for UltraRAG UI | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ui/backend/app.py | 2221 | # ========================================= | COMMENT |
| MEDIUM | ui/backend/app.py | 2223 | # ========================================= | COMMENT |
| MEDIUM | ui/backend/app.py | 2348 | # ========================================= | COMMENT |
| MEDIUM | ui/backend/app.py | 2350 | # ========================================= | COMMENT |
| MEDIUM | src/ultrarag/cli.py | 14 | # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | COMMENT |
| MEDIUM | src/ultrarag/cli.py | 16 | # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | COMMENT |
| MEDIUM | src/ultrarag/cli.py | 56 | # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | STRING |
| MEDIUM | src/ultrarag/cli.py | 58 | # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | STRING |
| MEDIUM | src/ultrarag/cli.py | 152 | # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | STRING |
| MEDIUM | src/ultrarag/cli.py | 154 | # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | STRING |
| MEDIUM | src/ultrarag/cli.py | 353 | # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | STRING |
| MEDIUM | src/ultrarag/cli.py | 355 | # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | STRING |
| MEDIUM | src/ultrarag/cli.py | 413 | # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | STRING |
| MEDIUM | src/ultrarag/cli.py | 415 | # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | STRING |
| MEDIUM⚡ | src/ultrarag/cli.py | 520 | # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | STRING |
| MEDIUM⚡ | src/ultrarag/cli.py | 522 | # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | docs/llms.txt | 3087 | ## Step 1: Compile Pipeline | COMMENT |
| LOW⚡ | docs/llms.txt | 3095 | ## Step 2: Run | COMMENT |
| LOW⚡ | docs/llms.txt | 3103 | ## Step 3: Create New Parameter File | COMMENT |
| LOW | docs/llms.txt | 3040 | ## Step 1: Compile and Configure Parameters | COMMENT |
| LOW | docs/llms.txt | 3044 | ## Step 2: Create Debug Configuration File | COMMENT |
| LOW | docs/llms.txt | 3069 | ## Step 3: Start Debugging | COMMENT |
| LOW | docs/llms.txt | 3269 | ## Step 1: Write Pipeline Configuration File | COMMENT |
| LOW | docs/llms.txt | 3306 | ## Step 2: Compile Pipeline and Adjust Parameters | COMMENT |
| LOW | docs/llms.txt | 3443 | ## Step 3: Run Pipeline | COMMENT |
| LOW | docs/llms.txt | 3457 | ## Step 4: Visual Analysis Case Study | COMMENT |
| LOW | docs/llms.txt | 4973 | ### Step 1: Configure Alias Server | COMMENT |
| LOW | docs/llms.txt | 5004 | ### Step 2: Call Separately in Pipeline | COMMENT |
| LOW | docs/llms.txt | 6202 | ### Step 1: Create Server File | COMMENT |
| LOW | docs/llms.txt | 6218 | ### Step 2: Implement Tool Functions | COMMENT |
| LOW | docs/llms.txt | 6242 | ### Step 3: Configure Parameter File | COMMENT |
| LOW | docs/llms.txt | 6306 | ### Step 1: Prepare Prompt Template | COMMENT |
| LOW | docs/llms.txt | 6321 | ### Step 2: Implement Tool in Prompt Server | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/backend/auth.py | 1 | CODE | |
| LOW | ui/backend/kb_visibility_store.py | 1 | CODE | |
| LOW | ui/backend/chat_store.py | 1 | CODE | |
| LOW | ui/backend/storage_paths.py | 1 | CODE | |
| LOW | ui/backend/app.py | 1 | CODE | |
| LOW | ui/backend/pipeline_manager.py | 1 | CODE | |
| LOW | servers/memory/src/memory.py | 1 | CODE | |
| LOW | servers/memory/src/memory.py | 7 | CODE | |
| LOW | servers/retriever/src/bm25_tokenizer.py | 1 | CODE | |
| LOW | servers/retriever/src/index_backends/faiss_backend.py | 1 | CODE | |
| LOW | servers/retriever/src/index_backends/__init__.py | 1 | CODE | |
| LOW | servers/retriever/src/index_backends/base.py | 1 | CODE | |
| LOW | servers/retriever/src/index_backends/milvus_backend.py | 1 | CODE | |
| LOW | servers/retriever/src/index_backends/milvus_backend.py | 5 | CODE | |
| LOW | …rs/retriever/src/websearch_backends/zhipuai_backend.py | 1 | CODE | |
| LOW | servers/retriever/src/websearch_backends/__init__.py | 1 | CODE | |
| LOW | servers/retriever/src/websearch_backends/exa_backend.py | 1 | CODE | |
| LOW | servers/retriever/src/websearch_backends/base.py | 1 | CODE | |
| LOW | …ers/retriever/src/websearch_backends/tavily_backend.py | 1 | CODE | |
| LOW | servers/prompt/src/prompt.py | 1 | CODE | |
| LOW | servers/generation/src/local_generation.py | 2 | CODE | |
| LOW | servers/router/src/router.py | 1 | CODE | |
| LOW | servers/router/src/router.py | 2 | CODE | |
| LOW | src/ultrarag/server.py | 3 | CODE | |
| LOW | src/ultrarag/server.py | 9 | CODE | |
| LOW | src/ultrarag/server.py | 14 | CODE | |
| LOW | src/ultrarag/server.py | 17 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | servers/reranker/src/reranker.py | 0 | remove banned keys and none values from dictionary. args: d: dictionary to filter banned: list of keys to remove returns | STRING |
| HIGH | servers/retriever/src/retriever.py | 0 | remove banned keys and none values from dictionary. args: d: dictionary to filter banned: list of keys to remove returns | STRING |
| HIGH | servers/generation/src/generation.py | 0 | remove banned keys and none values from dictionary. args: d: dictionary to filter banned: list of keys to remove returns | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/backend/pipeline_manager.py | 2348 | # Write file | COMMENT |
| LOW | ui/backend/pipeline_manager.py | 2378 | # Check if old file exists | COMMENT |
| LOW | ui/backend/pipeline_manager.py | 2383 | # Check if new name already exists in any known pipeline directory | COMMENT |
| LOW | servers/benchmark/src/benchmark.py | 89 | # Check if ret is empty before accessing values | COMMENT |
| LOW | servers/corpus/src/corpus.py | 43 | # Check if safe_path is relative to base_path | COMMENT |
| LOW | servers/custom/src/custom.py | 986 | # Check if already extended | COMMENT |
| LOW | src/ultrarag/client.py | 300 | # Check if there are any branch*_state keys | COMMENT |
| LOW | src/ultrarag/client.py | 1806 | # Check if doc already has [id] prefix | COMMENT |
| LOW | src/ultrarag/client.py | 1971 | # Check if doc already has [id] prefix | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ui/backend/pipeline_manager.py | 3591 | # Create a progress wrapper for streaming updates | COMMENT |
| MEDIUM | servers/prompt/src/prompt.py | 16 | # Create a sandboxed Jinja2 environment for security | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | servers/retriever/src/index_backends/__init__.py | 43 | __all__ = [ | CODE |
| LOW | servers/retriever/src/websearch_backends/__init__.py | 43 | __all__ = [ | CODE |
| LOW⚡ | src/ultrarag/cli.py | 524 | __all__ = [ | STRING |
| LOW | src/ultrarag/utils.py | 110 | def set_pdeathsig() -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/ultrarag/server.py | 39 | CODE | |
| LOW | src/ultrarag/server.py | 244 | CODE |