AI Slop Code RIsk Monitor

modelscope/FunClip

FunASR-powered video transcription, subtitle generation, and LLM-assisted clipping tool with a local Gradio UI.

21.1 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for modelscope/FunClip, a Python project with 6,383 GitHub stars. SynthScan examined 5,819 lines of code across 55 source files, recording 112 pattern matches distributed across 5 syntactic categories. The legacy adjusted pattern signal is 21.1 (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.

21.1
Adjusted Signal
21.1
Raw Pattern Score
100%
Time Factor
2026-10-08
Last Push
6.4K
Stars
Python
Language
5.8K
Lines of Code
55
Files
112
Pattern Hits
2026-10-12
Scan Date
0.00
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 63.4/100 · HIGH

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

Hallucinated Dependency & Supply Chain Risk 5.0/100 · LOW

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

Agent Over-Engineering Ratio 59.1/100 · HIGH

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

PR Review Velocity Impact 63.7/100 · HIGH

Which changes need focused human review? 112 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

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.

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 0MEDIUM 3LOW 109

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 112 distinct pattern matches across 5 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 Identifiers97 hits · 104 pts
SeverityFileLineSnippetContext
LOWfunclip/videoclipper.py98def _normalize_recognition_result(result):CODE
LOWfunclip/llm/twelvelabs_api.py40def _normalize_pegasus_timestamps(text):CODE
LOWtests/test_funasr_requirement.py6def test_funasr_minimum_version_matches_current_model_paths():CODE
LOWtests/test_funasr_requirement.py16def test_readmes_explain_upgrade_for_existing_installs():CODE
LOWtests/test_funasr_requirement.py28def test_readmes_document_moss_ownership_backends_and_timestamp_boundary():CODE
LOWtests/test_funasr_requirement.py49def test_readmes_describe_moss_speakers_as_anonymous_labels():CODE
LOWtests/test_funasr_requirement.py68def test_readmes_route_edge_asr_users_to_gguf_runtime():CODE
LOWtests/test_funasr_requirement.py80def test_english_readme_avoids_visible_typo_regressions():CODE
LOWtests/test_gradio_runtime_compat.py21def test_supported_gradio_stack_renders_index():CODE
LOWtests/test_gradio_runtime_compat.py35def test_local_launch_keeps_gradio_frontend_probe_enabled():CODE
LOWtests/test_gradio_runtime_compat.py45def test_explicit_listen_skips_only_the_local_frontend_probe():CODE
LOWtests/test_gradio_runtime_compat.py57def test_explicit_share_choice_is_preserved():CODE
LOWtests/test_gradio_runtime_compat.py65def test_launcher_does_not_patch_dependencies_or_retry_with_public_share():CODE
LOWtests/test_github_templates.py7def test_issue_templates_collect_funclip_repro_details():CODE
LOWtests/test_github_templates.py33def test_pull_request_template_keeps_validation_visible():CODE
LOWtests/test_github_templates.py48def test_contributing_guide_documents_local_validation_path():CODE
LOWtests/test_cheaperinference_api.py21 def test_cheaperinference_prefix_uses_gateway_base_url(self):CODE
LOWtests/test_cheaperinference_api.py42 def test_cheaperinference_api_key_falls_back_to_env(self):CODE
LOWtests/test_cheaperinference_api.py57 def test_cheaperinference_api_base_env_overrides(self):CODE
LOWtests/test_cheaperinference_api.py74 def test_empty_cheaperinference_model_raises(self):CODE
LOWtests/test_cheaperinference_api.py78 def test_missing_cheaperinference_key_does_not_fall_back_to_openai_key(self):CODE
LOWtests/test_minimax_api.py22 def test_minimax_prefix_uses_global_base_url(self):CODE
LOWtests/test_minimax_api.py42 def test_minimax_api_key_falls_back_to_env(self):CODE
LOWtests/test_minimax_api.py57 def test_minimax_api_base_env_overrides_region(self):CODE
LOWtests/test_minimax_api.py70 def test_empty_minimax_model_raises(self):CODE
LOWtests/test_minimax_api.py74 def test_missing_minimax_key_does_not_fall_back_to_openai_key(self):CODE
LOWtests/test_release_contract.py33def _create_fixture_repository(repository):CODE
LOWtests/test_release_contract.py54def test_release_version_and_public_download_routes_are_in_sync():CODE
LOWtests/test_release_contract.py68def test_release_notes_define_installation_and_asset_boundaries():CODE
LOWtests/test_release_contract.py83def test_tag_workflow_builds_and_publishes_all_release_assets():CODE
LOWtests/test_release_contract.py115def test_release_builder_creates_reproducible_scoped_archives(tmp_path):CODE
LOWtests/test_release_contract.py175def test_release_builder_rejects_non_commit_refs(tmp_path):CODE
LOWtests/test_release_contract.py206def test_release_builder_supports_cross_filesystem_outputs(tmp_path):CODE
LOWtests/test_openai_api.py18 def test_atlascloud_prefix_uses_atlas_base_url(self):CODE
LOWtests/test_openai_api.py38 def test_atlascloud_api_key_falls_back_to_env(self):CODE
LOWtests/test_openai_api.py53 def test_empty_atlascloud_model_raises(self):CODE
LOW⚡tests/test_installation_docs.py10def test_installation_entries_use_one_python_environment(filename):CODE
LOW⚡tests/test_installation_docs.py18def test_contributor_minimum_matches_application_requirements():CODE
LOW⚡tests/test_installation_docs.py26def test_troubleshooting_keeps_tls_and_runtime_boundaries():CODE
LOWtests/test_subtitle_renderer.py24def test_subtitle_renderer_preserves_selected_colors():CODE
LOWtests/test_subtitle_renderer.py36def test_subtitle_renderer_rejects_invalid_font_size():CODE
LOWtests/test_subtitle_renderer.py47def test_selected_color_reaches_composited_video_frame():CODE
LOWtests/test_subtitle_renderer.py63def test_pillow_is_an_explicit_runtime_dependency():CODE
LOWtests/test_minimax_launch_integration.py16 def test_openai_compatible_route_preserves_prompt_roles(self):CODE
LOWtests/test_minimax_launch_integration.py43 def test_dropdown_only_lists_documented_minimax_models(self):CODE
LOWtests/test_litellm_api.py45 def test_no_prefix_passes_through(self):CODE
LOW⚡tests/test_litellm_api.py66 def test_api_key_omitted_when_empty(self):CODE
LOW⚡tests/test_litellm_api.py73 def test_system_content_included(self):CODE
LOW⚡tests/test_litellm_api.py83 def test_system_content_skipped_when_empty(self):CODE
LOW⚡tests/test_litellm_api.py92 def test_empty_choices_returns_empty(self):CODE
LOW⚡tests/test_litellm_api.py99 def test_null_content_returns_empty(self):CODE
LOWtests/test_litellm_api.py130 def test_empty_model_after_strip_raises(self):CODE
LOWtests/test_cheaperinference_launch_integration.py16 def test_openai_compatible_route_handles_cheaperinference_prefix(self):CODE
LOWtests/test_cheaperinference_launch_integration.py39 def test_support_prefix_list_includes_cheaperinference(self):CODE
LOWtests/test_cheaperinference_launch_integration.py60 def test_dropdown_lists_cheaperinference_gateway_models(self):CODE
LOW⚡tests/test_cli_stage_help.py35 def test_help_describes_recognition_and_clipping_stages(self):CODE
LOW⚡tests/test_cli_stage_help.py44 def test_stage_one_and_two_remain_accepted(self):CODE
LOW⚡tests/test_cli_stage_help.py52 def test_stage_zero_remains_invalid(self):CODE
LOWtests/test_community_links.py17def test_community_section_has_stable_discussions_fallback(CODE
LOWtests/test_canonical_qwenaudio_links.py35def test_legacy_owner_matcher_covers_repository_api_and_charts():CODE
37 more matches not shown…
Unused Imports6 hits · 6 pts
SeverityFileLineSnippetContext
LOWfunclip/videoclipper.py15CODE
LOWfunclip/launch.py6CODE
LOWfunclip/llm/g4f_openai_api.py4CODE
LOWfunclip/test/imagemagick_test.py1CODE
LOWfunclip/test/imagemagick_test.py3CODE
LOWtests/test_subtitle_renderer.py3CODE
Deep Nesting6 hits · 6 pts
SeverityFileLineSnippetContext
LOWfunclip/videoclipper.py175CODE
LOWfunclip/videoclipper.py280CODE
LOWfunclip/llm/openai_api.py28CODE
LOWfunclip/utils/subtitle_utils.py69CODE
LOWfunclip/utils/argparse_tools.py30CODE
LOWfunclip/utils/trans_utils.py100CODE
Modern AI Meta-Vocabulary2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMREADME.md137OrcaRouter exposes one endpoint for all frontier and open-weight models, so you can switch routing targets without changCODE
MEDIUMREADME_zh.md162OrcaRouter 用单一端点接入所有前沿与开源模型,无需修改 FunClip 即可切换路由目标。它还可以在同一端点上为 AI agent 提供网关级零信任控制。对经网关转发的 prompt、response 与工具调用,实际执行方式由相CODE
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMfunclip/launch.py66 # Create a temporary fileCOMMENT