Repository Analysis

Unclecheng-li/VulnClaw

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

17.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 3,024 GitHub stars. SynthScan v2.0 examined 159,859 lines of code across 603 source files, recording 2163 pattern matches distributed across 18 syntactic categories. The overall adjusted score of 17.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).

17.8
Adjusted Score
17.8
Raw Score
100%
Time Factor
2026-08-23
Last Push
3.0K
Stars
Python
Language
159.9K
Lines of Code
603
Files
2.2K
Pattern Hits
2026-08-29
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 1HIGH 4MEDIUM 313LOW 1845

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 2163 distinct pattern matches across 18 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 Identifiers1238 hits · 1216 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_context_budget.py46def test_group_truncation_keeps_assistant_tool_exchange_together():CODE
LOWtests/test_context_budget.py66def test_prepare_context_compacts_history_and_records_durable_digest():CODE
LOWtests/test_context_budget.py84def test_tool_schema_and_output_reserve_are_part_of_budget():CODE
LOWtests/test_context_budget.py106def test_disabled_auto_compaction_preserves_history_until_hard_limit():CODE
LOWtests/test_context_budget.py121def test_legacy_solve_compaction_settings_migrate_to_global_policy():CODE
LOWtests/test_context_budget.py136def test_new_context_settings_take_precedence_over_legacy_aliases():CODE
LOWtests/traffic/test_report_export.py20def test_verified_finding_inlines_http_capture(tmp_path):CODE
LOWtests/traffic/test_report_export.py32def _run_http_capture_inlining_assertions(tmp_path):CODE
LOWtests/traffic/test_report_export.py76def test_verified_finding_inlines_http_capture_english(tmp_path):CODE
LOWtests/traffic/test_report_export.py128def test_shared_resolver_finds_config_default_when_no_run_captures(tmp_path, monkeypatch):CODE
LOWtests/traffic/test_report_export.py161def test_write_resolver_never_falls_back_to_stale_store(tmp_path, monkeypatch):CODE
LOWtests/traffic/test_report_export.py184def test_report_without_captures_is_unaffected(tmp_path):CODE
LOWtests/traffic/test_normalize_replay.py27def test_burp_history_normalizes_with_proxy_source(tmp_path):CODE
LOWtests/traffic/test_normalize_replay.py51def test_chrome_devtools_normalizes_with_browser_source(tmp_path):CODE
LOWtests/traffic/test_normalize_replay.py72def test_replay_issues_with_overrides_and_records_manual_replay(tmp_path):CODE
LOWtests/traffic/test_store.py33def test_in_scope_request_writes_one_line_and_blobs(tmp_path):CODE
LOWtests/traffic/test_store.py61def test_request_id_stable_across_resume(tmp_path):CODE
LOWtests/traffic/test_store.py81def test_out_of_scope_host_is_dropped(tmp_path):CODE
LOWtests/traffic/test_store.py89def test_subdomain_scope_mode(tmp_path):CODE
LOWtests/traffic/test_store.py97def test_sitemap_reflects_hosts_and_paths(tmp_path):CODE
LOWtests/traffic/test_backends.py52def test_availability_helpers_return_bool():CODE
LOWtests/traffic/test_backends.py57def test_mitm_addon_captures_in_scope_flow(tmp_path):CODE
LOWtests/traffic/test_backends.py71def test_mitm_addon_drops_out_of_scope_flow(tmp_path):CODE
LOWtests/traffic/test_backends.py79def test_exchange_from_flow_maps_fields():CODE
LOWtests/traffic/test_backends.py127def test_browser_bridge_captures_in_scope_with_body(tmp_path):CODE
LOWtests/traffic/test_backends.py143def test_exchange_from_playwright_handles_callable_and_attr():CODE
LOWtests/traffic/test_tools.py48def test_traffic_list_enumerates_and_filters(tmp_path):CODE
LOWtests/traffic/test_tools.py59def test_traffic_view_returns_stored_pair(tmp_path):CODE
LOWtests/traffic/test_tools.py68def test_traffic_view_missing_id(tmp_path):CODE
LOWtests/traffic/test_tools.py73def test_traffic_repeat_records_manual_replay(tmp_path):CODE
LOWtests/traffic/test_tools.py90def test_traffic_sitemap_reflects_capture(tmp_path):CODE
LOWtests/traffic/test_tools.py98def test_schemas_cover_all_tool_names():CODE
LOWtests/traffic/test_tools.py117async def test_execute_mcp_tool_routes_traffic(tmp_path):CODE
LOWtests/traffic/test_tools.py127def test_build_openai_tools_includes_traffic():CODE
LOWtests/traffic/test_tools.py135async def test_traffic_repeat_blocked_by_host_constraint(tmp_path):CODE
LOWtests/traffic/test_tools.py153def test_traffic_repeat_guard_allows_in_scope_and_uses_stored_url(tmp_path):CODE
LOWtests/intel/test_attack.py10def test_mapper_maps_findings_to_techniques():CODE
LOWtests/intel/test_attack.py18def test_tool_techniques_lookup():CODE
LOWtests/intel/test_attack.py24def test_navigator_layer_is_valid_json():CODE
LOWtests/intel/test_attack.py32def test_format_report_markdown():CODE
LOWtests/intel/test_attack.py38def test_list_tactics_and_techniques():CODE
LOWtests/intel/test_attack.py44async def test_tool_markdown_default():CODE
LOWtests/intel/test_attack.py50async def test_tool_navigator_format():CODE
LOWtests/intel/test_attack.py69async def test_tool_session_fallback():CODE
LOWtests/intel/test_agent_seam.py6def test_builder_includes_intel_schemas():CODE
LOWtests/intel/test_agent_seam.py13async def test_execute_routes_intel_tool(monkeypatch):CODE
LOWtests/intel/test_findings.py21def test_finding_risk_uses_severity_weight():CODE
LOWtests/intel/test_findings.py26def test_finding_risk_prefers_cvss():CODE
LOWtests/intel/test_findings.py31def test_score_findings_counts_and_total():CODE
LOWtests/intel/test_findings.py42def test_score_findings_open_only_false_includes_rejected():CODE
LOWtests/intel/test_findings.py48def test_annotate_compliance_attaches_controls():CODE
LOWtests/intel/test_findings.py57def test_diff_new_fixed_persistent():CODE
LOWtests/intel/test_findings.py74def test_diff_detects_severity_regression():CODE
LOWtests/intel/test_findings.py83def test_diff_accepts_raw_lists():CODE
LOWtests/intel/test_findings.py88def test_format_risk_report_with_compliance():CODE
LOWtests/intel/test_findings.py96def test_format_diff_sections():CODE
1178 more matches not shown…
Decorative Section Separators301 hits · 939 pts
SeverityFileLineSnippetContext
MEDIUMpyproject.toml38 # ── 沙箱依赖(python_execute 运行时)──────────────────────────────COMMENT
MEDIUMtests/intel/test_osint.py53# ── pure helpers ─────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/intel/test_osint.py71# ── HTTP features via MockTransport ──────────────────────────────────────────COMMENT
MEDIUMtests/intel/test_osint.py149# ── DNS fallback ─────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/intel/test_osint.py164# ── formatting ───────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/intel/test_osint.py183# ── tool ─────────────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/kb/test_kb_fallback.py46# ── Automatic degradation when ChromaDB unavailable ──────────────────COMMENT
MEDIUMtests/kb/test_kb_fallback.py70# ── Keyword retrieval functionality ──────────────────────────────────COMMENT
MEDIUMtests/kb/test_kb_fallback.py106# ── Status reporting ─────────────────────────────────────────────────COMMENT
MEDIUMtests/kb/test_kb_fallback.py124# ── Retrieval result caching (via kb_context) ────────────────────────COMMENT
MEDIUMtests/kb/test_kb_fallback.py295# ── Full-corpus loading from store ───────────────────────────────────COMMENT
MEDIUMtests/kb/test_kb_fallback.py190# ── Language gate (ticket #65) ────────────────────────────────────────COMMENT
MEDIUMtests/kb/test_kb.py4# ── store.py ─────────────────────────────────────────────────────────COMMENT
MEDIUMtests/kb/test_kb.py130# ── retriever.py ─────────────────────────────────────────────────────COMMENT
MEDIUMtests/kb/test_kb.py260# ── updater.py ───────────────────────────────────────────────────────COMMENT
MEDIUMtests/config/test_token_provider.py26# ── static mode ──────────────────────────────────────────────────────COMMENT
MEDIUMtests/config/test_token_provider.py46# ── oauth store + resolution ─────────────────────────────────────────COMMENT
MEDIUMtests/config/test_token_provider.py81# ── Sign in with ChatGPT (Codex OAuth client) ────────────────────────COMMENT
MEDIUMtests/config/test_config.py6# ── schema.py ────────────────────────────────────────────────────────COMMENT
MEDIUMtests/config/test_config.py306# ── settings.py ──────────────────────────────────────────────────────COMMENT
MEDIUMtests/agent/test_agent.py7# ── context.py ───────────────────────────────────────────────────────COMMENT
MEDIUMtests/agent/test_agent.py560# ── memory.py ────────────────────────────────────────────────────────COMMENT
MEDIUMtests/agent/test_agent.py852# ── prompts.py ───────────────────────────────────────────────────────COMMENT
MEDIUMtests/agent/test_agent.py967# ── core.py ──────────────────────────────────────────────────────────COMMENT
MEDIUMtests/agent/test_finding_similarity.py15# ── normalize_text ───────────────────────────────────────────────────COMMENT
MEDIUMtests/agent/test_finding_similarity.py37# ── text_similarity ──────────────────────────────────────────────────COMMENT
MEDIUMtests/agent/test_finding_similarity.py63# ── url_similarity ───────────────────────────────────────────────────COMMENT
MEDIUMtests/agent/test_finding_similarity.py97# ── normalize_vuln_type ──────────────────────────────────────────────COMMENT
MEDIUMtests/agent/test_finding_similarity.py134# ── finding_similarity ───────────────────────────────────────────────COMMENT
MEDIUMtests/agent/test_finding_similarity.py184# ── deduplicate_findings ─────────────────────────────────────────────COMMENT
MEDIUMtests/agent/test_finding_similarity.py238# ── SessionState integration ─────────────────────────────────────────COMMENT
MEDIUMtests/agent/test_recon_tools.py55# ── JS 提取(纯函数)────────────────────────────────────────────────COMMENT
MEDIUMtests/agent/test_recon_tools.py119# ── 空间测绘:查询构造 + 解析 ───────────────────────────────────────COMMENT
MEDIUMtests/agent/test_recon_tools.py172# ── 目录枚举:全局伪装 200 识别 ─────────────────────────────────────COMMENT
MEDIUMtests/agent/test_recon_tools.py214# ── 子域名枚举:被动聚合 + 字典爆破关闭时不解析 ─────────────────────COMMENT
MEDIUMtests/agent/test_chatgpt_proxy.py14# ── Pure translation functions ───────────────────────────────────────COMMENT
MEDIUMtests/agent/test_chatgpt_proxy.py138# ── Integration: proxy server ↔ mock ChatGPT backend ─────────────────COMMENT
MEDIUMtests/agent/test_agent_graph.py41# ── Node lifecycle ───────────────────────────────────────────────────COMMENT
MEDIUMtests/agent/test_agent_graph.py221# ── Persistence ──────────────────────────────────────────────────────COMMENT
MEDIUMtests/agent/test_agent_graph.py133# ── Root-completion rule (fail-loud) ─────────────────────────────────COMMENT
MEDIUMtests/agent/test_agent_graph.py176# ── Bounded fan-out caps ─────────────────────────────────────────────COMMENT
MEDIUMtests/agent/test_agent_graph.py266# ── Resume ───────────────────────────────────────────────────────────COMMENT
MEDIUMtests/mcp/test_mcp_lifecycle.py48# ── start / stop ─────────────────────────────────────────────────────COMMENT
MEDIUMtests/mcp/test_mcp_lifecycle.py110# ── graceful termination (SIGTERM-then-SIGKILL semantics) ────────────COMMENT
MEDIUMtests/mcp/test_mcp_lifecycle.py157# ── auto-restart ─────────────────────────────────────────────────────COMMENT
MEDIUMtests/mcp/test_mcp_lifecycle.py314# ── stats tracking ───────────────────────────────────────────────────COMMENT
MEDIUMtests/mcp/test_mcp_lifecycle.py255# ── health check ─────────────────────────────────────────────────────COMMENT
MEDIUMtests/mcp/test_mcp_lifecycle.py606# ── stdio cross-task shutdown noise (issue #81) ──────────────────────COMMENT
MEDIUMtests/mcp/test_mcp.py103# ── router.py ────────────────────────────────────────────────────────COMMENT
MEDIUMtests/mcp/test_mcp.py7# ── registry.py ──────────────────────────────────────────────────────COMMENT
MEDIUMtests/mcp/test_mcp.py221# ── lifecycle.py ─────────────────────────────────────────────────────COMMENT
MEDIUMtests/cli/test_cli_noninteractive.py220# ── Exit-code contract ──────────────────────────────────────────────COMMENT
MEDIUMtests/cli/test_cli_noninteractive.py285# ── Prescribed workflow docs parse-check ────────────────────────────COMMENT
MEDIUMtests/cli/test_cli_noninteractive.py80# ── Non-interactive: no prompts, structured output ──────────────────COMMENT
MEDIUMtests/cli/test_cli_noninteractive.py153# ── Scan-mode presets applied to the engine ─────────────────────────COMMENT
MEDIUMtests/report/test_report.py5# ── generator.py ─────────────────────────────────────────────────────COMMENT
MEDIUMtests/report/test_report.py475# ── i18n: standard report (issue #62) ──────────────────────────────COMMENT
MEDIUMtests/report/test_report.py627# ── i18n: report recommendations (issue #63) ─────────────────────────COMMENT
MEDIUMtests/report/test_report.py824# ── poc_builder.py ───────────────────────────────────────────────────COMMENT
MEDIUMtests/skills/test_skills.py388# ── flag_skills.py ────────────────────────────────────────────────COMMENT
241 more matches not shown…
Unused Imports258 hits · 247 pts
SeverityFileLineSnippetContext
LOWconftest.py1CODE
LOWtests/test_context_budget.py1CODE
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
LOWtests/config/test_token_provider.py3CODE
LOWtests/plugins/test_builtin_plugins.py1CODE
LOWtests/plugins/test_plugin_cli.py1CODE
LOWtests/plugins/test_plugin_runtime.py1CODE
LOWtests/plugins/test_plugin_integration.py1CODE
LOWtests/web/test_auth.py8CODE
LOWtests/meta/test_release.py1CODE
LOWtests/meta/test_release_workflow.py1CODE
LOWtests/agent/test_constraint_policy_infer.py8CODE
LOWtests/agent/test_finding_similarity.py3CODE
LOWtests/agent/test_recon_tools.py1CODE
LOWtests/agent/test_agent_context_protocol.py14CODE
LOWtests/agent/test_parallel_agents.py3CODE
LOWtests/agent/test_stream_robustness.py13CODE
LOWtests/agent/test_context_vault.py11CODE
LOWtests/agent/test_ctf_mode.py3CODE
LOWtests/agent/test_regression_prior_fixes.py14CODE
LOWtests/agent/test_subagent_architecture.py1CODE
LOWtests/agent/test_input_analysis_i18n.py10CODE
LOWtests/agent/test_chatgpt_proxy.py3CODE
LOWtests/agent/test_agent_graph.py3CODE
LOWtests/agent/test_roles.py3CODE
LOWtests/agent/test_llm_client_streaming.py3CODE
LOWtests/agent/test_loop_controller_i18n.py1CODE
LOWtests/agent/test_tool_parallel.py3CODE
LOWtests/agent/test_constraint_tool_action.py3CODE
LOWtests/mcp/test_mcp_lifecycle.py3CODE
LOWtests/mcp/test_mcp_fetch_cookies.py8CODE
LOWtests/cli/test_cli_noninteractive.py3CODE
LOWtests/run/test_headless.py3CODE
LOWtests/run/test_run_persistence.py1CODE
LOWtests/i18n/test_agent_runtime_i18n_catalog.py1CODE
LOWtests/i18n/test_phase_i18n.py3CODE
LOWvulnclaw/headless.py24CODE
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
198 more matches not shown…
Excessive Try-Catch Wrapping154 hits · 152 pts
SeverityFileLineSnippetContext
LOWtests/config/test_token_provider.py147 except Exception:CODE
LOWtests/mcp/test_mcp.py268 except Exception:CODE
LOWtests/report/test_report.py297 except 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.py215 except Exception as exc: # pragma: no cover - defensiveCODE
LOWvulnclaw/kb/retriever.py221 except Exception as exc:CODE
LOWvulnclaw/kb/retriever.py264 except Exception as exc: # pragma: no cover - defensiveCODE
LOWvulnclaw/target_state/planner.py247 except Exception:CODE
LOWvulnclaw/config/__init__.py23 except Exception:STRING
LOWvulnclaw/config/settings.py524 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.py137 except Exception as exc:CODE
LOWvulnclaw/agent/recon_tools.py343 except Exception as e: # 单引擎失败不影响其他引擎CODE
LOWvulnclaw/agent/recon_tools.py347 except Exception as e:CODE
LOWvulnclaw/agent/recon_tools.py399 except Exception as e:CODE
LOWvulnclaw/agent/recon_tools.py402 except Exception as e:CODE
LOWvulnclaw/agent/recon_tools.py420 except Exception:CODE
LOWvulnclaw/agent/recon_tools.py564 except Exception:CODE
LOWvulnclaw/agent/recon_tools.py568 except Exception as e:CODE
LOWvulnclaw/agent/recon_tools.py715 except Exception as e:CODE
LOWvulnclaw/agent/recon_tools.py735 except Exception:CODE
LOWvulnclaw/agent/recon_tools.py782 except Exception as e:CODE
LOWvulnclaw/agent/recon_tools.py867 except Exception:CODE
LOWvulnclaw/agent/recon_tools.py878 except Exception:CODE
LOWvulnclaw/agent/recon_tools.py888 except Exception as e:CODE
LOWvulnclaw/agent/loop_controller.py270 except Exception as e:CODE
LOWvulnclaw/agent/loop_controller.py384 except Exception:CODE
LOWvulnclaw/agent/loop_controller.py402 except Exception as e:CODE
LOWvulnclaw/agent/kb_context.py57 except Exception as exc: # defensive — never break the agent loopCODE
LOWvulnclaw/agent/kb_context.py105 except Exception as exc: # defensive — retrieval must never break the loopCODE
LOWvulnclaw/agent/prompt_context.py317 except Exception:CODE
LOWvulnclaw/agent/solver.py635 except Exception as exc:CODE
LOWvulnclaw/agent/solver.py770 except Exception:CODE
LOWvulnclaw/agent/solver.py789 except Exception:CODE
LOWvulnclaw/agent/tool_call_manager.py89 except Exception as exc:CODE
LOWvulnclaw/agent/tool_call_manager.py347 except Exception as exc:CODE
LOWvulnclaw/agent/core.py56except Exception:CODE
LOWvulnclaw/agent/core.py113 except Exception:CODE
LOWvulnclaw/agent/core.py120 except Exception:CODE
LOWvulnclaw/agent/core.py267 except Exception:CODE
LOWvulnclaw/agent/core.py288 except Exception:CODE
LOWvulnclaw/agent/core.py511 except Exception as e:CODE
LOWvulnclaw/agent/team.py109 except Exception:CODE
LOWvulnclaw/agent/team.py146 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.py463 except Exception as exc:CODE
LOWvulnclaw/agent/llm_client.py650 except Exception as exc:CODE
94 more matches not shown…
Structural Annotation Overuse60 hits · 100 pts
SeverityFileLineSnippetContext
LOWREADME.md406# Step 1: 启动 Chrome 远程调试COMMENT
LOWREADME.md412# Step 2: 启用 VulnClaw 配置COMMENT
LOWREADME.md437# Step 1: 克隆并构建COMMENT
LOWREADME.md442# Step 2: 加载到 Burp Suite → Extensions → Add → Type: Java → 选择 burp-mcp-all.jarCOMMENT
LOWREADME.md444# Step 3: 在 Burp 的 MCP 标签页勾选 "Enabled"COMMENT
LOWREADME.md446# Step 4: 启用 VulnClaw 配置COMMENT
LOWREADME_EN.md414# Step 1: Start Chrome with remote debuggingCOMMENT
LOWREADME_EN.md420# Step 2: Enable in VulnClawCOMMENT
LOWREADME_EN.md445# Step 1: Clone and buildCOMMENT
LOWREADME_EN.md450# Step 2: Load into Burp Suite → Extensions → Add → Type: Java → select burp-mcp-all.jarCOMMENT
LOWREADME_EN.md452# Step 3: Enable in Burp's MCP tabCOMMENT
LOWREADME_EN.md454# Step 4: Enable in VulnClawCOMMENT
LOWdocs/mcp-deployment.md113#### Step 1: 克隆并构建COMMENT
LOWdocs/mcp-deployment.md123#### Step 2: 加载到 Burp SuiteCOMMENT
LOWdocs/mcp-deployment.md130#### 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.py2151 # Step 1: Get login page for initial CSRF and sessionCOMMENT
LOWvulnclaw/agent/builtin_tools.py2181 # 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 Nesting66 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/settings.py147CODE
LOWvulnclaw/agent/recon_tools.py372CODE
LOWvulnclaw/agent/recon_tools.py448CODE
LOWvulnclaw/agent/recon_tools.py668CODE
LOWvulnclaw/agent/recon_tools.py819CODE
LOWvulnclaw/agent/recon_tools.py701CODE
LOWvulnclaw/agent/recon_tools.py390CODE
LOWvulnclaw/agent/prompt_context.py15CODE
LOWvulnclaw/agent/solver.py215CODE
LOWvulnclaw/agent/solver.py581CODE
LOWvulnclaw/agent/memory.py185CODE
LOWvulnclaw/agent/token_counter.py42CODE
LOWvulnclaw/agent/token_counter.py125CODE
LOWvulnclaw/agent/context_vault.py125CODE
LOWvulnclaw/agent/context_vault.py322CODE
LOWvulnclaw/agent/context_budget.py212CODE
LOWvulnclaw/agent/chatgpt_proxy.py175CODE
LOWvulnclaw/agent/chatgpt_proxy.py289CODE
LOWvulnclaw/agent/llm_client.py425CODE
LOWvulnclaw/agent/llm_client.py860CODE
LOWvulnclaw/agent/llm_client.py972CODE
LOWvulnclaw/agent/input_analysis.py143CODE
LOWvulnclaw/agent/input_analysis.py291CODE
LOWvulnclaw/agent/network_scan.py449CODE
LOWvulnclaw/agent/finding_parser.py111CODE
LOWvulnclaw/agent/ctf_mode.py29CODE
LOWvulnclaw/agent/builtin_tools.py103CODE
LOWvulnclaw/agent/builtin_tools.py709CODE
LOWvulnclaw/agent/builtin_tools.py833CODE
LOWvulnclaw/agent/builtin_tools.py1069CODE
LOWvulnclaw/agent/builtin_tools.py1225CODE
LOWvulnclaw/agent/builtin_tools.py2082CODE
LOWvulnclaw/agent/skill_context.py86CODE
LOWvulnclaw/agent/reasoning_state.py232CODE
LOWvulnclaw/agent/agent_graph.py158CODE
LOWvulnclaw/agent/parallel_agents.py235CODE
LOWvulnclaw/agent/subagent/service.py293CODE
LOWvulnclaw/agent/subagent/service.py645CODE
LOWvulnclaw/agent/subagent/merge.py374CODE
LOWvulnclaw/agent/subagent/budget.py146CODE
LOWvulnclaw/agent/subagent/integration.py312CODE
LOWvulnclaw/agent/subagent/solve.py119CODE
LOWvulnclaw/mcp/diagnostics.py16CODE
LOWvulnclaw/mcp/lifecycle.py282CODE
LOWvulnclaw/cli/tui.py490CODE
LOWvulnclaw/cli/tui.py778CODE
LOWvulnclaw/cli/tui.py1334CODE
LOWvulnclaw/cli/tui.py2571CODE
LOWvulnclaw/cli/tui.py507CODE
6 more matches not shown…
Modern Structural Boilerplate48 hits · 54 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.py24logger = logging.getLogger(__name__)CODE
LOWvulnclaw/config/settings.py147def 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.py19__all__ = [CODE
LOWvulnclaw/agent/kb_context.py43logger = logging.getLogger(__name__)CODE
LOWvulnclaw/agent/think_filter.py13__all__ = ["strip_think_tags", "format_think_tags"]CODE
LOWvulnclaw/agent/tool_call_manager.py36logger = logging.getLogger(__name__)CODE
LOWvulnclaw/agent/context_vault.py289 def set_output_dir(self, output_dir: Path | None) -> None:CODE
LOWvulnclaw/agent/agent_state.py607 def update_context_digest(self, summary: str, evidence_ids: list[str]) -> None:CODE
LOWvulnclaw/agent/__init__.py12__all__ = [CODE
LOWvulnclaw/agent/core.py734 def _update_recon_dimension_completion(self, response: str) -> None:CODE
LOWvulnclaw/agent/team.py14logger = logging.getLogger(__name__)CODE
LOWvulnclaw/agent/context.py43logger = logging.getLogger(__name__)CODE
LOWvulnclaw/agent/context.py1032 def set_save_path(self, path: Path) -> None:CODE
LOWvulnclaw/agent/llm_client.py37logger = logging.getLogger(__name__)CODE
LOWvulnclaw/agent/recon_tracker.py140def update_recon_dimension_completion(agent: AgentContext, response: str) -> None:CODE
LOWvulnclaw/agent/agent_context.py130 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/agent/subagent/integration.py34logger = 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.py133 def set_task_constraints(self, constraints: Any) -> None:CODE
LOWvulnclaw/cli/tui.py750def _set_prompt_input(session: dict[str, Any], label: str, callback: PromptCallback, default: str = "") -> None:CODE
LOWvulnclaw/cli/tui.py754def _set_prompt_choice(session: dict[str, Any], label: str, choices: list[str], callback: PromptCallback) -> None:CODE
LOWvulnclaw/cli/tui.py758def _set_prompt_confirm(session: dict[str, Any], label: str, callback: Callable[[bool], None]) -> None:CODE
LOWvulnclaw/cli/tui.py762def _set_prompt_message(session: dict[str, Any], text: str) -> None:CODE
LOWvulnclaw/cli/tui.py766def _set_prompt_chain(session: dict[str, Any], fields: list, idx: int, callback: Callable[[], None]) -> None:CODE
LOWvulnclaw/cli/tui.py59logger = logging.getLogger(__name__)CODE
LOWvulnclaw/report/__init__.py25__all__ = [CODE
LOWvulnclaw/report/generator.py33logger = logging.getLogger(__name__)CODE
LOWvulnclaw/report/verifier.py30logger = logging.getLogger(__name__)CODE
LOWvulnclaw/skills/crypto_tools.py24logger = logging.getLogger(__name__)CODE
Cross-Language Confusion3 hits · 18 pts
SeverityFileLineSnippetContext
HIGHvulnclaw/intel/remediation_rules.py662sudo apt update && sudo apt upgrade -yCODE
HIGHvulnclaw/agent/builtin_tools.py1013 return f"[!] 工具 {tool_name} 返回空结果 (undefined),调用可能失败"CODE
HIGHvulnclaw/skills/loader.py195 # gate. Any other value (missing, null, 0, "false", …) keepsCOMMENT
Modern AI Meta-Vocabulary7 hits · 16 pts
SeverityFileLineSnippetContext
MEDIUMCONTRIBUTING_EN.md17| |-- orchestrator.py # Shared task orchestration for CLI / WebCODE
MEDIUMtests/config/test_config.py170 # Upper bounds are DoS guardrails: e.g. max_concurrent=100000 must beCOMMENT
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
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALtests/test_context_budget.py80 assert agent.context.state.agent_state.context_digest.summary.startswith("[context digest v1]")CODE
Fake / Example Data10 hits · 10 pts
SeverityFileLineSnippetContext
LOWtests/mcp/test_mcp.py332 assert any(item.execution_mode in {"placeholder", "local"} for item in view.services)CODE
LOWtests/mcp/test_mcp.py383 assert state.execution_mode == "placeholder"CODE
LOWvulnclaw/agent/core.py352 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.py330 self.registry.set_server_execution_mode(name, "sdk" if attached else "placeholder")CODE
LOWvulnclaw/mcp/lifecycle.py344 self.registry.set_server_execution_mode(name, "sse" if attached else "placeholder")CODE
LOWvulnclaw/mcp/lifecycle.py358 self.registry.set_server_execution_mode(name, "http" if attached else "placeholder")CODE
LOWvulnclaw/cli/main.py298 if srv_state.health_status in ("degraded", "unavailable") and srv_state.execution_mode in ("placeholder",):CODE
Self-Referential Comments3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMtests/kb/test_kb.py116 # Create a new store loading from the same dirCOMMENT
MEDIUMtests/agent/test_agent.py613 # Create a new store instance pointing to the same dirCOMMENT
MEDIUMvulnclaw/agent/team.py227 # Create a minimal error result so the wave can continueCOMMENT
AI Structural Patterns8 hits · 8 pts
SeverityFileLineSnippetContext
LOWvulnclaw/orchestrator.py40CODE
LOWvulnclaw/config/finding_similarity.py149CODE
LOWvulnclaw/agent/subagent/service.py82CODE
LOWvulnclaw/cli/tui.py332CODE
LOWvulnclaw/report/filter.py156CODE
LOWvulnclaw/report/filter.py230CODE
LOWvulnclaw/report/filter.py244CODE
LOWvulnclaw/report/filter.py266CODE
Docstring Block Structure1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHvulnclaw/agent/llm_client.py428Keep retrying retriable LLM calls until success, max retries, or manual interruption. Args: max_retries: MaSTRING
Verbosity Indicators2 hits · 4 pts
SeverityFileLineSnippetContext
LOWvulnclaw/agent/builtin_tools.py2151 # Step 1: Get login page for initial CSRF and sessionCOMMENT
LOWvulnclaw/agent/builtin_tools.py2181 # Step 2: Try each passwordCOMMENT
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMvulnclaw/skills/dispatcher.py77 # Full/deep recon — trigger osint-recon for comprehensive 4-dimension collectionCOMMENT
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOWvulnclaw/cli/main.py3177 # Check if user specified a pathCOMMENT
Over-Commented Block1 hit · 1 pts
SeverityFileLineSnippetContext
LOW…lized/ctf-crypto/references/lattice-and-lwe-attacks.md81COMMENT