可私有部署的多租户知识智能体平台:统一 RAG、知识图谱、多智能体、MCP/Skills、沙盒与权限管理。Yuxi = Cloud Agents + Knowledge RAG, Self-hosted knowledge agent platform for RAG, knowledge graphs and multi-agent workflows.
This report summarizes scanner evidence for xerrors/Yuxi, a Python project with 7,354 GitHub stars. SynthScan examined 299,931 lines of code across 1243 source files, recording 4766 pattern matches distributed across 18 syntactic categories. The legacy adjusted pattern signal is 17.3 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 3598 finding(s).
Are imports declared and package/API names verified? 504 finding(s).
Are wrappers, guards, and repeated structures necessary? 4101 finding(s).
Which changes need focused human review? 4766 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 4766 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/sandbox_provisioner/app.py | 89 | def _is_persistent_sandbox_mount_path(path: str) -> bool: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 123 | def kubernetes_storage_init_script(uid: str, workdir_path: str | None) -> str: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 225 | def sandbox_runtime_environment(profile: str) -> dict[str, str]: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 260 | def sandbox_delete_concurrency(value: str | None = None) -> int: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 276 | def sandbox_container_stop_timeout_seconds(value: str | None = None) -> int: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 657 | def _normalize_host_bind_path(path_value: str | None) -> str: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 719 | def _shared_workspace_host_path(self, uid: str) -> Path: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 723 | def _validate_directory_without_symlinks( | CODE |
| LOW | docker/sandbox_provisioner/app.py | 746 | def _is_expected_skills_mount(self, container, uid: str) -> bool: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 756 | def _has_expected_user_data_mounts( | CODE |
| LOW | docker/sandbox_provisioner/app.py | 782 | def _has_no_persistent_file_mounts(container) -> bool: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 834 | def _has_expected_network_ownership(network, sandbox_id: str) -> bool: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 881 | def _is_subnet_allocation_conflict(exc: Exception) -> bool: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 1557 | def _discovered_matches_request( | CODE |
| LOW | docker/sandbox_provisioner/app.py | 1874 | def _collect_expired_sandboxes(self) -> list[tuple[str, str | None]]: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 2122 | def _delete_sandbox_records_for_quiescence( | CODE |
| LOW | docker/sandbox_provisioner/app.py | 2162 | def _delete_sandbox_record_for_quiescence(record: SandboxRecord) -> str | None: | CODE |
| LOW | web/src/apis/base.js | 65 | function extractBusinessErrorDetail(errorData) { | CODE |
| LOW | web/src/stores/database.js | 330 | function ensureAutoRefreshForProcessing(filesMap, stats = null) { | CODE |
| LOW | web/src/stores/user.js | 151 | async function validateUsernameAndGenerateUid(username) { | CODE |
| LOW | web/src/stores/agent.js | 87 | async function fetchAccessibleKnowledgeBases() { | CODE |
| LOW | web/src/utils/messageDebug.js | 8 | export function formatMessageDebugContent(content) { | CODE |
| LOW | web/src/utils/messageDebug.js | 19 | export function isMessageDebugTimelineMarkSelected(selectedTargetKey, groupKey, itemId = null) { | CODE |
| LOW | web/src/utils/messageDebug.js | 29 | function constrainMessageDebugInspectorSize( | CODE |
| LOW | web/src/utils/messageDebug.js | 51 | export function constrainMessageDebugInspectorHeight(containerHeight, requestedHeight) { | CODE |
| LOW | web/src/utils/messageDebug.js | 56 | export function constrainMessageDebugInspectorWidth(containerWidth, requestedWidth) { | CODE |
| LOW | web/src/utils/messageDebug.js | 104 | export function mergeMessageDebugMessages(history, ongoing, requests = []) { | CODE |
| LOW | web/src/utils/messageDebug.js | 298 | function normalizePersistedUtcTimestamp(value) { | CODE |
| LOW | web/src/utils/messageDebug.js | 468 | export function mergeMessageDebugRunGroups(entries, runTraces) { | CODE |
| LOW | web/src/utils/messageDebug.js | 509 | export function getMessageDebugEntryTimeRange(entry) { | CODE |
| LOW | web/src/utils/messageDebug.js | 521 | export function buildMessageDebugTraceSpans(entries, timelineWindow) { | CODE |
| LOW | web/src/utils/messageDebug.js | 560 | export function isMessageDebugEntryInTimeRange( | CODE |
| LOW | web/src/utils/contextUsage.js | 55 | export function formatContextUsageTooltip({ | CODE |
| LOW | web/src/utils/contextUsage.js | 97 | export function resolveContextPressureTokens(usage) { | CODE |
| LOW | web/src/utils/contextUsage.js | 110 | export function shouldSuggestContextCompression(ratio) { | CODE |
| LOW | web/src/utils/dashboard.js | 29 | export function buildHeatmapMonthSegments(weeks) { | CODE |
| LOW | web/src/components/ConversationNavSection.vue | 252 | function showMoreProjectConversations(group) { | CODE |
| LOW | web/src/components/AgentChatComponent.vue | 2187 | function mergeOngoingUserMessageIntoHistory(historyConvs, ongoingMessages) { | CODE |
| LOW | web/src/components/AgentChatComponent.vue | 2226 | function mergeActiveRunOngoingIntoHistory(historyConvs, ongoingMessages, activeRunId) { | CODE |
| LOW | …/components/scheduled-agents/scheduledAgentAutosave.js | 1 | export function newScheduledAgentRequestId() { | CODE |
| LOW | …/components/scheduled-agents/scheduledAgentAutosave.js | 8 | export function createRetriableRequestIds(createRequestId = newScheduledAgentRequestId) { | CODE |
| LOW | …/components/scheduled-agents/scheduledAgentAutosave.js | 28 | export function createScheduledAgentAutosave({ | CODE |
| LOW | backend/test/live_api_cleanup.py | 68 | def make_test_conversation_title(label: str) -> str: | CODE |
| LOW | backend/test/live_api_cleanup.py | 82 | def make_test_conversation_metadata(test_name: str, *, e2e: bool = False, **extra: object) -> dict[str, object]: | CODE |
| LOW | backend/test/live_api_cleanup.py | 92 | async def _list_provisioned_sandbox_ids( | CODE |
| LOW | backend/test/live_api_cleanup.py | 116 | async def cleanup_provisioned_sandboxes( | CODE |
| LOW | backend/test/live_api_cleanup.py | 170 | def is_test_conversation_title(title: object) -> bool: | CODE |
| LOW | backend/test/live_api_cleanup.py | 325 | async def list_test_conversation_resources(owner_uid: str) -> dict[str, CleanupConversationResource]: | CODE |
| LOW | backend/test/live_api_cleanup.py | 422 | async def validate_test_workdirs_exclusive( | CODE |
| LOW | backend/test/live_api_cleanup.py | 437 | async def _validate_test_workdirs_exclusive( | CODE |
| LOW | backend/test/live_api_cleanup.py | 484 | async def validate_test_runs_terminal(thread_ids: set[str]) -> None: | CODE |
| LOW | backend/test/live_api_cleanup.py | 504 | async def list_test_queued_request_ids(thread_ids: set[str]) -> list[str]: | CODE |
| LOW | backend/test/live_api_cleanup.py | 522 | async def delete_test_conversation_rows(thread_ids: set[str]) -> None: | CODE |
| LOW | backend/test/live_api_cleanup.py | 538 | async def delete_test_conversation_resources( | CODE |
| LOW | backend/test/live_api_cleanup.py | 578 | async def _delete_test_conversation_rows(conn: asyncpg.Connection, thread_ids_list: list[str]) -> None: | CODE |
| LOW | backend/test/live_api_cleanup.py | 637 | async def delete_orphaned_test_projects(owner_uid: str) -> None: | CODE |
| LOW | backend/test/live_api_cleanup.py | 653 | async def _assert_test_conversations_deleted(conn: asyncpg.Connection, thread_ids_list: list[str]) -> None: | CODE |
| LOW | backend/test/live_api_cleanup.py | 667 | async def cleanup_test_chat_resources( | CODE |
| LOW | backend/test/live_api_cleanup.py | 808 | async def cleanup_pytest_knowledge_resources( | CODE |
| LOW⚡ | backend/test/unit/test_live_api_cleanup.py | 70 | async def test_cleanup_rejects_invalid_provisioner_list_payload(): | CODE |
| 3354 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/test/conftest.py | 1 | CODE | |
| LOW | backend/test/live_api_cleanup.py | 1 | CODE | |
| LOW | backend/test/unit/test_live_api_cleanup.py | 1 | CODE | |
| LOW | backend/test/unit/test_auth_utils.py | 1 | CODE | |
| LOW | backend/test/unit/routers/test_user_config_router.py | 1 | CODE | |
| LOW | backend/test/unit/routers/test_mention_router.py | 1 | CODE | |
| LOW | …t/unit/routers/test_agent_invocation_channel_router.py | 1 | CODE | |
| LOW | backend/test/unit/routers/test_skill_router.py | 1 | CODE | |
| LOW | backend/test/unit/routers/test_system_router.py | 1 | CODE | |
| LOW | backend/test/unit/routers/test_subagent.py | 1 | CODE | |
| LOW | backend/test/unit/routers/test_auth_router_cli_auth.py | 1 | CODE | |
| LOW | backend/test/unit/routers/test_api_key_security.py | 1 | CODE | |
| LOW | …/test/unit/routers/test_dashboard_superadmin_access.py | 1 | CODE | |
| LOW | …end/test/unit/routers/test_workspace_knowledge_tree.py | 1 | CODE | |
| LOW | …ckend/test/unit/routers/test_scheduled_agent_router.py | 1 | CODE | |
| LOW | …d/test/unit/routers/test_knowledge_workspace_import.py | 1 | CODE | |
| LOW | …est/unit/routers/test_agent_invocation_router_split.py | 1 | CODE | |
| LOW | backend/test/unit/routers/test_mcp_router.py | 1 | CODE | |
| LOW | …kend/test/unit/config/test_preview_owner_boundaries.py | 3 | CODE | |
| LOW | backend/test/unit/config/test_options.py | 1 | CODE | |
| LOW | backend/test/unit/config/test_user_config.py | 1 | CODE | |
| LOW | backend/test/unit/plugins/test_ragflow_like_chunking.py | 1 | CODE | |
| LOW | backend/test/unit/plugins/test_notion_kb.py | 1 | CODE | |
| LOW | backend/test/unit/plugins/test_dify_kb.py | 1 | CODE | |
| LOW | …/test/unit/backends/test_sandbox_provisioner_client.py | 1 | CODE | |
| LOW | …kend/test/unit/backends/test_knowledge_base_backend.py | 1 | CODE | |
| LOW | backend/test/unit/backends/test_sandbox_backends.py | 3 | CODE | |
| LOW | backend/test/unit/workspace/test_filesystem.py | 1 | CODE | |
| LOW | …ckend/test/unit/middlewares/test_summary_middleware.py | 1 | CODE | |
| LOW | backend/test/unit/middlewares/test_steer_safety_gate.py | 3 | CODE | |
| LOW | …test/unit/middlewares/test_subagent_task_middleware.py | 1 | CODE | |
| LOW | …d/test/unit/middlewares/test_model_input_middleware.py | 1 | CODE | |
| LOW | …d/test/unit/middlewares/test_token_usage_middleware.py | 1 | CODE | |
| LOW | backend/test/unit/middlewares/test_skills_middleware.py | 1 | CODE | |
| LOW | backend/test/unit/middlewares/test_memory_middleware.py | 1 | CODE | |
| LOW | backend/test/unit/agents/test_context_auth.py | 1 | CODE | |
| LOW | backend/test/unit/agents/test_network_retry.py | 3 | CODE | |
| LOW | backend/test/unit/agents/test_summary_graph_config.py | 1 | CODE | |
| LOW | …end/test/unit/agents/test_base_tool_event_normalize.py | 1 | CODE | |
| LOW | backend/test/unit/agents/test_subagent_tool_filter.py | 1 | CODE | |
| LOW | …test/unit/agents/skills/test_mysql_reporter_scripts.py | 1 | CODE | |
| LOW | backend/test/unit/toolkits/test_install_skill.py | 1 | CODE | |
| LOW | backend/test/unit/toolkits/test_tool_registry.py | 1 | CODE | |
| LOW | backend/test/unit/toolkits/test_kbs_tools.py | 1 | CODE | |
| LOW | backend/test/unit/toolkits/test_ocr_parse_file_tool.py | 1 | CODE | |
| LOW | backend/test/unit/utils/test_thread_utils.py | 1 | CODE | |
| LOW | backend/test/unit/utils/test_filepreview.py | 1 | CODE | |
| LOW | backend/test/unit/utils/test_image_processor.py | 1 | CODE | |
| LOW | backend/test/unit/utils/test_lifespan.py | 3 | CODE | |
| LOW | backend/test/unit/repositories/test_agent_repository.py | 1 | CODE | |
| LOW | backend/test/unit/repositories/test_user_repository.py | 3 | CODE | |
| LOW | …t/repositories/test_knowledge_base_repository_cache.py | 1 | CODE | |
| LOW | …nd/test/unit/repositories/test_agent_run_repository.py | 1 | CODE | |
| LOW | …/unit/repositories/test_agent_run_output_repository.py | 1 | CODE | |
| LOW | …nd/test/unit/repositories/test_conversation_workdir.py | 1 | CODE | |
| LOW | …/unit/repositories/test_conversation_memory_history.py | 1 | CODE | |
| LOW | …unit/repositories/test_agent_run_request_repository.py | 3 | CODE | |
| LOW | …/test/unit/repositories/test_agent_state_repository.py | 1 | CODE | |
| LOW | …d/test/unit/repositories/test_department_repository.py | 3 | CODE | |
| LOW | …it/repositories/test_agent_repository_deep_research.py | 1 | CODE | |
| 409 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docker/sandbox_provisioner/app.py | 1860 | def _seed_existing(self) -> None: | CODE |
| MEDIUM | docker/sandbox_provisioner/app.py | 2070 | def list_sandboxes(): | CODE |
| LOW | docker/sandbox_provisioner/app.py | 148 | except Exception: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 588 | except Exception: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 911 | except Exception as exc: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 1069 | except Exception as exc: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 1076 | except Exception as exc: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 1162 | except Exception: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 1165 | except Exception as cleanup_exc: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 1198 | except Exception as exc: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 1213 | except Exception as exc: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 1228 | except Exception as exc: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 1244 | except Exception as exc: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 1316 | except Exception: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 1571 | except Exception: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 1676 | except Exception: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 1728 | except Exception as exc: | CODE |
| LOW | docker/sandbox_provisioner/app.py | 1863 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | docker/sandbox_provisioner/app.py | 1896 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | docker/sandbox_provisioner/app.py | 2013 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | docker/sandbox_provisioner/app.py | 2033 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | docker/sandbox_provisioner/app.py | 2055 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | docker/sandbox_provisioner/app.py | 2073 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | docker/sandbox_provisioner/app.py | 2095 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | docker/sandbox_provisioner/app.py | 2117 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | docker/sandbox_provisioner/app.py | 2193 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | docker/sandbox_provisioner/app.py | 2219 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | docker/sandbox_provisioner/app.py | 2247 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | backend/test/live_api_cleanup.py | 572 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | backend/test/live_api_cleanup.py | 716 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | backend/test/integration/conftest.py | 286 | except Exception as exc: | CODE |
| LOW | …st/integration/services/test_identity_admin_service.py | 174 | except Exception as exc: | CODE |
| LOW | …tegration/services/test_project_workdir_provisioner.py | 120 | except Exception: | CODE |
| LOW | …tegration/services/test_project_workdir_provisioner.py | 131 | except Exception: | CODE |
| LOW | …tegration/services/test_project_workdir_provisioner.py | 170 | except Exception: | CODE |
| LOW | …tegration/services/test_project_workdir_provisioner.py | 181 | except Exception: | CODE |
| LOW | …tegration/services/test_project_workdir_provisioner.py | 224 | except Exception: | CODE |
| LOW | …tegration/services/test_project_workdir_provisioner.py | 301 | except Exception: | CODE |
| LOW | …kend/test/integration/services/test_agent_run_lease.py | 76 | except Exception: | CODE |
| LOW | …kend/test/integration/services/test_agent_run_lease.py | 329 | except Exception: | CODE |
| LOW | …ation/services/test_agent_request_queue_concurrency.py | 342 | except Exception: | CODE |
| LOW | …ation/services/test_agent_request_queue_concurrency.py | 478 | except Exception: | CODE |
| LOW | …ation/services/test_agent_request_queue_concurrency.py | 559 | except Exception: | CODE |
| LOW | …ation/services/test_agent_request_queue_concurrency.py | 713 | except Exception: | CODE |
| LOW | …ation/services/test_agent_request_queue_concurrency.py | 832 | except Exception: | CODE |
| LOW | backend/test/performance/matrix.py | 362 | except Exception as exc: | CODE |
| LOW | backend/test/e2e/test_deterministic_agent_path_e2e.py | 1171 | except Exception: | CODE |
| LOW | backend/test/e2e/test_deterministic_agent_path_e2e.py | 1467 | except Exception: | CODE |
| LOW | backend/server/routers/graph_router.py | 50 | except Exception as e: | CODE |
| LOW | backend/server/routers/graph_router.py | 77 | except Exception as e: | CODE |
| LOW | backend/server/routers/graph_router.py | 94 | except Exception as e: | CODE |
| LOW | backend/server/routers/graph_router.py | 111 | except Exception as e: | CODE |
| LOW | backend/server/routers/knowledge_eval_router.py | 104 | except Exception as e: | CODE |
| LOW | backend/server/routers/knowledge_eval_router.py | 121 | except Exception as e: | CODE |
| LOW | backend/server/routers/knowledge_eval_router.py | 150 | except Exception as e: | CODE |
| LOW | backend/server/routers/knowledge_eval_router.py | 176 | except Exception as e: | CODE |
| LOW | backend/server/routers/knowledge_eval_router.py | 197 | except Exception as e: | CODE |
| LOW | backend/server/routers/knowledge_eval_router.py | 228 | except Exception as e: | CODE |
| LOW | backend/server/routers/knowledge_eval_router.py | 250 | except Exception as e: | CODE |
| LOW | backend/server/routers/knowledge_eval_router.py | 278 | except Exception as e: | CODE |
| 404 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | backend/test/unit/test_chunking_token_limit.py | 73 | # ── nlp.hard_split_by_token_limit ────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend/test/unit/test_chunking_token_limit.py | 120 | # ── general._ensure_chunk_token_limit ────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend/test/unit/test_chunking_token_limit.py | 156 | # ── general.chunk_markdown 集成 ──────────────────────────────────── | COMMENT |
| MEDIUM⚡ | backend/test/integration/api/test_knowledge_router.py | 883 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/test/integration/api/test_knowledge_router.py | 885 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/test/integration/api/test_knowledge_router.py | 944 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/test/integration/api/test_knowledge_router.py | 946 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/main.py | 5 | # ============================================================================== | COMMENT |
| MEDIUM | backend/server/main.py | 8 | # ============================================================================== | COMMENT |
| MEDIUM⚡ | backend/server/routers/mcp_router.py | 96 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/server/routers/mcp_router.py | 98 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/server/routers/mcp_router.py | 255 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/server/routers/mcp_router.py | 257 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/server/routers/mcp_router.py | 316 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/server/routers/mcp_router.py | 318 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/mcp_router.py | 29 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/mcp_router.py | 31 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/mcp_router.py | 67 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/mcp_router.py | 69 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/auth_dept_router.py | 24 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/auth_dept_router.py | 26 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/auth_dept_router.py | 57 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/auth_dept_router.py | 59 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/system_router.py | 21 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/system_router.py | 23 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/system_router.py | 78 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/system_router.py | 80 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/server/routers/system_router.py | 183 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/server/routers/system_router.py | 185 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/server/routers/system_router.py | 244 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/server/routers/system_router.py | 246 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/auth_router.py | 202 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/auth_router.py | 204 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/auth_router.py | 215 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/auth_router.py | 217 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/auth_router.py | 332 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/auth_router.py | 334 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/auth_router.py | 441 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/auth_router.py | 443 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/auth_router.py | 516 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/auth_router.py | 518 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/auth_router.py | 1009 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/auth_router.py | 1011 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/server/routers/knowledge_router.py | 222 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/server/routers/knowledge_router.py | 224 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/server/routers/knowledge_router.py | 638 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/server/routers/knowledge_router.py | 640 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/server/routers/knowledge_router.py | 1350 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/server/routers/knowledge_router.py | 1352 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/server/routers/knowledge_router.py | 1384 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/server/routers/knowledge_router.py | 1386 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/server/routers/knowledge_router.py | 1758 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/server/routers/knowledge_router.py | 1760 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/server/routers/knowledge_router.py | 1795 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | backend/server/routers/knowledge_router.py | 1797 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/knowledge_router.py | 1272 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/knowledge_router.py | 1274 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/chat_router.py | 281 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/chat_router.py | 283 | # ============================================================================= | COMMENT |
| MEDIUM | backend/server/routers/chat_router.py | 386 | # ================================ | COMMENT |
| 45 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docker/sandbox_provisioner/app.py | 588 | except Exception: | CODE |
| HIGH | docker/sandbox_provisioner/app.py | 1676 | except Exception: | CODE |
| HIGH | backend/test/unit/agents/test_streaming_toolcall_fix.py | 71 | except GraphRecursionError: | CODE |
| HIGH | …tegration/services/test_project_workdir_provisioner.py | 120 | except Exception: | CODE |
| HIGH | …tegration/services/test_project_workdir_provisioner.py | 170 | except Exception: | CODE |
| HIGH | …tegration/services/test_project_workdir_provisioner.py | 224 | except Exception: | CODE |
| HIGH | …tegration/services/test_project_workdir_provisioner.py | 131 | except Exception: | CODE |
| HIGH | …tegration/services/test_project_workdir_provisioner.py | 181 | except Exception: | CODE |
| HIGH | …tegration/services/test_project_workdir_provisioner.py | 301 | except Exception: | CODE |
| HIGH | …ation/services/test_agent_request_queue_concurrency.py | 431 | except TimeoutError: | CODE |
| HIGH | backend/test/performance/load.py | 755 | except httpx.HTTPError: | CODE |
| HIGH | backend/test/e2e/test_deterministic_agent_path_e2e.py | 1171 | except Exception: | CODE |
| HIGH | backend/test/e2e/test_deterministic_agent_path_e2e.py | 1467 | except Exception: | CODE |
| HIGH | backend/package/yuxi/workspace/preview.py | 45 | except FileNotFoundError: | CODE |
| HIGH | backend/package/yuxi/workspace/paths.py | 163 | except FileNotFoundError: | CODE |
| HIGH | backend/package/yuxi/workspace/filesystem.py | 214 | except FileNotFoundError: | CODE |
| HIGH | backend/package/yuxi/workspace/filesystem.py | 287 | except FileNotFoundError: | CODE |
| HIGH | backend/package/yuxi/agents/backends/sandbox/backend.py | 650 | except Exception: # noqa: BLE001 | CODE |
| HIGH | …/agents/skills/buildin/mysql-reporter/scripts/query.py | 119 | except Exception: | CODE |
| HIGH | …kills/buildin/mysql-reporter/scripts/describe_table.py | 57 | except Exception: | CODE |
| HIGH | …kills/buildin/mysql-reporter/scripts/describe_table.py | 93 | except Exception: | CODE |
| HIGH | backend/package/yuxi/utils/paths.py | 22 | except FileExistsError: | CODE |
| HIGH | backend/package/yuxi/models/embed.py | 179 | except ValueError: | CODE |
| HIGH | backend/package/yuxi/storage/redis/manager.py | 92 | except Exception: | CODE |
| HIGH | backend/package/yuxi/storage/redis/manager.py | 109 | except Exception: | CODE |
| HIGH | …ckend/package/yuxi/storage/postgres/models_business.py | 770 | except json.JSONDecodeError: | CODE |
| HIGH | backend/package/yuxi/knowledge/parser/rapid_ocr.py | 50 | except Exception: | CODE |
| HIGH | …ckend/package/yuxi/knowledge/parser/mineru_official.py | 116 | except Exception: | CODE |
| HIGH | …/package/yuxi/knowledge/graphs/milvus_graph_service.py | 402 | except TimeoutError: | CODE |
| HIGH | …/package/yuxi/knowledge/graphs/milvus_graph_service.py | 411 | except TimeoutError: | CODE |
| HIGH | …ckend/package/yuxi/knowledge/implementations/milvus.py | 1376 | except Exception: # noqa: S110 | CODE |
| HIGH | …ckend/package/yuxi/knowledge/implementations/notion.py | 95 | except ValueError: | CODE |
| HIGH | …ckend/package/yuxi/storage_migrations/v071_workdirs.py | 191 | except FileExistsError: | CODE |
| HIGH | …ckage/yuxi/storage_migrations/v072_runtime_identity.py | 144 | except FileNotFoundError: | CODE |
| HIGH | backend/package/yuxi/services/attachment_service.py | 527 | except FileNotFoundError: | CODE |
| HIGH | backend/package/yuxi/services/attachment_service.py | 172 | except FileNotFoundError: | CODE |
| HIGH | backend/package/yuxi/services/attachment_service.py | 229 | except Exception: | CODE |
| HIGH | …end/package/yuxi/services/viewer_filesystem_service.py | 120 | except FileNotFoundError: | CODE |
| HIGH | …end/package/yuxi/services/viewer_filesystem_service.py | 267 | except FileNotFoundError: | CODE |
| HIGH | backend/package/yuxi/services/run_queue_service.py | 249 | except Exception: | CODE |
| HIGH | backend/package/yuxi/services/skills/edit.py | 371 | except FileNotFoundError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/sandbox_provisioner/app.py | 986 | CODE | |
| LOW | backend/test/live_api_cleanup.py | 667 | CODE | |
| LOW | backend/test/live_api_cleanup.py | 808 | CODE | |
| LOW | backend/test/unit/performance/test_matrix.py | 370 | CODE | |
| LOW | backend/test/integration/conftest.py | 243 | CODE | |
| LOW | …/test/integration/api/test_shared_skill_edit_router.py | 144 | CODE | |
| LOW | …ration/api/test_agent_config_resource_authorization.py | 170 | CODE | |
| LOW | backend/test/integration/api/test_mcp_router.py | 28 | CODE | |
| LOW | …t/integration/services/test_knowledge_stats_refresh.py | 171 | CODE | |
| LOW | backend/test/support/openai_replay_server.py | 93 | CODE | |
| LOW | backend/test/performance/matrix.py | 184 | CODE | |
| LOW | backend/test/performance/matrix.py | 330 | CODE | |
| LOW | backend/test/performance/matrix.py | 369 | CODE | |
| LOW | backend/test/performance/analysis.py | 69 | CODE | |
| LOW | backend/test/performance/stage_probe.py | 137 | CODE | |
| LOW | backend/test/performance/load.py | 680 | CODE | |
| LOW | backend/test/e2e/test_subagent_stream_e2e.py | 158 | CODE | |
| LOW | backend/test/e2e/test_subagent_stream_e2e.py | 174 | CODE | |
| LOW | backend/test/e2e/test_subagent_stream_e2e.py | 231 | CODE | |
| LOW | backend/test/e2e/test_deterministic_agent_path_e2e.py | 40 | CODE | |
| LOW | backend/test/e2e/test_deterministic_agent_path_e2e.py | 818 | CODE | |
| LOW | backend/test/e2e/test_deterministic_agent_path_e2e.py | 1477 | CODE | |
| LOW | backend/server/routers/mcp_router.py | 322 | CODE | |
| LOW | backend/server/routers/knowledge_router.py | 1147 | CODE | |
| LOW | backend/package/yuxi/workspace/paths.py | 211 | CODE | |
| LOW | backend/package/yuxi/workspace/filesystem.py | 41 | CODE | |
| LOW | backend/package/yuxi/workspace/filesystem.py | 87 | CODE | |
| LOW | backend/package/yuxi/workspace/filesystem.py | 115 | CODE | |
| LOW | backend/package/yuxi/agents/context.py | 371 | CODE | |
| LOW | backend/package/yuxi/agents/base.py | 116 | CODE | |
| LOW | backend/package/yuxi/agents/base.py | 175 | CODE | |
| LOW | backend/package/yuxi/agents/backends/sandbox/backend.py | 573 | CODE | |
| LOW | backend/package/yuxi/agents/backends/sandbox/backend.py | 1147 | CODE | |
| LOW | …ckend/package/yuxi/agents/backends/sandbox/provider.py | 168 | CODE | |
| LOW | backend/package/yuxi/agents/middlewares/skills.py | 65 | CODE | |
| LOW | backend/package/yuxi/agents/middlewares/summary.py | 616 | CODE | |
| LOW | backend/package/yuxi/agents/toolkits/utils.py | 7 | CODE | |
| LOW | backend/package/yuxi/agents/toolkits/buildin/tools.py | 320 | CODE | |
| LOW | backend/package/yuxi/agents/mcp/service.py | 250 | CODE | |
| LOW | backend/package/yuxi/agents/skills/runtime.py | 176 | CODE | |
| LOW | …/agents/skills/buildin/mysql-reporter/scripts/query.py | 204 | CODE | |
| LOW | …kills/buildin/mysql-reporter/scripts/describe_table.py | 28 | CODE | |
| LOW | backend/package/yuxi/utils/image_processor.py | 86 | CODE | |
| LOW | backend/package/yuxi/utils/paths.py | 11 | CODE | |
| LOW | backend/package/yuxi/utils/question_utils.py | 65 | CODE | |
| LOW | …kend/package/yuxi/repositories/dashboard_repository.py | 528 | CODE | |
| LOW | backend/package/yuxi/permissions/resource_permission.py | 105 | CODE | |
| LOW | backend/package/yuxi/storage/minio/utils.py | 31 | CODE | |
| LOW | …ckend/package/yuxi/storage/postgres/models_business.py | 754 | CODE | |
| LOW | backend/package/yuxi/storage/postgres/manager.py | 411 | CODE | |
| LOW | backend/package/yuxi/knowledge/manager.py | 132 | CODE | |
| LOW | backend/package/yuxi/knowledge/base.py | 180 | CODE | |
| LOW | backend/package/yuxi/knowledge/base.py | 787 | CODE | |
| LOW | backend/package/yuxi/knowledge/base.py | 977 | CODE | |
| LOW | backend/package/yuxi/knowledge/utils/url_fetcher.py | 130 | CODE | |
| LOW | backend/package/yuxi/knowledge/parser/unified.py | 116 | CODE | |
| LOW | backend/package/yuxi/knowledge/parser/unified.py | 307 | CODE | |
| LOW | backend/package/yuxi/knowledge/parser/rapid_ocr.py | 99 | CODE | |
| LOW | backend/package/yuxi/knowledge/parser/rapid_ocr.py | 156 | CODE | |
| LOW | backend/package/yuxi/knowledge/parser/paddleocr_api.py | 265 | CODE | |
| 60 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …/unit/config/test_docker_compose_service_boundaries.py | 331 | "cat >/dev/null || true\n", | CODE |
| HIGH⚡ | …d/test/unit/config/test_docker_compose_checkpointer.py | 123 | "curl -f http://localhost:5050/api/system/ready || exit 1", | CODE |
| HIGH | …tegration/services/test_project_workdir_provisioner.py | 57 | "mkdir -p /home/gem/user-data/outputs && printf ephemeral > /home/gem/user-data/outputs/check.txt", | CODE |
| HIGH | …tegration/services/test_project_workdir_provisioner.py | 91 | f"mkdir -p {project_root}/outputs && printf shared-bytes > {project_file} " | CODE |
| HIGH | …tegration/services/test_project_workdir_provisioner.py | 152 | f"mkdir -p {project_root}/outputs && printf persistent > {project_file} " | CODE |
| HIGH | …tegration/services/test_project_workdir_provisioner.py | 203 | f"mkdir -p {project_root}/outputs && printf realtime > {project_file}", | CODE |
| HIGH | backend/test/e2e/test_agent_steer_e2e.py | 43 | "command 必须是 `sleep 12 && echo TOOL_FINISHED`;工具结束后原任务本应回答 OLD_SHOULD_NOT_COMPLETE。" | CODE |
| HIGH | backend/test/e2e/test_agent_steer_e2e.py | 104 | and command == "sleep 12 && echo TOOL_FINISHED" | CODE |
| HIGH | scripts/test_dependency_update_policy.py | 75 | group: dependency-audit-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | STRING |
| HIGH | scripts/verify_engineering_contracts.py | 128 | commands=("pnpm run lint:check && pnpm run test:unit && pnpm run build",), | CODE |
| HIGH⚡ | scripts/test_verify_engineering_contracts.py | 368 | "python3 scripts/verify_engineering_contracts.py || true", | CODE |
| HIGH | scripts/test_verify_engineering_contracts.py | 110 | - run: pnpm run lint:check && pnpm run test:unit && pnpm run build | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker/sandbox_provisioner/app.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | …end/test/unit/routers/test_knowledge_router_cleanup.py | 39 | async def set_message(self, message: str) -> None: | CODE |
| LOW⚡ | …end/test/unit/routers/test_knowledge_router_cleanup.py | 42 | async def set_progress(self, progress: float, message: str | None = None) -> None: | CODE |
| LOW⚡ | …end/test/unit/routers/test_knowledge_router_cleanup.py | 45 | async def set_result(self, result: dict) -> None: | CODE |
| LOW | backend/test/unit/storage/test_minio_public_images.py | 21 | def set_bucket_policy(self, bucket_name: str, policy: str) -> None: | CODE |
| LOW | …st/unit/knowledge/test_evaluation_task_cancellation.py | 18 | async def set_progress(self, progress: float, message: str | None = None) -> None: | CODE |
| LOW | …st/unit/knowledge/test_evaluation_task_cancellation.py | 21 | async def set_message(self, message: str) -> None: | CODE |
| LOW⚡ | …st/unit/knowledge/test_evaluation_task_cancellation.py | 44 | async def update_dataset(self, dataset_id: str, data: dict) -> None: | CODE |
| LOW⚡ | …st/unit/knowledge/test_evaluation_task_cancellation.py | 50 | async def update_run(self, run_id: str, data: dict) -> None: | CODE |
| LOW | …nd/test/unit/services/test_knowledge_folder_service.py | 20 | async def set_progress(self, progress: float, message: str | None = None) -> None: | CODE |
| LOW | …nd/test/unit/services/test_knowledge_folder_service.py | 23 | async def set_result(self, result: dict) -> None: | CODE |
| LOW | backend/test/integration/api/test_dashboard_router.py | 20 | async def _set_conversation_statuses(subagent_thread_id: str, deleted_thread_id: str) -> None: | CODE |
| LOW | backend/server/worker_main.py | 16 | __all__ = ["WorkerSettings"] | CODE |
| LOW | backend/package/yuxi/config/__init__.py | 57 | __all__ = [ | CODE |
| LOW | backend/package/yuxi/workspace/__init__.py | 6 | __all__ = ["Workspace", "Workdir"] | CODE |
| LOW | backend/package/yuxi/agents/__init__.py | 15 | __all__ = [ | CODE |
| LOW | backend/package/yuxi/agents/buildin/chatbot/__init__.py | 5 | __all__ = ["ChatBotContext", "ChatBotState", "ChatbotAgent", "SubAgentRunState", "merge_subagent_runs"] | CODE |
| LOW | …ckend/package/yuxi/agents/buildin/subagent/__init__.py | 4 | __all__ = ["SubAgentBackend", "SubAgentContext"] | CODE |
| LOW | backend/package/yuxi/agents/backends/paths.py | 95 | __all__ = [ | CODE |
| LOW | backend/package/yuxi/agents/backends/__init__.py | 19 | __all__ = [ | CODE |
| LOW | …ckend/package/yuxi/agents/backends/sandbox/__init__.py | 11 | __all__ = [ | CODE |
| LOW | backend/package/yuxi/agents/middlewares/__init__.py | 11 | __all__ = [ | CODE |
| LOW | …nd/package/yuxi/agents/middlewares/tool_error_guard.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | backend/package/yuxi/agents/toolkits/__init__.py | 16 | __all__ = [ | CODE |
| LOW | …ckend/package/yuxi/agents/toolkits/buildin/__init__.py | 5 | __all__ = [ | CODE |
| LOW | backend/package/yuxi/agents/toolkits/kbs/__init__.py | 7 | __all__ = ["find_kb_document", "get_common_kb_tools", "open_kb_document"] | CODE |
| LOW | backend/package/yuxi/agents/toolkits/debug/__init__.py | 3 | __all__ = [] | CODE |
| LOW | backend/package/yuxi/utils/logging_config.py | 91 | __all__ = ["logger"] | CODE |
| LOW | backend/package/yuxi/utils/paths.py | 90 | __all__ = [ | CODE |
| LOW | backend/package/yuxi/utils/datetime_utils.py | 146 | __all__ = [ | CODE |
| LOW | …d/package/yuxi/repositories/conversation_repository.py | 246 | async def set_model_spec(self, conversation: Conversation, model_spec: str) -> None: | CODE |
| LOW | …d/package/yuxi/repositories/conversation_repository.py | 967 | async def _update_message_count(self, conversation_id: int) -> None: | CODE |
| LOW | backend/package/yuxi/repositories/__init__.py | 1 | __all__ = [] | CODE |
| LOW | backend/package/yuxi/models/__init__.py | 1 | __all__ = ["select_model", "select_embedding_model", "get_embedding_model_info_by_id"] | CODE |
| LOW | backend/package/yuxi/permissions/__init__.py | 19 | __all__ = [ | CODE |
| LOW | backend/package/yuxi/storage/neo4j/__init__.py | 10 | __all__ = [ | CODE |
| LOW | backend/package/yuxi/storage/redis/__init__.py | 14 | __all__ = [ | CODE |
| LOW | backend/package/yuxi/storage/minio/__init__.py | 11 | __all__ = [ | CODE |
| LOW | backend/package/yuxi/knowledge/manager.py | 632 | async def update_file_params(self, kb_id: str, file_id: str, params: dict, operator_id: str | None = None) -> None: | CODE |
| LOW | backend/package/yuxi/knowledge/manager.py | 666 | async def update_kb_query_params(self, kb_id: str, params: dict[str, Any]) -> None: | CODE |
| LOW | backend/package/yuxi/knowledge/utils/__init__.py | 14 | __all__ = [ | CODE |
| LOW | backend/package/yuxi/knowledge/chunking/__init__.py | 1 | __all__ = [] | CODE |
| LOW | …ckage/yuxi/knowledge/chunking/ragflow_like/__init__.py | 3 | __all__ = ["chunk_file", "chunk_markdown"] | CODE |
| LOW | …xi/knowledge/chunking/ragflow_like/parsers/__init__.py | 3 | __all__ = ["general", "qa", "book", "laws", "separator"] | CODE |
| LOW | backend/package/yuxi/knowledge/graphs/__init__.py | 3 | __all__ = ["MilvusGraphService"] | CODE |
| LOW | …d/package/yuxi/knowledge/graphs/extractors/__init__.py | 5 | __all__ = [ | CODE |
| LOW | …end/package/yuxi/knowledge/implementations/__init__.py | 14 | __all__ = ["MilvusKB", "DifyKB", "NotionKB", "ReadOnlyConnectors"] | CODE |
| LOW⚡ | …ckend/package/yuxi/knowledge/implementations/notion.py | 444 | def _set_cached_page_markdown(self, cache_key: tuple[str, str, str, str], content: str) -> None: | CODE |
| LOW | backend/package/yuxi/services/oidc_service.py | 719 | async def update_oidc_user_login(db, user: User) -> None: | CODE |
| LOW | backend/package/yuxi/services/task_service.py | 75 | async def set_progress(self, progress: float, message: str | None = None) -> None: | CODE |
| LOW | backend/package/yuxi/services/task_service.py | 91 | async def set_message(self, message: str) -> None: | CODE |
| LOW | backend/package/yuxi/services/task_service.py | 95 | async def set_result(self, result: Any) -> None: | CODE |
| LOW | backend/package/yuxi/services/task_service.py | 539 | __all__ = ["process_task", "tasker", "Task", "TaskContext", "Tasker"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | backend/package/yuxi/storage/minio/client.py | 403 | 异步上下文管理器:从 MinIO URL 下载文件到临时文件,使用后自动清理 Args: url: MinIO 文件 URL allowed_extensi | STRING |
| HIGH | backend/package/yuxi/knowledge/factory.py | 29 | 创建知识库实例 Args: kb_type: 知识库类型 work_dir: 工作目录 **kwargs: 其他初始化参数 | STRING |
| HIGH | backend/package/yuxi/knowledge/manager.py | 133 | 读取知识库运行配置,Redis 未命中时回源 PostgreSQL。 Args: kb_id: 数据库ID Returns: 规范化后的知识库运行配置 | STRING |
| HIGH | backend/package/yuxi/knowledge/utils/kb_utils.py | 259 | 解析MinIO URL,提取bucket名称和对象名称 支持标准 HTTP/HTTPS URL 格式: - http(s)://host/bucket-name/path/to/object Args: | STRING |
| HIGH | backend/package/yuxi/knowledge/utils/url_fetcher.py | 131 | Fetch URL content with security checks (size limit, content type, private IP blocking). Args: url: The | STRING |
| HIGH | backend/package/yuxi/knowledge/parser/factory.py | 43 | 获取文档处理器实例 (单例模式) Args: processor_type: 处理器类型 - "rapid_ocr": RapidOCR 本地 OC | STRING |
| HIGH | backend/package/yuxi/knowledge/parser/factory.py | 84 | 使用指定处理器处理文件 (便捷方法) Args: processor_type: 处理器类型 file_path: 文件路径 par | STRING |
| HIGH | backend/package/yuxi/knowledge/parser/base.py | 47 | 处理文件并返回提取的文本 Args: file_path: 文件路径 params: 处理参数 Returns: | STRING |
| HIGH | backend/package/yuxi/services/ocr_service.py | 80 | 使用当前运行时配置将文件解析为 Markdown。 这是业务代码唯一应调用的文档解析入口。函数负责区分应用层配置解析和 底层文件转换:对于 PDF 与图片等 OCR 文件,先确定最终 OCR 引擎,再从 数据库 O | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/src/components/RerankModelSelector.vue | 5 | :placeholder="placeholder" | CODE |
| LOW | web/src/components/MessageInputComponent.vue | 34 | :aria-label="placeholder" | CODE |
| LOW | web/src/components/MessageInputComponent.vue | 36 | :data-placeholder="placeholder" | CODE |
| LOW | web/src/components/AgentInputArea.vue | 14 | :placeholder="placeholder" | CODE |
| LOW | web/src/components/EmbeddingModelSelector.vue | 5 | :placeholder="placeholder" | CODE |
| LOW | web/src/components/AiTextarea.vue | 6 | :placeholder="placeholder" | CODE |
| LOW⚡ | backend/test/unit/routers/test_subagent.py | 92 | async def fake_user(): | CODE |
| LOW⚡ | backend/test/unit/routers/test_subagent.py | 96 | app.dependency_overrides[get_required_user] = fake_user | CODE |
| LOW⚡ | backend/test/unit/routers/test_subagent.py | 97 | app.dependency_overrides[get_admin_user] = fake_user | CODE |
| LOW⚡ | …ckend/test/unit/routers/test_scheduled_agent_router.py | 21 | async def fake_user(): | CODE |
| LOW⚡ | …ckend/test/unit/routers/test_scheduled_agent_router.py | 25 | app.dependency_overrides[get_required_user] = fake_user | CODE |
| LOW⚡ | …est/unit/routers/test_agent_invocation_router_split.py | 26 | async def fake_user(): | CODE |
| LOW⚡ | …est/unit/routers/test_agent_invocation_router_split.py | 29 | app.dependency_overrides[get_required_user] = fake_user | CODE |
| LOW | backend/package/yuxi/config/options.py | 140 | "placeholder": "http://mineru-api:30001", | CODE |
| LOW | backend/package/yuxi/config/options.py | 176 | "placeholder": "http://paddlex:8080", | CODE |
| LOW | backend/package/yuxi/config/options.py | 194 | "placeholder": "https://paddleocr.aistudio-app.com/api/v2/ocr/jobs", | CODE |
| LOW⚡ | backend/package/yuxi/knowledge/implementations/dify.py | 33 | "placeholder": "例如: https://api.dify.ai/v1", | CODE |
| LOW⚡ | backend/package/yuxi/knowledge/implementations/dify.py | 41 | "placeholder": "请输入 Dify API Token", | CODE |
| LOW⚡ | backend/package/yuxi/knowledge/implementations/dify.py | 48 | "placeholder": "请输入 Dify dataset_id", | CODE |
| LOW⚡ | …ckend/package/yuxi/knowledge/implementations/notion.py | 192 | "placeholder": "留空则使用 NOTION_TOKEN / NOTION_API_KEY", | CODE |
| LOW⚡ | …ckend/package/yuxi/knowledge/implementations/notion.py | 200 | "placeholder": "请输入 Notion data_source_id", | CODE |
| LOW⚡ | …ckend/package/yuxi/knowledge/implementations/notion.py | 208 | "placeholder": NOTION_DEFAULT_VERSION, | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/test/unit/services/test_agent_run_service.py | 1958 | CODE | |
| LOW | backend/test/unit/services/test_agent_run_service.py | 290 | CODE | |
| LOW | …est/unit/services/test_chat_service_langfuse_stream.py | 120 | CODE | |
| LOW | …est/unit/services/test_chat_service_langfuse_stream.py | 589 | CODE | |
| LOW | backend/test/unit/services/test_subagent_run_service.py | 106 | CODE | |
| LOW | backend/server/routers/dashboard_router.py | 290 | CODE | |
| LOW | backend/server/routers/workspace_router.py | 161 | CODE | |
| LOW | backend/server/routers/knowledge_router.py | 240 | CODE | |
| LOW | backend/package/yuxi/workspace/filesystem.py | 41 | CODE | |
| LOW | backend/package/yuxi/agents/toolkits/registry.py | 39 | CODE | |
| LOW | backend/package/yuxi/agents/mcp/service.py | 413 | CODE | |
| LOW | backend/package/yuxi/agents/mcp/service.py | 462 | CODE | |
| LOW | …kend/package/yuxi/repositories/agent_run_repository.py | 251 | CODE | |
| LOW | backend/package/yuxi/repositories/agent_repository.py | 236 | CODE | |
| LOW | backend/package/yuxi/repositories/agent_repository.py | 304 | CODE | |
| LOW | backend/package/yuxi/models/embed.py | 19 | CODE | |
| LOW | backend/package/yuxi/storage/minio/client.py | 165 | CODE | |
| LOW | backend/package/yuxi/storage/minio/client.py | 279 | CODE | |
| LOW | backend/package/yuxi/knowledge/manager.py | 767 | CODE | |
| LOW | backend/package/yuxi/services/chat_service.py | 518 | CODE | |
| LOW | backend/package/yuxi/services/chat_service.py | 683 | CODE | |
| LOW | packages/yuxi-cli/src/yuxi_cli/main.py | 189 | CODE | |
| LOW | packages/yuxi-cli/src/yuxi_cli/main.py | 319 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | backend/test/integration/api/test_apikey_router.py | 109 | # Create a key | COMMENT |
| MEDIUM | backend/test/integration/api/test_apikey_router.py | 150 | # Create a key | COMMENT |
| MEDIUM⚡ | backend/test/integration/api/test_apikey_router.py | 256 | # Create an API key | COMMENT |
| MEDIUM⚡ | backend/test/integration/api/test_apikey_router.py | 285 | # Create an API key | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | README.en.md | 123 | ### 02 · Knowledge Bases and RAG | COMMENT |
| MEDIUM | README.md | 126 | ### 02 · 知识库与 RAG | COMMENT |
| MEDIUM | docs/develop-guides/decisions/README.md | 58 | `simplification` 提案和 implemented 记录还必须分别在 `## 验收标准` 或 `## 验证` 中包含 `旧能力不存在:` 与 `重新引入条件:`,避免只增加替代物而不删除旧表面。`rejected` 说明拒绝原 | CODE |
| MEDIUM | docs/intro/project-overview.md | 30 | ### 知识库与 RAG | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | backend/test/unit/test_live_api_cleanup.py | 73 | def handle_request(request: httpx.Request) -> httpx.Response: | CODE |
| LOW | backend/test/unit/test_live_api_cleanup.py | 32 | def handle_request(request: httpx.Request) -> httpx.Response: | CODE |
| LOW | backend/test/unit/test_live_api_cleanup.py | 58 | def handle_request(request: httpx.Request) -> httpx.Response: | CODE |
| LOW | backend/test/unit/test_live_api_cleanup.py | 141 | def handle_request(request: httpx.Request) -> httpx.Response: | CODE |
| LOW | backend/test/unit/test_live_api_cleanup.py | 164 | def handle_request(request: httpx.Request) -> httpx.Response: | CODE |
| LOW | backend/test/unit/test_live_api_cleanup.py | 225 | def handle_request(request: httpx.Request) -> httpx.Response: | CODE |
| LOW | backend/test/unit/test_live_api_cleanup.py | 284 | def handle_request(request: httpx.Request) -> httpx.Response: | CODE |
| LOW | backend/test/unit/test_live_api_cleanup.py | 325 | def handle_request(request: httpx.Request) -> httpx.Response: | CODE |
| LOW | backend/test/unit/test_live_api_cleanup.py | 394 | def handle_request(request: httpx.Request) -> httpx.Response: | CODE |
| LOW | backend/test/unit/test_live_api_cleanup.py | 465 | def handle_request(request: httpx.Request) -> httpx.Response: | CODE |
| LOW | backend/test/unit/test_live_api_cleanup.py | 516 | def handle_request(request: httpx.Request) -> httpx.Response: | CODE |
| LOW | backend/test/unit/test_live_api_cleanup.py | 565 | def handle_request(request: httpx.Request) -> httpx.Response: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | web/test/unit/agentRuntimeConfigVisibility.test.js | 51 | state.configurableItems.value.knowledges.options.push({ value: 'kb-a', label: '知识库 A' }) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/server/routers/knowledge_router.py | 1076 | # Check if it is a folder | COMMENT |
| LOW | backend/server/routers/knowledge_router.py | 1122 | # Check if it is a folder | COMMENT |
| LOW⚡ | backend/package/yuxi/agents/backends/sandbox/backend.py | 684 | # Check if old_string exists | STRING |
| LOW | backend/package/yuxi/knowledge/utils/url_validator.py | 39 | # Check if URL has a valid scheme | COMMENT |
| LOW | backend/package/yuxi/knowledge/utils/url_validator.py | 58 | # Check if hostname is in whitelist | COMMENT |
| LOW | backend/package/yuxi/knowledge/utils/url_validator.py | 63 | # Check if hostname ends with the domain (or matches exactly) | COMMENT |
| LOW | scripts/init.sh | 193 | # Check if .env file exists | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | backend/package/yuxi/models/providers/builtin.py | 21 | # "provider_id": "anthropic", | COMMENT |
| LOW | scripts/bump-version.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/bump-version.sh | 21 | # - 用户只说“更新 tag”或“添加 tag”时,先读取 backend/package/pyproject.toml: | COMMENT |
| LOW | scripts/bump-version.sh | 41 | # git tag v0.7.1.dev2 | COMMENT |
| LOW | scripts/dependency-audit-fixtures/vulnerable.py | 1 | # /// script | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …nd/test/unit/knowledge/test_knowledge_runtime_cache.py | 194 | CODE |