AI Slop Code RIsk Monitor

lingfengQAQ/webnovel-writer

基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200 万字量级 连载创作。

17.5 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for lingfengQAQ/webnovel-writer, a Python project with 7,421 GitHub stars. SynthScan examined 114,111 lines of code across 436 source files, recording 1525 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 17.5 (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.

17.5
Adjusted Signal
17.5
Raw Pattern Score
100%
Time Factor
2026-10-07
Last Push
7.4K
Stars
Python
Language
114.1K
Lines of Code
436
Files
1.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 38.5/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 7.3/100 · LOW

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

Agent Over-Engineering Ratio 51.3/100 · HIGH

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

PR Review Velocity Impact 57.9/100 · HIGH

Which changes need focused human review? 1525 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 36MEDIUM 134LOW 1355

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 1525 distinct pattern matches across 14 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 Identifiers935 hits · 928 pts
SeverityFileLineSnippetContext
LOWsitecustomize.py8def _looks_like_pytest_process() -> bool:CODE
LOW…2-story-system-phase4-event-log-and-override-ledger.md93def test_story_event_supports_power_breakthrough():CODE
LOW…2-story-system-phase4-event-log-and-override-ledger.md113def test_event_log_store_writes_per_chapter_file_and_sqlite_mirror(tmp_path):CODE
LOW…2-story-system-phase4-event-log-and-override-ledger.md258def test_router_maps_power_breakthrough_to_state_and_memory():CODE
LOW…2-story-system-phase4-event-log-and-override-ledger.md264def test_router_maps_relationship_changed_to_index():CODE
LOW…2-story-system-phase4-event-log-and-override-ledger.md341def test_normalize_override_record_sets_record_type():CODE
LOW…2-story-system-phase4-event-log-and-override-ledger.md353def test_normalize_override_record_supports_amend_proposal():CODE
LOW…2-story-system-phase4-event-log-and-override-ledger.md364def test_world_rule_broken_generates_amend_proposal():CODE
LOW…2-story-system-phase4-event-log-and-override-ledger.md405def normalize_override_record(*, record_type: str, field: str, base_value: str, override_value: str, source_level: str) CODE
LOW…2-story-system-phase4-event-log-and-override-ledger.md489def ensure_override_ledger_columns(conn) -> None:CODE
LOW…2-story-system-phase4-event-log-and-override-ledger.md556def test_webnovel_story_events_forwards(monkeypatch, tmp_path):CODE
LOW…2-story-system-phase4-event-log-and-override-ledger.md577def test_story_events_cli_reads_chapter_file(tmp_path, monkeypatch, capsys):CODE
LOW…/plans/2026-04-12-story-system-phase1-contract-seed.md110def test_story_contract_paths_live_under_project_root(tmp_path):CODE
LOW…/plans/2026-04-12-story-system-phase1-contract-seed.md120def test_merge_contract_layers_respects_lock_categories():CODE
LOW…/plans/2026-04-12-story-system-phase1-contract-seed.md156def test_merge_anti_patterns_deduplicates_by_text():CODE
LOW…/plans/2026-04-12-story-system-phase1-contract-seed.md181def story_system_chapters_dir(self) -> Path:CODE
LOW…/plans/2026-04-12-story-system-phase1-contract-seed.md189def story_system_anti_patterns_json(self) -> Path:CODE
LOW…/plans/2026-04-12-story-system-phase1-contract-seed.md323def test_story_system_routes_explicit_genre_and_collects_anti_patterns(tmp_path):CODE
LOW…/plans/2026-04-12-story-system-phase1-contract-seed.md409def test_story_system_falls_back_to_explicit_genre(tmp_path):CODE
LOW…/plans/2026-04-12-story-system-phase1-contract-seed.md621 def _extract_route_anti_patterns(self, row: Dict[str, Any]) -> List[Dict[str, Any]]:CODE
LOW…/plans/2026-04-12-story-system-phase1-contract-seed.md727def test_story_system_persist_writes_master_chapter_and_anti_patterns(tmp_path, monkeypatch):CODE
LOW…/plans/2026-04-12-story-system-phase1-contract-seed.md799def test_markdown_writer_preserves_manual_notes_outside_markers(tmp_path):CODE
LOW…/plans/2026-04-12-story-system-phase1-contract-seed.md820def test_webnovel_story_system_forwards_with_resolved_project_root(monkeypatch, tmp_path):CODE
LOW…/plans/2026-04-12-story-system-phase1-contract-seed.md881def render_anti_patterns_markdown(anti_patterns: list[dict]) -> str:CODE
LOW…/plans/2026-04-12-story-system-phase1-contract-seed.md981def test_context_manager_includes_story_contract_section_before_genre_profile(temp_project):CODE
LOW…/plans/2026-04-12-story-system-phase1-contract-seed.md1033def test_build_chapter_context_payload_includes_story_contract(tmp_path):CODE
LOW…archive/superpowers/plans/2026-04-03-phase1-cleanup.md77def test_review_issue_blocking_defaults():CODE
LOW…archive/superpowers/plans/2026-04-03-phase1-cleanup.md88def test_review_issue_non_critical_not_blocking():CODE
LOW…archive/superpowers/plans/2026-04-03-phase1-cleanup.md99def test_review_result_counts():CODE
LOW…archive/superpowers/plans/2026-04-03-phase1-cleanup.md115def test_review_result_no_issues():CODE
LOW…archive/superpowers/plans/2026-04-03-phase1-cleanup.md121def test_review_result_to_dict_roundtrip():CODE
LOW…archive/superpowers/plans/2026-04-03-phase1-cleanup.md138def test_parse_review_output_from_dict():CODE
LOW…archive/superpowers/plans/2026-04-03-phase1-cleanup.md151def test_parse_review_output_tolerates_missing_fields():CODE
LOW…archive/superpowers/plans/2026-04-03-phase1-cleanup.md163def test_review_result_to_metrics_dict():CODE
LOW…2026-04-12-story-system-phase3-chapter-commit-chain.md93def test_chapter_commit_accepts_required_sections():CODE
LOW…2026-04-12-story-system-phase3-chapter-commit-chain.md184def test_commit_service_rejects_when_missed_nodes_exist(tmp_path):CODE
LOW…2026-04-12-story-system-phase3-chapter-commit-chain.md196def test_commit_service_accepts_when_all_checks_pass(tmp_path):CODE
LOW⚡…2026-04-12-story-system-phase3-chapter-commit-chain.md352def test_state_projection_writer_skips_rejected_commit(tmp_path):CODE
LOW⚡…2026-04-12-story-system-phase3-chapter-commit-chain.md358def test_state_projection_writer_applies_accepted_commit(tmp_path):CODE
LOW⚡…2026-04-12-story-system-phase3-chapter-commit-chain.md368def test_accepted_commit_updates_state_json_end_to_end(tmp_path):CODE
LOW…2026-04-12-story-system-phase3-chapter-commit-chain.md496def test_webnovel_commit_forwards(monkeypatch, tmp_path):CODE
LOW…2026-04-12-story-system-phase3-chapter-commit-chain.md515def test_chapter_commit_cli_builds_and_persists_commit(tmp_path, monkeypatch):CODE
LOW⚡…/superpowers/plans/2026-06-01-review-critical-fixes.md90def test_load_json_arg_rejects_file_outside_base_dir(tmp_path):CODE
LOW⚡…/superpowers/plans/2026-06-01-review-critical-fixes.md100def test_load_json_arg_allows_file_inside_base_dir(tmp_path):CODE
LOW⚡…/superpowers/plans/2026-06-01-review-critical-fixes.md109def test_load_json_arg_stdin_ignores_base_dir(monkeypatch, tmp_path):CODE
LOW…/superpowers/plans/2026-06-01-review-critical-fixes.md257def test_apply_projections_updates_state_for_rejected_commit(tmp_path):CODE
LOW…/superpowers/plans/2026-06-01-review-critical-fixes.md548def test_set_chapter_status_uses_locked_save_state(temp_project, monkeypatch):STRING
LOW…/superpowers/plans/2026-06-01-review-critical-fixes.md567def test_set_chapter_status_preserves_existing_disk_state(temp_project):STRING
LOW…/superpowers/plans/2026-06-01-review-critical-fixes.md686def test_collect_chunks_includes_summary_and_scenes():STRING
LOW…/superpowers/plans/2026-06-01-review-critical-fixes.md783async def test_run_store_coro_works_inside_active_event_loop():STRING
LOW…/superpowers/plans/2026-06-01-review-critical-fixes.md956def test_dashboard_cors_allows_localhost_origin(tmp_path):STRING
LOW…/superpowers/plans/2026-06-01-review-critical-fixes.md973def test_dashboard_cors_rejects_untrusted_origin(tmp_path):STRING
LOW…/superpowers/plans/2026-06-01-review-critical-fixes.md1036def test_backup_manager_gitignore_excludes_env(tmp_path, monkeypatch):STRING
LOW…/superpowers/plans/2026-06-01-review-critical-fixes.md1099def test_style_sampler_ignores_corrupt_tag_json(temp_project):STRING
LOW⚡…ers/plans/2026-04-15-story-system-final-convergence.md1153def test_router_maps_power_breakthrough_to_state_memory_vector():CODE
LOW⚡…ers/plans/2026-04-15-story-system-final-convergence.md1163def test_router_maps_relationship_changed_to_index_and_vector():CODE
LOW⚡…ers/plans/2026-04-15-story-system-final-convergence.md1172def test_required_writers_includes_vector_for_key_events():CODE
LOW…ers/plans/2026-04-15-story-system-final-convergence.md271def test_csv_config_columns_exist_in_csv_header(table_name: str, config: dict):CODE
LOW…ers/plans/2026-04-15-story-system-final-convergence.md294def test_csv_config_file_field_matches_filename():CODE
LOW…ers/plans/2026-04-15-story-system-final-convergence.md314 def test_different_tables_use_different_search_weights(self):CODE
875 more matches not shown…
Decorative Section Separators115 hits · 398 pts
SeverityFileLineSnippetContext
MEDIUM…ers/plans/2026-04-15-story-system-final-convergence.md69# ---------------------------------------------------------------------------COMMENT
MEDIUM…ers/plans/2026-04-15-story-system-final-convergence.md71# ---------------------------------------------------------------------------COMMENT
MEDIUM…rpowers/plans/2026-04-16-references-genre-alignment.md70# ---------------------------------------------------------------------------COMMENT
MEDIUM…rpowers/plans/2026-04-16-references-genre-alignment.md72# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/dashboard/app.py24# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/dashboard/app.py26# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/dashboard/app.py252# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/dashboard/app.py254# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/dashboard/app.py288 # ===========================================================COMMENT
MEDIUMwebnovel-writer/dashboard/app.py290 # ===========================================================COMMENT
MEDIUMwebnovel-writer/dashboard/app.py301 # ===========================================================COMMENT
MEDIUMwebnovel-writer/dashboard/app.py303 # ===========================================================COMMENT
MEDIUMwebnovel-writer/dashboard/app.py661 # ===========================================================COMMENT
MEDIUMwebnovel-writer/dashboard/app.py663 # ===========================================================COMMENT
MEDIUMwebnovel-writer/dashboard/app.py822 # ===========================================================COMMENT
MEDIUMwebnovel-writer/dashboard/app.py824 # ===========================================================COMMENT
MEDIUMwebnovel-writer/dashboard/app.py865 # ===========================================================COMMENT
MEDIUMwebnovel-writer/dashboard/app.py867 # ===========================================================COMMENT
MEDIUMwebnovel-writer/dashboard/app.py886 # ===========================================================COMMENT
MEDIUMwebnovel-writer/dashboard/app.py888 # ===========================================================COMMENT
MEDIUMwebnovel-writer/dashboard/app.py914# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/dashboard/app.py916# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡webnovel-writer/scripts/reference_search.py111# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡webnovel-writer/scripts/reference_search.py113# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/scripts/reference_search.py27# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/scripts/reference_search.py29# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/scripts/reference_search.py58# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/scripts/reference_search.py60# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/scripts/reference_search.py127# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/scripts/reference_search.py129# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/scripts/reference_search.py225# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/scripts/reference_search.py227# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/scripts/reference_search.py316# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/scripts/reference_search.py318# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/scripts/reference_search.py359# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/scripts/reference_search.py361# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/scripts/reference_search.py467# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/scripts/reference_search.py469# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/scripts/archive_manager.py44# ============================================================================COMMENT
MEDIUMwebnovel-writer/scripts/archive_manager.py46# ============================================================================COMMENT
MEDIUMwebnovel-writer/scripts/archive_manager.py81 # ============================================================================COMMENT
MEDIUMwebnovel-writer/scripts/archive_manager.py85 # ============================================================================COMMENT
MEDIUMwebnovel-writer/scripts/backup_manager.py60# ============================================================================COMMENT
MEDIUMwebnovel-writer/scripts/backup_manager.py62# ============================================================================COMMENT
MEDIUM⚡webnovel-writer/scripts/backup_manager.py254 # ============================================================================COMMENT
MEDIUM⚡webnovel-writer/scripts/backup_manager.py258 # ============================================================================COMMENT
MEDIUMwebnovel-writer/scripts/update_state.py57# ============================================================================COMMENT
MEDIUMwebnovel-writer/scripts/update_state.py59# ============================================================================COMMENT
MEDIUM⚡webnovel-writer/scripts/update_state.py163 # ============================================================================COMMENT
MEDIUM⚡webnovel-writer/scripts/update_state.py167 # ============================================================================COMMENT
MEDIUMwebnovel-writer/scripts/security_utils.py228# ============================================================================COMMENT
MEDIUMwebnovel-writer/scripts/security_utils.py230# ============================================================================COMMENT
MEDIUMwebnovel-writer/scripts/security_utils.py337# ============================================================================COMMENT
MEDIUMwebnovel-writer/scripts/security_utils.py339# ============================================================================COMMENT
MEDIUMwebnovel-writer/scripts/security_utils.py548# ============================================================================COMMENT
MEDIUMwebnovel-writer/scripts/security_utils.py550# ============================================================================COMMENT
MEDIUMwebnovel-writer/scripts/data_modules/memory_contract.py17# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/scripts/data_modules/memory_contract.py19# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/scripts/data_modules/memory_contract.py105# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-writer/scripts/data_modules/memory_contract.py107# ---------------------------------------------------------------------------COMMENT
55 more matches not shown…
Unused Imports180 hits · 172 pts
SeverityFileLineSnippetContext
LOWsitecustomize.py1CODE
LOWwebnovel-writer/dashboard/watcher.py12CODE
LOWwebnovel-writer/dashboard/watcher.py14CODE
LOWwebnovel-writer/dashboard/watcher.py14CODE
LOWwebnovel-writer/hooks/session_start.py3CODE
LOWwebnovel-writer/hooks/guard_runtime_write.py3CODE
LOWwebnovel-writer/scripts/reference_search.py13CODE
LOWwebnovel-writer/scripts/reference_search.py20CODE
LOWwebnovel-writer/scripts/reference_search.py24CODE
LOWwebnovel-writer/scripts/story_system.py3CODE
LOWwebnovel-writer/scripts/chapter_paths.py12CODE
LOWwebnovel-writer/scripts/init_project.py16CODE
LOWwebnovel-writer/scripts/runtime_compat.py7CODE
LOWwebnovel-writer/scripts/conftest.py1CODE
LOWwebnovel-writer/scripts/status_reporter.py82CODE
LOWwebnovel-writer/scripts/status_reporter.py88CODE
LOWwebnovel-writer/scripts/status_reporter.py95CODE
LOWwebnovel-writer/scripts/status_reporter.py106CODE
LOWwebnovel-writer/scripts/review_pipeline.py9CODE
LOWwebnovel-writer/scripts/update_master_outline.py3CODE
LOWwebnovel-writer/scripts/chapter_commit.py3CODE
LOWwebnovel-writer/scripts/validate_release_notes.py3CODE
LOWwebnovel-writer/scripts/genre_taxonomy.py11CODE
LOWwebnovel-writer/scripts/project_locator.py13CODE
LOWwebnovel-writer/scripts/archive_manager.py36CODE
LOWwebnovel-writer/scripts/story_events.py3CODE
LOWwebnovel-writer/scripts/quality_trend_report.py11CODE
LOWwebnovel-writer/scripts/chapter_outline_loader.py4CODE
LOWwebnovel-writer/scripts/project_memory.py4CODE
LOWwebnovel-writer/scripts/validate_csv.py8CODE
LOWwebnovel-writer/scripts/webnovel.py16CODE
LOWwebnovel-writer/scripts/memory_cli.py9CODE
LOWwebnovel-writer/scripts/backup_manager.py50CODE
LOWwebnovel-writer/scripts/backup_manager.py51CODE
LOWwebnovel-writer/scripts/backup_manager.py58CODE
LOWwebnovel-writer/scripts/backup_manager.py63CODE
LOWwebnovel-writer/scripts/backup_manager.py63CODE
LOWwebnovel-writer/scripts/validate_plugin_package.py3CODE
LOWwebnovel-writer/scripts/validate_plugin_package.py8CODE
LOWwebnovel-writer/scripts/extract_chapter_context.py13CODE
LOWwebnovel-writer/scripts/update_state.py55CODE
LOWwebnovel-writer/scripts/run_behavior_evals.py3CODE
LOW…vel-writer/scripts/tests/test_security_utils_atomic.py1CODE
LOW…vel-writer/scripts/tests/test_security_utils_atomic.py6CODE
LOW…bnovel-writer/scripts/tests/test_dashboard_security.py1CODE
LOWwebnovel-writer/scripts/tests/test_backup_manager.py1CODE
LOWwebnovel-writer/scripts/tests/test_reference_search.py12CODE
LOW…-writer/scripts/data_modules/chapter_commit_service.py3CODE
LOWwebnovel-writer/scripts/data_modules/memory_contract.py11CODE
LOW…iter/scripts/data_modules/summary_projection_writer.py3CODE
LOW…l-writer/scripts/data_modules/amend_proposal_schema.py3CODE
LOWwebnovel-writer/scripts/data_modules/context_weights.py7CODE
LOWwebnovel-writer/scripts/data_modules/state_manager.py21CODE
LOWwebnovel-writer/scripts/data_modules/cli_args.py18CODE
LOWwebnovel-writer/scripts/data_modules/context_manager.py6CODE
LOW…ovel-writer/scripts/data_modules/story_event_schema.py3CODE
LOW…ovel-writer/scripts/data_modules/artifact_validator.py3CODE
LOWwebnovel-writer/scripts/data_modules/knowledge_query.py3CODE
LOWwebnovel-writer/scripts/data_modules/knowledge_query.py7CODE
LOW…bnovel-writer/scripts/data_modules/commit_artifacts.py3CODE
120 more matches not shown…
Empty Error Handlers26 hits · 130 pts
SeverityFileLineSnippetContext
HIGHwebnovel-writer/dashboard/app.py879except asyncio.CancelledError:CODE
HIGHwebnovel-writer/dashboard/watcher.py88except ValueError:CODE
HIGHwebnovel-writer/hooks/guard_runtime_write.py58except Exception:CODE
HIGHwebnovel-writer/scripts/conftest.py70except sqlite3.DatabaseError:CODE
HIGHwebnovel-writer/scripts/status_reporter.py788except Exception:CODE
HIGHwebnovel-writer/scripts/project_locator.py343except Exception:CODE
HIGHwebnovel-writer/scripts/archive_manager.py261except (TypeError, ValueError):CODE
HIGHwebnovel-writer/scripts/archive_manager.py253except ValueError:CODE
HIGHwebnovel-writer/scripts/archive_manager.py272except ValueError:CODE
HIGHwebnovel-writer/scripts/archive_manager.py278except ValueError:CODE
HIGHwebnovel-writer/scripts/update_state.py582except ValueError:CODE
HIGHwebnovel-writer/scripts/security_utils.py580except ValueError:CODE
HIGHwebnovel-writer/scripts/security_utils.py481except OSError:CODE
HIGHwebnovel-writer/scripts/security_utils.py453except OSError:CODE
HIGH…-writer/scripts/data_modules/chapter_commit_service.py160except Exception:CODE
HIGHwebnovel-writer/scripts/data_modules/rag_adapter.py1047except (TypeError, ValueError):CODE
HIGHwebnovel-writer/scripts/data_modules/state_manager.py136except ImportError:CODE
HIGH…writer/scripts/data_modules/migrate_state_to_sqlite.py377except Exception:CODE
HIGH…writer/scripts/data_modules/migrate_state_to_sqlite.py370except Exception:CODE
HIGH…writer/scripts/data_modules/migrate_state_to_sqlite.py362except Exception:CODE
HIGH…vel-writer/scripts/data_modules/index_reading_mixin.py354except (TypeError, ValueError):CODE
HIGH…vel-writer/scripts/data_modules/index_reading_mixin.py358except (TypeError, ValueError):CODE
HIGH…vel-writer/scripts/data_modules/index_reading_mixin.py212except (TypeError, ValueError):CODE
HIGH…riter/scripts/data_modules/tests/test_dashboard_app.py33except Exception:CODE
HIGH…riter/scripts/data_modules/tests/test_dashboard_app.py336except Exception:CODE
HIGH…ter/scripts/data_modules/tests/test_project_locator.py55except FileNotFoundError:CODE
Excessive Try-Catch Wrapping115 hits · 123 pts
SeverityFileLineSnippetContext
LOW…2026-04-12-story-system-phase3-chapter-commit-chain.md290 except Exception as exc:CODE
LOW…/superpowers/plans/2026-06-01-review-critical-fixes.md825 except Exception as exc:STRING
MEDIUM…/superpowers/plans/2026-06-01-review-critical-fixes.md822def runner() -> None:CODE
LOW…ers/plans/2026-04-15-story-system-final-convergence.md1251except Exception as exc:CODE
LOW…ers/plans/2026-04-15-story-system-final-convergence.md1451 except Exception as exc:CODE
LOW…ers/plans/2026-04-15-story-system-final-convergence.md1544 except Exception as exc:CODE
LOW…ans/2026-04-13-story-system-phase5-legacy-downgrade.md759 except Exception as exc:CODE
LOWwebnovel-writer/dashboard/app.py233 except Exception:CODE
LOWwebnovel-writer/hooks/session_start.py56 except Exception:CODE
LOWwebnovel-writer/hooks/guard_runtime_write.py58 except Exception:CODE
LOWwebnovel-writer/scripts/init_project.py690 except Exception as e:CODE
LOWwebnovel-writer/scripts/runtime_compat.py40 except Exception:CODE
LOW⚡webnovel-writer/scripts/status_reporter.py885 except Exception:CODE
LOW⚡webnovel-writer/scripts/status_reporter.py888 except Exception:CODE
LOW⚡webnovel-writer/scripts/status_reporter.py895 except Exception:CODE
LOWwebnovel-writer/scripts/status_reporter.py316 except Exception:CODE
LOWwebnovel-writer/scripts/status_reporter.py367 except Exception:CODE
LOWwebnovel-writer/scripts/status_reporter.py406 except Exception:CODE
LOWwebnovel-writer/scripts/status_reporter.py443 except Exception:CODE
LOWwebnovel-writer/scripts/status_reporter.py788 except Exception:CODE
LOWwebnovel-writer/scripts/project_locator.py57 except Exception:CODE
LOWwebnovel-writer/scripts/project_locator.py67 except Exception:CODE
LOWwebnovel-writer/scripts/project_locator.py90 except Exception:CODE
LOWwebnovel-writer/scripts/project_locator.py113 except Exception:CODE
LOWwebnovel-writer/scripts/project_locator.py204 except Exception:CODE
LOWwebnovel-writer/scripts/project_locator.py219 except Exception:CODE
LOWwebnovel-writer/scripts/project_locator.py337 except Exception:CODE
LOWwebnovel-writer/scripts/project_locator.py343 except Exception:CODE
LOWwebnovel-writer/scripts/archive_manager.py320 except Exception as e:CODE
LOWwebnovel-writer/scripts/archive_manager.py501 except Exception as e:CODE
LOWwebnovel-writer/scripts/archive_manager.py508 except Exception as e:CODE
MEDIUMwebnovel-writer/scripts/sync_plugin_version.py227 print(f"Error: {error}")CODE
LOWwebnovel-writer/scripts/chapter_outline_loader.py43 except Exception:CODE
LOWwebnovel-writer/scripts/validate_csv.py57 except Exception as exc:CODE
LOWwebnovel-writer/scripts/validate_plugin_package.py156 except Exception as exc:CODE
LOWwebnovel-writer/scripts/extract_chapter_context.py224 except Exception as exc:CODE
LOWwebnovel-writer/scripts/extract_chapter_context.py289 except Exception as exc:CODE
LOWwebnovel-writer/scripts/extract_chapter_context.py380 except Exception as exc:CODE
LOW⚡webnovel-writer/scripts/update_state.py176 except Exception as e:CODE
LOWwebnovel-writer/scripts/update_state.py194 except Exception as e:CODE
LOWwebnovel-writer/scripts/update_state.py624 except Exception as e:STRING
LOWwebnovel-writer/scripts/run_behavior_evals.py423 except Exception as exc:CODE
LOWwebnovel-writer/scripts/security_utils.py473 except Exception as e:CODE
LOW…-writer/scripts/data_modules/chapter_commit_service.py147 except Exception as exc:CODE
LOW…-writer/scripts/data_modules/chapter_commit_service.py160 except Exception:CODE
LOWwebnovel-writer/scripts/data_modules/rag_adapter.py105 except Exception:CODE
LOWwebnovel-writer/scripts/data_modules/rag_adapter.py109 except Exception as restore_exc:CODE
LOWwebnovel-writer/scripts/data_modules/rag_adapter.py428 except Exception as e:CODE
LOWwebnovel-writer/scripts/data_modules/rag_adapter.py515 except Exception as exc:CODE
LOWwebnovel-writer/scripts/data_modules/rag_adapter.py1042 except Exception:CODE
LOWwebnovel-writer/scripts/data_modules/rag_adapter.py1533 except Exception:CODE
LOWwebnovel-writer/scripts/data_modules/rag_adapter.py461 except Exception as e:STRING
LOWwebnovel-writer/scripts/data_modules/rag_adapter.py468 except Exception as e:STRING
LOW⚡webnovel-writer/scripts/data_modules/state_manager.py452 except Exception as exc:CODE
LOW⚡webnovel-writer/scripts/data_modules/state_manager.py460 except Exception as exc:CODE
LOWwebnovel-writer/scripts/data_modules/state_manager.py612 except Exception as e:CODE
LOWwebnovel-writer/scripts/data_modules/state_manager.py1213 except Exception as exc:CODE
LOWwebnovel-writer/scripts/data_modules/context_manager.py177 except Exception as exc:CODE
LOWwebnovel-writer/scripts/data_modules/context_manager.py581 except Exception as exc:CODE
LOW⚡webnovel-writer/scripts/data_modules/context_manager.py819 except Exception as exc:CODE
55 more matches not shown…
Deep Nesting62 hits · 56 pts
SeverityFileLineSnippetContext
LOWwebnovel-writer/dashboard/app.py163CODE
LOWwebnovel-writer/scripts/reference_search.py266CODE
LOWwebnovel-writer/scripts/reference_search.py298CODE
LOWwebnovel-writer/scripts/init_project.py234CODE
LOWwebnovel-writer/scripts/status_reporter.py342CODE
LOWwebnovel-writer/scripts/status_reporter.py552CODE
LOWwebnovel-writer/scripts/status_reporter.py777CODE
LOWwebnovel-writer/scripts/genre_taxonomy.py178CODE
LOWwebnovel-writer/scripts/project_locator.py118CODE
LOWwebnovel-writer/scripts/archive_manager.py297CODE
LOWwebnovel-writer/scripts/validate_csv.py83CODE
LOWwebnovel-writer/scripts/backup_manager.py439CODE
LOWwebnovel-writer/scripts/extract_chapter_context.py110CODE
LOWwebnovel-writer/scripts/update_state.py393CODE
LOWwebnovel-writer/scripts/run_behavior_evals.py318CODE
LOWwebnovel-writer/scripts/security_utils.py375CODE
LOWwebnovel-writer/scripts/data_modules/rag_adapter.py1391CODE
LOWwebnovel-writer/scripts/data_modules/rag_adapter.py262CODE
LOWwebnovel-writer/scripts/data_modules/rag_adapter.py379CODE
LOWwebnovel-writer/scripts/data_modules/rag_adapter.py560CODE
LOWwebnovel-writer/scripts/data_modules/rag_adapter.py663CODE
LOWwebnovel-writer/scripts/data_modules/state_manager.py1341CODE
LOWwebnovel-writer/scripts/data_modules/state_manager.py229CODE
LOWwebnovel-writer/scripts/data_modules/state_manager.py423CODE
LOWwebnovel-writer/scripts/data_modules/state_manager.py464CODE
LOWwebnovel-writer/scripts/data_modules/state_manager.py754CODE
LOWwebnovel-writer/scripts/data_modules/state_manager.py786CODE
LOWwebnovel-writer/scripts/data_modules/state_manager.py862CODE
LOWwebnovel-writer/scripts/data_modules/state_manager.py1023CODE
LOWwebnovel-writer/scripts/data_modules/state_manager.py1112CODE
LOWwebnovel-writer/scripts/data_modules/config.py30CODE
LOW…ovel-writer/scripts/data_modules/artifact_validator.py109CODE
LOW…ovel-writer/scripts/data_modules/artifact_validator.py244CODE
LOW…writer/scripts/data_modules/state_projection_writer.py253CODE
LOW…writer/scripts/data_modules/memory_contract_adapter.py159CODE
LOW…ovel-writer/scripts/data_modules/index_entity_mixin.py58CODE
LOWwebnovel-writer/scripts/data_modules/state_validator.py214CODE
LOW…writer/scripts/data_modules/index_projection_writer.py332CODE
LOW…writer/scripts/data_modules/migrate_state_to_sqlite.py40CODE
LOW…bnovel-writer/scripts/data_modules/index_debt_mixin.py241CODE
LOW…bnovel-writer/scripts/data_modules/index_debt_mixin.py338CODE
LOWwebnovel-writer/scripts/data_modules/schemas.py149CODE
LOWwebnovel-writer/scripts/data_modules/entity_linker.py181CODE
LOWwebnovel-writer/scripts/data_modules/index_manager.py721CODE
LOW…iter/scripts/data_modules/index_observability_mixin.py19CODE
LOW…novel-writer/scripts/data_modules/sql_state_manager.py519CODE
LOW…novel-writer/scripts/data_modules/sql_state_manager.py284CODE
LOW…riter/scripts/data_modules/vector_projection_writer.py139CODE
LOWwebnovel-writer/scripts/data_modules/project_phase.py316CODE
LOWwebnovel-writer/scripts/data_modules/style_sampler.py320CODE
LOWwebnovel-writer/scripts/data_modules/style_sampler.py207CODE
LOW…vel-writer/scripts/data_modules/index_reading_mixin.py88CODE
LOW…vel-writer/scripts/data_modules/index_reading_mixin.py190CODE
LOWwebnovel-writer/scripts/data_modules/api_client.py119CODE
LOWwebnovel-writer/scripts/data_modules/story_contracts.py78CODE
LOWwebnovel-writer/scripts/data_modules/memory/store.py65CODE
LOWwebnovel-writer/scripts/data_modules/memory/store.py100CODE
LOWwebnovel-writer/scripts/data_modules/memory/store.py138CODE
LOW…bnovel-writer/scripts/data_modules/memory/compactor.py24CODE
LOWwebnovel-writer/scripts/data_modules/memory/writer.py273CODE
2 more matches not shown…
Cross-File Repetition9 hits · 45 pts
SeverityFileLineSnippetContext
HIGH…/superpowers/plans/2026-06-01-review-critical-fixes.md0select from_entity, to_entity, relationship_type, description, chapter from relationship_events where (from_entity = ? oSTRING
HIGHwebnovel-writer/scripts/data_modules/knowledge_query.py0select from_entity, to_entity, relationship_type, description, chapter from relationship_events where (from_entity = ? oSTRING
HIGH…ers/plans/2026-04-15-story-system-final-convergence.md0select from_entity, to_entity, relationship_type, description, chapter from relationship_events where (from_entity = ? oSTRING
HIGH…/superpowers/plans/2026-06-01-review-critical-fixes.md0insert into samples (id, chapter, scene_type, content, score, tags, created_at) values (?, ?, ?, ?, ?, ?, current_timestSTRING
HIGHwebnovel-writer/scripts/data_modules/style_sampler.py0insert into samples (id, chapter, scene_type, content, score, tags, created_at) values (?, ?, ?, ?, ?, ?, current_timestSTRING
HIGH…r/scripts/data_modules/tests/test_style_sampler_cli.py0insert into samples (id, chapter, scene_type, content, score, tags, created_at) values (?, ?, ?, ?, ?, ?, current_timestSTRING
HIGH…ers/plans/2026-04-15-story-system-final-convergence.md0create table if not exists state_changes ( id integer primary key autoincrement, entity_id text, chapter integer, field STRING
HIGH…ter/scripts/data_modules/tests/test_knowledge_query.py0create table if not exists state_changes ( id integer primary key autoincrement, entity_id text, chapter integer, field STRING
HIGHwebnovel-writer/scripts/data_modules/tests/mock_demo.py0create table if not exists state_changes ( id integer primary key autoincrement, entity_id text, chapter integer, field STRING
Structural Annotation Overuse27 hits · 44 pts
SeverityFileLineSnippetContext
LOW⚡webnovel-writer/scripts/backup_manager.py245 # Step 1: git add .COMMENT
LOW⚡webnovel-writer/scripts/backup_manager.py251 # Step 2: git commitCOMMENT
LOWwebnovel-writer/scripts/backup_manager.py280 # Step 3: git tagCOMMENT
LOW⚡webnovel-writer/scripts/security_utils.py58 # Step 1: 仅保留基础文件名(移除所有路径)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py61 # Step 2: 移除路径分隔符(双重保险)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py64 # Step 3: 只保留安全字符COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py68 # Step 4: 移除连续的下划线(美化)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py71 # Step 5: 长度限制COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py75 # Step 6: 移除首尾下划线COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py78 # Step 7: 确保非空(防御性编程)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py110 # Step 1: 移除换行符(防止多行参数注入)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py113 # Step 2: 移除Git特殊标志(--开头的参数)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py116 # Step 3: 移除引号(防止参数分隔符混淆)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py119 # Step 4: 移除前导的-(防止单字母标志如-m)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py122 # Step 5: 移除连续空格(美化)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py125 # Step 6: 长度限制COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py129 # Step 7: 移除首尾空格COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py132 # Step 8: 确保非空COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py435 # Step 1: 写入临时文件COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py441 # Step 2: 获取锁(如果可用且启用)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py448 # Step 3: 备份原文件(如果存在且启用备份)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py456 # Step 4: 原子重命名(Windows 上目标被瞬时占用会 WinError 5,带退避重试)COMMENT
LOW⚡webnovel-writer/templates/golden-finger-templates.md387### Step 1: 确定核心定位COMMENT
LOW⚡webnovel-writer/templates/golden-finger-templates.md394### Step 2: 设定获得方式COMMENT
LOW⚡webnovel-writer/templates/golden-finger-templates.md402### Step 3: 设计面板/界面COMMENT
LOW⚡webnovel-writer/templates/golden-finger-templates.md406### Step 4: 规划升级路线COMMENT
LOW⚡webnovel-writer/templates/golden-finger-templates.md413### Step 5: 嵌入爽点节点COMMENT
Modern AI Meta-Vocabulary16 hits · 42 pts
SeverityFileLineSnippetContext
MEDIUMREADME.md170### 4. 配置 RAGCOMMENT
MEDIUM…/superpowers/plans/2026-06-01-review-critical-fixes.md50### Vector Projection/RAGCOMMENT
MEDIUM…rpowers/plans/2026-04-16-dashboard-frontend-rebuild.md45/api/env-status # RAG/Rerank 环境配置状态(PR #50)CODE
MEDIUM…rpowers/plans/2026-04-16-dashboard-frontend-rebuild.md46/api/env-status/probe # RAG/Rerank 主动探测(PR #50)CODE
MEDIUM…e/superpowers/specs/2026-04-30-system-quality-fixes.md118### Phase 4 — placeholder guardrails / cross-volume anchor writeback(Issues #6 #7)COMMENT
MEDIUM…architecture/multi-agent-adaptation-spec-2026-06-05.md13PR #110 的方向是对的:Webnovel Writer 不应该永远只被 Claude Code 的表达方式绑定。它已经有完整的写作运行时、Story System、RAG、Dashboard、Agent 分工和发布校验,下一步可以考虑CODE
MEDIUM…chitecture/plugin-runtime-hardening-plan-2026-06-04.md1014### 14.5 对 RAG 的影响COMMENT
MEDIUM…chitecture/plugin-runtime-hardening-spec-2026-06-04.md642#### 6.6.2 RAG 配置COMMENT
MEDIUMdocs/guides/rag-and-config.md1# RAG 与配置说明COMMENT
MEDIUMdocs/guides/rag-and-config.md3## RAG 检索流程COMMENT
MEDIUMwebnovel-writer/scripts/data_modules/config.py187 # ================= Graph-RAG 配置 =================COMMENT
MEDIUMwebnovel-writer/scripts/data_modules/config.py332 # ================= RAG 存储 =================COMMENT
MEDIUMwebnovel-writer/scripts/data_modules/__init__.py43 # RAG AdapterCOMMENT
MEDIUMwebnovel-writer/scripts/data_modules/__init__.py85 # RAG AdapterCOMMENT
MEDIUMwebnovel-writer/scripts/data_modules/index_manager.py559 # RAG 查询日志STRING
MEDIUM…r/skills/webnovel-query/references/system-data-flow.md25 ├── vectors.db # RAG 向量数据库CODE
Verbosity Indicators22 hits · 33 pts
SeverityFileLineSnippetContext
LOW⚡webnovel-writer/scripts/backup_manager.py245 # Step 1: git add .COMMENT
LOW⚡webnovel-writer/scripts/backup_manager.py251 # Step 2: git commitCOMMENT
LOWwebnovel-writer/scripts/backup_manager.py280 # Step 3: git tagCOMMENT
LOW⚡webnovel-writer/scripts/security_utils.py58 # Step 1: 仅保留基础文件名(移除所有路径)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py61 # Step 2: 移除路径分隔符(双重保险)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py64 # Step 3: 只保留安全字符COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py68 # Step 4: 移除连续的下划线(美化)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py71 # Step 5: 长度限制COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py75 # Step 6: 移除首尾下划线COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py78 # Step 7: 确保非空(防御性编程)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py110 # Step 1: 移除换行符(防止多行参数注入)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py113 # Step 2: 移除Git特殊标志(--开头的参数)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py116 # Step 3: 移除引号(防止参数分隔符混淆)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py119 # Step 4: 移除前导的-(防止单字母标志如-m)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py122 # Step 5: 移除连续空格(美化)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py125 # Step 6: 长度限制COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py129 # Step 7: 移除首尾空格COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py132 # Step 8: 确保非空COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py435 # Step 1: 写入临时文件COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py441 # Step 2: 获取锁(如果可用且启用)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py448 # Step 3: 备份原文件(如果存在且启用备份)COMMENT
LOW⚡webnovel-writer/scripts/security_utils.py456 # Step 4: 原子重命名(Windows 上目标被瞬时占用会 WinError 5,带退避重试)COMMENT
Modern Structural Boilerplate14 hits · 14 pts
SeverityFileLineSnippetContext
LOWwebnovel-writer/scripts/__init__.py10__all__ = [CODE
LOWwebnovel-writer/scripts/data_modules/rag_adapter.py38logger = logging.getLogger(__name__)CODE
LOWwebnovel-writer/scripts/data_modules/rag_adapter.py83 def _update_degraded_mode(self) -> None:CODE
LOWwebnovel-writer/scripts/data_modules/state_manager.py33logger = logging.getLogger(__name__)CODE
LOWwebnovel-writer/scripts/data_modules/state_manager.py681 def set_chapter_status(self, chapter: int, status: str) -> None:CODE
LOWwebnovel-writer/scripts/data_modules/context_manager.py55logger = logging.getLogger(__name__)CODE
LOW…writer/scripts/data_modules/state_projection_writer.py199 def _set_path(target: dict, path: str, value: Any) -> None:CODE
LOW⚡…writer/scripts/data_modules/memory_contract_adapter.py29logger = logging.getLogger(__name__)CODE
LOWwebnovel-writer/scripts/data_modules/__init__.py21__all__ = [CODE
LOWwebnovel-writer/scripts/data_modules/observability.py16logger = logging.getLogger(__name__)CODE
LOW…ovel-writer/scripts/data_modules/index_entity_mixin.py17logger = logging.getLogger(__name__)CODE
LOW…iter/scripts/data_modules/index_observability_mixin.py15logger = logging.getLogger(__name__)CODE
LOW…riter/scripts/data_modules/vector_projection_writer.py15logger = logging.getLogger(__name__)CODE
LOWwebnovel-writer/scripts/data_modules/memory/__init__.py18__all__ = [CODE
Docstring Block Structure1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHwebnovel-writer/scripts/security_utils.py200 验证并转换整数输入(严格模式) 安全关键函数 - 修复update_state.py弱验证漏洞 Args: value: 输入值(字符串) field_name: 字段名称(用于STRING
AI Structural Patterns2 hits · 2 pts
SeverityFileLineSnippetContext
LOWwebnovel-writer/scripts/init_project.py234CODE
LOWwebnovel-writer/scripts/data_modules/entity_linker.py115CODE
Fake / Example Data1 hit · 1 pts
SeverityFileLineSnippetContext
LOW…er/scripts/data_modules/tests/test_story_system_cli.py166 assert "placeholder" in captured.errCODE