Repository Analysis

lingfengQAQ/webnovel-writer

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

16.4 Moderate AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of lingfengQAQ/webnovel-writer, a Python project with 6,252 GitHub stars. SynthScan v2.0 examined 113,919 lines of code across 430 source files, recording 1499 pattern matches distributed across 13 syntactic categories. The overall adjusted score of 16.4 places this repository in the Moderate AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

16.4
Adjusted Score
16.4
Raw Score
100%
Time Factor
2026-08-02
Last Push
6.3K
Stars
Python
Language
113.9K
Lines of Code
430
Files
1.5K
Pattern Hits
2026-08-02
Scan Date
0.02
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.

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

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 10MEDIUM 134LOW 1355

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 1499 distinct pattern matches across 13 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Hyper-Verbose Identifiers935 hits · 929 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
MEDIUMwebnovel-writer/scripts/reference_search.py111# ---------------------------------------------------------------------------COMMENT
MEDIUMwebnovel-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
MEDIUMwebnovel-writer/scripts/backup_manager.py254 # ============================================================================COMMENT
MEDIUMwebnovel-writer/scripts/backup_manager.py258 # ============================================================================COMMENT
MEDIUMwebnovel-writer/scripts/update_state.py57# ============================================================================COMMENT
MEDIUMwebnovel-writer/scripts/update_state.py59# ============================================================================COMMENT
MEDIUMwebnovel-writer/scripts/update_state.py163 # ============================================================================COMMENT
MEDIUMwebnovel-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…
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
LOWwebnovel-writer/scripts/status_reporter.py885 except Exception:CODE
LOWwebnovel-writer/scripts/status_reporter.py888 except Exception:CODE
LOWwebnovel-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
LOWwebnovel-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.py461 except Exception as e:STRING
LOWwebnovel-writer/scripts/data_modules/rag_adapter.py468 except Exception as e:STRING
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/state_manager.py452 except Exception as exc:CODE
LOWwebnovel-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
LOWwebnovel-writer/scripts/data_modules/context_manager.py819 except Exception as exc:CODE
55 more matches not shown…
Deep Nesting62 hits · 57 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…
Structural Annotation Overuse27 hits · 45 pts
SeverityFileLineSnippetContext
LOWwebnovel-writer/scripts/backup_manager.py245 # Step 1: git add .COMMENT
LOWwebnovel-writer/scripts/backup_manager.py251 # Step 2: git commitCOMMENT
LOWwebnovel-writer/scripts/backup_manager.py280 # Step 3: git tagCOMMENT
LOWwebnovel-writer/scripts/security_utils.py58 # Step 1: 仅保留基础文件名(移除所有路径)COMMENT
LOWwebnovel-writer/scripts/security_utils.py61 # Step 2: 移除路径分隔符(双重保险)COMMENT
LOWwebnovel-writer/scripts/security_utils.py64 # Step 3: 只保留安全字符COMMENT
LOWwebnovel-writer/scripts/security_utils.py68 # Step 4: 移除连续的下划线(美化)COMMENT
LOWwebnovel-writer/scripts/security_utils.py71 # Step 5: 长度限制COMMENT
LOWwebnovel-writer/scripts/security_utils.py75 # Step 6: 移除首尾下划线COMMENT
LOWwebnovel-writer/scripts/security_utils.py78 # Step 7: 确保非空(防御性编程)COMMENT
LOWwebnovel-writer/scripts/security_utils.py110 # Step 1: 移除换行符(防止多行参数注入)COMMENT
LOWwebnovel-writer/scripts/security_utils.py113 # Step 2: 移除Git特殊标志(--开头的参数)COMMENT
LOWwebnovel-writer/scripts/security_utils.py116 # Step 3: 移除引号(防止参数分隔符混淆)COMMENT
LOWwebnovel-writer/scripts/security_utils.py119 # Step 4: 移除前导的-(防止单字母标志如-m)COMMENT
LOWwebnovel-writer/scripts/security_utils.py122 # Step 5: 移除连续空格(美化)COMMENT
LOWwebnovel-writer/scripts/security_utils.py125 # Step 6: 长度限制COMMENT
LOWwebnovel-writer/scripts/security_utils.py129 # Step 7: 移除首尾空格COMMENT
LOWwebnovel-writer/scripts/security_utils.py132 # Step 8: 确保非空COMMENT
LOWwebnovel-writer/scripts/security_utils.py435 # Step 1: 写入临时文件COMMENT
LOWwebnovel-writer/scripts/security_utils.py441 # Step 2: 获取锁(如果可用且启用)COMMENT
LOWwebnovel-writer/scripts/security_utils.py448 # Step 3: 备份原文件(如果存在且启用备份)COMMENT
LOWwebnovel-writer/scripts/security_utils.py456 # Step 4: 原子重命名(Windows 上目标被瞬时占用会 WinError 5,带退避重试)COMMENT
LOWwebnovel-writer/templates/golden-finger-templates.md387### Step 1: 确定核心定位COMMENT
LOWwebnovel-writer/templates/golden-finger-templates.md394### Step 2: 设定获得方式COMMENT
LOWwebnovel-writer/templates/golden-finger-templates.md402### Step 3: 设计面板/界面COMMENT
LOWwebnovel-writer/templates/golden-finger-templates.md406### Step 4: 规划升级路线COMMENT
LOWwebnovel-writer/templates/golden-finger-templates.md413### Step 5: 嵌入爽点节点COMMENT
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
Modern AI Meta-Vocabulary16 hits · 42 pts
SeverityFileLineSnippetContext
MEDIUMREADME.md111### 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 · 35 pts
SeverityFileLineSnippetContext
LOWwebnovel-writer/scripts/backup_manager.py245 # Step 1: git add .COMMENT
LOWwebnovel-writer/scripts/backup_manager.py251 # Step 2: git commitCOMMENT
LOWwebnovel-writer/scripts/backup_manager.py280 # Step 3: git tagCOMMENT
LOWwebnovel-writer/scripts/security_utils.py58 # Step 1: 仅保留基础文件名(移除所有路径)COMMENT
LOWwebnovel-writer/scripts/security_utils.py61 # Step 2: 移除路径分隔符(双重保险)COMMENT
LOWwebnovel-writer/scripts/security_utils.py64 # Step 3: 只保留安全字符COMMENT
LOWwebnovel-writer/scripts/security_utils.py68 # Step 4: 移除连续的下划线(美化)COMMENT
LOWwebnovel-writer/scripts/security_utils.py71 # Step 5: 长度限制COMMENT
LOWwebnovel-writer/scripts/security_utils.py75 # Step 6: 移除首尾下划线COMMENT
LOWwebnovel-writer/scripts/security_utils.py78 # Step 7: 确保非空(防御性编程)COMMENT
LOWwebnovel-writer/scripts/security_utils.py110 # Step 1: 移除换行符(防止多行参数注入)COMMENT
LOWwebnovel-writer/scripts/security_utils.py113 # Step 2: 移除Git特殊标志(--开头的参数)COMMENT
LOWwebnovel-writer/scripts/security_utils.py116 # Step 3: 移除引号(防止参数分隔符混淆)COMMENT
LOWwebnovel-writer/scripts/security_utils.py119 # Step 4: 移除前导的-(防止单字母标志如-m)COMMENT
LOWwebnovel-writer/scripts/security_utils.py122 # Step 5: 移除连续空格(美化)COMMENT
LOWwebnovel-writer/scripts/security_utils.py125 # Step 6: 长度限制COMMENT
LOWwebnovel-writer/scripts/security_utils.py129 # Step 7: 移除首尾空格COMMENT
LOWwebnovel-writer/scripts/security_utils.py132 # Step 8: 确保非空COMMENT
LOWwebnovel-writer/scripts/security_utils.py435 # Step 1: 写入临时文件COMMENT
LOWwebnovel-writer/scripts/security_utils.py441 # Step 2: 获取锁(如果可用且启用)COMMENT
LOWwebnovel-writer/scripts/security_utils.py448 # Step 3: 备份原文件(如果存在且启用备份)COMMENT
LOWwebnovel-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