AI Slop Code RIsk Monitor

zhouxiaoka/autoclip

AutoClip|一个链接,一键出片。开源 AI 视频剪辑桌面工具,将播客、访谈、课程等长视频自动剪成短视频,生成字幕、封面和发布文案,适配抖音、小红书、TikTok、Reels 与 YouTube Shorts。Open-source AI video clipping & content repurposing.

20.7 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for zhouxiaoka/autoclip, a Python project with 9,329 GitHub stars. SynthScan examined 194,743 lines of code across 1007 source files, recording 3522 pattern matches distributed across 17 syntactic categories. The legacy adjusted pattern signal is 20.7 (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.

20.7
Adjusted Signal
20.7
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
9.3K
Stars
Python
Language
194.7K
Lines of Code
1.0K
Files
3.5K
Pattern Hits
2026-10-12
Scan Date
0.08
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 40.9/100 · MEDIUM

Can maintainers explain intent, assumptions, and trade-offs? 1914 finding(s).

Hallucinated Dependency & Supply Chain Risk 11.8/100 · LOW

Are imports declared and package/API names verified? 478 finding(s).

Agent Over-Engineering Ratio 57.4/100 · HIGH

Are wrappers, guards, and repeated structures necessary? 2807 finding(s).

PR Review Velocity Impact 64.7/100 · HIGH

Which changes need focused human review? 3522 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

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.

CRITICAL 0HIGH 79MEDIUM 67LOW 3376

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 3522 distinct pattern matches across 17 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.

Hyper-Verbose Identifiers1671 hits · 1817 pts
SeverityFileLineSnippetContext
LOWfrontend/src/features/studio/outputVariantPublish.ts11export function outputVariantPublishTarget(search: string) {CODE
LOWfrontend/src/features/studio/editingStyleClient.ts9export async function requestStyleRecommendation(input: { url?: string; file?: File | null }, signal: AbortSignal): PromCODE
LOWfrontend/src/features/studio/editingStyle.ts74export function selectionAfterRecommendation(manual: EditingStyle | null, recommended: EditingStyle | null, current: EdiCODE
LOWfrontend/src/utils/domTranslationGuard.ts32export function installDomTranslationGuard(): void {CODE
LOWfrontend/src/analytics/posthog.ts74export function onAnalyticsPreferenceChange(listener: () => void): () => void {CODE
LOWfrontend/src/analytics/events.ts79export function trackExampleProjectOpened(): void {CODE
LOWfrontend/src/analytics/studio.ts30export function trackQuickOutputPlatforms(properties: Record<string, unknown>) {CODE
LOWfrontend/src/analytics/studio.ts45export function trackTemplatePreviewPlayed(properties: Record<string, unknown>) {CODE
LOWfrontend/src/analytics/studio.ts49export function trackTemplatePreviewFailed(properties: Record<string, unknown>) {CODE
LOWbackend/cli.py538def _print_opencode_next_steps() -> None:CODE
LOWbackend/pipeline/step5_clustering.py140 def _create_collections_from_pre_clusters(self, pre_clusters: Dict[str, List[str]], clips_with_titles: List[Dict]) -CODE
LOWbackend/pipeline/step5_clustering.py248 def _create_default_collections(self, clips_with_titles: List[Dict]) -> List[Dict]:CODE
LOWbackend/pipeline/step2_timeline.py244 def _parse_and_validate_response(self, response: str, chunk_start: str, chunk_end: str, chunk_index: int) -> List[DiCODE
LOWbackend/pipeline/failures.py59def looks_like_llm_setup_error(text: str) -> bool:CODE
LOWbackend/pipeline/failures.py152def timeline_failure_from_report(topic_count: int, report: dict) -> PipelineFailure:CODE
LOWbackend/pipeline/failures.py203def cloud_transcription_failure(message: str) -> PipelineFailure:CODE
LOWbackend/pipeline/failures.py248def failure_from_speech_error(message: str) -> PipelineFailure:CODE
LOWbackend/pipeline/step3_scoring.py23def resolve_min_score_threshold() -> float:CODE
LOWbackend/tasks/notification.py20def send_processing_notification(self, project_id: str, task_id: str, message: str, notification_type: str = 'info') -> CODE
LOWbackend/tasks/notification.py128def send_completion_notification(self, project_id: str, task_id: str, result: Dict[str, Any]) -> Dict[str, Any]:CODE
LOWbackend/tasks/data_cleanup.py113def _cleanup_expired_projects(db: SessionLocal, days: int) -> int:CODE
LOWbackend/tasks/import_processing.py106def _message_is_missing_credential(error: str, error_code: str) -> bool:CODE
LOWbackend/tasks/import_processing.py113def import_failure_kind_for_type(type_name: str) -> Optional[str]:CODE
LOWbackend/tasks/import_processing.py126def fingerprint_for_import_kind(kind: str) -> Optional[list[str]]:CODE
LOWbackend/tasks/import_processing.py208def _generate_import_subtitle(task, project_id: str, video_path: str):CODE
LOWbackend/tasks/video.py43def generate_video_collections(self, project_id: str, collection_data: List[Dict[str, Any]]) -> Dict[str, Any]:CODE
LOWbackend/core/sentry_setup.py113def _import_monitoring_fields(event: dict, hint: Optional[dict]) -> tuple[Optional[str], Optional[list[str]]]:CODE
LOWbackend/core/shared_config.py292 def ensure_project_directories(self, project_id: str):CODE
LOWbackend/core/desktop_config.py195 def celery_worker_concurrency(self) -> int:CODE
LOWbackend/core/desktop_config.py338def ensure_desktop_directories() -> bool:CODE
LOWbackend/core/celery_simple_fixed.py92def backend_process_video_pipeline(self, project_id: str, input_video_path: str, input_srt_path: str, *args, **kwargs):CODE
LOWbackend/core/celery_simple_fixed.py188def backend_process_single_step(self, project_id: str, step: str, config: dict, *args, **kwargs):CODE
LOWbackend/core/llm_providers.py388def uses_max_completion_tokens(model: Optional[str], base_url: Optional[str]) -> bool:CODE
LOWbackend/core/llm_providers.py403def asks_for_max_completion_tokens(message: Any) -> bool:CODE
LOWbackend/core/windows_asyncio.py37def install_windows_proactor_cleanup() -> bool:CODE
LOWbackend/core/llm_manager.py40 def _reload_if_settings_changed(self) -> None:CODE
LOWbackend/core/llm_manager.py49 def _get_default_settings_file(self) -> Path:CODE
LOWbackend/core/llm_manager.py326 def openai_compatible_endpoint(self) -> Optional[Dict[str, str]]:CODE
LOWbackend/core/llm_manager.py365 def _get_api_key_for_provider(self, provider_type: ProviderType) -> Optional[str]:CODE
LOWbackend/core/llm_manager.py470 def get_current_provider_info(self) -> Dict[str, Any]:CODE
LOWbackend/core/llm_manager.py503 def _get_provider_display_name(self, provider_type: ProviderType) -> str:CODE
LOWbackend/core/model_catalog.py341def _extract_openai_model_ids(payload) -> List[str]:CODE
LOWbackend/core/model_catalog.py356def _extract_gemini_model_ids(payload: dict) -> List[str]:CODE
LOWbackend/core/model_catalog.py380async def fetch_openai_compatible_models(base_url: str, api_key: str) -> List[str]:CODE
LOW⚡backend/core/unified_paths.py99 def get_project_raw_directory(self, project_id: str) -> Path:CODE
LOW⚡backend/core/unified_paths.py105 def get_project_output_directory(self, project_id: str) -> Path:CODE
LOW⚡backend/core/unified_paths.py111 def get_project_clips_directory(self, project_id: str) -> Path:CODE
LOW⚡backend/core/unified_paths.py117 def get_project_collections_directory(self, project_id: str) -> Path:CODE
LOWbackend/core/error_middleware.py103def handle_autoclips_exception(exc: AutoClipsException, request_id: str = None) -> JSONResponse:CODE
LOWbackend/core/error_middleware.py158def handle_starlette_http_exception(exc: StarletteHTTPException, request_id: str = None) -> JSONResponse:CODE
LOWbackend/core/error_middleware.py179def get_status_code_for_category(category: ErrorCategory) -> int:CODE
LOWbackend/core/error_middleware.py193def get_status_code_for_service_error(error_code) -> int:CODE
LOWbackend/core/project_enum_migration.py37def normalize_legacy_project_enums(engine: Engine) -> int:CODE
LOW⚡backend/core/unified_storage.py69 def get_project_raw_directory(self, project_id: str) -> Path:CODE
LOW⚡backend/core/unified_storage.py75 def get_project_output_directory(self, project_id: str) -> Path:CODE
LOW⚡backend/core/unified_storage.py81 def get_project_clips_directory(self, project_id: str) -> Path:CODE
LOW⚡backend/core/unified_storage.py87 def get_project_collections_directory(self, project_id: str) -> Path:CODE
LOW⚡backend/core/unified_storage.py93 def get_project_metadata_directory(self, project_id: str) -> Path:CODE
LOWbackend/core/image_providers.py430def _generate_legacy_dashscope(*, api_key, base_url, request, session, cancel, poll_interval):CODE
LOWbackend/core/cloud_presets.py111def normalize_cloud_preset_key(name: Optional[str]) -> Optional[str]:CODE
1611 more matches not shown…
Excessive Try-Catch Wrapping891 hits · 924 pts
SeverityFileLineSnippetContext
LOWclean_database.py51 except Exception as e:CODE
LOWdocker-entrypoint.sh15except Exception as error:CODE
LOWbackend/app_factory.py39 except Exception as e: # noqa: BLE001CODE
LOW⚡backend/app_factory.py94 except Exception:CODE
LOW⚡backend/app_factory.py100 except Exception:CODE
LOW⚡backend/app_factory.py106 except Exception:CODE
LOWbackend/app_factory.py203 except Exception as e:CODE
MEDIUMbackend/app_factory.py196def root_health():CODE
LOWbackend/cli.py159 except Exception as e: # noqa: BLE001CODE
LOWbackend/cli.py314 except Exception as e: # noqa: BLE001CODE
LOWbackend/cli.py374 except Exception as e: # noqa: BLE001CODE
LOWbackend/cli.py506 except Exception as e: # noqa: BLE001CODE
MEDIUMbackend/cli.py156def _cmd_run_body(args, outcome, configure_llm, prepare_project, run_pipeline, sCODE
LOWbackend/desktop_main.py130 except Exception as e:CODE
LOWbackend/desktop_main.py164 except Exception as e:CODE
LOWbackend/desktop_main.py189 except Exception as e:CODE
LOWbackend/desktop_main.py208 except Exception as e:CODE
LOWbackend/desktop_main.py227 except Exception as error: # noqa: BLE001 - keep going: exiting matters moreCODE
LOWbackend/desktop_main.py236 except Exception as error: # noqa: BLE001CODE
LOWbackend/desktop_main.py279 except Exception as e:CODE
LOWbackend/desktop_main.py339 except Exception as e:CODE
LOWbackend/mcp_server.py165 except Exception as e: # noqa: BLE001CODE
LOWbackend/mcp_server.py221 except Exception: # noqa: BLE001CODE
LOWbackend/mcp_server.py310 except Exception as e: # noqa: BLE001CODE
LOWbackend/mcp_server.py347 except Exception as e: # noqa: BLE001CODE
LOWbackend/mcp_server.py360 except Exception as e: # noqa: BLE001CODE
LOWbackend/mcp_server.py379 except Exception as e: # noqa: BLE001CODE
LOWbackend/mcp_server.py396 except Exception as e: # noqa: BLE001CODE
LOWbackend/mcp_server.py491 except Exception:CODE
LOWbackend/init_db.py86 except Exception as e:CODE
LOWbackend/pipeline/step4_title.py103 except Exception as e:CODE
LOWbackend/pipeline/step5_clustering.py88 except Exception as e:CODE
LOWbackend/pipeline/step5_clustering.py242 except Exception as e:CODE
LOWbackend/pipeline/step2_timeline.py148 except Exception as call_error:CODE
LOWbackend/pipeline/step2_timeline.py178 except Exception as parse_error:CODE
LOWbackend/pipeline/step2_timeline.py185 except Exception as e:CODE
LOWbackend/pipeline/step2_timeline.py213 except Exception as e:CODE
LOWbackend/pipeline/step2_timeline.py233 except Exception as e: # noqa: BLE001CODE
LOWbackend/pipeline/step2_timeline.py321 except Exception as e:CODE
LOWbackend/pipeline/step2_timeline.py328 except Exception as e:CODE
LOWbackend/pipeline/step2_timeline.py391 except Exception as e:CODE
LOWbackend/pipeline/clip_finder.py78 except Exception as error: # noqa: BLE001 - unknown provider: keep the established cloud windowsCODE
LOWbackend/pipeline/clip_finder.py197 except Exception as error: # noqa: BLE001 - one retry with the reason, then this window is lostCODE
LOWbackend/pipeline/step1_outline.py64 except Exception as e:CODE
LOWbackend/pipeline/step1_outline.py106 except Exception as e:CODE
LOWbackend/pipeline/concurrency.py32 except Exception: # noqa: BLE001 - unknown provider: stay conservative but parallelCODE
LOWbackend/pipeline/media_precheck.py66 except Exception as error: # noqa: BLE001 - a precheck must never break the run it guardsCODE
LOWbackend/pipeline/step3_scoring.py36 except Exception as e: # noqa: BLE001CODE
LOWbackend/pipeline/step3_scoring.py87 except Exception as e:CODE
LOWbackend/pipeline/step3_scoring.py142 except Exception as e:CODE
LOWbackend/pipeline/quality.py143 except Exception as e: # noqa: BLE001CODE
LOWbackend/pipeline/quality.py184 except Exception as e: # noqa: BLE001CODE
LOWbackend/pipeline/quality.py474 except Exception: # noqa: BLE001CODE
LOWbackend/tasks/upload.py128 except Exception as e:CODE
LOWbackend/tasks/upload.py197 except Exception as e:CODE
LOWbackend/tasks/maintenance.py67 except Exception as e:CODE
LOWbackend/tasks/maintenance.py81 except Exception as e:CODE
LOWbackend/tasks/maintenance.py109 except Exception as e:CODE
LOWbackend/tasks/maintenance.py119 except Exception as e:CODE
LOWbackend/tasks/maintenance.py132 except Exception as e:CODE
831 more matches not shown…
Unused Imports468 hits · 444 pts
SeverityFileLineSnippetContext
LOWclean_database.py6CODE
LOWclean_database.py18CODE
LOWinit_database.py8CODE
LOWbackend/app_factory.py86CODE
LOWbackend/app_factory.py86CODE
LOWbackend/cli.py19CODE
LOWbackend/mcp_server.py30CODE
LOWbackend/init_db.py17CODE
LOWbackend/init_db.py22CODE
LOWbackend/pipeline/step4_title.py6CODE
LOWbackend/pipeline/step4_title.py7CODE
LOWbackend/pipeline/step5_clustering.py6CODE
LOWbackend/pipeline/step5_clustering.py7CODE
LOWbackend/pipeline/clip_finder.py18CODE
LOWbackend/pipeline/step1_outline.py7CODE
LOWbackend/pipeline/concurrency.py8CODE
LOWbackend/pipeline/media_precheck.py13CODE
LOWbackend/pipeline/failures.py8CODE
LOWbackend/pipeline/step6_video.py6CODE
LOWbackend/pipeline/step6_video.py7CODE
LOWbackend/pipeline/step6_video.py12CODE
LOWbackend/pipeline/step6_video.py12CODE
LOWbackend/pipeline/step3_scoring.py6CODE
LOWbackend/pipeline/step3_scoring.py7CODE
LOWbackend/pipeline/scoring_backend.py2CODE
LOWbackend/pipeline/quality.py14CODE
LOWbackend/tasks/upload.py6CODE
LOWbackend/tasks/upload.py7CODE
LOWbackend/tasks/maintenance.py5CODE
LOWbackend/tasks/maintenance.py10CODE
LOWbackend/tasks/maintenance.py10CODE
LOWbackend/tasks/maintenance.py11CODE
LOWbackend/tasks/maintenance.py13CODE
LOWbackend/tasks/maintenance.py16CODE
LOWbackend/tasks/maintenance.py16CODE
LOWbackend/tasks/notification.py5CODE
LOWbackend/tasks/notification.py7CODE
LOWbackend/tasks/notification.py10CODE
LOWbackend/tasks/notification.py13CODE
LOWbackend/tasks/notification.py13CODE
LOWbackend/tasks/notification.py14CODE
LOWbackend/tasks/data_cleanup.py6CODE
LOWbackend/tasks/data_cleanup.py11CODE
LOWbackend/tasks/data_cleanup.py12CODE
LOWbackend/tasks/data_cleanup.py14CODE
LOWbackend/tasks/data_cleanup.py16CODE
LOWbackend/tasks/data_cleanup.py21CODE
LOWbackend/tasks/scheduler.py7CODE
LOWbackend/tasks/processing.py5CODE
LOWbackend/tasks/processing.py9CODE
LOWbackend/tasks/processing.py10CODE
LOWbackend/tasks/processing.py15CODE
LOWbackend/tasks/processing.py32CODE
LOWbackend/tasks/import_processing.py9CODE
LOWbackend/tasks/video.py5CODE
LOWbackend/tasks/video.py7CODE
LOWbackend/tasks/video.py8CODE
LOWbackend/tasks/video.py10CODE
LOWbackend/core/config.py6CODE
LOWbackend/core/sentry_setup.py7CODE
408 more matches not shown…
Empty Error Handlers68 hits · 340 pts
SeverityFileLineSnippetContext
HIGHbackend/mcp_server.py221except Exception: # noqa: BLE001CODE
HIGHbackend/pipeline/concurrency.py32except Exception: # noqa: BLE001 - unknown provider: stay conservative but parallelCODE
HIGHbackend/pipeline/concurrency.py24except ValueError:CODE
HIGHbackend/core/database.py28except ImportError:CODE
HIGHbackend/core/database.py109except Exception:CODE
HIGHbackend/core/windows_asyncio.py24except ConnectionResetError:CODE
HIGHbackend/core/parent_watch.py107except psutil.Error:CODE
HIGHbackend/core/parent_watch.py113except psutil.Error:CODE
HIGHbackend/core/error_middleware.py85except Exception:CODE
HIGHbackend/core/llm_usage.py83except OSError:CODE
HIGHbackend/core/llm_usage.py134except OSError:CODE
HIGHbackend/core/model_registry.py189except Exception:CODE
HIGHbackend/core/model_registry.py58except OSError:CODE
HIGHbackend/core/model_registry.py66except OSError:CODE
HIGHbackend/core/project_cancellation.py318except FileNotFoundError:CODE
HIGHbackend/core/project_cancellation.py250except OSError:CODE
HIGHbackend/core/project_cancellation.py451except OSError:CODE
HIGHbackend/core/project_cancellation.py442except OSError:CODE
HIGHbackend/core/websocket_manager.py51except asyncio.CancelledError:CODE
HIGHbackend/tests/test_mcp_jobs.py126except cancel.JobStopped:CODE
HIGHbackend/tests/test_parent_watch.py226except ProcessLookupError:CODE
HIGHbackend/utils/thumbnail_generator.py253except:CODE
HIGHbackend/utils/performance_monitor.py131except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):CODE
HIGHbackend/utils/performance_monitor.py270except asyncio.CancelledError:CODE
HIGHbackend/utils/ffmpeg_utils.py48except OSError:CODE
HIGHbackend/api/v1/youtube.py102except Exception:CODE
HIGHbackend/api/v1/projects.py507except:CODE
HIGHbackend/services/whisper_model_manager.py39except Exception: # noqa: BLE001CODE
HIGHbackend/services/whisper_model_manager.py76except Exception: # noqa: BLE001CODE
HIGHbackend/services/cover.py283except OSError:CODE
HIGHbackend/services/packaging_runtime.py130except Exception:CODE
HIGHbackend/services/packaging_runtime.py513except Exception:CODE
HIGHbackend/services/packaging_runtime.py509except Exception:CODE
HIGHbackend/services/simple_pipeline_adapter.py100except FileNotFoundError:CODE
HIGHbackend/services/simple_pipeline_adapter.py121except Exception: # noqa: BLE001CODE
HIGHbackend/services/simple_pipeline_adapter.py134except Exception: # noqa: BLE001CODE
HIGHbackend/services/pipeline_adapter.py132except Exception:CODE
HIGHbackend/services/pipeline_adapter.py147except Exception:CODE
HIGHbackend/services/pip_install.py129except Exception:CODE
HIGHbackend/services/pip_install.py150except Exception:CODE
HIGHbackend/services/sensevoice_runtime.py63except RuntimeError:CODE
HIGHbackend/services/websocket_gateway_service.py83except asyncio.CancelledError:CODE
HIGHbackend/services/bilibili_publisher.py143except OSError:CODE
HIGHbackend/services/upload_post_publisher.py132except OSError:CODE
HIGHbackend/services/upload_post_publisher.py551except (OSError, ValueError):CODE
HIGHbackend/services/mcp_jobs.py161except OSError:CODE
HIGHbackend/services/quick_output_runner.py95except psutil.AccessDenied:CODE
HIGHbackend/services/whisper_runtime.py103except Exception:CODE
HIGHbackend/services/simple_progress.py232except ValueError:CODE
HIGHbackend/services/simple_progress.py63except Exception:CODE
HIGHbackend/services/bilibili_service.py477except:CODE
HIGHbackend/services/bilibili_service.py695except:CODE
HIGHbackend/services/studio/intelligence.py236except OSError:CODE
HIGHbackend/services/studio/jobs.py301except FileNotFoundError:CODE
HIGHbackend/services/studio/jobs.py203except FileNotFoundError:CODE
HIGHbackend/services/studio/jobs.py278except FileNotFoundError:CODE
HIGHbackend/services/studio/jobs.py1570except FileNotFoundError:CODE
HIGHbackend/services/studio/jobs.py1727except FileNotFoundError:CODE
HIGHbackend/services/studio/jobs.py187except (FileNotFoundError, project_cancellation.ProjectDeleted):CODE
HIGHbackend/services/studio/cover_design.py34except (OSError, ValueError, AttributeError):CODE
8 more matches not shown…
Deep Nesting218 hits · 188 pts
SeverityFileLineSnippetContext
LOWbackend/cli.py384CODE
LOWbackend/cli.py398CODE
LOWbackend/cli.py543CODE
LOWbackend/desktop_main.py169CODE
LOWbackend/pipeline/step4_title.py36CODE
LOWbackend/pipeline/step4_title.py53CODE
LOWbackend/pipeline/step5_clustering.py193CODE
LOWbackend/pipeline/step2_timeline.py43CODE
LOWbackend/pipeline/step2_timeline.py244CODE
LOWbackend/pipeline/step2_timeline.py346CODE
LOWbackend/pipeline/step2_timeline.py97CODE
LOWbackend/pipeline/step1_outline.py179CODE
LOWbackend/pipeline/quality.py283CODE
LOWbackend/tasks/upload.py18CODE
LOWbackend/tasks/maintenance.py24CODE
LOWbackend/tasks/data_cleanup.py165CODE
LOWbackend/tasks/data_cleanup.py212CODE
LOWbackend/tasks/data_cleanup.py251CODE
LOWbackend/tasks/processing.py66CODE
LOWbackend/tasks/processing.py249CODE
LOWbackend/tasks/import_processing.py208CODE
LOWbackend/tasks/import_processing.py323CODE
LOWbackend/core/shared_config.py217CODE
LOWbackend/core/shared_config.py235CODE
LOWbackend/core/database.py42CODE
LOWbackend/core/llm_providers.py126CODE
LOWbackend/core/llm_manager.py91CODE
LOWbackend/core/llm_manager.py326CODE
LOWbackend/core/unified_paths.py151CODE
LOWbackend/core/error_middleware.py67CODE
LOWbackend/core/unified_storage.py183CODE
LOWbackend/core/llm_usage.py117CODE
LOWbackend/core/model_registry.py47CODE
LOWbackend/core/model_registry.py166CODE
LOWbackend/core/project_cancellation.py212CODE
LOWbackend/core/project_cancellation.py418CODE
LOWbackend/core/project_cancellation.py475CODE
LOWbackend/core/image_providers.py251CODE
LOWbackend/core/image_providers.py592CODE
LOWbackend/core/path_utils.py170CODE
LOWbackend/core/unified_config.py172CODE
LOWbackend/core/unified_config.py265CODE
LOWbackend/core/error_middleware_v2.py54CODE
LOWbackend/core/websocket_manager.py71CODE
LOWbackend/tests/test_project_cancellation.py207CODE
LOWbackend/tests/test_studio_read_failure.py832CODE
LOWbackend/tests/test_parent_watch.py203CODE
LOWbackend/tests/render_ffmpeg_golden.py241CODE
LOWbackend/utils/thumbnail_generator.py119CODE
LOWbackend/utils/speech_recognizer.py804CODE
LOWbackend/utils/speech_recognizer.py345CODE
LOWbackend/utils/speech_recognizer.py663CODE
LOWbackend/utils/video_processor.py418CODE
LOWbackend/utils/api_key_manager.py201CODE
LOWbackend/utils/api_key_manager.py254CODE
LOWbackend/utils/text_processor.py30CODE
LOWbackend/utils/video_editor.py198CODE
LOWbackend/utils/video_editor.py296CODE
LOWbackend/utils/subtitle_processor.py20CODE
LOWbackend/utils/concurrency_manager.py173CODE
158 more matches not shown…
Modern Structural Boilerplate146 hits · 146 pts
SeverityFileLineSnippetContext
LOWbackend/app_factory.py20logger = logging.getLogger(__name__)CODE
LOWbackend/main.py9logger = logging.getLogger(__name__)CODE
LOWbackend/mcp_server.py50logger = logging.getLogger(__name__)CODE
LOWbackend/pipeline/step4_title.py16logger = logging.getLogger(__name__)CODE
LOWbackend/pipeline/step5_clustering.py14logger = logging.getLogger(__name__)CODE
LOWbackend/pipeline/step2_timeline.py19logger = logging.getLogger(__name__)CODE
LOWbackend/pipeline/clip_finder.py29logger = logging.getLogger(__name__)CODE
LOWbackend/pipeline/step1_outline.py20logger = logging.getLogger(__name__)CODE
LOWbackend/pipeline/media_precheck.py24logger = logging.getLogger(__name__)CODE
LOWbackend/pipeline/step6_video.py14logger = logging.getLogger(__name__)CODE
LOWbackend/pipeline/step3_scoring.py17logger = logging.getLogger(__name__)CODE
LOWbackend/pipeline/quality.py24logger = logging.getLogger(__name__)CODE
LOWbackend/tasks/upload.py14logger = logging.getLogger(__name__)CODE
LOWbackend/tasks/maintenance.py20logger = logging.getLogger(__name__)CODE
LOWbackend/tasks/notification.py16logger = logging.getLogger(__name__)CODE
LOWbackend/tasks/data_cleanup.py23logger = logging.getLogger(__name__)CODE
LOWbackend/tasks/__init__.py8__all__ = [CODE
LOWbackend/tasks/scheduler.py12logger = logging.getLogger(__name__)CODE
LOWbackend/tasks/processing.py22logger = logging.getLogger(__name__)CODE
LOWbackend/tasks/import_processing.py16logger = logging.getLogger(__name__)CODE
LOWbackend/tasks/video.py12logger = logging.getLogger(__name__)CODE
LOWbackend/core/sentry_setup.py16logger = logging.getLogger(__name__)CODE
LOWbackend/core/llm_providers.py15logger = logging.getLogger(__name__)CODE
LOWbackend/core/parent_watch.py19logger = logging.getLogger(__name__)CODE
LOWbackend/core/llm_manager.py16logger = logging.getLogger(__name__)CODE
LOWbackend/core/model_catalog.py16logger = logging.getLogger(__name__)CODE
LOWbackend/core/error_middleware.py21logger = logging.getLogger(__name__)CODE
LOWbackend/core/project_enum_migration.py29logger = logging.getLogger(__name__)CODE
LOWbackend/core/unified_storage.py13logger = logging.getLogger(__name__)CODE
LOWbackend/core/llm_usage.py50def set_stage(name: str) -> None:CODE
LOWbackend/core/project_cancellation.py31logger = logging.getLogger(__name__)CODE
LOWbackend/core/image_providers.py27logger = logging.getLogger(__name__)CODE
LOWbackend/core/unified_config.py16logger = logging.getLogger(__name__)CODE
LOWbackend/core/error_middleware_v2.py30logger = logging.getLogger(__name__)CODE
LOWbackend/core/websocket_manager.py13logger = logging.getLogger(__name__)CODE
LOWbackend/utils/thumbnail_generator.py13logger = logging.getLogger(__name__)CODE
LOWbackend/utils/speech_recognizer.py19logger = logging.getLogger(__name__)CODE
LOWbackend/utils/video_processor.py24logger = logging.getLogger(__name__)CODE
LOWbackend/utils/api_key_manager.py19logger = logging.getLogger(__name__)CODE
LOWbackend/utils/text_processor.py24logger = logging.getLogger(__name__)CODE
LOWbackend/utils/video_editor.py10logger = logging.getLogger(__name__)CODE
LOWbackend/utils/performance_monitor.py17logger = logging.getLogger(__name__)CODE
LOWbackend/utils/chunked_upload.py18logger = logging.getLogger(__name__)CODE
LOWbackend/utils/subtitle_processor.py9logger = logging.getLogger(__name__)CODE
LOWbackend/utils/crypto.py13logger = logging.getLogger(__name__)CODE
LOWbackend/utils/task_submission_utils.py11logger = logging.getLogger(__name__)CODE
LOWbackend/utils/concurrency_manager.py16logger = logging.getLogger(__name__)CODE
LOWbackend/utils/llm_client.py35logger = logging.getLogger(__name__)CODE
LOWbackend/utils/transcription_progress.py14logger = logging.getLogger(__name__)CODE
LOWbackend/utils/ffmpeg_utils.py20logger = logging.getLogger(__name__)CODE
LOWbackend/utils/error_handler.py12logger = logging.getLogger(__name__)CODE
LOWbackend/utils/project_manager.py26logger = logging.getLogger(__name__)CODE
LOWbackend/utils/bilibili_downloader.py26logger = logging.getLogger(__name__)CODE
LOWbackend/repositories/__init__.py7__all__ = [CODE
LOWbackend/repositories/task_repository.py13logger = logging.getLogger(__name__)CODE
LOWbackend/shared/progress_publisher.py15logger = logging.getLogger(__name__)CODE
LOWbackend/models/__init__.py12__all__ = [CODE
LOWbackend/models/lenient_enum.py23logger = logging.getLogger(__name__)CODE
LOWbackend/schemas/__init__.py12__all__ = [CODE
LOWbackend/scripts/fix_project_thumbnails.py23logger = logging.getLogger(__name__)CODE
86 more matches not shown…
Decorative Section Separators24 hits · 84 pts
SeverityFileLineSnippetContext
MEDIUMscripts/runtime/start.sh28# =============================================================================COMMENT
MEDIUMscripts/runtime/start.sh30# =============================================================================COMMENT
MEDIUMscripts/runtime/start.sh52# =============================================================================COMMENT
MEDIUMscripts/runtime/start.sh54# =============================================================================COMMENT
MEDIUMscripts/runtime/start.sh77# =============================================================================COMMENT
MEDIUMscripts/runtime/start.sh79# =============================================================================COMMENT
MEDIUMscripts/runtime/start.sh136# =============================================================================COMMENT
MEDIUMscripts/runtime/start.sh138# =============================================================================COMMENT
MEDIUMscripts/runtime/start.sh204# =============================================================================COMMENT
MEDIUMscripts/runtime/start.sh206# =============================================================================COMMENT
MEDIUMscripts/runtime/start.sh389# =============================================================================COMMENT
MEDIUMscripts/runtime/start.sh391# =============================================================================COMMENT
MEDIUM⚡scripts/runtime/start.sh443# =============================================================================COMMENT
MEDIUM⚡scripts/runtime/start.sh445# =============================================================================COMMENT
MEDIUM⚡scripts/runtime/start.sh455# =============================================================================COMMENT
MEDIUM⚡scripts/runtime/start.sh457# =============================================================================COMMENT
MEDIUM⚡scripts/runtime/start.sh486# =============================================================================COMMENT
MEDIUM⚡scripts/runtime/start.sh488# =============================================================================COMMENT
MEDIUM⚡scripts/runtime/start.sh494# =============================================================================COMMENT
MEDIUM⚡scripts/runtime/start.sh496# =============================================================================COMMENT
MEDIUMscripts/lib/desktop_build_common.sh22# ---------------------------------------------------------------------------COMMENT
MEDIUMscripts/lib/desktop_build_common.sh24# ---------------------------------------------------------------------------COMMENT
MEDIUMscripts/lib/desktop_build_common.sh82# ---------------------------------------------------------------------------COMMENT
MEDIUMscripts/lib/desktop_build_common.sh84# ---------------------------------------------------------------------------COMMENT
Magic Placeholder Names7 hits · 35 pts
SeverityFileLineSnippetContext
HIGHDOCKER.md20API_DASHSCOPE_API_KEY=your_api_keyCODE
HIGHdocs/SPEECH_RECOGNITION_SETUP.md57export OPENAI_API_KEY="your-api-key-here"CODE
HIGHdocs/SPEECH_RECOGNITION_REDESIGN.md250export OPENAI_API_KEY="your-api-key"CODE
HIGHdocs/SPEECH_RECOGNITION_REDESIGN.md255export AZURE_SPEECH_KEY="your-api-key"CODE
HIGHdocs/DOCKER.en.md20API_DASHSCOPE_API_KEY=your_api_keyCODE
HIGHdocs/OPTIONAL_SRT_UPLOAD_GUIDE.md195export OPENAI_API_KEY="your-api-key"CODE
HIGHdocs/OPTIONAL_SRT_UPLOAD_GUIDE.md200export AZURE_SPEECH_KEY="your-api-key"CODE
Verbosity Indicators6 hits · 10 pts
SeverityFileLineSnippetContext
LOW⚡backend/services/simple_pipeline_adapter.py315 # Step 1: 大纲提取(字幕为空 / 模型全部失败 / 无法解析时由 step1 自己抛 PipelineFailure)COMMENT
LOW⚡backend/services/simple_pipeline_adapter.py324 # Step 2: 时间线提取COMMENT
LOWbackend/services/simple_pipeline_adapter.py338 # Step 3: 内容评分COMMENT
LOWbackend/services/simple_pipeline_adapter.py358 # Step 4: 标题生成COMMENT
LOWbackend/services/simple_pipeline_adapter.py372 # Step 5: 主题聚类COMMENT
LOWbackend/services/simple_pipeline_adapter.py385 # Step 6: 视频切割COMMENT
Structural Annotation Overuse6 hits · 10 pts
SeverityFileLineSnippetContext
LOW⚡backend/services/simple_pipeline_adapter.py315 # Step 1: 大纲提取(字幕为空 / 模型全部失败 / 无法解析时由 step1 自己抛 PipelineFailure)COMMENT
LOW⚡backend/services/simple_pipeline_adapter.py324 # Step 2: 时间线提取COMMENT
LOWbackend/services/simple_pipeline_adapter.py338 # Step 3: 内容评分COMMENT
LOWbackend/services/simple_pipeline_adapter.py358 # Step 4: 标题生成COMMENT
LOWbackend/services/simple_pipeline_adapter.py372 # Step 5: 主题聚类COMMENT
LOWbackend/services/simple_pipeline_adapter.py385 # Step 6: 视频切割COMMENT
Docstring Block Structure2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHbackend/utils/speech_recognizer.py347 生成字幕文件 Args: video_path: 视频文件路径 output_path: 输出字幕文件路径 confSTRING
HIGHbackend/utils/speech_recognizer.py831 为视频生成字幕文件的便捷函数 Args: video_path: 视频文件路径 output_path: 输出字幕文件路径 method: 生成方法 ("auto"STRING
Cross-Language Confusion2 hits · 8 pts
SeverityFileLineSnippetContext
HIGHbackend/tests/test_project_cancellation.py46 (folder / 'metadata' / 'studio.json').write_text('{"schema_version":2,"drafts":[],"jobs":[],"analysis":null,"output_CODE
HIGHscripts/packaging_frame_benchmark.py460 if (hash !== expected[i]) bad.push([i, hash, expected[i]]);STRING
AI Structural Patterns6 hits · 6 pts
SeverityFileLineSnippetContext
LOWbackend/mcp_server.py325CODE
LOWbackend/utils/speech_recognizer.py823CODE
LOWbackend/utils/llm_client.py116CODE
LOWbackend/api/v1/studio.py95CODE
LOWbackend/services/cover.py239CODE
LOWbackend/services/cover.py576CODE
Over-Commented Block4 hits · 4 pts
SeverityFileLineSnippetContext
LOWrequirements.txt1# Backend runtime dependencies.COMMENT
LOWscripts/build_windows_x64.sh1#!/bin/bashCOMMENT
LOWscripts/lib/desktop_build_common.sh1#!/bin/bashCOMMENT
LOW.github/workflows/desktop-build.yml1name: Desktop BuildCOMMENT
Dead Code1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMbackend/api/v1/upload.py359CODE
Fake / Example Data1 hit · 1 pts
SeverityFileLineSnippetContext
LOWbackend/core/llm_providers.py668 temp_provider = provider_class("dummy_key", "dummy_model")CODE
Overly Generic Function Names1 hit · 0 pts
SeverityFileLineSnippetContext
LOWbackend/api/v1/async_task_manager.py134 async def my_function():STRING