Repository Analysis

QLHazyCoder/FlowPilot

Chrome扩展:支持GPT(Codex) / kiro / Grok自动注册、相关反代项目(CPA/Sub)回调上传

13.5 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of QLHazyCoder/FlowPilot, a JavaScript project with 5,143 GitHub stars. SynthScan v2.0 examined 224,423 lines of code across 410 source files, recording 3303 pattern matches distributed across 7 syntactic categories. The overall adjusted score of 13.5 places this repository in the Low 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).

13.5
Adjusted Score
13.5
Raw Score
100%
Time Factor
2026-08-25
Last Push
5.1K
Stars
JavaScript
Language
224.4K
Lines of Code
410
Files
3.3K
Pattern Hits
2026-08-29
Scan Date
0.00
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 0MEDIUM 2LOW 3301

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 3303 distinct pattern matches across 7 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 Identifiers3007 hits · 2702 pts
SeverityFileLineSnippetContext
LOWmanaged-alias-utils.js3})(typeof self !== 'undefined' ? self : globalThis, function createManagedAliasUtilsModule() {CODE
LOWmanaged-alias-utils.js66 function getManagedAliasProviderConfig(provider = '') {CODE
LOWmanaged-alias-utils.js80 function usesManagedAliasGeneration(provider = '', options = {}) {CODE
LOWmanaged-alias-utils.js105 function parseManagedAliasBaseEmail(rawValue, provider = '') {CODE
LOWmanaged-alias-utils.js147 function getManagedAliasProviderUiCopy(provider = '') {CODE
LOWhotmail-utils.js29 function normalizeHotmailServiceMode(rawValue = '') {CODE
LOWhotmail-utils.js39 function extractCodeByRulePatterns(text, patterns = []) {CODE
LOWhotmail-utils.js88 function extractVerificationCodeFromMessage(message = {}, options = {}) {CODE
LOWhotmail-utils.js111 function getHotmailListToggleLabel(expanded, count = 0) {CODE
LOWhotmail-utils.js117 function filterHotmailAccountsByUsage(accounts, mode = 'all') {CODE
LOWhotmail-utils.js125 function getHotmailBulkActionLabel(mode = 'all', count = 0) {CODE
LOWhotmail-utils.js132 function isAuthorizedHotmailAccount(account) {CODE
LOWhotmail-utils.js139 function shouldClearHotmailCurrentSelection(account) {CODE
LOWhotmail-utils.js143 function upsertHotmailAccountInList(accounts, nextAccount) {CODE
LOWhotmail-utils.js237 function pickVerificationMessageWithFallback(messages, filters = {}) {CODE
LOWhotmail-utils.js246 function pickVerificationMessageWithTimeFallback(messages, filters = {}) {CODE
LOWhotmail-utils.js299 function normalizeHotmailMailApiMessage(message = {}) {CODE
LOWhotmail-utils.js333 function normalizeHotmailMailApiMessages(messages) {CODE
LOWhotmail-utils.js340 function buildHotmailMailApiLatestUrl(options = {}) {CODE
LOWhotmail-utils.js359 function getHotmailVerificationPollConfig(step) {CODE
LOWhotmail-utils.js379 function getHotmailVerificationRequestTimestamp(step, state = {}, options = {}) {CODE
LOWhotmail-utils.js399 function getHotmailMailApiRequestConfig() {CODE
LOWpaypal-utils.js35 function upsertPayPalAccountInList(accounts = [], nextAccount = null) {CODE
LOWcloudflare-temp-email-utils.js1(function cloudflareTempEmailUtilsModule(root, factory) {CODE
LOWcloudflare-temp-email-utils.js8})(typeof self !== 'undefined' ? self : globalThis, function createCloudflareTempEmailUtils() {CODE
LOWcloudflare-temp-email-utils.js21 function normalizeCloudflareTempEmailBaseUrl(rawValue = '') {CODE
LOWcloudflare-temp-email-utils.js37 function normalizeCloudflareTempEmailDomain(rawValue = '') {CODE
LOWcloudflare-temp-email-utils.js49 function normalizeCloudflareTempEmailDomains(values) {CODE
LOWcloudflare-temp-email-utils.js61 function normalizeCloudflareTempEmailSubdomainPrefix(rawValue = '') {CODE
LOWcloudflare-temp-email-utils.js74 function buildCloudflareTempEmailEffectiveDomain(config = {}) {CODE
LOWcloudflare-temp-email-utils.js84 function buildCloudflareTempEmailHeaders(config = {}, options = {}) {CODE
LOWcloudflare-temp-email-utils.js103 function joinCloudflareTempEmailUrl(baseUrl, path) {CODE
LOWcloudflare-temp-email-utils.js110 function getCloudflareTempEmailMailRows(payload) {CODE
LOWcloudflare-temp-email-utils.js149 function normalizeCloudflareTempEmailAddress(value) {CODE
LOWcloudflare-temp-email-utils.js319 function getCharsetFromContentType(contentType = '') {CODE
LOWcloudflare-temp-email-utils.js324 function getBoundaryFromContentType(contentType = '') {CODE
LOWcloudflare-temp-email-utils.js425 function normalizeReceivedDateTime(value) {CODE
LOWcloudflare-temp-email-utils.js436 function normalizeCloudflareTempEmailMessage(row = {}) {CODE
LOWcloudflare-temp-email-utils.js572 function normalizeCloudflareTempEmailMailApiMessages(payload) {CODE
LOWcloudflare-temp-email-utils.js578 function getCloudflareTempEmailAddressFromResponse(payload = {}) {CODE
LOWbackground.js323function getRegistrationEmailBaseline(state = {}, options = {}) {CODE
LOWbackground.js333function buildFlowRegistrationEmailStateUpdates(state = {}, options = {}) {CODE
LOWbackground.js340function getPreservedPhoneIdentity(state = {}) {CODE
LOWbackground.js347function buildStateViewWithRuntimeState(state = {}) {CODE
LOWbackground.js874function normalizeAuthRecoveryIdentifierType(value = '') {CODE
LOWbackground.js879function isPhoneSignupAuthRecoveryState(state = {}) {CODE
LOWbackground.js884function getPhoneSignupAuthRecoveryIdentity(state = {}) {CODE
LOWbackground.js2206function isCurrentAutoRunSessionId(value) {CODE
LOWbackground.js2211function throwIfAutoRunSessionStopped(sessionId) {CODE
LOWbackground.js2219function normalizeAutoRunTimerPlan(plan) {CODE
LOWbackground.js2555function getCustomEmailPoolEmailForRun(state = {}, targetRun = 1) {CODE
LOWbackground.js2561function getCustomMailProviderPool(state = {}) {CODE
LOWbackground.js2565function getCustomMailProviderPoolEmailForRun(state = {}, targetRun = 1) {CODE
LOWbackground.js2949function normalizeStepExecutionRangeFlowId(value = '', fallback = DEFAULT_ACTIVE_FLOW_ID) {CODE
LOWbackground.js2958function hasStepExecutionRangeShape(value) {CODE
LOWbackground.js2968function normalizePositiveStepNumber(value, fallback = 0) {CODE
LOWbackground.js2977function normalizeStepExecutionRangeEntry(value = {}) {CODE
LOWbackground.js4356function broadcastIcloudAliasesChanged(payload = {}) {CODE
LOWbackground.js4363function normalizePhoneIdentityDigits(value = '') {CODE
LOWbackground.js4367function getPhoneActivationPhoneNumber(activation = null) {CODE
2947 more matches not shown…
Fake / Example Data243 hits · 245 pts
SeverityFileLineSnippetContext
LOWsidepanel/i18n-static.js518 const TRANSLATABLE_ATTRS = Object.freeze(['title', 'aria-label', 'placeholder', 'data-show-label', 'data-hide-label'])CODE
LOWsidepanel/sidepanel.html855 <input type="text" id="input-cloud-mail-admin-email" class="data-input" placeholder="admin@example.com" />CODE
LOWtests/cloudflare-temp-email-utils.test.js94 address: 'user@example.com',CODE
LOWtests/cloudflare-temp-email-utils.test.js110 assert.equal(messages[0].address, 'user@example.com');CODE
LOWtests/cloudflare-temp-email-utils.test.js121 address: 'user@example.com',CODE
LOWtests/background-message-router-step2-skip.test.js244 email: 'user@example.com',CODE
LOWtests/background-message-router-step2-skip.test.js248 assert.deepStrictEqual(events.emailStates, ['user@example.com']);CODE
LOWtests/background-message-router-step2-skip.test.js281 email: 'user@example.com',CODE
LOWtests/background-message-router-step2-skip.test.js283 accountIdentifier: 'user@example.com',CODE
LOWtests/background-message-router-step2-skip.test.js286 assert.deepStrictEqual(events.emailStates, ['user@example.com']);CODE
LOWtests/background-message-router-step2-skip.test.js369 email: 'user@example.com',CODE
LOWtests/background-message-router-step2-skip.test.js374 assert.deepStrictEqual(events.emailStates, ['user@example.com']);CODE
LOWtests/background-message-router-step2-skip.test.js502 email: 'user@example.com',CODE
LOWtests/background-message-router-step2-skip.test.js510 email: 'user@example.com',CODE
LOWtests/background-message-router-step2-skip.test.js516 assert.deepStrictEqual(events.emailStates, ['user@example.com']);CODE
LOWtests/background-message-router-step2-skip.test.js523 email: 'user@example.com',CODE
LOWtests/background-message-router-step2-skip.test.js624 email: 'user@example.com',CODE
LOWtests/sidepanel-phone-verification-settings.test.js720 accountIdentifier: 'user@example.com',CODE
LOWtests/sidepanel-phone-verification-settings.test.js722 email: 'user@example.com',CODE
LOWtests/sidepanel-paypal-manager.test.js93 openFormDialog: async () => ({ email: 'user@example.com', password: 'secret' }),CODE
LOWtests/sidepanel-paypal-manager.test.js106 email: 'user@example.com',CODE
LOWtests/sidepanel-paypal-manager.test.js116 email: 'user@example.com',CODE
LOWtests/sidepanel-paypal-manager.test.js151 assert.equal(latestState.paypalEmail, 'user@example.com');CODE
LOWtests/step6-oauth-consent-skip.test.js131 return step6_login({ email: 'user@example.com' });CODE
LOWtests/background-mail-rule-registry-module.test.js37 email: 'user@example.com',CODE
LOWtests/background-mail-rule-registry-module.test.js67 targetEmail: 'user@example.com',CODE
LOWtests/background-mail-rule-registry-module.test.js68 targetEmailHints: ['user@example.com', 'user=example.com'],CODE
LOWtests/background-mail-rule-registry-module.test.js79 email: 'user@example.com',CODE
LOWtests/background-mail-rule-registry-module.test.js134 email: 'user@example.com',CODE
LOWtests/sidepanel-contribution-mode.test.js207const inputSub2ApiEmail = { value: 'user@example.com' };CODE
LOWtests/sidepanel-contribution-mode.test.js390 email: 'user@example.com',CODE
LOWtests/background-sub2api-agent-identity-import.test.js97 sub2apiEmail: 'admin@example.com',CODE
LOWtests/background-grok-state-module.test.js66 assert.equal(view.grokEmail, 'user@example.com');CODE
LOWtests/background-grok-state-module.test.js82 assert.equal(view.runtimeState.flowState.grok.register.email, 'user@example.com');CODE
LOWtests/background-flow-mail-polling-module.test.js27 targetEmail: 'user@example.com',CODE
LOWtests/background-flow-mail-polling-module.test.js43 state: { activeFlowId: 'kiro', email: 'user@example.com' },CODE
LOWtests/background-flow-mail-polling-module.test.js146 targetEmail: 'user@example.com',CODE
LOWtests/background-flow-mail-polling-module.test.js184 assert.equal(mailMessage.payload.targetEmail, 'user@example.com');CODE
LOWtests/background-paypal-account-store-module.test.js76 assert.equal(account.email, 'user@example.com');CODE
LOWtests/background-paypal-account-store-module.test.js81 assert.equal(latestState.paypalEmail, 'user@example.com');CODE
LOWtests/background-paypal-account-store-module.test.js87 paypalEmail: 'user@example.com',CODE
LOWtests/step6-timeout-recovery.test.js229 email: 'user@example.com',CODE
LOWtests/verification-flow-polling.test.js113 email: 'user@example.com',CODE
LOWtests/verification-flow-polling.test.js123 targetEmail: 'user@example.com',CODE
LOWtests/verification-flow-polling.test.js159 const step4Payload = helpers.getVerificationPollPayload(4, { email: 'user@example.com', mailProvider: '2925' });CODE
LOWtests/verification-flow-polling.test.js160 const step8Payload = helpers.getVerificationPollPayload(8, { email: 'user@example.com', mailProvider: '2925' });CODE
LOWtests/verification-flow-polling.test.js180 { email: 'user@example.com', mailProvider: 'icloud', lastSignupCode: null },CODE
LOWtests/verification-flow-polling.test.js210 { email: 'user@example.com', mailProvider: 'icloud', lastLoginCode: null },CODE
LOWtests/verification-flow-polling.test.js259 email: 'user@example.com',CODE
LOWtests/verification-flow-polling.test.js264 email: 'user@example.com',CODE
LOWtests/verification-flow-polling.test.js322 { email: 'user@example.com', lastLoginCode: null },CODE
LOWtests/verification-flow-polling.test.js387 email: 'user@example.com',CODE
LOWtests/verification-flow-polling.test.js451 email: 'user@example.com',CODE
LOWtests/verification-flow-polling.test.js521 email: 'user@example.com',CODE
LOWtests/verification-flow-polling.test.js590 { email: 'user@example.com', lastLoginCode: null },CODE
LOWtests/verification-flow-polling.test.js668 { email: 'user@example.com', lastLoginCode: null },CODE
LOWtests/verification-flow-polling.test.js777 email: 'user@example.com',CODE
LOWtests/verification-flow-polling.test.js841 email: 'user@example.com',CODE
LOWtests/verification-flow-polling.test.js905 email: 'user@example.com',CODE
LOWtests/verification-flow-polling.test.js975 email: 'user@example.com',CODE
183 more matches not shown…
Structural Annotation Overuse18 hits · 31 pts
SeverityFileLineSnippetContext
LOW项目完整链路说明.md467### Step 4 / Step 8COMMENT
LOWbackground.js14429// Step 1: Open ChatGPT homepageCOMMENT
LOWbackground.js14437// Step 2: Click signup, fill email, continue to password pageCOMMENT
LOWbackground.js14445// Step 3: Fill Password (via openai-auth.js)COMMENT
LOWbackground.js14453// Step 4: Get Signup Verification Code (qq-mail.js polls, then fills in openai-auth.js)COMMENT
LOWbackground.js14607// Step 5: Fill Name & Birthday (via openai-auth.js)COMMENT
LOWbackground.js14615// Step 7: Login and ensure the auth page reaches the login verification pageCOMMENT
LOWbackground.js15485// Step 7: Refresh OAuth and log inCOMMENT
LOWbackground.js15493// Step 8: Poll login verification mail and submit the login codeCOMMENT
LOWbackground.js15501// Step 9: 完成 OAuth(自动点击 + localhost 回调监听)COMMENT
LOWbackground.js16131// Step 10: 平台回调验证COMMENT
LOWcontent/qq-mail.js111 // Step 1: Snapshot existing mail IDs BEFORE we start waiting for new emailCOMMENT
LOWflows/openai/content/vps-panel.js948// Step 1: Get OAuth LinkCOMMENT
LOWflows/openai/content/openai-auth.js2684// Step 2: Click Register, fill email, then continue to password pageCOMMENT
LOWflows/openai/content/openai-auth.js2696// Step 3: Fill PasswordCOMMENT
LOWflows/openai/content/openai-auth.js5750// Step 7: Login with registered account (on OAuth auth page)COMMENT
LOWflows/openai/content/openai-auth.js6941// Step 9: Find "继续" on OAuth consent page for debugger clickCOMMENT
LOWflows/openai/content/openai-auth.js7134// Step 5: Fill Name & Birthday / AgeCOMMENT
Verbosity Indicators17 hits · 29 pts
SeverityFileLineSnippetContext
LOWbackground.js14429// Step 1: Open ChatGPT homepageCOMMENT
LOWbackground.js14437// Step 2: Click signup, fill email, continue to password pageCOMMENT
LOWbackground.js14445// Step 3: Fill Password (via openai-auth.js)COMMENT
LOWbackground.js14453// Step 4: Get Signup Verification Code (qq-mail.js polls, then fills in openai-auth.js)COMMENT
LOWbackground.js14607// Step 5: Fill Name & Birthday (via openai-auth.js)COMMENT
LOWbackground.js14615// Step 7: Login and ensure the auth page reaches the login verification pageCOMMENT
LOWbackground.js15485// Step 7: Refresh OAuth and log inCOMMENT
LOWbackground.js15493// Step 8: Poll login verification mail and submit the login codeCOMMENT
LOWbackground.js15501// Step 9: 完成 OAuth(自动点击 + localhost 回调监听)COMMENT
LOWbackground.js16131// Step 10: 平台回调验证COMMENT
LOWcontent/qq-mail.js111 // Step 1: Snapshot existing mail IDs BEFORE we start waiting for new emailCOMMENT
LOWflows/openai/content/vps-panel.js948// Step 1: Get OAuth LinkCOMMENT
LOWflows/openai/content/openai-auth.js2684// Step 2: Click Register, fill email, then continue to password pageCOMMENT
LOWflows/openai/content/openai-auth.js2696// Step 3: Fill PasswordCOMMENT
LOWflows/openai/content/openai-auth.js5750// Step 7: Login with registered account (on OAuth auth page)COMMENT
LOWflows/openai/content/openai-auth.js6941// Step 9: Find "继续" on OAuth consent page for debugger clickCOMMENT
LOWflows/openai/content/openai-auth.js7134// Step 5: Fill Name & Birthday / AgeCOMMENT
Excessive Try-Catch Wrapping13 hits · 14 pts
SeverityFileLineSnippetContext
LOWscripts/custom_mail_helper.py81 except Exception as exc:CODE
LOWscripts/custom_mail_helper.py134 except Exception:CODE
LOWscripts/custom_mail_helper.py162 except Exception as exc:CODE
LOWscripts/custom_mail_helper.py189 except Exception:STRING
LOWscripts/custom_mail_helper.py288 except Exception:STRING
LOWscripts/custom_mail_helper.py410 except Exception as exc:STRING
MEDIUMscripts/custom_mail_helper.py382def do_POST(self):CODE
LOWscripts/hotmail_helper.py91 except Exception as exc:CODE
LOWscripts/hotmail_helper.py463 except Exception:CODE
LOWscripts/hotmail_helper.py528 except Exception:CODE
LOWscripts/hotmail_helper.py697 except Exception as exc:CODE
LOWscripts/hotmail_helper.py872 except Exception as exc:CODE
MEDIUMscripts/hotmail_helper.py802def do_POST(self):CODE
Deep Nesting3 hits · 3 pts
SeverityFileLineSnippetContext
LOWscripts/custom_mail_helper.py254CODE
LOWscripts/hotmail_helper.py498CODE
LOWscripts/hotmail_helper.py705CODE
Over-Commented Block2 hits · 2 pts
SeverityFileLineSnippetContext
LOWcontent/qq-mail.js1// content/qq-mail.js — Content script for QQ Mail (steps 4, 7)COMMENT
LOWflows/openai/content/vps-panel.js1// flows/openai/content/vps-panel.js — Content script for CPA panel (OAuth URL request / platform verification node)COMMENT