AI Slop Code RIsk Monitor

xming521/WeClone

🚀 One-stop solution for creating your AI twin from chat history 💡 Fine-tune LLMs with your chat logs to capture your unique style, then bind to a chatbot to bring your digital self to life.

8.5 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for xming521/WeClone, a Python project with 18,290 GitHub stars. SynthScan examined 40,557 lines of code across 112 source files, recording 337 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 8.5 (Moderate 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.

8.5
Adjusted Signal
8.5
Raw Pattern Score
100%
Time Factor
2026-10-09
Last Push
18.3K
Stars
Python
Language
40.6K
Lines of Code
112
Files
337
Pattern Hits
2026-10-12
Scan Date
0.05
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 25.8/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 3.5/100 · LOW

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

Agent Over-Engineering Ratio 26.3/100 · MEDIUM

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

PR Review Velocity Impact 36.7/100 · MEDIUM

Which changes need focused human review? 337 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 6MEDIUM 2LOW 329

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 337 distinct pattern matches across 9 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 Identifiers191 hits · 171 pts
SeverityFileLineSnippetContext
LOW⚡tests/test_organize_memories.py144def test_preference_reader_reports_no_matching_input(tmp_path):CODE
LOW⚡tests/test_organize_memories.py151def test_preference_dimension_rejects_other_memory_types(kind, type_):CODE
LOW⚡tests/test_organize_memories.py157def test_preference_pipeline_only_sends_preferences_and_retains_sources(tmp_path, monkeypatch):CODE
LOWtests/test_organize_memories.py12def test_source_statistics_weights_chats_equally_and_separates_peers():CODE
LOWtests/test_organize_memories.py25def test_summary_injects_only_current_dimension_time_rule(dim, reduced):CODE
LOWtests/test_organize_memories.py53def test_prompt_record_limits_metadata_without_changing_source(content, expected_content):CODE
LOWtests/test_organize_memories.py84def test_reader_filters_scores_without_modifying_sources(tmp_path, kind):CODE
LOWtests/test_organize_memories.py102def test_reader_excludes_raw_chat_deduplicates_auxiliary_and_retains_origins(tmp_path):CODE
LOWtests/test_organize_memories.py122def test_dimension_source_contract(kind, type_, dims):CODE
LOWtests/test_organize_memories.py126def test_preference_reader_preserves_ids_scores_and_origins_without_reading_events(tmp_path):CODE
LOWtests/test_organize_memories.py220def test_preference_cli_uses_separate_default_output(monkeypatch, preferences_only):CODE
LOWtests/test_organize_memories.py229def test_mixed_prepare_separates_preference_naming_from_dimension_classification(tmp_path, monkeypatch):CODE
LOWtests/test_organize_memories.py261def test_preference_attributes_fill_fixed_dimension_and_allow_multiple_attributes():CODE
LOWtests/test_organize_memories.py277def test_preference_attributes_reject_invalid_fields_and_references(items):CODE
LOWtests/test_organize_memories.py283def test_context_window_uses_codex_effective_window_not_model_maximum(tmp_path, monkeypatch, configured, expected):CODE
LOWtests/test_organize_memories.py309def test_unknown_model_requires_explicit_context_window(tmp_path, monkeypatch):CODE
LOWtests/test_organize_memories.py324def test_local_budget_does_not_override_codex_context_configuration(tmp_path, monkeypatch):CODE
LOWtests/test_organize_memories.py342def test_token_budget_splits_classification_even_when_characters_fit():CODE
LOWtests/test_organize_memories.py361def test_token_budget_splits_summary_and_cross_batch_merge(reduced):CODE
LOWtests/test_organize_memories.py372def test_llm_checks_input_budget_before_sending_or_loading_cache():CODE
LOWtests/test_organize_memories.py380def test_classification_batches_use_tag_and_vector_union_without_losing_singletons():CODE
LOWtests/test_organize_memories.py393def test_classification_rejects_lost_ids_and_wrong_source_dimensions(defect):CODE
LOWtests/test_organize_memories.py414def test_open_attributes_multi_assignment_and_empty_result_are_supported():CODE
LOWtests/test_organize_memories.py424def test_attribute_clustering_connects_chains_within_dimension(reverse):CODE
LOWtests/test_organize_memories.py449def test_relation_groups_collect_each_peer_without_embedding_attributes():CODE
LOWtests/test_organize_memories.py468def test_relation_summary_isolates_peers_through_split_and_reduce(split):CODE
LOWtests/test_organize_memories.py506def test_relation_group_validation_distinguishes_same_attribute_across_peers(tmp_path, monkeypatch, defect):CODE
LOWtests/test_organize_memories.py545def test_summary_rejects_invalid_references(defect):CODE
LOWtests/test_organize_memories.py557def test_summary_allows_unreferenced_inputs_without_extra_output_fields():CODE
LOWtests/test_organize_memories.py565def test_llm_retry_truncation_and_content_addressed_resume(tmp_path):CODE
LOWtests/test_organize_memories.py598def test_llm_resume_ignores_configuration_changes(tmp_path, monkeypatch, change):CODE
LOWtests/test_organize_memories.py671def test_summary_overwrite_refreshes_current_tasks_and_preserves_other_entries(tmp_path, batched):CODE
LOWtests/test_organize_memories.py711def test_full_pipeline_keeps_inputs_and_joins_profile_goals_with_events(tmp_path, monkeypatch, cross_group, extra_sampleCODE
LOWtests/test_organize_memories.py777def test_summary_record_limit_splits_group_and_reduces_all_sources(dim):CODE
LOWtests/test_organize_memories.py797def test_summary_request_limit_counts_unique_sources_across_groups():CODE
LOWtests/test_organize_memories.py817def test_oversized_attribute_group_reduces_across_batches_without_losing_sources():CODE
LOWtests/test_organize_memories.py844def test_different_attribute_groups_share_llm_batch():CODE
LOWtests/test_organize_memories.py860def test_classification_fills_fifty_after_related_neighbors():CODE
LOWtests/test_organize_memories.py867def test_summary_combines_thirty_groups_and_restores_reordered_results():CODE
LOWtests/test_organize_memories.py893def test_combined_summary_rejects_unknown_sources_and_lost_groups(defect):CODE
LOWtests/test_organize_memories.py906def test_cross_group_references_warn_and_survive_final_summary(caplog):CODE
LOWtests/test_organize_memories.py929def test_combined_summary_deduplicates_shared_memories_and_respects_token_budget():CODE
LOWtests/test_organize_memories.py949def test_embedding_cache_reuses_vectors_and_checks_model_identity(tmp_path, monkeypatch):CODE
LOWtests/test_organize_memories.py972def test_embedding_batches_resume_without_rewriting_history(tmp_path, monkeypatch):CODE
LOWtests/test_organize_memories.py1004def test_default_embedding_service_starts_as_module_and_keeps_custom_script(tmp_path, monkeypatch):CODE
LOWtests/test_server_cli.py20def test_server_cli_routes_options_without_loading_model_config(monkeypatch, options, expected):CODE
LOWtests/test_server_cli.py36def test_reset_web_password_cli(tmp_path, monkeypatch):CODE
LOWtests/test_server_cli.py57def test_unified_routes_lifespan_auth_and_streaming(tmp_path, monkeypatch, capsys):CODE
LOWtests/test_llm_inference.py62def test_parameters_multimodal_and_explicit_none(api):CODE
LOWtests/test_llm_inference.py85def test_response_model_validation_and_audit(api, tmp_path):CODE
LOWtests/test_llm_inference.py116def test_invalid_structured_responses_retain_text(api, text, finish, error_type):CODE
LOWtests/test_llm_inference.py135def test_provider_error_and_retry_override(api):CODE
LOWtests/test_llm_inference.py152def test_schema_fallback_and_last_attempt_empty(api, tmp_path):CODE
LOWtests/test_llm_inference.py183def test_stream_is_merged_and_closed(api):CODE
LOWtests/test_llm_inference.py226def test_batch_order_failures_and_callback_once(api):CODE
LOWtests/test_llm_inference.py246def test_stream_failure_preserves_partial_output(api):CODE
LOWtests/test_llm_inference.py272def test_close_interrupts_retry(api):CODE
LOWtests/test_llm_inference.py289def test_cancel_queued_batch_does_not_hang(api):CODE
LOWtests/test_llm_inference.py360def test_codex_success_schema_usage_search_and_cleanup(codex):STRING
LOWtests/test_llm_inference.py369def test_codex_minimal_context_defaults_and_explicit_web_search(codex, monkeypatch, web_search):STRING
131 more matches not shown…
Deep Nesting60 hits · 59 pts
SeverityFileLineSnippetContext
LOWtests/test_organize_memories.py393CODE
LOWtests/test_organize_memories.py598CODE
LOWtests/test_canonicalize_state_memories.py246CODE
LOWtests/test_distill_windows.py93CODE
LOWtests/test_organize_identity_attributes.py59CODE
LOWtests/test_PII.py31CODE
LOWscripts/check_private_llm_logs.py171CODE
LOWscripts/check_profile_paths.py123CODE
LOWscripts/check_web_security.py85CODE
LOWscripts/check_profile_sources.py16CODE
LOWweclone/core/inference/audit.py183CODE
LOWweclone/core/inference/offline_infer.py51CODE
LOWweclone/core/inference/llm_client.py195CODE
LOWweclone/core/inference/llm_client.py390CODE
LOWweclone/core/inference/llm_client.py504CODE
LOWweclone/core/inference/llm_client.py856CODE
LOWweclone/server/auth.py173CODE
LOWweclone/server/auth.py178CODE
LOWweclone/server/auth.py256CODE
LOWweclone/server/api_service.py23CODE
LOWweclone/server/source_chat.py43CODE
LOWweclone/server/profile_review.py85CODE
LOWweclone/server/profile_review.py311CODE
LOWweclone/server/profile_review.py114CODE
LOWweclone/utils/secure_storage.py367CODE
LOWweclone/utils/secure_storage.py465CODE
LOWweclone/utils/secure_storage.py669CODE
LOWweclone/utils/secure_storage.py740CODE
LOWweclone/utils/secure_storage.py790CODE
LOWweclone/utils/secure_storage.py892CODE
LOWweclone/utils/secure_storage.py752CODE
LOWweclone/utils/config.py62CODE
LOWweclone/utils/retry.py9CODE
LOWweclone/utils/retry.py36CODE
LOWweclone/utils/retry.py38CODE
LOWweclone/eval/test_model.py96CODE
LOWweclone/data/utils.py58CODE
LOWweclone/data/qa_generator.py34CODE
LOWweclone/data/qa_generator.py268CODE
LOWweclone/data/qa_generator.py480CODE
LOWweclone/data/qa_generator.py686CODE
LOWweclone/data/make_dataset_stage2.py237CODE
LOWweclone/data/agent/distill_windows.py115CODE
LOWweclone/data/agent/distill_event.py96CODE
LOWweclone/data/agent/llm_profile_hierarchy.py50CODE
LOWweclone/data/agent/organize_memories.py76CODE
LOWweclone/data/agent/organize_memories.py182CODE
LOWweclone/data/agent/organize_memories.py230CODE
LOWweclone/data/agent/organize_memories.py371CODE
LOWweclone/data/agent/organize_memories.py777CODE
LOWweclone/data/agent/organize_memories.py826CODE
LOWweclone/data/agent/organize_memories.py191CODE
LOWweclone/data/agent/organize_memories.py518CODE
LOWweclone/data/agent/distill_profile.py439CODE
LOWweclone/data/agent/canonicalize_state_memories.py399CODE
LOWweclone/data/agent/canonicalize_state_memories.py1048CODE
LOWweclone/data/clean/strategies.py79CODE
LOWweclone/data/clean/strategies.py159CODE
LOWweclone/data/chat_parsers/telegram_parser.py39CODE
LOWweclone/data/chat_parsers/telegram_parser.py97CODE
Excessive Try-Catch Wrapping36 hits · 38 pts
SeverityFileLineSnippetContext
LOWtests/test_full_pipe.py256 except Exception as e:CODE
LOWtests/test_full_pipe.py317 except Exception as e:CODE
LOWweclone/cli.py390 except Exception as e:CODE
LOWweclone/cli.py415 except Exception as e:CODE
LOWweclone/cli.py432 except Exception as e:CODE
LOWweclone/core/PII/pii_detector.py251 except Exception as e:CODE
LOWweclone/core/inference/audit.py218 except Exception as exc:CODE
LOWweclone/core/inference/embedding_service.py142 except Exception:CODE
LOWweclone/core/inference/embedding_service.py255 except Exception as exc:CODE
LOWweclone/core/inference/embedding_service.py414 except Exception as exc:CODE
MEDIUMweclone/core/inference/embedding_service.py245def _load_settings_embedding_args() -> dict[str, Any]:CODE
LOWweclone/core/inference/offline_infer.py77 except Exception as e:CODE
LOWweclone/core/inference/llm_client.py416 except Exception as exc:CODE
LOWweclone/core/inference/llm_client.py420 except Exception as exc:CODE
LOWweclone/core/inference/llm_client.py539 except Exception as exc:CODE
LOWweclone/core/inference/llm_client.py589 except Exception as exc:CODE
LOWweclone/utils/config.py31 except Exception as e:CODE
LOWweclone/utils/config.py44 except Exception as e:CODE
LOWweclone/utils/token_counter.py95 except Exception as exc:CODE
LOWweclone/utils/log.py17 except Exception:CODE
LOWweclone/utils/log.py149 except Exception as e:CODE
MEDIUMweclone/utils/log.py12def _encrypted_logging() -> bool:CODE
LOWweclone/utils/retry.py65 except Exception as e:CODE
LOWweclone/utils/retry.py112 except Exception as e:CODE
LOWweclone/eval/cli_demo.py29 except Exception:CODE
LOWweclone/data/utils.py35 except Exception as e:CODE
LOWweclone/data/utils.py112 except Exception as e:CODE
LOWweclone/data/qa_generator.py225 except Exception as e:CODE
LOWweclone/data/qa_generator.py241 except Exception as e:CODE
LOWweclone/data/make_dataset_stage2.py200 except Exception:CODE
LOWweclone/data/agent/group_state_memories.py329 except Exception as exc:CODE
LOWweclone/data/agent/group_state_memories.py348 except Exception as health_error:CODE
LOWweclone/data/agent/group_state_memories.py371 except Exception:CODE
LOWweclone/data/clean/strategies.py66 except Exception as e:CODE
LOWweclone/data/clean/strategies.py201 except Exception as e:CODE
LOWweclone/data/chat_parsers/telegram_parser.py130 except Exception as e:CODE
Empty Error Handlers6 hits · 30 pts
SeverityFileLineSnippetContext
HIGHtests/test_full_pipe.py266except subprocess.TimeoutExpired:CODE
HIGHweclone/core/inference/embedding_service.py447except KeyboardInterrupt:CODE
HIGHweclone/core/inference/llm_client.py209except json.JSONDecodeError:CODE
HIGHweclone/core/inference/llm_client.py935except ProcessLookupError:CODE
HIGHweclone/server/auth.py278except asyncio.CancelledError:CODE
HIGHweclone/data/qa_generator.py66except (FileNotFoundError, json.JSONDecodeError):CODE
Unused Imports29 hits · 29 pts
SeverityFileLineSnippetContext
LOWtests/test_PII.py2CODE
LOWtests/test_PII.py3CODE
LOWtests/test_PII.py10CODE
LOWtests/test_PII.py20CODE
LOWtests/test_PII.py21CODE
LOWtests/test_full_pipe.py1CODE
LOWtests/test_full_pipe.py7CODE
LOWtests/test_full_pipe.py7CODE
LOWtests/test_full_pipe.py8CODE
LOWweclone/core/PII/__init__.py1CODE
LOWweclone/core/PII/__init__.py1CODE
LOWweclone/core/PII/__init__.py1CODE
LOWweclone/core/inference/audit.py1CODE
LOWweclone/core/inference/__init__.py1CODE
LOWweclone/core/inference/__init__.py2CODE
LOWweclone/core/inference/__init__.py2CODE
LOWweclone/core/inference/__init__.py2CODE
LOWweclone/core/inference/__init__.py2CODE
LOWweclone/core/inference/__init__.py2CODE
LOWweclone/core/inference/__init__.py2CODE
LOWweclone/core/inference/__init__.py2CODE
LOWweclone/core/inference/embedding_service.py1CODE
LOWweclone/utils/secure_storage.py7CODE
LOWweclone/utils/token_counter.py1CODE
LOWweclone/eval/cli_demo.py14CODE
LOWweclone/data/agent/organize_identity_attributes.py3CODE
LOWweclone/data/agent/organize_memories.py3CODE
LOWweclone/data/agent/group_state_memories.py1CODE
LOWweclone/data/agent/canonicalize_state_memories.py10CODE
Modern Structural Boilerplate5 hits · 5 pts
SeverityFileLineSnippetContext
LOWweclone/core/PII/__init__.py3__all__ = ["PIIResult", "PIIDetector", "ChinesePIIDetector"]CODE
LOWweclone/core/inference/audit.py340__all__ = [CODE
LOWweclone/core/inference/__init__.py12__all__ = [CODE
LOWweclone/core/inference/llm_client.py1112__all__ = [CODE
LOWweclone/utils/secure_storage.py290def _set_run_key(key: bytes) -> None:CODE
Redundant / Tautological Comments3 hits · 4 pts
SeverityFileLineSnippetContext
LOWtests/test_full_pipe.py230 # Check if blocked_words filtering is working correctlyCOMMENT
LOWtests/test_full_pipe.py238 # Check if <image> tags count is correct for Qwen2.5-VL.jsonc configCOMMENT
LOWweclone/utils/i18n.py23 # Check if all lists have the same lengthCOMMENT
Over-Commented Block4 hits · 4 pts
SeverityFileLineSnippetContext
LOW.pre-commit-config.yaml41COMMENT
LOWweclone/utils/length_cdf.py1# Copyright 2025 the LlamaFactory team.COMMENT
LOWweclone/prompts/clean_data.py41# **重要考量:**COMMENT
LOWweclone/prompts/clean_data.py61COMMENT
AI Structural Patterns3 hits · 3 pts
SeverityFileLineSnippetContext
LOWweclone/core/inference/offline_infer.py104CODE
LOWweclone/core/inference/llm_client.py1040CODE
LOWweclone/core/inference/llm_client.py652CODE