Self-evolving agent: grows skill tree from 3.3K-line seed, achieving full system control with 6x less token consumption
This report summarizes scanner evidence for lsdefine/GenericAgent, a Python project with 14,300 GitHub stars. SynthScan examined 77,009 lines of code across 201 source files, recording 1888 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 40.4 (High pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 547 finding(s).
Are imports declared and package/API names verified? 171 finding(s).
Are wrappers, guards, and repeated structures necessary? 1479 finding(s).
Which changes need focused human review? 1888 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1888 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | TMWebDriver.py | 9 | except: pass | CODE |
| HIGH | TMWebDriver.py | 105 | except Exception: pass | CODE |
| HIGH | agentmain.py | 13 | except Exception: pass | CODE |
| HIGH | agentmain.py | 77 | except: pass | CODE |
| HIGH | agentmain.py | 127 | except Exception: pass | CODE |
| HIGH | agentmain.py | 129 | except Exception: pass | CODE |
| HIGH | agentmain.py | 144 | except (json.JSONDecodeError, ValueError): pass | CODE |
| HIGH | agentmain.py | 294 | except Exception: pass | CODE |
| HIGH | agentmain.py | 327 | except Exception: pass | CODE |
| HIGH | agentmain.py | 124 | except OSError: pass | CODE |
| HIGH | agentmain.py | 336 | except Exception: pass | CODE |
| HIGH | llmcore.py | 102 | except OSError: pass | CODE |
| HIGH | llmcore.py | 234 | except: pass | CODE |
| HIGH | llmcore.py | 1062 | except: pass | CODE |
| HIGH | llmcore.py | 1065 | except: pass | CODE |
| HIGH | llmcore.py | 1067 | except: pass | CODE |
| HIGH | llmcore.py | 1028 | except: pass | CODE |
| HIGH | llmcore.py | 1036 | except: pass | CODE |
| HIGH | llmcore.py | 1012 | except: pass | CODE |
| HIGH | simphtml.py | 638 | except: pass | CODE |
| HIGH | simphtml.py | 824 | except: pass | CODE |
| HIGH | ga.py | 14 | except: pass | CODE |
| HIGH | ga.py | 228 | except (PermissionError, OSError): pass | CODE |
| HIGH | ga.py | 607 | except FileNotFoundError: pass | CODE |
| HIGH | ga.py | 55 | except: pass | CODE |
| HIGH | ga.py | 265 | except Exception: pass | CODE |
| HIGH | memory/macljqCtrl.py | 230 | except Exception: pass | CODE |
| HIGH | memory/macljqCtrl.py | 257 | except Exception: pass | CODE |
| HIGH | memory/ljqCtrlBg.py | 13 | except Exception: pass | CODE |
| HIGH | memory/ljqCtrlBg.py | 109 | except Exception: pass | CODE |
| HIGH | memory/ljqCtrlBg.py | 102 | except Exception: pass | CODE |
| HIGH | memory/ljqCtrl.py | 22 | except: pass | CODE |
| HIGH | memory/autonomous_operation_sop/helper.py | 117 | except: | CODE |
| HIGH | memory/L4_raw_sessions/compress_session.py | 230 | except Exception: pass | CODE |
| HIGH | plugins/langfuse_tracing.py | 44 | except Exception: | CODE |
| HIGH | plugins/langfuse_tracing.py | 68 | except Exception: | CODE |
| HIGH | plugins/langfuse_tracing.py | 80 | except Exception: | CODE |
| HIGH | plugins/langfuse_tracing.py | 93 | except Exception: | CODE |
| HIGH | plugins/langfuse_tracing.py | 140 | except Exception: | CODE |
| HIGH | plugins/hooks.py | 31 | except KeyError: | CODE |
| HIGH | frontends/stapp2.py | 6 | except: pass | CODE |
| HIGH | frontends/stapp2.py | 8 | except: pass | CODE |
| HIGH | frontends/cost_tracker.py | 183 | except Exception: | CODE |
| HIGH | frontends/cost_tracker.py | 408 | except Exception: pass | CODE |
| HIGH | frontends/cost_tracker.py | 421 | except Exception: pass | CODE |
| HIGH | frontends/cost_tracker.py | 148 | except Exception: | CODE |
| HIGH | frontends/cost_tracker.py | 305 | except Exception: | CODE |
| HIGH | frontends/cost_tracker.py | 310 | except Exception: | CODE |
| HIGH | frontends/qqapp.py | 40 | except Exception: | CODE |
| HIGH | frontends/ga_contract_probe.py | 65 | except (ValueError, TypeError): | CODE |
| HIGH | frontends/ga_contract_probe.py | 73 | except (ValueError, TypeError): | CODE |
| HIGH | frontends/ga_contract_probe.py | 87 | except (ValueError, TypeError): | CODE |
| HIGH | frontends/tuiapp_v2.py | 1435 | except OSError: pass | CODE |
| HIGH | frontends/tuiapp_v2.py | 1593 | except Exception: | CODE |
| HIGH | frontends/tuiapp_v2.py | 2158 | except Exception: | CODE |
| HIGH | frontends/tuiapp_v2.py | 2180 | except Exception: | CODE |
| HIGH | frontends/tuiapp_v2.py | 2623 | except Exception: | CODE |
| HIGH | frontends/tuiapp_v2.py | 2629 | except Exception: | CODE |
| HIGH | frontends/tuiapp_v2.py | 2832 | except Exception: pass | CODE |
| HIGH | frontends/tuiapp_v2.py | 2834 | except Exception: pass | CODE |
| 230 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | TMWebDriver.py | 77 | except Exception: traceback.print_exc() | CODE |
| LOW | TMWebDriver.py | 103 | except Exception as e: return json.dumps({'r': {'error': str(e)}}, ensure_ascii=False) | CODE |
| LOW | TMWebDriver.py | 105 | except Exception: pass | CODE |
| LOW | TMWebDriver.py | 155 | except Exception as e: | CODE |
| MEDIUM | TMWebDriver.py | 156 | safe_print(f"Error handling message: {e}") | CODE |
| MEDIUM | TMWebDriver.py | 128 | def handle(self) -> None: | CODE |
| LOW⚡ | agentmain.py | 294 | except Exception: pass | CODE |
| LOW⚡ | agentmain.py | 301 | except Exception as e: print(f'[Reflect] reload error: {e}') | CODE |
| LOW⚡ | agentmain.py | 303 | except Exception as e: | CODE |
| LOW⚡ | agentmain.py | 314 | except Exception as e: | CODE |
| LOW⚡ | agentmain.py | 322 | except Exception as e: print(f'[Reflect] on_done error: {e}') | CODE |
| LOW⚡ | agentmain.py | 327 | except Exception: pass | CODE |
| LOW⚡ | agentmain.py | 331 | except Exception: model = '?' | CODE |
| LOW⚡ | agentmain.py | 336 | except Exception: pass | CODE |
| LOW | agentmain.py | 13 | except Exception: pass | CODE |
| LOW | agentmain.py | 84 | except Exception as e: print(f'\n\n\n[ERROR] Failed to init MixinSession with cfg {s["mixin_cfg"]}: {e}! | CODE |
| LOW | agentmain.py | 127 | except Exception: pass | CODE |
| LOW | agentmain.py | 129 | except Exception: pass | CODE |
| LOW | agentmain.py | 202 | except Exception as e: | CODE |
| MEDIUM | llmcore.py | 367 | def _i(v, default=0): | CODE |
| LOW | llmcore.py | 167 | except Exception as e: | CODE |
| LOW | llmcore.py | 511 | except Exception as e: | CODE |
| MEDIUM | simphtml.py | 837 | print(f"Error: {error_msg}") | CODE |
| LOW | simphtml.py | 833 | except Exception as e: | CODE |
| LOW | simphtml.py | 658 | except Exception as e: | STRING |
| LOW | simphtml.py | 720 | except Exception: print(f'[cutlist] skip invalid selector: {sel}'); continue | STRING |
| MEDIUM | ga.py | 48 | def stream_reader(proc, logs): | CODE |
| LOW | ga.py | 94 | except Exception as e: | CODE |
| LOW | ga.py | 146 | except Exception as e: | CODE |
| LOW | ga.py | 177 | except Exception as e: return {"status": "error", "msg": format_error(e)} | CODE |
| LOW | ga.py | 220 | except Exception as e: return {"status": "error", "msg": str(e)} | CODE |
| LOW | ga.py | 265 | except Exception: pass | CODE |
| LOW | ga.py | 267 | except Exception as e: return f"Error: {str(e)}" | CODE |
| LOW | ga.py | 324 | except Exception as e: result = f'Error: {e}' | CODE |
| LOW | ga.py | 423 | except Exception as e: | CODE |
| LOW | memory/checklist_helper.py | 93 | except Exception: return False | CODE |
| LOW | memory/adb_ui.py | 19 | except Exception as e: | CODE |
| LOW | memory/ui_detect.py | 50 | except Exception: return False | CODE |
| LOW | memory/ui_detect.py | 64 | except Exception: return _yolo_local(image_path, conf) | CODE |
| LOW | memory/ui_detect.py | 197 | except Exception as e: | CODE |
| MEDIUM | memory/ui_detect.py | 192 | def do_POST(self): | CODE |
| LOW | memory/vision_api.template.py | 28 | except Exception as e: | CODE |
| MEDIUM | memory/vision_api.template.py | 25 | def ask_vision(image_input, prompt="详细描述这张图片的内容", timeout=60, max_pixels=1440000 | CODE |
| LOW | memory/keychain.py | 34 | except Exception as e: | CODE |
| LOW | memory/macljqCtrl.py | 38 | except Exception: | CODE |
| LOW | memory/macljqCtrl.py | 64 | except Exception: | CODE |
| LOW | memory/macljqCtrl.py | 68 | except Exception: | CODE |
| LOW | memory/macljqCtrl.py | 230 | except Exception: pass | CODE |
| LOW | memory/macljqCtrl.py | 257 | except Exception: pass | CODE |
| LOW | memory/macljqCtrl.py | 332 | except Exception: | CODE |
| LOW | memory/macljqCtrl.py | 386 | except Exception: before = None | CODE |
| LOW | memory/macljqCtrl.py | 393 | except Exception: | CODE |
| LOW | memory/ljqCtrlBg.py | 13 | except Exception: pass | CODE |
| LOW | memory/ljqCtrlBg.py | 102 | except Exception: pass | CODE |
| LOW | memory/ljqCtrlBg.py | 109 | except Exception: pass | CODE |
| LOW | memory/procmem_scanner.py | 143 | except Exception as e: | CODE |
| MEDIUM | memory/procmem_scanner.py | 144 | print(f"Error: {e}") | CODE |
| LOW | memory/ljqCtrl.py | 95 | except Exception: | CODE |
| LOW | memory/autonomous_operation_sop/helper.py | 95 | except Exception as e: | CODE |
| LOW | memory/autonomous_operation_sop/helper.py | 113 | except Exception as e: | CODE |
| 640 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | mykey_template_en.py | 1 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | mykey_template_en.py | 3 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | mykey_template_en.py | 24 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | mykey_template_en.py | 27 | # ── 1. NativeClaudeSession — Anthropic direct ──────────────────────────────── | COMMENT |
| MEDIUM | mykey_template_en.py | 43 | # ── 2. NativeOAISession — OpenAI direct ────────────────────────────────────── | COMMENT |
| MEDIUM | mykey_template_en.py | 58 | # ── 3. Mixin failover (optional) ───────────────────────────────────────────── | COMMENT |
| MEDIUM | mykey_template_en.py | 69 | # ── 4. Global HTTP proxy (optional) ────────────────────────────────────────── | COMMENT |
| MEDIUM | mykey_template_en.py | 74 | # ── 5. Chat platform integrations (optional) ───────────────────────────────── | COMMENT |
| MEDIUM⚡ | mykey_template.py | 1 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | mykey_template.py | 3 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | mykey_template.py | 5 | # ┌─────────────────────────────────────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | mykey_template.py | 10 | # └─────────────────────────────────────────────────────────────────────────┘ | COMMENT |
| MEDIUM⚡ | mykey_template.py | 12 | # ────────── Session 类型速查 ────────── | COMMENT |
| MEDIUM⚡ | mykey_template.py | 18 | # ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | mykey_template.py | 29 | # ────────── Prompt Cache 说明 ────────── | COMMENT |
| MEDIUM⚡ | mykey_template.py | 37 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | mykey_template.py | 44 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | mykey_template.py | 55 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | mykey_template.py | 57 | # ─── 鉴权 / 路由 ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | mykey_template.py | 67 | # ─── 容量 / 超时 ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | mykey_template.py | 74 | # ─── 推理 / 思考 ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | mykey_template.py | 83 | # ─── 采样 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | mykey_template.py | 87 | # ─── 传输 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | mykey_template.py | 93 | # ─── NativeClaudeSession 专属 ─────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | mykey_template.py | 101 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | mykey_template.py | 105 | # ╔═══════════════════════════════════════════════════════════════════════════╗ | COMMENT |
| MEDIUM⚡ | mykey_template.py | 107 | # ╚═══════════════════════════════════════════════════════════════════════════╝ | COMMENT |
| MEDIUM⚡ | mykey_template.py | 114 | # ── Mixin 故障转移(最推荐的方式)────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | mykey_template.py | 128 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | mykey_template.py | 130 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | mykey_template.py | 136 | # ── 1a. CC switch 适配渠道(最常用)──────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | mykey_template.py | 292 | # ── 其他 OAI 兼容渠道 ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | mykey_template.py | 296 | # ────────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | mykey_template.py | 303 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | mykey_template.py | 305 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | mykey_template.py | 309 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | mykey_template.py | 311 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | mykey_template.py | 160 | # ── 1b. Anthropic 官方直连 ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | mykey_template.py | 192 | # ── 1b′. Anthropic Messages 端点 + 手动指定鉴权头(api_key_header)────────────── | COMMENT |
| MEDIUM | mykey_template.py | 212 | # ── 1c. CRS 反代 Claude Max ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | mykey_template.py | 228 | # ── 1d. 其他 Anthropic 兼容渠道(GLM / Kimi / MiniMax 等)─────────────────── | COMMENT |
| MEDIUM | mykey_template.py | 233 | # ────────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | mykey_template.py | 248 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | mykey_template.py | 250 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | mykey_template.py | 276 | # ── 也可以走 Responses API ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | memory/vision_api.template.py | 16 | # ================================================================= | COMMENT |
| MEDIUM⚡ | plugins/langfuse_tracing.py | 24 | # ── Agent trace ────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | plugins/langfuse_tracing.py | 47 | # ── LLM generation span (replaces _write_llm_log patch) ───── | COMMENT |
| MEDIUM | plugins/langfuse_tracing.py | 96 | # ── Usage tracking: tee SSE data for token counts ─────────── | COMMENT |
| MEDIUM⚡ | frontends/cost_tracker.py | 314 | # ── Core API ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontends/cost_tracker.py | 74 | # ── Per-call ledger ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | frontends/tuiapp_v2.py | 249 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | frontends/tuiapp_v2.py | 271 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | frontends/tuiapp_v2.py | 1408 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | frontends/tuiapp_v2.py | 8156 | #============================================================================ | COMMENT |
| MEDIUM | frontends/tuiapp_v2.py | 8158 | #============================================================================ | COMMENT |
| MEDIUM | frontends/tuiapp_v2.py | 3655 | # =========================================================================== | STRING |
| MEDIUM | frontends/tuiapp_v2.py | 3663 | # =========================================================================== | STRING |
| MEDIUM⚡ | frontends/qtapp.py | 282 | # ══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | frontends/qtapp.py | 284 | # ══════════════════════════════════════════════════════════════════════ | COMMENT |
| 106 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | simphtml.py | 13 | (sourceNode.id && ignoreIds.includes(sourceNode.id)) | CODE |
| HIGH⚡ | simphtml.py | 15 | return null; | CODE |
| HIGH⚡ | simphtml.py | 22 | try { if (sourceNode.matches && sourceNode.matches(':-webkit-autofill')) { clone.setAttribute('data-autofilled', 'tr | CODE |
| HIGH⚡ | simphtml.py | 27 | const isSmallDropdown = _ddItems > 0 && _ddItems <= 7 && sourceNode.textContent.length < 500; | CODE |
| HIGH⚡ | simphtml.py | 31 | const childClone = cloneNode(child, keep || isSmallDropdown); | CODE |
| HIGH⚡ | simphtml.py | 32 | if (childClone) childNodes.push(childClone); | CODE |
| HIGH⚡ | simphtml.py | 36 | const iDoc = sourceNode.contentDocument || sourceNode.contentWindow?.document; | CODE |
| HIGH⚡ | simphtml.py | 37 | if (iDoc && iDoc.body && iDoc.body.children.length > 0) { | CODE |
| HIGH⚡ | simphtml.py | 44 | if (wrapper.childNodes.length) childNodes.push(wrapper); | CODE |
| HIGH⚡ | simphtml.py | 51 | if (shadowClone) childNodes.push(shadowClone); | CODE |
| HIGH⚡ | simphtml.py | 58 | const isVisible = (rect.width > 1 && rect.height > 1 && | CODE |
| HIGH⚡ | simphtml.py | 61 | Math.abs(rect.left) < 5000 && Math.abs(rect.top) < 5000) | CODE |
| HIGH⚡ | simphtml.py | 76 | const childrenInfos = nonTextChildren.map(c => nodeInfo.get(c)).filter(i => i && i.rect && i.rect.width > 0 && i.r | CODE |
| HIGH⚡ | simphtml.py | 79 | if (!c || c === 'transparent') return 0; | CODE |
| HIGH⚡ | simphtml.py | 83 | const hasVisualBg = bgAlpha > 0.1 || style.backgroundImage !== 'none' || (style.backdropFilter && style.backdropFi | CODE |
| HIGH⚡ | simphtml.py | 83 | const hasVisualBg = bgAlpha > 0.1 || style.backgroundImage !== 'none' || (style.backdropFilter && style.backdropFi | CODE |
| HIGH⚡ | simphtml.py | 85 | if (!hasVisualBg && childrenInfos.length > 0) { | CODE |
| HIGH⚡ | simphtml.py | 87 | const flowChildren = childrenInfos.filter(cInfo => cInfo.style && cInfo.style.position !== 'fixed' && cInfo.styl | CODE |
| HIGH⚡ | simphtml.py | 100 | if (maxC && maxC.area > 10000 && (!isVisible || maxC.area > info.area * 5)) info = maxC; | CODE |
| HIGH⚡ | simphtml.py | 100 | if (maxC && maxC.area > 10000 && (!isVisible || maxC.area > info.area * 5)) info = maxC; | CODE |
| HIGH⚡ | simphtml.py | 105 | if (sourceNode.nodeType === 1 && sourceNode.tagName === 'DIV') { | CODE |
| HIGH⚡ | simphtml.py | 106 | if (!hasValidChildren && !sourceNode.textContent.trim()) return null; | CODE |
| HIGH⚡ | simphtml.py | 109 | if (sourceNode.getAttribute && sourceNode.getAttribute('aria-hidden') === 'true' && !info.isVisible) { | CODE |
| HIGH⚡ | simphtml.py | 110 | return null; | CODE |
| HIGH⚡ | simphtml.py | 112 | if (info.isVisible || hasValidChildren || keep) { | CODE |
| HIGH⚡ | simphtml.py | 116 | return null; | CODE |
| HIGH⚡ | simphtml.py | 124 | return info && info.isVisible; | CODE |
| HIGH⚡ | simphtml.py | 214 | if (pathType !== 'main' && highClassNameVariety && childrenInfo.length > 5) { | CODE |
| HIGH⚡ | simphtml.py | 223 | const hasStandardButton = container.querySelector('button, input[type="button"], input[type="submit"], [role="button | CODE |
| HIGH⚡ | simphtml.py | 225 | const hasClassButton = container.querySelector('[class*="-btn"], [class*="-button"], .button, .btn, [class*="btn-"]' | CODE |
| HIGH⚡ | simphtml.py | 232 | if (_efp) { let _el = _efp; while (_el) { const _h = childrenInfo.find(c => c.node.id && c.node.id === _el.id); if ( | CODE |
| HIGH⚡ | simphtml.py | 253 | if (isComplex && centerDiff < 0.2 && | CODE |
| HIGH⚡ | simphtml.py | 254 | ((minDimensionRatio > 0.2 && rect.width/window.innerWidth < 0.98) || minDimensionRatio > 0.95)) { | CODE |
| HIGH⚡ | simphtml.py | 264 | if (isComplex && isNearTop && maxDimensionRatio > 0.4 && top.isVisible) { | CODE |
| HIGH⚡ | simphtml.py | 266 | } else if (isMostlyText || isComplex || isDialog) { | CODE |
| HIGH⚡ | simphtml.py | 286 | return !(x1 + r1.width <= x2 + epsilon || x1 >= x2 + r2.width - epsilon || | CODE |
| HIGH⚡ | simphtml.py | 287 | y1 + r1.height <= y2 + epsilon || y1 >= y2 + r2.height - epsilon | CODE |
| HIGH⚡ | simphtml.py | 297 | if (!info?.rect || info.style.position !== 'fixed') return false; | CODE |
| HIGH⚡ | simphtml.py | 300 | return cover > 0.15 && cover < 1.0 && cd < 0.3 && el.querySelector('button, input, a, [role="button"], iframe'); | CODE |
| HIGH⚡ | simphtml.py | 301 | }).filter((el, _, arr) => !arr.some(o => o !== el && o.contains(el))) | CODE |
| HIGH⚡ | simphtml.py | 378 | if (!dominated) kept.push(cand); | CODE |
| HIGH⚡ | simphtml.py | 383 | const cTag = container ? container.tagName : null; | CODE |
| HIGH⚡ | simphtml.py | 393 | if (score !== undefined) result.score = score; | CODE |
| HIGH⚡ | simphtml.py | 479 | el.className && el.className.split(/\s+/).includes(cls) | CODE |
| HIGH⚡ | simphtml.py | 484 | groups.push({selector, elements, score: scoreGroup(selector, elements)}); | CODE |
| HIGH⚡ | simphtml.py | 493 | el.className && el.className.split(/\s+/).includes(topClasses[i]) && el | CODE |
| HIGH⚡ | simphtml.py | 497 | groups.push({selector, elements,score: scoreGroup(selector, elements)}); | CODE |
| HIGH | simphtml.py | 153 | if (rectn.width < window.innerWidth * 0.8 && rectn.height < window.innerHeight * 0.8) return node; | CODE |
| HIGH | simphtml.py | 166 | area: info.area, zIndex: (info.zIndex || 0), isVisible: info.isVisible }; | CODE |
| HIGH | simphtml.py | 184 | if (!child.dataset.mark || child.dataset.mark[0] !== 'R') analyzeNode(child, pathType); | CODE |
| HIGH | simphtml.py | 194 | (childrenInfo.length === 1 || childrenInfo[0].area > childrenInfo[1].area * 2); | CODE |
| HIGH | simphtml.py | 329 | js_findMainList = r'''function findMainList(startElement = null) { | CODE |
| HIGH | simphtml.py | 330 | const root = startElement || document.body; | CODE |
| HIGH | simphtml.py | 344 | if (score >= MIN_CHILDREN) candidates.push({node, score}); | CODE |
| HIGH | simphtml.py | 358 | allCandidates.push({ container, selector: groupInfo.selector, items, score }); | CODE |
| HIGH | simphtml.py | 451 | groups.push({ | CODE |
| HIGH | simphtml.py | 463 | groups.push({ | CODE |
| HIGH | simphtml.py | 516 | if (!container || items.length < 3) return 0; | CODE |
| HIGH | simphtml.py | 532 | itemAreas.push(area); | CODE |
| HIGH | simphtml.py | 571 | if (uniqueRows === 1 || uniqueCols === 1) { layoutScore = 20; | CODE |
| 13 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | llmcore.py | 82 | def _sanitize_leading_user_msg(msg): | CODE |
| LOW | llmcore.py | 151 | def _raise_if_retryable_overload(emsg): | CODE |
| LOW | llmcore.py | 936 | def _prepare_tool_instruction(self, tools): | CODE |
| LOW | ga.py | 461 | def do_update_working_checkpoint(self, args, response): | CODE |
| LOW | ga.py | 527 | def do_start_long_term_update(self, args, response): | CODE |
| LOW | frontends/stapp2.py | 684 | function ensureSidebarSettingsTitle() { | CODE |
| LOW | frontends/stapp2.py | 831 | def build_dynamic_font_update_script(scale_percent: float) -> str: | STRING |
| LOW⚡ | frontends/stapp2.py | 853 | def build_header_agent_badge_script() -> str: | STRING |
| LOW | frontends/cost_tracker.py | 85 | def _migrate_legacy_history_unlocked() -> None: | CODE |
| LOW | frontends/qqapp.py | 56 | async def on_group_at_message_create(self, message: GroupMessage): | CODE |
| LOW | frontends/dcapp.py | 39 | def _extract_discord_progress(text): | CODE |
| LOW | frontends/dcapp.py | 48 | def _strip_discord_transcript(text): | CODE |
| LOW⚡ | frontends/tuiapp_v2.py | 2639 | def has_valid_selection_parent(self) -> bool: | CODE |
| LOW⚡ | frontends/tuiapp_v2.py | 2872 | def _paste_file_from_clipboard(self) -> bool: | CODE |
| LOW⚡ | frontends/tuiapp_v2.py | 6901 | def _return_to_free_text_edit(self, confirm_msg: ChatMessage) -> None: | CODE |
| LOW⚡ | frontends/tuiapp_v2.py | 6918 | def _maybe_intercept_free_text(self, sess: AgentSession, text: str) -> bool: | CODE |
| LOW⚡ | frontends/tuiapp_v2.py | 7367 | def _scroll_active_session_into_view(self) -> None: | CODE |
| LOW⚡ | frontends/tuiapp_v2.py | 8098 | def _remount_assistant_message(self, m: ChatMessage) -> None: | CODE |
| LOW⚡ | frontends/tuiapp_v2.py | 8856 | def on_clickable_tree_node_clicked(self, msg) -> None: | CODE |
| LOW⚡ | frontends/tuiapp_v2.py | 8859 | def on_option_list_option_selected(self, ev) -> None: | CODE |
| LOW | frontends/tuiapp_v2.py | 76 | def _hint_terminal_capabilities() -> None: | CODE |
| LOW | frontends/tuiapp_v2.py | 944 | def _patch_markdown_table_overflow(): | CODE |
| LOW | frontends/tuiapp_v2.py | 1048 | def _cjk_compute_wrap_offsets(text, width, tab_size, fold=True, | CODE |
| LOW | frontends/tuiapp_v2.py | 1207 | def _build_passthrough_source(narrow_plain: str): | CODE |
| LOW | frontends/tuiapp_v2.py | 1684 | def _palette_from_resolved_vars(v: dict[str, str], dark: bool) -> dict[str, str]: | CODE |
| LOW | frontends/tuiapp_v2.py | 3018 | def _suppress_palette_next_change(self) -> None: | CODE |
| LOW | frontends/tuiapp_v2.py | 3067 | def _shift_is_physically_down(self) -> bool: | CODE |
| LOW | frontends/tuiapp_v2.py | 3902 | def _patch_auto_scroll_for_selection(self) -> None: | CODE |
| LOW | frontends/tuiapp_v2.py | 4065 | def _install_write_snapshot_hook(self) -> None: | CODE |
| LOW | frontends/tuiapp_v2.py | 4952 | def on_option_list_option_selected(self, event: OptionList.OptionSelected) -> None: | CODE |
| LOW | frontends/tuiapp_v2.py | 6641 | def _install_intervene_replay_hook(self, sess: AgentSession) -> None: | CODE |
| LOW | frontends/tuiapp_v2.py | 7097 | def _render_planbar_placeholder(self, bar: Static, sess: AgentSession) -> None: | CODE |
| LOW | frontends/tuiapp_v2.py | 7968 | def _mount_assistant_segments(self, container, m: ChatMessage, segs: list[tuple], | CODE |
| LOW⚡ | frontends/tuiapp_v2.py | 3798 | def _is_stale_selectable_mouse_event(self, event) -> bool: | STRING |
| LOW | frontends/tuiapp_v2.py | 3554 | async def on_option_list_option_highlighted(self, event): | STRING |
| LOW | frontends/tuiapp_v2.py | 3566 | def on_option_list_option_selected(self, event): | STRING |
| LOW | frontends/tuiapp_v2.py | 3637 | def on_option_list_option_highlighted(self, ev) -> None: | STRING |
| LOW | frontends/tuiapp_v2.py | 3642 | def on_option_list_option_selected(self, ev) -> None: | STRING |
| LOW | frontends/qtapp.py | 460 | def _build_prompt_with_uploads(prompt: str, files: list) -> tuple: | STRING |
| LOW | frontends/qtapp.py | 1313 | def _reset_history_items_style(self): | STRING |
| LOW | frontends/qtapp.py | 1814 | def _refresh_model_rows_style(self): | STRING |
| LOW | frontends/desktop_settings.py | 95 | def write_settings_atomically(settings_path: Path, document: dict) -> None: | CODE |
| LOW⚡ | frontends/desktop_bridge.py | 2885 | async def get_token_history_handler(request): | CODE |
| LOW⚡ | frontends/desktop_bridge.py | 2906 | async def subscription_portal_handler(request): | CODE |
| LOW | frontends/desktop_bridge.py | 66 | def _configured_conductor_port() -> int: | CODE |
| LOW | frontends/desktop_bridge.py | 144 | def normalize_final_turn_segs(full: str, outputs: Any) -> Optional[List[str]]: | CODE |
| LOW | frontends/desktop_bridge.py | 305 | def _sanitize_desktop_plan_path(session_id: str, plan_path: str) -> str: | CODE |
| LOW | frontends/desktop_bridge.py | 356 | def _session_has_unfinished_work(session: "Session") -> bool: | CODE |
| LOW | frontends/desktop_bridge.py | 364 | def _running_session_ids_locked(self) -> List[str]: | CODE |
| LOW | frontends/desktop_bridge.py | 380 | def _assert_mutation_allowed_locked(self) -> None: | CODE |
| LOW | frontends/desktop_bridge.py | 1880 | def _bridge_shutdown_services() -> None: | CODE |
| LOW | frontends/desktop_bridge.py | 1974 | def _is_safe_cross_site_resource_get(request) -> bool: | CODE |
| LOW | frontends/desktop_bridge.py | 2001 | def _add_cors_response_headers(response: web.StreamResponse, origin: Optional[str]) -> None: | CODE |
| LOW | frontends/desktop_bridge.py | 2120 | def _resolve_conductor_model_state(doc: dict, profile_count: int) -> dict: | CODE |
| LOW | frontends/desktop_bridge.py | 2561 | def _reveal_path_in_file_manager(target: Path) -> None: | CODE |
| LOW | frontends/desktop_bridge.py | 2632 | async def _run_worker_to_completion(function, *args): | CODE |
| LOW | frontends/desktop_bridge.py | 2650 | async def memory_import_inspect_handler(request): | CODE |
| LOW | frontends/desktop_bridge.py | 2739 | async def conductor_model_get_handler(request): | CODE |
| LOW | frontends/desktop_bridge.py | 2744 | async def conductor_model_save_handler(request): | CODE |
| LOW | frontends/desktop_bridge.py | 2825 | async def service_capabilities_handler(request): | CODE |
| 245 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | TMWebDriver.py | 125 | CODE | |
| LOW | TMWebDriver.py | 188 | CODE | |
| LOW | TMWebDriver.py | 128 | CODE | |
| LOW | agentmain.py | 66 | CODE | |
| LOW | agentmain.py | 152 | CODE | |
| LOW | agent_loop.py | 42 | CODE | |
| LOW | llmcore.py | 48 | CODE | |
| LOW | llmcore.py | 156 | CODE | |
| LOW | llmcore.py | 244 | CODE | |
| LOW | llmcore.py | 389 | CODE | |
| LOW | llmcore.py | 446 | CODE | |
| LOW | llmcore.py | 557 | CODE | |
| LOW | llmcore.py | 593 | CODE | |
| LOW | llmcore.py | 751 | CODE | |
| LOW | llmcore.py | 981 | CODE | |
| LOW | llmcore.py | 1133 | CODE | |
| LOW | simphtml.py | 596 | CODE | |
| LOW | ga.py | 16 | CODE | |
| LOW | ga.py | 223 | CODE | |
| LOW | ga.py | 229 | CODE | |
| LOW | ga.py | 303 | CODE | |
| LOW | ga.py | 566 | CODE | |
| LOW | memory/ui_detect.py | 117 | CODE | |
| LOW | memory/vision_api.template.py | 25 | CODE | |
| LOW | memory/procmem_scanner.py | 86 | CODE | |
| LOW | memory/L4_raw_sessions/compress_session.py | 70 | CODE | |
| LOW | memory/L4_raw_sessions/compress_session.py | 103 | CODE | |
| LOW | memory/L4_raw_sessions/compress_session.py | 154 | CODE | |
| LOW | plugins/langfuse_tracing.py | 98 | CODE | |
| LOW | frontends/chatapp_common.py | 319 | CODE | |
| LOW | frontends/cost_tracker.py | 187 | CODE | |
| LOW | frontends/cost_tracker.py | 273 | CODE | |
| LOW | frontends/cost_tracker.py | 316 | CODE | |
| LOW | frontends/cost_tracker.py | 366 | CODE | |
| LOW | frontends/cost_tracker.py | 373 | CODE | |
| LOW | frontends/qqapp.py | 31 | CODE | |
| LOW | frontends/dcapp.py | 216 | CODE | |
| LOW | frontends/dcapp.py | 283 | CODE | |
| LOW | frontends/model_cmd.py | 33 | CODE | |
| LOW | frontends/tuiapp_v2.py | 506 | CODE | |
| LOW | frontends/tuiapp_v2.py | 536 | CODE | |
| LOW | frontends/tuiapp_v2.py | 675 | CODE | |
| LOW | frontends/tuiapp_v2.py | 1242 | CODE | |
| LOW | frontends/tuiapp_v2.py | 3309 | CODE | |
| LOW | frontends/tuiapp_v2.py | 2509 | CODE | |
| LOW | frontends/tuiapp_v2.py | 3902 | CODE | |
| LOW | frontends/tuiapp_v2.py | 4065 | CODE | |
| LOW | frontends/tuiapp_v2.py | 4952 | CODE | |
| LOW | frontends/tuiapp_v2.py | 4988 | CODE | |
| LOW | frontends/tuiapp_v2.py | 5792 | CODE | |
| LOW | frontends/tuiapp_v2.py | 6097 | CODE | |
| LOW | frontends/tuiapp_v2.py | 6752 | CODE | |
| LOW | frontends/tuiapp_v2.py | 6867 | CODE | |
| LOW | frontends/tuiapp_v2.py | 7023 | CODE | |
| LOW | frontends/tuiapp_v2.py | 7481 | CODE | |
| LOW | frontends/tuiapp_v2.py | 7814 | CODE | |
| LOW | frontends/tuiapp_v2.py | 7877 | CODE | |
| LOW | frontends/tuiapp_v2.py | 7994 | CODE | |
| LOW | frontends/tuiapp_v2.py | 8462 | CODE | |
| LOW | frontends/tuiapp_v2.py | 8668 | CODE | |
| 118 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | agentmain.py | 326 | CODE | |
| LOW | llmcore.py | 1 | CODE | |
| LOW | llmcore.py | 1 | CODE | |
| LOW | llmcore.py | 1 | CODE | |
| LOW | simphtml.py | 662 | CODE | |
| LOW | memory/ui_detect.py | 126 | CODE | |
| LOW | memory/macljqCtrl.py | 31 | CODE | |
| LOW | memory/macljqCtrl.py | 31 | CODE | |
| LOW | memory/macljqCtrl.py | 42 | CODE | |
| LOW | memory/macljqCtrl.py | 35 | CODE | |
| LOW | memory/macljqCtrl.py | 35 | CODE | |
| LOW | memory/macljqCtrl.py | 35 | CODE | |
| LOW | memory/macljqCtrl.py | 35 | CODE | |
| LOW | memory/ljqCtrlBg.py | 6 | CODE | |
| LOW | memory/procmem_scanner.py | 5 | CODE | |
| LOW | memory/procmem_scanner.py | 6 | CODE | |
| LOW | memory/ljqCtrl.py | 13 | CODE | |
| LOW | memory/ljqCtrl.py | 13 | CODE | |
| LOW | memory/ljqCtrl.py | 13 | CODE | |
| LOW | memory/ljqCtrl.py | 20 | CODE | |
| LOW | memory/ljqCtrl.py | 20 | CODE | |
| LOW | memory/ljqCtrl.py | 20 | CODE | |
| LOW | memory/autonomous_operation_sop/helper.py | 13 | CODE | |
| LOW | memory/L4_raw_sessions/compress_session.py | 4 | CODE | |
| LOW | memory/L4_raw_sessions/compress_session.py | 4 | CODE | |
| LOW | plugins/langfuse_tracing.py | 10 | CODE | |
| LOW | frontends/cost_tracker.py | 11 | CODE | |
| LOW | frontends/dcapp.py | 11 | CODE | |
| LOW | frontends/tuiapp_v2.py | 13 | CODE | |
| LOW | frontends/tuiapp_v2.py | 1415 | CODE | |
| LOW | frontends/tuiapp_v2.py | 1449 | CODE | |
| LOW | frontends/genericagent_acp_bridge.py | 43 | CODE | |
| LOW | frontends/qtapp.py | 7 | CODE | |
| LOW | frontends/qtapp.py | 21 | CODE | |
| LOW | frontends/qtapp.py | 21 | CODE | |
| LOW | frontends/qtapp.py | 21 | CODE | |
| LOW | frontends/qtapp.py | 21 | CODE | |
| LOW | frontends/qtapp.py | 32 | CODE | |
| LOW | frontends/qtapp.py | 32 | CODE | |
| LOW | frontends/desktop_settings.py | 3 | CODE | |
| LOW | frontends/desktop_bridge.py | 41 | CODE | |
| LOW | frontends/slash_cmds.py | 22 | CODE | |
| LOW | frontends/stapp.py | 13 | CODE | |
| LOW | frontends/stapp.py | 20 | CODE | |
| LOW | frontends/fsapp.py | 10 | CODE | |
| LOW | frontends/workspace_cmd.py | 22 | CODE | |
| LOW | frontends/btw_cmd.py | 9 | CODE | |
| LOW | frontends/keysym.py | 11 | CODE | |
| LOW | frontends/tui_v3.py | 7 | CODE | |
| LOW | frontends/tui_v3.py | 9 | CODE | |
| LOW | frontends/tui_v3.py | 9 | CODE | |
| LOW | frontends/tui_v3.py | 27 | CODE | |
| LOW | frontends/tui_v3.py | 34 | CODE | |
| LOW | frontends/tui_v3.py | 6034 | CODE | |
| LOW | frontends/tui_v3.py | 6035 | CODE | |
| LOW | frontends/tuiapp.py | 17 | CODE | |
| LOW | frontends/tuiapp.py | 25 | CODE | |
| LOW | frontends/wecomapp.py | 4 | CODE | |
| LOW | frontends/data_backup.py | 2 | CODE | |
| LOW | frontends/worldline.py | 17 | CODE | |
| 30 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | memory/github_contribution_sop.md | 30 | ### Step 1: 确认目标 | COMMENT |
| LOW⚡ | memory/github_contribution_sop.md | 35 | ### Step 2: 创建分支 | COMMENT |
| LOW⚡ | memory/github_contribution_sop.md | 41 | ### Step 3: 实现变更 | COMMENT |
| LOW | memory/github_contribution_sop.md | 52 | ### Step 4: 测试(不可跳过) | COMMENT |
| LOW | memory/github_contribution_sop.md | 63 | ### Step 5: 推送 + 提 PR | COMMENT |
| LOW | memory/github_contribution_sop.md | 75 | ### Step 6: CI 检查 | COMMENT |
| LOW | memory/github_contribution_sop.md | 84 | ### Step 7: 回应 Review | COMMENT |
| LOW | memory/review_sop/review_inline_prompt.en.txt | 21 | ## Step 1: mandatory reading | COMMENT |
| LOW | memory/review_sop/review_inline_prompt.en.txt | 28 | ## Step 2: lock the review scope | COMMENT |
| LOW | memory/review_sop/review_inline_prompt.en.txt | 43 | ## Step 3: file_read each reviewed file | COMMENT |
| LOW | memory/review_sop/review_inline_prompt.en.txt | 48 | ## Step 4: Q1-Q4 adversarial framing (at least 1 concrete evidence per Q) | COMMENT |
| LOW | memory/review_sop/review_inline_prompt.en.txt | 60 | ## Step 5: list P0-P3 findings | COMMENT |
| LOW | docs/installation.md | 218 | ### Step 0: Inspect before acting | COMMENT |
| LOW | docs/installation.md | 228 | ### Step 1: Choose the install path | COMMENT |
| LOW | docs/installation.md | 254 | ### Step 2: Configure keys safely | COMMENT |
| LOW | docs/installation.md | 265 | ### Step 3: Verify setup | COMMENT |
| LOW | docs/installation.md | 283 | ### Step 4: Verification and Next Steps | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mykey_template_en.py | 1 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| LOW | mykey_template_en.py | 21 | # /session.thinking_type=adaptive | COMMENT |
| LOW | mykey_template_en.py | 61 | # and Native OAI is fine; mixing Native with non-Native is not). | COMMENT |
| LOW | mykey_template.py | 1 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| LOW | mykey_template.py | 21 | # 含 'mixin' → MixinSession → 多 session 故障转移 | COMMENT |
| LOW | mykey_template.py | 41 | # 'http://host:2001/v1/chat/completions' → 原样使用 | COMMENT |
| LOW | mykey_template.py | 61 | # model 必填。后缀 '[1m]' 触发 context-1m-2025-08-07 beta(发出前会 | COMMENT |
| LOW | mykey_template.py | 81 | # thinking_budget_tokens 仅当 thinking_type='enabled' 时生效。参考: | COMMENT |
| LOW | mykey_template.py | 101 | # ══════════════════════════════════════════════════════════════════════════════ | COMMENT |
| LOW | mykey_template.py | 121 | 'max_retries': 10, # int;整个 rotation 的总重试次数上限 | COMMENT |
| LOW | mykey_template.py | 141 | # 'apikey': 'sk-user-<your-relay-key>', # 非 sk-ant- 前缀 → Bearer 鉴权 | COMMENT |
| LOW | mykey_template.py | 161 | # 官方端点,apikey 以 sk-ant- 开头 → 自动切到 x-api-key 鉴权。 | COMMENT |
| LOW | mykey_template.py | 181 | # # 'reasoning_effort': 'high', | COMMENT |
| LOW | mykey_template.py | 201 | # 'name': 'opencode-deepseek-native', | COMMENT |
| LOW | mykey_template.py | 221 | # # 'reasoning_effort': 'high', # 可选;写进 output_config.effort | COMMENT |
| LOW | mykey_template.py | 241 | # 'apibase': 'https://open.bigmodel.cn/api/anthropic', | COMMENT |
| LOW | mykey_template.py | 261 | # 'apibase': 'https://api.openai.com/v1', # 补齐到 /v1/chat/completions | COMMENT |
| LOW | mykey_template.py | 281 | # 'apikey': 'sk-<your-openai-key>', # Bearer 鉴权 | COMMENT |
| LOW | mykey_template.py | 301 | COMMENT | |
| LOW | mykey_template.py | 321 | # wecom_secret = 'your_bot_secret' | COMMENT |
| LOW | frontends/tuiapp_v2.py | 101 | r"|\x1b[=>]" | COMMENT |
| LOW | frontends/tuiapp_v2.py | 121 | COMMENT | |
| LOW | frontends/tuiapp_v2.py | 241 | if name == "ask_user": | COMMENT |
| LOW | frontends/tuiapp_v2.py | 261 | # the invariant `_align_md_renders` relies on (K==W branch). | COMMENT |
| LOW | frontends/tuiapp_v2.py | 281 | # stream but NOT the plain (wide) copy source, so mouse-copy stays margin-free. | COMMENT |
| LOW | frontends/tuiapp_v2.py | 1941 | # Interactive choice support | COMMENT |
| LOW | frontends/tuiapp_v2.py | 1961 | # `/rewind` uses it so picking an entry opens the mode picker with the list | COMMENT |
| LOW | frontends/tuiapp_v2.py | 2041 | # Pending `{question:str}` after the user picks free-text in an ask_user | COMMENT |
| LOW | frontends/tuiapp_v2.py | 2401 | pass | COMMENT |
| LOW | frontends/continue_cmd.py | 881 | COMMENT | |
| LOW | frontends/tui_v3.py | 1381 | self.agent._ga_project_mode_workspace_path = '' | COMMENT |
| LOW | frontends/tui_v3.py | 2461 | self._sbq: list[str] = [] | COMMENT |
| LOW | frontends/tui_v3.py | 3581 | el = time.time() - self._t0_anchor | COMMENT |
| LOW | frontends/tui_v3.py | 5461 | closed_lines = _indent_rows(closed_body, w) | COMMENT |
| LOW | frontends/tui_v3.py | 5861 | if getattr(kp, 'key', None) == Keys.BracketedPaste: | COMMENT |
| LOW | …tends/desktop/packaging/scripts/macos/install_macos.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | frontends/desktop/packaging/scripts/linux/uninstall.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | …tends/desktop/packaging/scripts/linux/install_linux.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | frontends/desktop/src-tauri/.cargo/config.toml | 1 | # Statically link the MSVC CRT (UCRT + vcruntime) into the Windows exe so the thin | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | frontends/tuiapp_v2.py | 7130 | def _set_planbar_visible(self, bar: Static, visible: bool) -> None: | CODE |
| LOW⚡ | frontends/tuiapp_v2.py | 7315 | def _update_terminal_title(self) -> None: | CODE |
| LOW⚡ | frontends/tuiapp_v2.py | 7404 | def _update_history_open(self) -> None: | CODE |
| LOW | frontends/tuiapp_v2.py | 7023 | def _update_plan_state(self, sess: AgentSession, _stream_text: str = "") -> None: | CODE |
| LOW | frontends/tuiapp_v2.py | 8242 | def set_rows(self, rows: List[RenderRow]) -> None: | CODE |
| LOW | frontends/tuiapp_v2.py | 8498 | def _set_left_selection(self, key: int, keep_focus: bool = False) -> None: | CODE |
| LOW | frontends/tuiapp_v2.py | 8765 | def _set_focus(self, right: bool) -> None: | CODE |
| LOW | frontends/session_names.py | 49 | def set_name(log_path: str, name: str) -> None: | CODE |
| LOW | frontends/p2p_ws_client.py | 1085 | __all__ = [ | CODE |
| LOW | frontends/desktop_bridge.py | 208 | def _set_e2e_next_turn(mode: str) -> None: | CODE |
| LOW | frontends/tui_v3.py | 2039 | def _set_term_title(text: str) -> None: | CODE |
| LOW | frontends/tui_v3.py | 4343 | def _set_session_name(self, ag, name: str) -> None: | CODE |
| LOW | frontends/tuiapp.py | 394 | def _set_assistant_message(self, agent_id: int, task_id: int, text: str, *, done: bool) -> None: | CODE |
| LOW | assets/ga_ultraplan.py | 7 | __all__ = ["plan", "phase", "parallel", "mapchain"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | llmcore.py | 725 | if not has_thinking: m["content"] = [{"type": "thinking", "thinking": "...", "signature": "placeholder"}, *c] | CODE |
| LOW | simphtml.py | 135 | const p=[el.tagName,el.id&&'#'+el.id,el.getAttribute('name')&&'name='+el.getAttribute('name'),el.tagName==='INPUT'&& | CODE |
| LOW | simphtml.py | 611 | if attr not in ['id', 'class', 'name', 'src', 'href', 'alt', 'value', 'type', 'placeholder', | CODE |
| LOW | frontends/plan_state.py | 369 | return {"active": True, "placeholder": True, "done": 0, "total": 0, "complete": False, "step": step, "pathHint": | CODE |
| LOW | frontends/plan_state.py | 372 | return {"active": True, "placeholder": False, "done": n_done, "total": n_total, "complete": is_complete(pairs), "ste | CODE |
| LOW | frontends/desktop/static/i18n.js | 506 | el.setAttribute('placeholder', tFor(lang, el.dataset.i18nPlaceholder)); | CODE |
| LOW | frontends/desktop/static/app.js | 427 | else el.setAttribute('placeholder', val); | CODE |
| LOW | …top/release_qualification/run_release_qualification.py | 384 | " 'apikey': 'e2e-dummy-key',", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | memory/ultraplan_sop.md | 37 | ### Why orchestrate | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | memory/ljqCtrlBg.py | 148 | CODE | |
| LOW | frontends/p2p_ws_client.py | 658 | CODE | |
| LOW | frontends/hub.py | 19 | CODE | |
| LOW | frontends/tui_v3.py | 2796 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …tends/desktop/packaging/scripts/macos/install_macos.sh | 12 | # Usage: | COMMENT |
| LOW | …tends/desktop/packaging/scripts/linux/install_linux.sh | 14 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | assets/ga_httpapp.py | 17 | def run_task(prompt): | CODE |