Repository Analysis

Unclecheng-li/VulnClaw

基于 AI Agent + MCP 工具链 + 渗透 Skill 编排, 配合大语言模型, 自然语言输入 → 自动完成「信息收集 → 漏洞发现 → 漏洞利用 → 报告生成」全流程。

18.8 Moderate AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of Unclecheng-li/VulnClaw, a Python project with 2,067 GitHub stars. SynthScan v2.0 examined 136,070 lines of code across 464 source files, recording 1859 pattern matches distributed across 17 syntactic categories. The overall adjusted score of 18.8 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).

18.8
Adjusted Score
18.8
Raw Score
100%
Time Factor
2026-07-13
Last Push
2.1K
Stars
Python
Language
136.1K
Lines of Code
464
Files
1.9K
Pattern Hits
2026-07-14
Scan Date
0.01
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

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

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 6MEDIUM 300LOW 1553

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 1859 distinct pattern matches across 17 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 Identifiers967 hits · 978 pts
SeverityFileLineSnippetContext
LOWfrontend/src/App.tsx222 function openBoundaryForActiveTask() {CODE
LOWfrontend/src/utils/preferences.ts82function normalizeBoundaryDefaults(value: unknown): BoundaryDefaults {CODE
LOWfrontend/src/utils/taskLabels.ts123export function countConstraintViolations(CODE
LOWfrontend/src/pages/SafetyBoundaryPage.tsx90function boundaryDefaultsToConstraints(defaults: BoundaryDefaults): Record<string, unknown> {CODE
LOWtests/test_reasoning_prompt_context.py37def test_session_state_persists_reasoning(tmp_path):CODE
LOWtests/test_reasoning_prompt_context.py59def test_build_round_context_injects_reasoning_and_reflexion(tmp_path):CODE
LOWtests/test_release.py6def test_package_version_matches_pyproject() -> None:CODE
LOWtests/test_token_counter.py25 def test_multimodal_list_content(self):CODE
LOWtests/test_token_counter.py76 def test_no_truncation_under_budget(self):CODE
LOWtests/test_token_counter.py90 def test_preserves_system_prompt(self):CODE
LOWtests/test_token_counter.py96 def test_preserves_recent_messages(self):CODE
LOWtests/test_token_counter.py102 def test_inserts_truncation_notice(self):CODE
LOWtests/test_token_counter.py116 def test_drops_oldest_middle_first(self):CODE
LOWtests/test_token_counter.py125 def test_no_system_when_preserve_false(self):CODE
LOWtests/test_token_counter.py132 def test_zero_max_tokens_returns_copy(self):CODE
LOWtests/test_token_counter.py138 def test_few_messages_than_min_recent(self):CODE
LOWtests/test_system_prompt_constraints.py19def test_prompt_includes_constraints_block_when_constraints_set():CODE
LOWtests/test_system_prompt_constraints.py27def test_prompt_omits_constraints_block_when_constraints_empty():CODE
LOWtests/test_system_prompt_constraints.py33def test_prompt_omits_constraints_block_when_constraints_none():CODE
LOWtests/test_basic.py22def test_all_submodules_importable():CODE
LOWtests/test_mcp_lifecycle.py52 def test_start_local_server_marks_running_and_healthy(self):CODE
LOWtests/test_mcp_lifecycle.py60 def test_stop_server_sets_unknown_and_clears_running(self):CODE
LOWtests/test_mcp_lifecycle.py101 async def test_context_manager_starts_and_stops(self):CODE
LOWtests/test_mcp_lifecycle.py114 def test_terminate_then_no_kill_when_process_exits(self):CODE
LOWtests/test_mcp_lifecycle.py124 def test_kill_when_terminate_does_not_stop(self):CODE
LOWtests/test_mcp_lifecycle.py147 async def test_async_terminate_no_kill_when_already_dead(self):CODE
LOWtests/test_mcp_lifecycle.py162 async def test_restart_succeeds_first_attempt(self):CODE
LOWtests/test_mcp_lifecycle.py292 async def test_unavailable_when_subprocess_dead(self):CODE
LOWtests/test_mcp_lifecycle.py301 async def test_no_calls_keeps_current_status(self):CODE
LOWtests/test_mcp_lifecycle.py309 async def test_unknown_server_returns_unknown(self):CODE
LOWtests/test_mcp_lifecycle.py318 def test_get_server_stats_reports_counts_and_latency(self):CODE
LOWtests/test_mcp_lifecycle.py335 def test_record_restart_updates_stats(self):CODE
LOWtests/test_mcp_lifecycle.py345 def test_health_window_is_bounded(self):CODE
LOWtests/test_mcp_lifecycle.py354 async def test_call_tool_records_latency(self):CODE
LOWtests/test_mcp_lifecycle.py74 def test_stop_all_stops_tracked_processes(self):CODE
LOWtests/test_mcp_lifecycle.py86 async def test_astop_all_stops_in_parallel(self):CODE
LOWtests/test_mcp_lifecycle.py135 async def test_async_terminate_escalates_to_kill(self):CODE
LOWtests/test_mcp_lifecycle.py173 async def test_restart_retries_with_backoff_then_succeeds(self, monkeypatch):CODE
LOWtests/test_mcp_lifecycle.py199 async def test_restart_gives_up_after_max_attempts(self, monkeypatch):CODE
LOWtests/test_mcp_lifecycle.py220 async def test_call_tool_restarts_dead_subprocess(self, monkeypatch):CODE
LOWtests/test_mcp_lifecycle.py383 def test_attach_success_registers_known_tools(self, monkeypatch):CODE
LOWtests/test_mcp_lifecycle.py406 def test_attach_failure_degrades_and_falls_back(self, monkeypatch):CODE
LOWtests/test_mcp_lifecycle.py424 async def test_get_or_create_session_dispatches_http(self, monkeypatch):CODE
LOWtests/test_mcp_lifecycle.py437 async def test_call_tool_routes_streamable_http_server(self, monkeypatch):CODE
LOWtests/test_mcp_lifecycle.py469 def test_burp_attach_success_registers_runtime_tools(self, monkeypatch):CODE
LOWtests/test_mcp_lifecycle.py506 async def test_get_or_create_session_dispatches_sse(self, monkeypatch):CODE
LOWtests/test_mcp_lifecycle.py519 async def test_call_tool_routes_sse_server(self, monkeypatch):CODE
LOWtests/test_mcp_lifecycle.py552 async def test_sse_shutdown_noise_is_ignored(self):CODE
LOWtests/test_mcp_lifecycle.py601def test_persistent_stdio_shutdown_has_no_cross_task_error():STRING
LOWtests/test_mcp_lifecycle.py669def test_smoke_event_loop_isolation():STRING
LOWtests/test_kb_fallback.py49 def test_falls_back_to_keyword_when_chromadb_missing(self, tmp_path, monkeypatch):CODE
LOWtests/test_kb_fallback.py59 def test_status_disabled_when_no_data(self, tmp_path, monkeypatch):CODE
LOWtests/test_kb_fallback.py73 def test_retrieve_ranks_relevant_first(self, tmp_path, monkeypatch):CODE
LOWtests/test_kb_fallback.py83 def test_retrieve_matches_cve_by_service(self, tmp_path):CODE
LOWtests/test_kb_fallback.py89 def test_retrieve_empty_query_returns_empty(self, tmp_path):CODE
LOWtests/test_kb_fallback.py94 def test_retrieve_no_match_returns_empty(self, tmp_path):CODE
LOWtests/test_kb_fallback.py99 def test_has_data_false_on_empty_store(self, tmp_path):CODE
LOWtests/test_kb_fallback.py109 def test_get_status_returns_enum(self, tmp_path, monkeypatch):CODE
LOWtests/test_kb_fallback.py115 def test_status_detail_is_string(self, tmp_path, monkeypatch):CODE
LOWtests/test_kb_fallback.py147 def test_same_query_uses_cache(self, tmp_path, monkeypatch):CODE
907 more matches not shown…
Decorative Section Separators288 hits · 917 pts
SeverityFileLineSnippetContext
MEDIUMpyproject.toml39 # ── 沙箱依赖(python_execute 运行时)──────────────────────────────COMMENT
MEDIUMtests/test_mcp_lifecycle.py48# ── start / stop ─────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_mcp_lifecycle.py110# ── graceful termination (SIGTERM-then-SIGKILL semantics) ────────────COMMENT
MEDIUMtests/test_mcp_lifecycle.py157# ── auto-restart ─────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_mcp_lifecycle.py314# ── stats tracking ───────────────────────────────────────────────────COMMENT
MEDIUMtests/test_mcp_lifecycle.py255# ── health check ─────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_mcp_lifecycle.py571# ── stdio cross-task shutdown noise (issue #81) ──────────────────────COMMENT
MEDIUMtests/test_kb_fallback.py45# ── Automatic degradation when ChromaDB unavailable ──────────────────COMMENT
MEDIUMtests/test_kb_fallback.py69# ── Keyword retrieval functionality ──────────────────────────────────COMMENT
MEDIUMtests/test_kb_fallback.py105# ── Status reporting ─────────────────────────────────────────────────COMMENT
MEDIUMtests/test_kb_fallback.py123# ── Retrieval result caching (via kb_context) ────────────────────────COMMENT
MEDIUMtests/test_kb_fallback.py181# ── Full-corpus loading from store ───────────────────────────────────COMMENT
MEDIUMtests/test_agent.py7# ── context.py ───────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_agent.py529# ── memory.py ────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_agent.py608# ── prompts.py ───────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_agent.py680# ── core.py ──────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_finding_similarity.py15# ── normalize_text ───────────────────────────────────────────────────COMMENT
MEDIUMtests/test_finding_similarity.py37# ── text_similarity ──────────────────────────────────────────────────COMMENT
MEDIUMtests/test_finding_similarity.py63# ── url_similarity ───────────────────────────────────────────────────COMMENT
MEDIUMtests/test_finding_similarity.py97# ── normalize_vuln_type ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_finding_similarity.py134# ── finding_similarity ───────────────────────────────────────────────COMMENT
MEDIUMtests/test_finding_similarity.py184# ── deduplicate_findings ─────────────────────────────────────────────COMMENT
MEDIUMtests/test_finding_similarity.py238# ── SessionState integration ─────────────────────────────────────────COMMENT
MEDIUMtests/test_recon_tools.py48# ── JS 提取(纯函数)────────────────────────────────────────────────COMMENT
MEDIUMtests/test_recon_tools.py112# ── 空间测绘:查询构造 + 解析 ───────────────────────────────────────COMMENT
MEDIUMtests/test_recon_tools.py165# ── 目录枚举:全局伪装 200 识别 ─────────────────────────────────────COMMENT
MEDIUMtests/test_recon_tools.py207# ── 子域名枚举:被动聚合 + 字典爆破关闭时不解析 ─────────────────────COMMENT
MEDIUMtests/test_headless.py87# ── Exit-code contract ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_headless.py146# ── Run artifacts ───────────────────────────────────────────────────COMMENT
MEDIUMtests/test_headless.py40# ── Scan-mode presets ───────────────────────────────────────────────COMMENT
MEDIUMtests/test_cli_noninteractive.py221# ── Exit-code contract ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_cli_noninteractive.py286# ── Prescribed workflow docs parse-check ────────────────────────────COMMENT
MEDIUMtests/test_cli_noninteractive.py80# ── Non-interactive: no prompts, structured output ──────────────────COMMENT
MEDIUMtests/test_cli_noninteractive.py153# ── Scan-mode presets applied to the engine ─────────────────────────COMMENT
MEDIUMtests/test_report.py5# ── generator.py ─────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_report.py430# ── poc_builder.py ───────────────────────────────────────────────────COMMENT
MEDIUMtests/test_token_provider.py26# ── static mode ──────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_token_provider.py46# ── oauth store + resolution ─────────────────────────────────────────COMMENT
MEDIUMtests/test_token_provider.py81# ── Sign in with ChatGPT (Codex OAuth client) ────────────────────────COMMENT
MEDIUMtests/test_solver.py449# ── Parallel exploration tests ──────────────────────────────────────COMMENT
MEDIUMtests/test_solver.py611# ── Blackboard seq restore test ─────────────────────────────────────COMMENT
MEDIUMtests/test_config.py4# ── schema.py ────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_config.py155# ── settings.py ──────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_chatgpt_proxy.py14# ── Pure translation functions ───────────────────────────────────────COMMENT
MEDIUMtests/test_chatgpt_proxy.py138# ── Integration: proxy server ↔ mock ChatGPT backend ─────────────────COMMENT
MEDIUMtests/test_skills.py375# ── flag_skills.py ────────────────────────────────────────────────COMMENT
MEDIUMtests/test_skills.py4# ── loader.py ────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_skills.py231# ── dispatcher.py ────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_skills.py438# ── crypto_tools.py ────────────────────────────────────────────────COMMENT
MEDIUMtests/test_agent_graph.py41# ── Node lifecycle ───────────────────────────────────────────────────COMMENT
MEDIUMtests/test_agent_graph.py221# ── Persistence ──────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_agent_graph.py133# ── Root-completion rule (fail-loud) ─────────────────────────────────COMMENT
MEDIUMtests/test_agent_graph.py176# ── Bounded fan-out caps ─────────────────────────────────────────────COMMENT
MEDIUMtests/test_agent_graph.py266# ── Resume ───────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_kb.py4# ── store.py ─────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_kb.py130# ── retriever.py ─────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_kb.py260# ── updater.py ───────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_mcp.py103# ── router.py ────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_mcp.py7# ── registry.py ──────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_mcp.py195# ── lifecycle.py ─────────────────────────────────────────────────────COMMENT
228 more matches not shown…
Unused Imports227 hits · 218 pts
SeverityFileLineSnippetContext
LOWconftest.py1CODE
LOWtests/test_release.py1CODE
LOWtests/test_mcp_lifecycle.py3CODE
LOWtests/test_finding_similarity.py3CODE
LOWtests/test_recon_tools.py1CODE
LOWtests/test_agent_context_protocol.py14CODE
LOWtests/test_mcp_fetch_cookies.py8CODE
LOWtests/test_headless.py3CODE
LOWtests/test_cli_noninteractive.py3CODE
LOWtests/test_release_workflow.py1CODE
LOWtests/test_team_agents.py1CODE
LOWtests/test_parallel_agents.py3CODE
LOWtests/test_stream_robustness.py13CODE
LOWtests/test_token_provider.py3CODE
LOWtests/test_builtin_plugins.py1CODE
LOWtests/test_plugin_cli.py1CODE
LOWtests/test_solver.py1CODE
LOWtests/test_chatgpt_proxy.py3CODE
LOWtests/test_plugin_runtime.py1CODE
LOWtests/test_agent_graph.py3CODE
LOWtests/test_llm_client_streaming.py3CODE
LOWtests/test_run_persistence.py1CODE
LOWtests/test_blackboard.py1CODE
LOWtests/test_plugin_integration.py1CODE
LOWtests/test_tool_parallel.py3CODE
LOWtests/test_constraint_tool_action.py3CODE
LOWtests/traffic/test_report_export.py3CODE
LOWtests/traffic/test_normalize_replay.py3CODE
LOWtests/traffic/test_store.py3CODE
LOWtests/traffic/test_backends.py3CODE
LOWtests/traffic/test_tools.py3CODE
LOWvulnclaw/headless.py22CODE
LOWvulnclaw/targets.py3CODE
LOWvulnclaw/repl_runner.py3CODE
LOWvulnclaw/run_context.py3CODE
LOWvulnclaw/orchestrator.py3CODE
LOWvulnclaw/traffic/store.py11CODE
LOWvulnclaw/traffic/models.py10CODE
LOWvulnclaw/traffic/paths.py9CODE
LOWvulnclaw/traffic/mitm_addon.py15CODE
LOWvulnclaw/traffic/mitm_addon.py32CODE
LOWvulnclaw/traffic/normalize.py11CODE
LOWvulnclaw/traffic/tools.py9CODE
LOWvulnclaw/traffic/__init__.py10CODE
LOWvulnclaw/traffic/__init__.py12CODE
LOWvulnclaw/traffic/__init__.py13CODE
LOWvulnclaw/traffic/__init__.py13CODE
LOWvulnclaw/traffic/__init__.py13CODE
LOWvulnclaw/traffic/__init__.py13CODE
LOWvulnclaw/traffic/__init__.py13CODE
LOWvulnclaw/traffic/__init__.py13CODE
LOWvulnclaw/traffic/__init__.py13CODE
LOWvulnclaw/traffic/__init__.py13CODE
LOWvulnclaw/traffic/__init__.py13CODE
LOWvulnclaw/traffic/__init__.py24CODE
LOWvulnclaw/traffic/__init__.py25CODE
LOWvulnclaw/traffic/__init__.py25CODE
LOWvulnclaw/traffic/browser.py14CODE
LOWvulnclaw/traffic/browser.py31CODE
LOWvulnclaw/traffic/capture.py9CODE
167 more matches not shown…
Excessive Try-Catch Wrapping170 hits · 168 pts
SeverityFileLineSnippetContext
LOWtests/test_report.py267 except Exception:CODE
LOWtests/test_token_provider.py147 except Exception:CODE
LOWtests/test_mcp.py242 except Exception:CODE
LOWvulnclaw/__init__.py14except Exception:CODE
LOWvulnclaw/orchestrator.py181 except Exception as exc:CODE
LOWvulnclaw/traffic/models.py40 except Exception:CODE
LOWvulnclaw/traffic/mitm_addon.py33 except Exception:CODE
LOWvulnclaw/traffic/tools.py171 except Exception as exc: # network / transport errorsCODE
LOWvulnclaw/traffic/browser.py32 except Exception:CODE
LOWvulnclaw/traffic/browser.py49 except Exception:CODE
LOWvulnclaw/intel/osint.py302 except Exception:CODE
LOWvulnclaw/intel/osint.py345 except Exception:CODE
LOWvulnclaw/intel/osint.py703 except Exception as exc: # never raise into the agent loopCODE
LOWvulnclaw/intel/remediation.py266 except Exception as e:CODE
LOWvulnclaw/intel/remediation.py295 except Exception as e:CODE
LOWvulnclaw/kb/retriever.py39except Exception as exc: # pragma: no cover - exercised when chromadb missingCODE
LOWvulnclaw/kb/retriever.py213 except Exception as exc: # pragma: no cover - defensiveCODE
LOWvulnclaw/kb/retriever.py219 except Exception as exc:CODE
LOWvulnclaw/kb/retriever.py262 except Exception as exc: # pragma: no cover - defensiveCODE
LOWvulnclaw/target_state/planner.py247 except Exception:CODE
LOWvulnclaw/config/settings.py422 except Exception:CODE
LOWvulnclaw/config/url_utils.py23 except Exception:CODE
LOWvulnclaw/plugins/runtime.py69 except Exception as exc:CODE
LOWvulnclaw/web/services/task_service.py96 except Exception as exc:CODE
LOWvulnclaw/agent/recon_tools.py328 except Exception as e: # 单引擎失败不影响其他引擎CODE
LOWvulnclaw/agent/recon_tools.py332 except Exception as e:CODE
LOWvulnclaw/agent/recon_tools.py384 except Exception as e:CODE
LOWvulnclaw/agent/recon_tools.py387 except Exception as e:CODE
LOWvulnclaw/agent/recon_tools.py405 except Exception:CODE
LOWvulnclaw/agent/recon_tools.py542 except Exception:CODE
LOWvulnclaw/agent/recon_tools.py546 except Exception as e:CODE
LOWvulnclaw/agent/recon_tools.py685 except Exception as e:CODE
LOWvulnclaw/agent/recon_tools.py705 except Exception:CODE
LOWvulnclaw/agent/recon_tools.py746 except Exception as e:CODE
LOWvulnclaw/agent/recon_tools.py830 except Exception:CODE
LOWvulnclaw/agent/recon_tools.py841 except Exception:CODE
LOWvulnclaw/agent/recon_tools.py851 except Exception as e:CODE
LOWvulnclaw/agent/loop_controller.py267 except Exception as e:CODE
LOWvulnclaw/agent/loop_controller.py373 except Exception:CODE
LOWvulnclaw/agent/loop_controller.py391 except Exception as e:CODE
LOWvulnclaw/agent/kb_context.py28 except Exception as exc: # defensive — never break the agent loopCODE
LOWvulnclaw/agent/kb_context.py68 except Exception as exc: # defensive — retrieval must never break the loopCODE
LOWvulnclaw/agent/prompt_context.py380 except Exception:CODE
LOWvulnclaw/agent/solver.py680 except Exception as exc:CODE
LOWvulnclaw/agent/solver.py715 except Exception as exc:CODE
LOWvulnclaw/agent/solver.py810 except Exception as exc:CODE
LOWvulnclaw/agent/solver.py920 except Exception as exc:CODE
LOWvulnclaw/agent/tool_call_manager.py153 except Exception as e:CODE
LOWvulnclaw/agent/core.py53except Exception:CODE
LOWvulnclaw/agent/core.py92 except Exception:CODE
LOWvulnclaw/agent/core.py99 except Exception:CODE
LOWvulnclaw/agent/core.py231 except Exception:CODE
LOWvulnclaw/agent/core.py252 except Exception:CODE
LOWvulnclaw/agent/core.py475 except Exception as e:CODE
LOWvulnclaw/agent/team.py106 except Exception:CODE
LOWvulnclaw/agent/team.py143 except Exception:CODE
LOWvulnclaw/agent/chatgpt_proxy.py414 except Exception: # noqa: BLE001 - models listing is best-effortCODE
LOWvulnclaw/agent/chatgpt_proxy.py451 except Exception as exc: # noqa: BLE001 - surface anything as an API errorCODE
LOWvulnclaw/agent/llm_client.py47 except Exception:CODE
LOWvulnclaw/agent/llm_client.py181 except Exception as exc:CODE
110 more matches not shown…
Structural Annotation Overuse54 hits · 88 pts
SeverityFileLineSnippetContext
LOWREADME.md591# Step 1: 启动 Chrome 远程调试COMMENT
LOWREADME.md597# Step 2: 启用 VulnClaw 配置(自动通过 npx 拉取,无需手动安装)COMMENT
LOWREADME.md621# Step 1: 克隆并构建COMMENT
LOWREADME.md627# Step 2: 加载到 Burp SuiteCOMMENT
LOWREADME.md630# Step 3: 在 Burp 的 MCP 标签页勾选 "Enabled"(默认监听 127.0.0.1:9876)COMMENT
LOWREADME.md632# Step 4: 启用 VulnClaw 配置COMMENT
LOWdocs/mcp-deployment.md111#### Step 1: 克隆并构建COMMENT
LOWdocs/mcp-deployment.md121#### Step 2: 加载到 Burp SuiteCOMMENT
LOWdocs/mcp-deployment.md128#### Step 3: 启用 MCP ServerCOMMENT
LOWvulnclaw/config/token_provider.py209# WARNING: This authenticates against OpenAI's first-party Codex OAuth client.COMMENT
LOW…6-04-19_php-weak-comparison_double-write-md5-bypass.md100# Step 1: 设置 L1 + L2 sessionCOMMENT
LOW…6-04-19_php-weak-comparison_double-write-md5-bypass.md104# Step 2: 触发 L3 + 获取 flagCOMMENT
LOWvulnclaw/agent/builtin_tools.py1316 # Step 1: Get login page for initial CSRF and sessionCOMMENT
LOWvulnclaw/agent/builtin_tools.py1346 # Step 2: Try each passwordCOMMENT
LOW…verse/references/android-authorized-app-pentest-sop.md50## Step 1: Confirm device and app presenceCOMMENT
LOW…verse/references/android-authorized-app-pentest-sop.md67## Step 2: Prepare packet visibility firstCOMMENT
LOW…verse/references/android-authorized-app-pentest-sop.md77## Step 3: Drive the real business flowCOMMENT
LOW…verse/references/android-authorized-app-pentest-sop.md89## Step 4: After each important action, inspect runtime evidenceCOMMENT
LOW…verse/references/android-authorized-app-pentest-sop.md105## Step 5: Branch by packet resultCOMMENT
LOW…ences/android-ui-driven-observation-and-packet-loop.md35### Step 1: Prepare the runtime viewCOMMENT
LOW…ences/android-ui-driven-observation-and-packet-loop.md58### Step 2: Create a visual checkpointCOMMENT
LOW…ences/android-ui-driven-observation-and-packet-loop.md68### Step 3: Analyze the current screenCOMMENT
LOW…ences/android-ui-driven-observation-and-packet-loop.md93### Step 4: Execute the next UI actionCOMMENT
LOW…ences/android-ui-driven-observation-and-packet-loop.md126### Step 5: Tie UI action to packet captureCOMMENT
LOW…ences/android-ui-driven-observation-and-packet-loop.md139### Step 6: Promote the packet into replay analysisCOMMENT
LOW…erences/android-external-url-runtime-first-workflow.md55### Step 1: Confirm device and app presenceCOMMENT
LOW…erences/android-external-url-runtime-first-workflow.md72### Step 2: Prepare packet visibility firstCOMMENT
LOW…erences/android-external-url-runtime-first-workflow.md82### Step 3: Drive the app to the target featureCOMMENT
LOW…erences/android-external-url-runtime-first-workflow.md108### Step 4: Inspect the screenshot before reversingCOMMENT
LOW…erences/android-external-url-runtime-first-workflow.md125### Step 5: Review logs for cheap evidenceCOMMENT
LOW…erences/android-external-url-runtime-first-workflow.md137### Step 6: Check Burp and CharlesCOMMENT
LOW…erences/android-external-url-runtime-first-workflow.md151### Step 7: Branch by packet visibilityCOMMENT
LOW…/specialized/osint-recon/references/author-tracking.md9## Step 1: 从页面提取作者标识COMMENT
LOW…/specialized/osint-recon/references/author-tracking.md62## Step 2: GitHub 追踪COMMENT
LOW…/specialized/osint-recon/references/author-tracking.md126## Step 3: 跨平台关联COMMENT
LOW…/specialized/osint-recon/references/author-tracking.md157## Step 4: 信息汇总模板COMMENT
LOW…ntest/references/android-authorized-app-pentest-sop.md50## Step 1: Confirm device and app presenceCOMMENT
LOW…ntest/references/android-authorized-app-pentest-sop.md67## Step 2: Prepare packet visibility firstCOMMENT
LOW…ntest/references/android-authorized-app-pentest-sop.md77## Step 3: Drive the real business flowCOMMENT
LOW…ntest/references/android-authorized-app-pentest-sop.md89## Step 4: After each important action, inspect runtime evidenceCOMMENT
LOW…ntest/references/android-authorized-app-pentest-sop.md105## Step 5: Branch by packet resultCOMMENT
LOW…ences/android-ui-driven-observation-and-packet-loop.md35### Step 1: Prepare the runtime viewCOMMENT
LOW…ences/android-ui-driven-observation-and-packet-loop.md58### Step 2: Create a visual checkpointCOMMENT
LOW…ences/android-ui-driven-observation-and-packet-loop.md68### Step 3: Analyze the current screenCOMMENT
LOW…ences/android-ui-driven-observation-and-packet-loop.md93### Step 4: Execute the next UI actionCOMMENT
LOW…ences/android-ui-driven-observation-and-packet-loop.md126### Step 5: Tie UI action to packet captureCOMMENT
LOW…ences/android-ui-driven-observation-and-packet-loop.md139### Step 6: Promote the packet into replay analysisCOMMENT
LOW…erences/android-external-url-runtime-first-workflow.md55### Step 1: Confirm device and app presenceCOMMENT
LOW…erences/android-external-url-runtime-first-workflow.md72### Step 2: Prepare packet visibility firstCOMMENT
LOW…erences/android-external-url-runtime-first-workflow.md82### Step 3: Drive the app to the target featureCOMMENT
LOW…erences/android-external-url-runtime-first-workflow.md108### Step 4: Inspect the screenshot before reversingCOMMENT
LOW…erences/android-external-url-runtime-first-workflow.md125### Step 5: Review logs for cheap evidenceCOMMENT
LOW…erences/android-external-url-runtime-first-workflow.md137### Step 6: Check Burp and CharlesCOMMENT
LOW…erences/android-external-url-runtime-first-workflow.md151### Step 7: Branch by packet visibilityCOMMENT
Deep Nesting65 hits · 56 pts
SeverityFileLineSnippetContext
LOWvulnclaw/orchestrator.py40CODE
LOWvulnclaw/intel/compliance.py255CODE
LOWvulnclaw/intel/osint.py357CODE
LOWvulnclaw/intel/osint.py398CODE
LOWvulnclaw/intel/attack.py780CODE
LOWvulnclaw/intel/topology.py430CODE
LOWvulnclaw/intel/remediation.py244CODE
LOWvulnclaw/intel/cve.py84CODE
LOWvulnclaw/kb/store.py44CODE
LOWvulnclaw/kb/store.py113CODE
LOWvulnclaw/kb/store.py160CODE
LOWvulnclaw/config/domain_models.py356CODE
LOWvulnclaw/config/settings.py103CODE
LOWvulnclaw/agent/recon_tools.py357CODE
LOWvulnclaw/agent/recon_tools.py426CODE
LOWvulnclaw/agent/recon_tools.py644CODE
LOWvulnclaw/agent/recon_tools.py783CODE
LOWvulnclaw/agent/recon_tools.py671CODE
LOWvulnclaw/agent/recon_tools.py375CODE
LOWvulnclaw/agent/loop_controller.py87CODE
LOWvulnclaw/agent/loop_controller.py292CODE
LOWvulnclaw/agent/prompt_context.py12CODE
LOWvulnclaw/agent/solver.py210CODE
LOWvulnclaw/agent/solver.py581CODE
LOWvulnclaw/agent/token_counter.py33CODE
LOWvulnclaw/agent/team.py150CODE
LOWvulnclaw/agent/chatgpt_proxy.py175CODE
LOWvulnclaw/agent/chatgpt_proxy.py289CODE
LOWvulnclaw/agent/llm_client.py149CODE
LOWvulnclaw/agent/llm_client.py279CODE
LOWvulnclaw/agent/llm_client.py544CODE
LOWvulnclaw/agent/llm_client.py658CODE
LOWvulnclaw/agent/input_analysis.py115CODE
LOWvulnclaw/agent/input_analysis.py263CODE
LOWvulnclaw/agent/network_scan.py449CODE
LOWvulnclaw/agent/finding_parser.py84CODE
LOWvulnclaw/agent/ctf_mode.py29CODE
LOWvulnclaw/agent/builtin_tools.py153CODE
LOWvulnclaw/agent/builtin_tools.py339CODE
LOWvulnclaw/agent/builtin_tools.py763CODE
LOWvulnclaw/agent/builtin_tools.py1247CODE
LOWvulnclaw/agent/skill_context.py94CODE
LOWvulnclaw/agent/reasoning_state.py230CODE
LOWvulnclaw/agent/agent_graph.py158CODE
LOWvulnclaw/agent/parallel_agents.py221CODE
LOWvulnclaw/mcp/diagnostics.py16CODE
LOWvulnclaw/mcp/lifecycle.py246CODE
LOWvulnclaw/cli/tui_textual.py546CODE
LOWvulnclaw/cli/tui_textual.py200CODE
LOWvulnclaw/cli/tui_textual.py400CODE
LOWvulnclaw/cli/tui_textual.py489CODE
LOWvulnclaw/cli/tui_textual.py930CODE
LOWvulnclaw/cli/tui_textual.py1188CODE
LOWvulnclaw/cli/tui.py448CODE
LOWvulnclaw/cli/tui.py736CODE
LOWvulnclaw/cli/tui.py1290CODE
LOWvulnclaw/cli/tui.py2450CODE
LOWvulnclaw/cli/tui.py465CODE
LOWvulnclaw/cli/main.py263CODE
LOWvulnclaw/cli/_helpers.py106CODE
5 more matches not shown…
Modern Structural Boilerplate36 hits · 42 pts
SeverityFileLineSnippetContext
LOWvulnclaw/run_context.py117 def update_manifest(self, **updates: Any) -> None:CODE
LOWvulnclaw/traffic/__init__.py27__all__ = [CODE
LOWvulnclaw/intel/remediation.py42logger = logging.getLogger(__name__)CODE
LOWvulnclaw/kb/retriever.py28logger = logging.getLogger(__name__)CODE
LOWvulnclaw/kb/__init__.py10__all__ = [CODE
LOWvulnclaw/config/settings.py103def set_config_value(key: str, value: str) -> None:CODE
LOWvulnclaw/plugins/__init__.py33__all__ = [CODE
LOWvulnclaw/plugins/web/__init__.py14__all__ = [CODE
LOWvulnclaw/web/__init__.py7__all__ = ["__version__"]CODE
LOWvulnclaw/web/task_manager.py61 def set_restoring(self, task_id: str, *, snapshot_id: str | None = None) -> None:CODE
LOWvulnclaw/web/task_manager.py70 def set_running(self, task_id: str) -> None:CODE
LOWvulnclaw/web/task_manager.py93 def set_failed(self, task_id: str, error: str) -> None:CODE
LOWvulnclaw/web/task_manager.py101 def set_stopped(self, task_id: str) -> None:CODE
LOWvulnclaw/agent/constraint_policy.py18__all__ = [CODE
LOWvulnclaw/agent/kb_context.py14logger = logging.getLogger(__name__)CODE
LOWvulnclaw/agent/think_filter.py13__all__ = ["strip_think_tags", "format_think_tags"]CODE
LOWvulnclaw/agent/core.py668 def _update_recon_dimension_completion(self, response: str) -> None:CODE
LOWvulnclaw/agent/recon_tracker.py140def update_recon_dimension_completion(agent: AgentContext, response: str) -> None:CODE
LOWvulnclaw/agent/agent_context.py124 def _update_recon_dimension_completion(self, response: str) -> None:CODE
LOWvulnclaw/agent/finding_similarity.py23__all__ = [CODE
LOWvulnclaw/agent/agent_graph.py37logger = logging.getLogger(__name__)CODE
LOWvulnclaw/mcp/registry.py79 def set_server_running(self, name: str, running: bool, pid: Optional[int] = None) -> None:CODE
LOWvulnclaw/mcp/registry.py89 def set_server_execution_mode(self, name: str, mode: str) -> None:CODE
LOWvulnclaw/mcp/registry.py94 def set_server_health(self, name: str, health_status: str) -> None:CODE
LOWvulnclaw/mcp/registry.py99 def set_server_attach_result(self, name: str, attempted: bool, succeeded: bool) -> None:CODE
LOWvulnclaw/mcp/registry.py105 def set_server_error(self, name: str, error: str, error_type: str | None = None) -> None:CODE
LOWvulnclaw/mcp/registry.py140 def set_last_call_latency(self, name: str, latency_ms: float) -> None:CODE
LOWvulnclaw/mcp/lifecycle.py97 def set_task_constraints(self, constraints: Any) -> None:CODE
LOWvulnclaw/cli/tui_textual.py95def _set_prompt(session: dict[str, Any], ptype: str, *args: Any) -> None:CODE
LOWvulnclaw/cli/tui_textual.py877 def _set_bar(self, text: str = "", style: str = "") -> None:CODE
LOWvulnclaw/cli/tui.py708def _set_prompt_input(session: dict[str, Any], label: str, callback: PromptCallback, default: str = "") -> None:CODE
LOWvulnclaw/cli/tui.py712def _set_prompt_choice(session: dict[str, Any], label: str, choices: list[str], callback: PromptCallback) -> None:CODE
LOWvulnclaw/cli/tui.py716def _set_prompt_confirm(session: dict[str, Any], label: str, callback: Callable[[bool], None]) -> None:CODE
LOWvulnclaw/cli/tui.py720def _set_prompt_message(session: dict[str, Any], text: str) -> None:CODE
LOWvulnclaw/cli/tui.py724def _set_prompt_chain(session: dict[str, Any], fields: list, idx: int, callback: Callable[[], None]) -> None:CODE
LOWvulnclaw/report/__init__.py25__all__ = [CODE
Cross-Language Confusion3 hits · 18 pts
SeverityFileLineSnippetContext
HIGHvulnclaw/intel/remediation_rules.py662sudo apt update && sudo apt upgrade -yCODE
HIGHvulnclaw/agent/builtin_tools.py283 return f"[!] 工具 {tool_name} 返回空结果 (undefined),调用可能失败"CODE
HIGHvulnclaw/skills/loader.py195 # gate. Any other value (missing, null, 0, "false", …) keepsCOMMENT
Cross-File Repetition3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHvulnclaw/agent/tool_schemas.py0build openai function calling schema from mcp tools + built-in tools.STRING
HIGHvulnclaw/agent/core.py0build openai function calling schema from mcp tools + built-in tools.STRING
HIGHvulnclaw/agent/builtin_tools.py0build openai function calling schema from mcp tools + built-in tools.STRING
AI Structural Patterns19 hits · 14 pts
SeverityFileLineSnippetContext
LOWvulnclaw/orchestrator.py40CODE
LOWvulnclaw/config/finding_similarity.py149CODE
LOWvulnclaw/agent/team.py150CODE
LOWvulnclaw/cli/tui.py326CODE
LOWvulnclaw/cli/main.py852CODE
LOWvulnclaw/cli/main.py922CODE
LOWvulnclaw/cli/main.py1203CODE
LOWvulnclaw/cli/main.py1300CODE
LOWvulnclaw/cli/main.py1490CODE
LOWvulnclaw/cli/main.py1577CODE
LOWvulnclaw/cli/main.py1666CODE
LOWvulnclaw/cli/main.py1874CODE
LOWvulnclaw/cli/main.py2476CODE
LOWvulnclaw/cli/main.py3030CODE
LOWvulnclaw/cli/main.py1171CODE
LOWvulnclaw/report/filter.py153CODE
LOWvulnclaw/report/filter.py227CODE
LOWvulnclaw/report/filter.py241CODE
LOWvulnclaw/report/filter.py263CODE
Fake / Example Data10 hits · 10 pts
SeverityFileLineSnippetContext
LOWtests/test_mcp.py306 assert any(item.execution_mode in {"placeholder", "local"} for item in view.services)CODE
LOWtests/test_mcp.py357 assert state.execution_mode == "placeholder"CODE
LOWvulnclaw/agent/core.py316 api_key=token or "placeholder",CODE
LOWvulnclaw/mcp/registry.py44 execution_mode: str = "placeholder" # local/sdk/subprocess/sse/placeholderCODE
LOWvulnclaw/mcp/diagnostics.py29 execution_mode = state.execution_mode if state else "placeholder"CODE
LOWvulnclaw/mcp/diagnostics.py36 elif execution_mode == "placeholder":CODE
LOWvulnclaw/mcp/lifecycle.py294 self.registry.set_server_execution_mode(name, "sdk" if attached else "placeholder")CODE
LOWvulnclaw/mcp/lifecycle.py308 self.registry.set_server_execution_mode(name, "sse" if attached else "placeholder")CODE
LOWvulnclaw/mcp/lifecycle.py322 self.registry.set_server_execution_mode(name, "http" if attached else "placeholder")CODE
LOWvulnclaw/cli/main.py284 if srv_state.health_status in ("degraded", "unavailable") and srv_state.execution_mode in ("placeholder",):CODE
Modern AI Meta-Vocabulary5 hits · 10 pts
SeverityFileLineSnippetContext
MEDIUM…ized/rapid-checklist/references/testing-methodology.md550> 官方地址: https://genai.owasp.org/resource/agentic-ai/CODE
MEDIUM…curity/references/04-ai-and-mcp-security-integrated.md5439https://allabouttesting.org/owasp-agentic-ai-threat-t9-identity-spoofing-impersonation-in-ai-systems/CODE
MEDIUM…zed/ai-mcp-security/references/ai-identity-security.md462https://allabouttesting.org/owasp-agentic-ai-threat-t9-identity-spoofing-impersonation-in-ai-systems/CODE
MEDIUM…d/secknowledge-skill/references/testing-methodology.md550> 官方地址: https://genai.owasp.org/resource/agentic-ai/CODE
MEDIUM…lized/secknowledge-skill/references/ai-identity-app.md460https://allabouttesting.org/owasp-agentic-ai-threat-t9-identity-spoofing-impersonation-in-ai-systems/CODE
Self-Referential Comments3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_agent.py582 # Create a new store instance pointing to the same dirCOMMENT
MEDIUMtests/test_kb.py116 # Create a new store loading from the same dirCOMMENT
MEDIUMvulnclaw/cli/tui_textual.py301 # Create the Input widget once for the entire chain lifecycle.COMMENT
AI Slop Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMvulnclaw/cli/tui_textual.py756 # Build reverse lookup dict for robust label → lang_key resolutionCOMMENT
MEDIUMvulnclaw/skills/dispatcher.py76 # Full/deep recon — trigger osint-recon for comprehensive 4-dimension collectionCOMMENT
Verbosity Indicators3 hits · 5 pts
SeverityFileLineSnippetContext
LOWvulnclaw/agent/llm_client.py737 # We need to check if there are tool calls from the accumulated chunksCOMMENT
LOWvulnclaw/agent/builtin_tools.py1316 # Step 1: Get login page for initial CSRF and sessionCOMMENT
LOWvulnclaw/agent/builtin_tools.py1346 # Step 2: Try each passwordCOMMENT
Redundant / Tautological Comments2 hits · 3 pts
SeverityFileLineSnippetContext
LOWvulnclaw/agent/llm_client.py730 # Check if we have tool callsCOMMENT
LOWvulnclaw/cli/main.py2996 # Check if user specified a pathCOMMENT
Over-Commented Block2 hits · 2 pts
SeverityFileLineSnippetContext
LOWvulnclaw/config/domain_models.py121 def model_post_init(self, *args, **kwargs) -> None:COMMENT
LOW…lized/ctf-crypto/references/lattice-and-lwe-attacks.md81COMMENT