A catgirl who lives with you in real time — reaching out first, sharing your media, and actually getting things done, powered by an embodied emotional engine.🐱❤️一只会主动找你玩的 AI 猫娘。
This report summarizes scanner evidence for Project-N-E-K-O/N.E.K.O, a Python project with 3,046 GitHub stars. SynthScan examined 2,492,617 lines of code across 4757 source files, recording 59544 pattern matches distributed across 24 syntactic categories. The legacy adjusted pattern signal is 30.6 (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? 37769 finding(s).
Are imports declared and package/API names verified? 11327 finding(s).
Are wrappers, guards, and repeated structures necessary? 44257 finding(s).
Which changes need focused human review? 59544 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 59544 distinct pattern matches across 24 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 |
|---|---|---|---|---|
| LOW⚡ | app/monitor.py | 524 | async def cleanup_disconnected_clients(): | CODE |
| LOW | app/monitor.py | 82 | def _viewer_static_assets_ctx(): | CODE |
| LOW | app/monitor.py | 327 | async def subtitle_websocket_endpoint(websocket: WebSocket): | CODE |
| LOW | app/monitor_auth.py | 76 | def install_monitor_log_redaction() -> None: | CODE |
| LOW | app/monitor_auth.py | 141 | def _viewer_session_signature(expires_at: int) -> str: | CODE |
| LOW | app/main_server/web_app.py | 48 | def _has_generated_asset_version(query_string: bytes) -> bool: | CODE |
| LOW | app/main_server/web_app.py | 64 | def _avatar_tool_asset_digest_version(query_string: bytes) -> str | None: | CODE |
| LOW⚡ | app/main_server/web_app.py | 438 | async def _fallback_active_character_identity() -> tuple[str, str]: | CODE |
| LOW⚡ | app/main_server/web_app.py | 447 | def _active_character_cors_headers(request: Request) -> dict[str, str] | None: | CODE |
| LOW⚡ | app/main_server/web_app.py | 455 | async def set_card_drop_active_character(request: Request, payload: dict): | CODE |
| LOW | app/main_server/web_app.py | 532 | async def get_card_drop_active_character( | CODE |
| LOW | app/main_server/web_app.py | 579 | def _runtime_shutdown_has_target() -> bool: | CODE |
| LOW | app/main_server/web_app.py | 677 | async def proxy_user_plugin_market_bridge(request: Request, path: str = ""): | CODE |
| LOW⚡ | app/main_server/voice_identity_runtime.py | 1009 | def _manager_interception_policy_token(manager) -> int | None: | CODE |
| LOW⚡ | app/main_server/voice_identity_runtime.py | 1020 | def _activation_policy_is_current(manager, captured) -> bool: | CODE |
| LOW⚡ | app/main_server/voice_identity_runtime.py | 1027 | def _interception_policy_is_current(manager, captured) -> bool: | CODE |
| LOW⚡ | app/main_server/voice_identity_runtime.py | 1034 | def _authority_preparation_is_current(self, manager, captured) -> bool: | CODE |
| LOW⚡ | app/main_server/voice_identity_runtime.py | 1159 | def _refresh_prepared_interception_token(manager, preparation, *, owned: bool) -> None: | CODE |
| LOW⚡ | app/main_server/voice_identity_runtime.py | 1167 | def _revoke_interception_authority(self) -> None: | CODE |
| LOW⚡ | app/main_server/voice_identity_runtime.py | 1295 | def _manager_activation_policy_token(manager) -> int | None: | CODE |
| LOW⚡ | app/main_server/voice_identity_runtime.py | 2241 | async def register_voice_identity_manager( | CODE |
| LOW⚡ | app/main_server/voice_identity_runtime.py | 2253 | async def unregister_voice_identity_manager(manager) -> None: | CODE |
| LOW⚡ | app/main_server/voice_identity_runtime.py | 2259 | async def set_voice_interception_factory( | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 169 | async def _register_manager_authority( | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 399 | def _with_interception_readiness(self, manager, result): | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 796 | def _manager_activation_result(manager) -> VoiceIdentityActivationResult: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 823 | def _manager_route_is_starting(manager) -> bool: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 841 | async def _set_manager_activation_factory( | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 860 | def _manager_supports_interception(manager) -> bool: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 865 | async def _set_manager_interception_factory( | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 914 | async def _set_manager_interception_bounded( | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 944 | async def _sync_manager_interception_bounded(self, manager, *, preparation=None) -> bool: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 989 | def _capture_manager_interception(self, manager): | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1051 | def _interception_preparation_is_current(self, manager, captured) -> bool: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1060 | def _queue_interception_after_authority(self, manager, captured) -> bool: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1107 | async def _sync_manager_interception_after_authority(self, manager, captured) -> bool: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1125 | def _record_interception_pending(self, manager) -> None: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1135 | def _require_manager_interception(self, manager, *, preparation=None) -> None: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1191 | async def set_voice_interception_factory( | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1258 | def _manager_supports_session_activation(manager) -> bool: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1264 | def _require_manager_activation( | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1334 | async def _set_empty_manager_authority_bounded( | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1375 | async def _align_manager_audio_contract( | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1409 | def _manager_is_inactive_blocked(manager) -> bool: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1416 | def _current_task_is_cancelling() -> bool: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1813 | def _ensure_interception_watchdog(self) -> None: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1822 | async def _run_interception_watchdog(self) -> None: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 2118 | def install_voice_identity_runtime(config_manager) -> VoiceIdentityService: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 2179 | async def initialize_voice_identity_runtime(config_manager) -> None: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 2192 | async def prepare_voice_identity_audio_contract_change(enabled: bool) -> bool: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 2201 | async def reconcile_voice_identity_audio_contract_change( | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 2217 | async def close_voice_identity_runtime() -> None: | CODE |
| LOW⚡ | app/main_server/__init__.py | 567 | def _enable_main_storage_limited_mode(reason: str) -> None: | CODE |
| LOW⚡ | app/main_server/__init__.py | 575 | def _disable_main_storage_limited_mode() -> None: | CODE |
| LOW⚡ | app/main_server/__init__.py | 581 | def _is_main_limited_mode_allowed_path(path: str, method: str) -> bool: | CODE |
| LOW⚡ | app/main_server/__init__.py | 758 | async def _stop_neko_servers_integration_workers() -> None: | CODE |
| LOW⚡ | app/main_server/__init__.py | 998 | async def _cancel_workshop_background_tasks(*, timeout: float) -> None: | CODE |
| LOW⚡ | app/main_server/__init__.py | 1073 | async def _ensure_main_server_runtime_initialized(*, reason: str) -> bool: | CODE |
| LOW⚡ | app/main_server/__init__.py | 1287 | async def release_storage_startup_barrier( | CODE |
| LOW | app/main_server/__init__.py | 144 | def _resolve_user_plugin_base() -> str: | CODE |
| 33644 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | memory/timeindex.py | 233 | # explicitly set to null, and the latter is unusable metadata that must | COMMENT |
| HIGH | memory/hybrid_recall.py | 1131 | "entity": "master" | "neko" | "relationship" | null, | STRING |
| HIGH | memory/scoped_client.py | 572 | """True only when the trust block confirms the write (``persisted`` true / null). | STRING |
| HIGH | config/prompts/prompts_card_assist.py | 239 | - Every field value must be a STRING (no arrays, no objects, no null). | CODE |
| HIGH | config/prompts/prompts_emotion.py | 25 | 'zh': """你是一个情感分析专家。请判断输入的角色回复中说话者自身最主导、最外显的一种情绪,并只返回 JSON:{"emotion": "情感类型", "confidence": 置信度, "emoji": null}。 | CODE |
| HIGH | config/prompts/prompts_emotion.py | 50 | 'zh-TW': """你是一个情感分析专家。請判斷輸入的角色回覆中說話者自身最主導、最外顯的一種情緒,並只回傳 JSON:{"emotion": "情感類型", "confidence": 信賴度, "emoji": null}。 | CODE |
| HIGH | config/prompts/prompts_emotion.py | 73 | 'en': """你是一个情感分析专家。Identify the speaker's own single most dominant and outward emotion expressed in the input compa | CODE |
| HIGH | config/prompts/prompts_emotion.py | 96 | 'ja': """你是一个情感分析专家。入力されたキャラクターの返答で話し手自身が表す、最も支配的で外に出ている感情を1つだけ選び、JSONのみで返してください:{"emotion": "emotion_type", "confid | CODE |
| HIGH | config/prompts/prompts_emotion.py | 119 | 'ko': """你是一个情感分析专家。입력된 캐릭터 답변에서 화자 자신이 표현하는 가장 지배적이고 겉으로 드러나는 감정 하나만 고르고 JSON만 반환하세요: {"emotion": "emotion_type", " | CODE |
| HIGH | config/prompts/prompts_emotion.py | 142 | 'ru': """你是一个情感分析专家。Определите одну наиболее доминирующую и внешне выраженную собственную эмоцию говорящего в ответе | CODE |
| HIGH | config/prompts/prompts_emotion.py | 165 | 'es': """你是一个情感分析专家。Identifica la única emoción propia más dominante y más visible que expresa el hablante en la res | CODE |
| HIGH | config/prompts/prompts_emotion.py | 188 | 'pt': """你是一个情感分析专家。Identifique a única emoção própria mais dominante e mais externa expressa pelo falante na respos | CODE |
| HIGH | config/prompts/prompts_agent.py | 357 | "plugin_args": {{...}} 或 null, | CODE |
| HIGH | config/prompts/prompts_agent.py | 401 | "plugin_args": {{...}} 或 null, | CODE |
| HIGH | config/prompts/prompts_agent.py | 445 | "plugin_args": {{...}} or null, | CODE |
| HIGH | config/prompts/prompts_agent.py | 489 | "plugin_args": {{...}} または null, | CODE |
| HIGH | config/prompts/prompts_agent.py | 533 | "plugin_args": {{...}} 또는 null, | CODE |
| HIGH | config/prompts/prompts_agent.py | 577 | "plugin_args": {{...}} или null, | CODE |
| HIGH | config/prompts/prompts_agent.py | 621 | "plugin_args": {{...}} o null, | CODE |
| HIGH | config/prompts/prompts_agent.py | 665 | "plugin_args": {{...}} ou null, | CODE |
| HIGH⚡ | config/prompts/prompts_memory.py | 1856 | - Ex. 1: "não dormi bem ontem à noite" → event_when = {"start": {"offset": -1, "unit": "day"}, "end": null} | CODE |
| HIGH⚡ | config/prompts/prompts_memory.py | 1865 | {"text": "descrição do fato", "importance": 7, "entity": "master", "event_when": null}, | CODE |
| HIGH⚡ | config/prompts/prompts_memory.py | 2468 | {"text": "descrição do fato", "importance": 7, "entity": "master", "event_when": null, "source": "user_observation"}, | CODE |
| HIGH⚡ | config/prompts/prompts_memory.py | 2469 | {"text": "descrição do fato", "importance": 7, "entity": "neko", "event_when": null, "source": "ai_disclosure"}, | CODE |
| HIGH⚡ | config/prompts/prompts_memory.py | 2862 | - start = event start; end = event end (pattern usually omits end, write null) | CODE |
| HIGH⚡ | config/prompts/prompts_memory.py | 2866 | - Example 2: "got a cold today" → {"start": {"offset": 0, "unit": "day"}, "end": null} | CODE |
| HIGH⚡ | config/prompts/prompts_memory.py | 2870 | {"entity": "master/neko/relationship", "relation_type": "preference", "reflection": "your reflective insight", "temporal | CODE |
| HIGH | config/prompts/prompts_memory.py | 1614 | - 例 1:用户说"昨天晚上没睡好" → event_when = {"start": {"offset": -1, "unit": "day"}, "end": null} | CODE |
| HIGH | config/prompts/prompts_memory.py | 1623 | {"text": "事实描述", "importance": 7, "entity": "master", "event_when": null}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 1652 | - 例 1:使用者說「昨天晚上沒睡好」→ event_when = {"start": {"offset": -1, "unit": "day"}, "end": null} | CODE |
| HIGH | config/prompts/prompts_memory.py | 1661 | {"text": "事實描述", "importance": 7, "entity": "master", "event_when": null}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 1686 | - Example 1: "didn't sleep well last night" → event_when = {"start": {"offset": -1, "unit": "day"}, "end": null} | CODE |
| HIGH | config/prompts/prompts_memory.py | 1695 | {"text": "fact description", "importance": 7, "entity": "master", "event_when": null}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 1720 | - 例 1:「昨夜よく眠れなかった」→ event_when = {"start": {"offset": -1, "unit": "day"}, "end": null} | CODE |
| HIGH | config/prompts/prompts_memory.py | 1729 | {"text": "事実の説明", "importance": 7, "entity": "master", "event_when": null}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 1754 | - 예 1: "어젯밤 잠을 못 잤다" → event_when = {"start": {"offset": -1, "unit": "day"}, "end": null} | CODE |
| HIGH | config/prompts/prompts_memory.py | 1763 | {"text": "사실 설명", "importance": 7, "entity": "master", "event_when": null}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 1788 | - Пример 1: "плохо спал прошлой ночью" → event_when = {"start": {"offset": -1, "unit": "day"}, "end": null} | CODE |
| HIGH | config/prompts/prompts_memory.py | 1797 | {"text": "описание факта", "importance": 7, "entity": "master", "event_when": null}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 1822 | - Ej. 1: "no dormí bien anoche" → event_when = {"start": {"offset": -1, "unit": "day"}, "end": null} | CODE |
| HIGH | config/prompts/prompts_memory.py | 1831 | {"text": "descripción del hecho", "importance": 7, "entity": "master", "event_when": null}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 1920 | {"segment": 1, "facts": [{"text": "事实描述", "importance": 7, "event_when": null}]}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 1956 | {"segment": 1, "facts": [{"text": "事實描述", "importance": 7, "event_when": null}]}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 1992 | {"segment": 1, "facts": [{"text": "fact description", "importance": 7, "event_when": null}]}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 2028 | {"segment": 1, "facts": [{"text": "事実の説明", "importance": 7, "event_when": null}]}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 2064 | {"segment": 1, "facts": [{"text": "사실 설명", "importance": 7, "event_when": null}]}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 2100 | {"segment": 1, "facts": [{"text": "описание факта", "importance": 7, "event_when": null}]}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 2136 | {"segment": 1, "facts": [{"text": "descripción del hecho", "importance": 7, "event_when": null}]}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 2172 | {"segment": 1, "facts": [{"text": "descrição do fato", "importance": 7, "event_when": null}]}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 2248 | {"text": "事实描述", "importance": 7, "entity": "master", "event_when": null, "source": "user_observation"}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 2249 | {"text": "事实描述", "importance": 7, "entity": "neko", "event_when": null, "source": "ai_disclosure"}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 2282 | {"text": "事實描述", "importance": 7, "entity": "master", "event_when": null, "source": "user_observation"}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 2283 | {"text": "事實描述", "importance": 7, "entity": "neko", "event_when": null, "source": "ai_disclosure"}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 2313 | {"text": "fact description", "importance": 7, "entity": "master", "event_when": null, "source": "user_observation"}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 2314 | {"text": "fact description", "importance": 7, "entity": "neko", "event_when": null, "source": "ai_disclosure"}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 2344 | {"text": "事実の説明", "importance": 7, "entity": "master", "event_when": null, "source": "user_observation"}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 2345 | {"text": "事実の説明", "importance": 7, "entity": "neko", "event_when": null, "source": "ai_disclosure"}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 2375 | {"text": "사실 설명", "importance": 7, "entity": "master", "event_when": null, "source": "user_observation"}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 2376 | {"text": "사실 설명", "importance": 7, "entity": "neko", "event_when": null, "source": "ai_disclosure"}, | CODE |
| HIGH | config/prompts/prompts_memory.py | 2406 | {"text": "описание факта", "importance": 7, "entity": "master", "event_when": null, "source": "user_observation"}, | CODE |
| 4743 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyproject.toml | 259 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | pyproject.toml | 265 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docker/docker-compose.yml | 3 | # ============================================================================ | COMMENT |
| MEDIUM | docker/docker-compose.yml | 5 | # ============================================================================ | COMMENT |
| MEDIUM | docker/docker-compose.yml | 24 | # ============================================================================ | COMMENT |
| MEDIUM | docker/entrypoint.sh | 1197 | # ── 旧版挂载布局检测 ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/main_server/web_app.py | 421 | # ── 健康检查 / 指纹端点 ────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | app/main_server/web_app.py | 432 | # ── Card-drop cross-process active-character snapshot ────────────────────── | COMMENT |
| MEDIUM⚡ | app/main_server/character_runtime.py | 2167 | # ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | app/main_server/character_runtime.py | 2169 | # ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/main_server/__main__.py | 61 | # ── 前端构建产物检测 ────────────────────────────────────── | COMMENT |
| MEDIUM | app/agent_server/api_routes.py | 748 | # ─── Agent runtime intent restore ─────────────────────────────────────── | COMMENT |
| MEDIUM | app/agent_server/tracker.py | 32 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | app/agent_server/tracker.py | 34 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | app/memory_server/idempotency.py | 93 | # ── locks ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/memory_server/idempotency.py | 155 | # ── paths ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/memory_server/idempotency.py | 196 | # ── raw file helpers (run in worker threads) ───────────────────────────── | COMMENT |
| MEDIUM | app/memory_server/idempotency.py | 260 | # ── key records ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/memory_server/idempotency.py | 331 | # ── staging ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/memory_server/idempotency.py | 493 | # ── tombstones ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/memory_server/idempotency.py | 664 | # ── startup cleanup ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/memory_server/outbox_infra.py | 36 | # ── Outbox handler registry + replay (P1.c) ──────────────────────── | COMMENT |
| MEDIUM | app/memory_server/gates.py | 59 | # ── 空闲维护相关 ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/memory_server/gates.py | 85 | # ── 持久化维护状态(跨重启保留 review_clean 标记) ────────────────── | COMMENT |
| MEDIUM | app/memory_server/gates.py | 88 | # ── 维护状态的唯一加锁写入口 ──────────────────────────────────────── | COMMENT |
| MEDIUM | app/memory_server/review.py | 656 | # ── best-effort 后台压缩(主路径 compress 失败时兜底)───────────────────── | COMMENT |
| MEDIUM | app/memory_server/runtime.py | 312 | # ── 健康检查 / 指纹端点 ────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | app/memory_server/evidence_loops.py | 613 | # ── memory-evidence-rfc §5: one-shot migration ────────────────────── | COMMENT |
| MEDIUM⚡ | app/memory_server/evidence_loops.py | 762 | # ── memory-evidence-rfc §3.5.5: one-shot archive migration ────────── | COMMENT |
| MEDIUM⚡ | app/memory_server/evidence_loops.py | 782 | # ── memory-evidence-rfc §3.5: periodic archive sweep ──────────────── | COMMENT |
| MEDIUM⚡ | app/memory_server/refine_loops.py | 51 | # ── Phase A-4 / A-5: MemoryRefineEngine 接 cron ───────────────────── | COMMENT |
| MEDIUM | app/memory_server/signal_extraction.py | 821 | # ── memory-evidence-rfc §3.4.5: negative-keyword hook helpers ─────── | COMMENT |
| MEDIUM | app/memory_server/knowledge_routes.py | 183 | # ── helpers ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/memory_server/knowledge_routes.py | 246 | # ── session side ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/memory_server/knowledge_routes.py | 284 | # ── management: reads ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/memory_server/knowledge_routes.py | 352 | # ── management: writes ────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/memory_server/routes.py | 3302 | # ── keyed /scoped_history: generate first, apply later ───────────────────── | COMMENT |
| MEDIUM | app/memory_server/routes.py | 6172 | # ── trust pool / identity endpoints ───────────────────────────────────────── | COMMENT |
| MEDIUM | memory/embeddings_fallback.py | 44 | # ── service stub ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | memory/embeddings_fallback.py | 108 | # ── cache-helper stubs ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | memory/embeddings_fallback.py | 132 | # ── decode helpers ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | memory/subject_archive.py | 372 | # ── restore(归档不是删除:可回滚的另一半) ───────────────────────────── | COMMENT |
| MEDIUM⚡ | memory/facts.py | 4925 | # ── external import state (sidecar) ────────────────────────────── | COMMENT |
| MEDIUM | memory/facts.py | 469 | # ── persistence ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | memory/facts.py | 2058 | # ── scoped subject archival (time-driven, 群记忆系列 5/7) ──────── | COMMENT |
| MEDIUM | memory/facts.py | 2342 | # ── extraction ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | memory/facts.py | 5503 | # ── query helpers ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | memory/temporal.py | 113 | # ── offset spec 解析 ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | memory/temporal.py | 192 | # ── past 派生判定 ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | memory/temporal.py | 302 | # ── 距今多久 label(per Q-α: 0-6d 天 / 7-29d 周 / 30d+ 月) ────────── | COMMENT |
| MEDIUM | memory/temporal.py | 366 | # ── 时间窗口解析(recall_memory 的 time 参数 / 按时间回溯反思) ──────── | COMMENT |
| MEDIUM | memory/temporal.py | 447 | # ── weighted followup sampling (Q1) ─────────────────────────────────── | COMMENT |
| MEDIUM | memory/event_log.py | 121 | # ── Compaction thresholds (RFC §3.6) ───────────────────────────────────── | COMMENT |
| MEDIUM | memory/event_log.py | 127 | # ── Type aliases for _record_and_save callbacks (RFC §3.4) ─────────────── | COMMENT |
| MEDIUM | memory/event_log.py | 208 | # ── paths / locks ─────────────────────────────────────────── | COMMENT |
| MEDIUM | memory/event_log.py | 232 | # ── low-level append (no lock — caller must hold it) ──────── | COMMENT |
| MEDIUM | memory/event_log.py | 272 | # ── public API: standalone append (no view coupling) ──────── | COMMENT |
| MEDIUM | memory/event_log.py | 281 | # ── read_since / sentinel ─────────────────────────────────── | COMMENT |
| MEDIUM | memory/event_log.py | 478 | # ── compaction (RFC §3.6) ─────────────────────────────────── | COMMENT |
| MEDIUM | memory/event_log.py | 604 | # ── _record_and_save (RFC §3.4) ───────────────────────────── | COMMENT |
| 3436 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | app/runtime_bindings.py | 120 | except Exception: | CODE |
| HIGH | app/runtime_bindings.py | 162 | except Exception: | CODE |
| HIGH | app/runtime_bindings.py | 203 | except Exception: | CODE |
| HIGH | app/monitor.py | 406 | except asyncio.exceptions.TimeoutError: | CODE |
| HIGH | app/monitor.py | 430 | except asyncio.exceptions.TimeoutError: | CODE |
| HIGH | app/main_server/preload.py | 110 | except: # noqa: E722 | CODE |
| HIGH | app/main_server/voice_identity_runtime.py | 1994 | except Exception: | CODE |
| HIGH | app/main_server/voice_identity_runtime.py | 2010 | except Exception: | CODE |
| HIGH | app/main_server/voice_identity_runtime.py | 2033 | except Exception: | CODE |
| HIGH | app/main_server/voice_identity_runtime.py | 2048 | except Exception: | CODE |
| HIGH | app/main_server/__init__.py | 505 | except ImportError: | CODE |
| HIGH | app/main_server/__init__.py | 57 | except RuntimeError: | CODE |
| HIGH | app/main_server/__init__.py | 813 | except (asyncio.CancelledError, Exception): | CODE |
| HIGH | app/main_server/__init__.py | 921 | except TimeoutError: | CODE |
| HIGH | app/main_server/__init__.py | 943 | except Exception: | CODE |
| HIGH | app/main_server/__init__.py | 969 | except asyncio.CancelledError: | CODE |
| HIGH | app/main_server/process_utils.py | 113 | except Exception: | CODE |
| HIGH | app/main_server/character_runtime.py | 2068 | except asyncio.QueueEmpty: | CODE |
| HIGH | app/main_server/character_runtime.py | 2048 | except asyncio.CancelledError: | CODE |
| HIGH | app/main_server/character_runtime.py | 216 | except EOFError: | CODE |
| HIGH | app/main_server/__main__.py | 171 | except (asyncio.CancelledError, SystemExit): | CODE |
| HIGH | app/agent_server/registry.py | 105 | except Exception: | CODE |
| HIGH | app/agent_server/api_runtime.py | 932 | except Exception: | CODE |
| HIGH | app/agent_server/api_runtime.py | 1408 | except Exception: | CODE |
| HIGH | app/agent_server/api_runtime.py | 940 | except Exception: | CODE |
| HIGH | app/agent_server/api_routes.py | 597 | except Exception: | CODE |
| HIGH | app/agent_server/api_routes.py | 603 | except Exception: | CODE |
| HIGH | app/agent_server/api_routes.py | 1319 | except Exception: | CODE |
| HIGH | app/agent_server/api_routes.py | 1342 | except Exception: | CODE |
| HIGH | app/agent_server/api_routes.py | 1286 | except asyncio.CancelledError: | CODE |
| HIGH | app/agent_server/api_routes.py | 1329 | except Exception: | CODE |
| HIGH | app/agent_server/plugin_host.py | 130 | except Exception: | CODE |
| HIGH | app/agent_server/capabilities.py | 155 | except Exception: | CODE |
| HIGH | app/agent_server/capabilities.py | 383 | except Exception: | CODE |
| HIGH | app/agent_server/capabilities.py | 226 | except Exception: | CODE |
| HIGH | app/agent_server/channels/user_plugin.py | 297 | except Exception: | CODE |
| HIGH | app/agent_server/channels/computer_use.py | 50 | except Exception: | CODE |
| HIGH | app/agent_server/channels/mcp.py | 49 | except Exception: | CODE |
| HIGH | app/agent_server/channels/openclaw.py | 869 | except Exception: | CODE |
| HIGH | app/agent_server/channels/openclaw.py | 814 | except Exception: | CODE |
| HIGH | app/agent_server/channels/openclaw.py | 950 | except Exception: | CODE |
| HIGH | app/agent_server/channels/openclaw.py | 966 | except Exception: | CODE |
| HIGH | app/agent_server/channels/openclaw.py | 991 | except Exception: | CODE |
| HIGH | app/agent_server/channels/openclaw.py | 1007 | except Exception: | CODE |
| HIGH | app/agent_server/channels/browser_use.py | 81 | except Exception: | CODE |
| HIGH | app/memory_server/review.py | 136 | except asyncio.CancelledError: | CODE |
| HIGH | app/memory_server/review.py | 395 | except (ValueError, TypeError): | CODE |
| HIGH | app/memory_server/runtime.py | 1260 | except Exception: | CODE |
| HIGH | app/memory_server/locale_state.py | 147 | except FileNotFoundError: | CODE |
| HIGH | app/memory_server/locale_state.py | 254 | except FileNotFoundError: | CODE |
| HIGH | app/memory_server/locale_state.py | 257 | except json.JSONDecodeError: | CODE |
| HIGH | app/memory_server/locale_state.py | 319 | except FileNotFoundError: | CODE |
| HIGH | app/memory_server/locale_state.py | 368 | except FileNotFoundError: | CODE |
| HIGH | app/memory_server/locale_state.py | 371 | except json.JSONDecodeError: | CODE |
| HIGH | app/memory_server/locale_state.py | 433 | except FileNotFoundError: | CODE |
| HIGH | app/memory_server/post_turn.py | 73 | except asyncio.CancelledError: | CODE |
| HIGH | memory/facts.py | 727 | except (json.JSONDecodeError, OSError): | CODE |
| HIGH | memory/facts.py | 3875 | except ( | CODE |
| HIGH | memory/startup_greeting_history.py | 306 | except OSError: | CODE |
| HIGH | memory/startup_greeting_history.py | 313 | except OSError: | CODE |
| 1125 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/runtime_bindings.py | 83 | except Exception as exc: | CODE |
| LOW | app/runtime_bindings.py | 120 | except Exception: | CODE |
| LOW | app/runtime_bindings.py | 139 | except Exception as exc: | CODE |
| LOW | app/runtime_bindings.py | 162 | except Exception: | CODE |
| LOW | app/runtime_bindings.py | 184 | except Exception as exc: | CODE |
| LOW | app/runtime_bindings.py | 203 | except Exception: | CODE |
| MEDIUM | app/monitor.py | 464 | def _send_to_client(client, sender, label): | CODE |
| LOW⚡ | app/monitor.py | 531 | except Exception as e: | CODE |
| LOW⚡ | app/monitor.py | 537 | except Exception as e: | CODE |
| LOW | app/monitor.py | 221 | except Exception as e: | CODE |
| LOW | app/monitor.py | 268 | except Exception: | CODE |
| LOW | app/monitor.py | 293 | except Exception as e: | CODE |
| LOW | app/monitor.py | 410 | except Exception as e: | CODE |
| LOW | app/monitor.py | 434 | except Exception as e: | CODE |
| LOW | app/monitor.py | 454 | except Exception as e: | CODE |
| LOW | app/monitor.py | 468 | except Exception as e: | CODE |
| LOW | app/agent_runtime_intent.py | 94 | except Exception as exc: | CODE |
| LOW | app/agent_runtime_intent.py | 110 | except Exception as exc: | CODE |
| MEDIUM | app/agent_runtime_intent.py | 86 | def _load_from_disk() -> dict[str, bool]: | CODE |
| LOW | app/__init__.py | 46 | except Exception as _e: # pragma: no cover - import-time defensive | CODE |
| LOW | app/main_server/web_app.py | 255 | except Exception: | CODE |
| LOW⚡ | app/main_server/web_app.py | 442 | except Exception: | CODE |
| LOW | app/main_server/web_app.py | 574 | except Exception as e: | CODE |
| LOW | app/main_server/workshop_runtime.py | 56 | except Exception as e: | CODE |
| LOW | app/main_server/workshop_runtime.py | 78 | except Exception as retry_exc: | CODE |
| LOW⚡ | app/main_server/workshop_runtime.py | 90 | except Exception as e: | CODE |
| LOW⚡ | app/main_server/workshop_runtime.py | 100 | except Exception as e: | CODE |
| LOW⚡ | app/main_server/workshop_runtime.py | 105 | except Exception as e: | CODE |
| LOW | app/main_server/workshop_runtime.py | 143 | except Exception as e: | CODE |
| LOW | app/main_server/workshop_runtime.py | 149 | except Exception as e: | CODE |
| LOW | app/main_server/workshop_runtime.py | 164 | except Exception as mount_err: | CODE |
| MEDIUM | app/main_server/workshop_runtime.py | 53 | def _warmup_only(): | CODE |
| MEDIUM | app/main_server/workshop_runtime.py | 74 | def _retry_sync_after_delay(): | CODE |
| LOW | app/main_server/preload.py | 40 | except Exception as e: | CODE |
| LOW | app/main_server/preload.py | 72 | except Exception as e: | CODE |
| LOW | app/main_server/preload.py | 86 | except Exception as e: | CODE |
| LOW | app/main_server/preload.py | 94 | except Exception as e: | CODE |
| LOW | app/main_server/preload.py | 129 | except Exception as e: | CODE |
| LOW⚡ | app/main_server/voice_identity_runtime.py | 1015 | except Exception: | CODE |
| LOW⚡ | app/main_server/voice_identity_runtime.py | 1150 | except Exception: | CODE |
| LOW⚡ | app/main_server/voice_identity_runtime.py | 1301 | except Exception: | CODE |
| LOW⚡ | app/main_server/voice_identity_runtime.py | 2249 | except Exception: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 479 | except Exception: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 591 | except Exception: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 629 | except Exception: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 938 | except Exception: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1185 | except Exception: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1243 | except Exception: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1280 | except Exception: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1370 | except Exception: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1620 | except Exception: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1657 | except Exception: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1707 | except Exception: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1786 | except Exception: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1877 | except Exception: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1994 | except Exception: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 2010 | except Exception: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 2033 | except Exception: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 2048 | except Exception: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 2075 | except Exception as exc: | CODE |
| 5212 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | launcher.py | 18 | CODE | |
| LOW | app/runtime_bindings.py | 44 | CODE | |
| LOW | app/agent_runtime_intent.py | 50 | CODE | |
| LOW | app/monitor_auth.py | 21 | CODE | |
| LOW | app/main_server/web_app.py | 414 | CODE | |
| LOW | app/main_server/web_app.py | 418 | CODE | |
| LOW | app/main_server/web_app.py | 418 | CODE | |
| LOW | app/main_server/preload.py | 91 | CODE | |
| LOW | app/main_server/voice_identity_runtime.py | 3 | CODE | |
| LOW | app/main_server/__init__.py | 48 | CODE | |
| LOW | app/main_server/__init__.py | 97 | CODE | |
| LOW | app/main_server/__init__.py | 102 | CODE | |
| LOW | app/main_server/__init__.py | 102 | CODE | |
| LOW | app/main_server/__init__.py | 102 | CODE | |
| LOW | app/main_server/__init__.py | 102 | CODE | |
| LOW | app/main_server/__init__.py | 109 | CODE | |
| LOW | app/main_server/__init__.py | 120 | CODE | |
| LOW | app/main_server/__init__.py | 200 | CODE | |
| LOW | app/main_server/__init__.py | 200 | CODE | |
| LOW | app/main_server/__init__.py | 206 | CODE | |
| LOW | app/main_server/__init__.py | 206 | CODE | |
| LOW | app/main_server/__init__.py | 206 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 466 | CODE | |
| LOW | app/main_server/__init__.py | 656 | CODE | |
| LOW | app/main_server/__init__.py | 656 | CODE | |
| LOW | app/main_server/__init__.py | 656 | CODE | |
| LOW | app/main_server/__init__.py | 656 | CODE | |
| LOW | app/main_server/__init__.py | 656 | CODE | |
| LOW | app/main_server/__init__.py | 656 | CODE | |
| LOW | app/main_server/__init__.py | 656 | CODE | |
| LOW | app/main_server/__init__.py | 656 | CODE | |
| LOW | app/main_server/__init__.py | 656 | CODE | |
| LOW | app/main_server/__init__.py | 656 | CODE | |
| LOW | app/main_server/__init__.py | 656 | CODE | |
| LOW | app/main_server/__init__.py | 656 | CODE | |
| LOW | app/main_server/__init__.py | 656 | CODE | |
| LOW | app/main_server/__init__.py | 656 | CODE | |
| 6359 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pytest.ini | 1 | [pytest] | COMMENT |
| LOW | requirements.txt | 1 | # This file was autogenerated by uv via the following command: | COMMENT |
| LOW | requirements.txt | 21 | # via | COMMENT |
| LOW | requirements.txt | 41 | # httpx2 | COMMENT |
| LOW | requirements.txt | 61 | # n-e-k-o | COMMENT |
| LOW | requirements.txt | 81 | browser-use-sdk==3.4.2 | COMMENT |
| LOW | requirements.txt | 101 | # via | COMMENT |
| LOW | requirements.txt | 121 | coloredlogs==15.0.1 ; platform_machine == 'x86_64' and sys_platform == 'darwin' | COMMENT |
| LOW | requirements.txt | 141 | # via screeninfo | COMMENT |
| LOW | requirements.txt | 161 | # huggingface-hub | COMMENT |
| LOW | requirements.txt | 181 | google-auth==2.48.0 | COMMENT |
| LOW | requirements.txt | 201 | greenlet==3.2.4 | COMMENT |
| LOW | requirements.txt | 221 | # via | COMMENT |
| LOW | requirements.txt | 241 | httpx2==2.13.1 | COMMENT |
| LOW | requirements.txt | 261 | # via translatepy | COMMENT |
| LOW | requirements.txt | 281 | # via jsonschema | COMMENT |
| LOW | requirements.txt | 301 | mdurl==0.1.2 | COMMENT |
| LOW | requirements.txt | 321 | # pyrnnoise | COMMENT |
| LOW | requirements.txt | 341 | # via n-e-k-o | COMMENT |
| LOW | requirements.txt | 361 | # pytesseract | COMMENT |
| LOW | requirements.txt | 381 | protobuf==6.33.5 | COMMENT |
| LOW | requirements.txt | 401 | # via cffi | COMMENT |
| LOW | requirements.txt | 421 | # via n-e-k-o | COMMENT |
| LOW | requirements.txt | 441 | # via | COMMENT |
| LOW | requirements.txt | 461 | # pyobjc-framework-backgroundassets | COMMENT |
| LOW | requirements.txt | 481 | # pyobjc-framework-corehaptics | COMMENT |
| LOW | requirements.txt | 501 | # pyobjc-framework-eventkit | COMMENT |
| LOW | requirements.txt | 521 | # pyobjc-framework-intents | COMMENT |
| LOW | requirements.txt | 541 | # pyobjc-framework-mediatoolbox | COMMENT |
| LOW | requirements.txt | 561 | # pyobjc-framework-phase | COMMENT |
| LOW | requirements.txt | 581 | # pyobjc-framework-securityui | COMMENT |
| LOW | requirements.txt | 601 | # pyobjc-framework-videotoolbox | COMMENT |
| LOW | requirements.txt | 621 | pyobjc-framework-applicationservices==12.1 ; platform_system == 'darwin' or sys_platform == 'darwin' | COMMENT |
| LOW | requirements.txt | 661 | # via pyobjc | COMMENT |
| LOW | requirements.txt | 681 | # pyobjc-framework-automaticassessmentconfiguration | COMMENT |
| LOW | requirements.txt | 701 | # pyobjc-framework-coreaudio | COMMENT |
| LOW | requirements.txt | 721 | # pyobjc-framework-discrecordingui | COMMENT |
| LOW | requirements.txt | 741 | # pyobjc-framework-installerplugins | COMMENT |
| LOW | requirements.txt | 761 | # pyobjc-framework-metalkit | COMMENT |
| LOW | requirements.txt | 781 | # pyobjc-framework-quartz | COMMENT |
| LOW | requirements.txt | 801 | # pyobjc-framework-speech | COMMENT |
| LOW | requirements.txt | 821 | # via pyobjc | COMMENT |
| LOW | requirements.txt | 841 | # via | COMMENT |
| LOW | requirements.txt | 861 | # pyobjc-framework-videotoolbox | COMMENT |
| LOW | requirements.txt | 881 | # via | COMMENT |
| LOW | requirements.txt | 901 | # via pyobjc | COMMENT |
| LOW | requirements.txt | 921 | # via pyobjc | COMMENT |
| LOW | requirements.txt | 941 | # via pyobjc | COMMENT |
| LOW | requirements.txt | 961 | # via pyobjc | COMMENT |
| LOW | requirements.txt | 981 | # pyobjc-framework-localauthenticationembeddedui | COMMENT |
| LOW | requirements.txt | 1001 | # pyobjc-framework-cinematic | COMMENT |
| LOW | requirements.txt | 1041 | # via pyobjc | COMMENT |
| LOW | requirements.txt | 1061 | # pyobjc-framework-applicationservices | COMMENT |
| LOW | requirements.txt | 1101 | # via | COMMENT |
| LOW | requirements.txt | 1121 | # pyobjc | COMMENT |
| LOW | requirements.txt | 1141 | pyobjc-framework-systemconfiguration==12.1 ; platform_system == 'darwin' or sys_platform == 'darwin' | COMMENT |
| LOW | requirements.txt | 1161 | pyobjc-framework-vision==12.1 ; (platform_release >= '17.0' and platform_system == 'darwin' and sys_platform != 'darwin' | COMMENT |
| LOW | requirements.txt | 1181 | pyscreeze==1.0.1 | COMMENT |
| LOW | requirements.txt | 1201 | # via n-e-k-o | COMMENT |
| LOW | requirements.txt | 1221 | # pywinauto | COMMENT |
| 1918 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/runtime_bindings.py | 56 | CODE | |
| LOW | app/monitor.py | 232 | CODE | |
| LOW | app/monitor.py | 372 | CODE | |
| LOW | app/monitor.py | 416 | CODE | |
| LOW | app/monitor.py | 524 | CODE | |
| LOW | app/main_server/preload.py | 44 | CODE | |
| LOW | app/main_server/voice_identity_runtime.py | 2217 | CODE | |
| LOW | app/main_server/voice_identity_runtime.py | 169 | CODE | |
| LOW | app/main_server/voice_identity_runtime.py | 408 | CODE | |
| LOW | app/main_server/voice_identity_runtime.py | 510 | CODE | |
| LOW | app/main_server/voice_identity_runtime.py | 1060 | CODE | |
| LOW | app/main_server/voice_identity_runtime.py | 1497 | CODE | |
| LOW | app/main_server/voice_identity_runtime.py | 1600 | CODE | |
| LOW | app/main_server/voice_identity_runtime.py | 1678 | CODE | |
| LOW | app/main_server/voice_identity_runtime.py | 1737 | CODE | |
| LOW | app/main_server/voice_identity_runtime.py | 1822 | CODE | |
| LOW | app/main_server/voice_identity_runtime.py | 1945 | CODE | |
| LOW | app/main_server/__init__.py | 837 | CODE | |
| LOW | app/main_server/__init__.py | 1073 | CODE | |
| LOW | app/main_server/__init__.py | 1287 | CODE | |
| LOW | app/main_server/__init__.py | 1357 | CODE | |
| LOW | app/main_server/__init__.py | 1447 | CODE | |
| LOW | app/main_server/process_utils.py | 72 | CODE | |
| LOW | app/main_server/character_runtime.py | 146 | CODE | |
| LOW | app/main_server/character_runtime.py | 560 | CODE | |
| LOW | app/main_server/character_runtime.py | 905 | CODE | |
| LOW | app/main_server/character_runtime.py | 1812 | CODE | |
| LOW | app/agent_server/registry.py | 51 | CODE | |
| LOW | app/agent_server/registry.py | 114 | CODE | |
| LOW | app/agent_server/api_runtime.py | 228 | CODE | |
| LOW | app/agent_server/api_runtime.py | 601 | CODE | |
| LOW | app/agent_server/api_runtime.py | 742 | CODE | |
| LOW | app/agent_server/api_runtime.py | 1044 | CODE | |
| LOW | app/agent_server/api_runtime.py | 1332 | CODE | |
| LOW | app/agent_server/api_runtime.py | 1102 | CODE | |
| LOW | app/agent_server/api_runtime.py | 803 | CODE | |
| LOW | app/agent_server/api_routes.py | 355 | CODE | |
| LOW | app/agent_server/api_routes.py | 644 | CODE | |
| LOW | app/agent_server/api_routes.py | 1202 | CODE | |
| LOW | app/agent_server/plugin_host.py | 54 | CODE | |
| LOW | app/agent_server/plugin_host.py | 87 | CODE | |
| LOW | app/agent_server/capabilities.py | 183 | CODE | |
| LOW | app/agent_server/tracker.py | 298 | CODE | |
| LOW | app/agent_server/tracker.py | 432 | CODE | |
| LOW | app/agent_server/tracker.py | 148 | CODE | |
| LOW | app/agent_server/channels/user_plugin.py | 114 | CODE | |
| LOW | app/agent_server/channels/user_plugin.py | 202 | CODE | |
| LOW | app/agent_server/channels/user_plugin.py | 285 | CODE | |
| LOW | app/agent_server/channels/computer_use.py | 40 | CODE | |
| LOW | app/agent_server/channels/computer_use.py | 193 | CODE | |
| LOW | app/agent_server/channels/mcp.py | 24 | CODE | |
| LOW | app/agent_server/channels/openclaw.py | 318 | CODE | |
| LOW | app/agent_server/channels/openclaw.py | 525 | CODE | |
| LOW | app/agent_server/channels/browser_use.py | 40 | CODE | |
| LOW | app/memory_server/idempotency.py | 711 | CODE | |
| LOW | app/memory_server/outbox_infra.py | 51 | CODE | |
| LOW | app/memory_server/outbox_infra.py | 165 | CODE | |
| LOW | app/memory_server/review.py | 293 | CODE | |
| LOW | app/memory_server/review.py | 1014 | CODE | |
| LOW | app/memory_server/runtime.py | 475 | CODE | |
| 1679 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/agent_runtime_intent.py | 134 | def set_intent(key: str, value: bool) -> None: | CODE |
| LOW⚡ | app/main_server/voice_identity_runtime.py | 1308 | def _settle_required_intent(self, request_revision: int) -> None: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 46 | logger = logging.getLogger(__name__) | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 1600 | async def _set_suppressed(self, reason: str, suppressed: bool) -> None: | CODE |
| LOW | app/main_server/voice_identity_runtime.py | 2282 | __all__ = [ | CODE |
| LOW⚡ | app/agent_server/registry.py | 169 | def _set_internal_correction_context(task_info: Dict[str, Any], result: Any) -> None: | CODE |
| LOW | app/agent_server/_shared.py | 159 | def _set_capability(name: str, ready: bool, reason: str = "") -> None: | CODE |
| LOW⚡ | app/agent_server/capabilities.py | 93 | def _set_unloaded_browser_use_capability(capability_reason: Optional[str]) -> None: | CODE |
| LOW | memory/embeddings_fallback.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | memory/recall.py | 86 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | memory/cursors.py | 121 | def set_cursor(self, name: str, key: str, value: datetime) -> None: | CODE |
| LOW | memory/trust_store.py | 615 | def _set_load_failed(value: bool) -> None: | CODE |
| LOW | memory/evidence_analytics.py | 52 | logger = logging.getLogger(__name__) | CODE |
| LOW | memory/evidence_analytics.py | 54 | __all__ = ["funnel_counts", "to_naive_local"] | CODE |
| LOW | memory/recent.py | 862 | def _set_pending_batches(self, lanlan_name: str, messages: list, file_path=None) -> None: | CODE |
| LOW | memory/evidence.py | 47 | __all__ = [ | CODE |
| LOW | memory/fact_dedup.py | 236 | logger = logging.getLogger(__name__) | CODE |
| LOW | memory/persona/mentions.py | 140 | def update_suppressions(self, name: str) -> None: | CODE |
| LOW | config/activity_keywords.py | 89 | __all__ = [ | CODE |
| LOW | config/__init__.py | 646 | __all__ = [ | CODE |
| LOW | config/voice_wake_word.py | 100 | __all__ = ["DEFAULT_WAKE_WORD_KEYWORDS", "wake_word_model_dir", "wake_word_cache_root", "wake_word_preference", "save_wa | CODE |
| LOW | config/prompts/prompts_drawing_guess.py | 383 | __all__ = [ | CODE |
| LOW | config/prompts/prompts_focus.py | 484 | __all__ = [ | CODE |
| LOW | steamworks/_native_ugc.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/conftest.py | 132 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/conftest.py | 381 | def _set_runtime_test_port(port_name: str, port_value: int) -> None: | CODE |
| LOW | tests/debug_connect.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/unit/test_text_chat.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/unit/test_realtime_arbiter_native_path.py | 108 | async def _settle(times: int = 50) -> None: | CODE |
| LOW | tests/unit/test_providers.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/unit/test_realtime_arbiter_fail_open.py | 72 | async def _settle(times: int = 50) -> None: | CODE |
| LOW⚡ | tests/unit/test_websocket_binary_audio.py | 74 | def set_goodbye_silent(self, active: bool, reason: str) -> None: | CODE |
| LOW⚡ | tests/unit/test_websocket_binary_audio.py | 80 | def set_independent_asr_handshake(self, value) -> None: | CODE |
| LOW⚡ | tests/unit/test_websocket_binary_audio.py | 83 | def set_voice_input_resource_optimization_handshake(self, value) -> None: | CODE |
| LOW⚡ | tests/unit/test_websocket_binary_audio.py | 149 | def set_independent_asr_handshake(self, value) -> None: | CODE |
| LOW⚡ | tests/unit/test_websocket_binary_audio.py | 153 | def set_voice_input_resource_optimization_handshake(self, value) -> None: | CODE |
| LOW | tests/unit/test_vmc_sender.py | 404 | def set_publisher_generation(self, generation: int) -> None: | CODE |
| LOW | tests/unit/test_visit_transport_ws.py | 103 | def set_backpressure(self, on: bool) -> None: | CODE |
| LOW | tests/unit/test_cfa_resilience.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/unit/test_realtime_arbiter_escalation_scope.py | 55 | async def _settle(times: int = 50) -> None: | CODE |
| LOW | tests/unit/test_visit_persona.py | 109 | def _settle(client) -> None: | CODE |
| LOW⚡ | …ts/unit/test_language_preference_runtime_precedence.py | 23 | def _set_conversation_turn_language(self, language: str) -> None: | CODE |
| LOW | tests/unit/test_theater_numeric_v2_contract.py | 1363 | def _set_path(story: dict, path: tuple, value) -> None: | CODE |
| LOW | tests/unit/runtime/test_realtime_host_turn_identity.py | 96 | async def _settle(times: int = 50) -> None: | CODE |
| LOW | tests/unit/runtime/test_audio_processor_lifecycle.py | 539 | def set_enabled(self, enabled: bool) -> None: | CODE |
| LOW | tests/unit/runtime/test_audio_processor_lifecycle.py | 564 | def set_enabled(self, enabled: bool) -> None: | CODE |
| LOW | tests/unit/runtime/test_realtime_connection_recovery.py | 82 | async def _settle_background_tasks(client: OmniRealtimeClient) -> None: | CODE |
| LOW | …unit/voice_identity_service/test_activation_runtime.py | 69 | async def _settle(runtime: VoiceSessionActivationRuntime) -> None: | CODE |
| LOW | …tity_service/prewire_gate/test_scheduler_retirement.py | 73 | async def _settle_tasks(scheduler: ControlledScoringScheduler) -> None: | CODE |
| LOW⚡ | tests/unit/asr_runtime/test_failure_fencing.py | 429 | def _set_route_then_supersede(mode: str) -> None: | CODE |
| LOW⚡ | tests/unit/asr_client/speaker_shadow/test_campplus.py | 280 | def set_load_cancellation_flag(self, value: bool) -> None: | CODE |
| LOW | tests/frontend/test_storage_location_startup.py | 40 | def _set_home_tutorial_startup_released(page: Page, released: bool) -> None: | CODE |
| LOW | tests/utils/prompt_test_judger.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/utils/llm_judger.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/utils/llm_judger.py | 30 | def set_run_tag(self, run_tag: str = "") -> None: | CODE |
| LOW | tests/utils/human_like_judger.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/utils/audio_streamer.py | 5 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/testbench/model_config.py | 150 | __all__ = [ | CODE |
| LOW | tests/testbench/chat_messages.py | 230 | __all__ = [ | CODE |
| LOW | tests/testbench/api_keys_registry.py | 240 | __all__ = [ | CODE |
| 405 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | static/mmd/mmd-interaction.js | 589 | setScale: scale => this.manager.currentModel.mesh.scale.setScalar(scale), | CODE |
| CRITICAL | static/mmd/mmd-core.js | 788 | ? `rgb(${mat.uniforms.diffuse.value.r.toFixed(3)}, ${mat.uniforms.diffuse.value.g.toFixed(3)}, ${mat | CODE |
| CRITICAL | static/mmd/mmd-core.js | 791 | ? `rgb(${mat.uniforms.emissive.value.r.toFixed(3)}, ${mat.uniforms.emissive.value.g.toFixed(3)}, ${m | CODE |
| CRITICAL | static/mmd/mmd-core.js | 1325 | this.manager.currentModel.mesh.scale.setScalar(scale); | CODE |
| CRITICAL | static/live2d/live2d-emotion.js | 190 | this.currentModel.internalModel.motionManager.expressionManager.stopAllExpressions(); | CODE |
| CRITICAL | static/live2d/live2d-emotion.js | 1701 | this.currentModel.internalModel.motionManager.expressionManager.stopAllExpressions(); | CODE |
| CRITICAL | static/vrm/vrm-core.js | 389 | this.manager.currentModel.vrm.scene.traverse((object) => { | CODE |
| CRITICAL | static/vrm/vrm-core.js | 1621 | this.manager.currentModel.vrm.scene.traverse((object) => { | CODE |
| CRITICAL | static/vrm/vrm-manager.js | 1652 | const currentPos = this.currentModel.vrm.scene.position.clone(); | CODE |
| CRITICAL | static/vrm/vrm-manager.js | 1655 | this.currentModel.vrm.scene.position.copy(correctedPos); | CODE |
| CRITICAL | static/vrm/vrm-manager.js | 1816 | this.currentModel.vrm.scene.position.set(x, y, z); | CODE |
| CRITICAL | static/vrm/vrm-manager.js | 1832 | this.currentModel.vrm.scene.scale.set(x, y, z); | CODE |
| CRITICAL | static/vrm/vrm-interaction.js | 934 | const modelCenter = this.manager.currentModel.scene.position.clone(); | CODE |
| CRITICAL | static/vrm/vrm-interaction.js | 955 | const newPosition = this.manager.currentModel.scene.position.clone(); | CODE |
| CRITICAL | static/vrm/vrm-interaction.js | 963 | this.manager.currentModel.scene.position.copy(finalPosition); | CODE |
| CRITICAL | static/app/app-chat-export.js | 3574 | modal.panel.ownerDocument.body.classList.add('chat-export-modal-open'); | CODE |
| CRITICAL | static/libs/three.module.js | 1437 | boxMesh.material.uniforms.backgroundRotation.value.setFromMatrix4( _m1$1.makeRotationFromEuler( _e1$1 ) ); | CODE |
| CRITICAL | static/libs/three.module.js | 1503 | planeMesh.material.uniforms.uvTransform.value.copy( background.matrix ); | CODE |
| CRITICAL | static/libs/APlayer.min.js | 1 | !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.am | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | memory/evidence_handlers.py | 375 | # Step 3: remove from the active view (the original handler | COMMENT |
| LOW | memory/evidence_handlers.py | 457 | # Step 3: persona main-view removal. | COMMENT |
| LOW⚡ | tests/test_activity_tracker_followup.py | 177 | # Step 1: User in VS Code (work) for 100s | COMMENT |
| LOW⚡ | tests/test_activity_tracker_followup.py | 185 | # Step 2: User opens N.E.K.O | COMMENT |
| LOW | tests/test_activity_tracker_followup.py | 210 | # Step 1: unknown high-GPU app (an indie game not in keyword DB). | COMMENT |
| LOW | tests/test_activity_tracker_followup.py | 222 | # Step 2: brief glance at N.E.K.O. Prev observation must NOT be | COMMENT |
| LOW⚡ | tests/testbench/routers/session_router.py | 536 | # Step 5: dispose SQLAlchemy caches so the impending rmtree inside | COMMENT |
| LOW⚡ | tests/testbench/routers/session_router.py | 542 | # Step 6: create the new session. The SessionStore internally holds | COMMENT |
| LOW | tests/testbench/routers/session_router.py | 563 | # Step 7: extract tarball into the freshly created sandbox. We | COMMENT |
| LOW | tests/testbench/routers/session_router.py | 574 | # Step 8: wire archive data into the new session object. | COMMENT |
| LOW⚡ | tests/testbench/pipeline/chat_runner.py | 171 | # Step 2: preset-bundled key (free tier). | COMMENT |
| LOW⚡ | tests/testbench/pipeline/chat_runner.py | 177 | # Step 3: tests/api_keys.json fallback. | COMMENT |
| LOW | tests/testbench/pipeline/script_runner.py | 888 | # Step 1: 跳过落在 cursor 处的孤儿 assistant turn (= 没有前置 user 就出现 | COMMENT |
| LOW | tests/testbench/pipeline/script_runner.py | 913 | # Step 2: 当前 cursor 指向一条 user turn. | COMMENT |
| LOW | tests/testbench/pipeline/script_runner.py | 942 | # Step 3: 转发 stream_send 事件, 并在 'assistant' 出来时回填 reference. | COMMENT |
| LOW | tests/testbench/pipeline/script_runner.py | 992 | # Step 4: 根据 stream 成败决定游标走向. | COMMENT |
| LOW | tests/testbench/pipeline/reset_runner.py | 178 | # Step 1: always capture a pre_reset_backup first so the user can | COMMENT |
| LOW | tests/testbench/pipeline/reset_runner.py | 203 | # Step 2: clear messages + eval_results for every level. | COMMENT |
| LOW | tests/testbench/pipeline/reset_runner.py | 255 | # Step 3: re-anchor with a fresh init snapshot so the timeline starts | COMMENT |
| LOW | tests/testbench/pipeline/snapshot_store.py | 980 | # Step 1: safety net. If the user immediately rewinds again, we | COMMENT |
| LOW | tests/testbench/pipeline/snapshot_store.py | 999 | # Step 4: replace live fields with deep copies (never alias the | COMMENT |
| LOW | tests/testbench/pipeline/snapshot_store.py | 1025 | # Step 5: truncate forward entries. Find the target's position | COMMENT |
| LOW⚡ | tests/e2e/test_e2e_full_flow.py | 54 | # Step 1: 首页加载 | COMMENT |
| LOW⚡ | tests/e2e/test_e2e_full_flow.py | 62 | # Step 2: 开启语音通话 | COMMENT |
| LOW⚡ | tests/e2e/test_e2e_full_flow.py | 71 | # Step 3: 语音 10 轮 — 验证会话保持 + 消息增长 | COMMENT |
| LOW⚡ | tests/e2e/test_e2e_full_flow.py | 88 | # Step 4: 结束语音 -> 文本模式恢复 | COMMENT |
| LOW⚡ | tests/e2e/test_e2e_full_flow.py | 98 | # Step 5: VRM 模型切换 (Hot Reload) | COMMENT |
| LOW⚡ | tests/e2e/test_e2e_full_flow.py | 124 | # Step 6: 文本对话 + LLM 评估 | COMMENT |
| LOW⚡ | tests/e2e/test_e2e_full_flow.py | 157 | # Step 7: 插入截图后对话 | COMMENT |
| LOW⚡ | tests/e2e/test_e2e_full_flow.py | 190 | # Step 8: 角色弹窗切换 -> UI 完整性 | STRING |
| LOW⚡ | tests/e2e/test_e2e_full_flow.py | 205 | # Step 9: 语音<->文本切换验证 | STRING |
| LOW⚡ | tests/e2e/test_e2e_full_flow.py | 233 | # Step 10: 记忆文件检查 | STRING |
| LOW⚡ | plugin/tests/unit/test_plugin_logging_landing.py | 233 | # Step 2: import + grab a module-level logger BEFORE service_name is set. | COMMENT |
| LOW⚡ | plugin/tests/unit/test_plugin_logging_landing.py | 240 | # Step 3: host belatedly sets env + boots its logger sink. | COMMENT |
| LOW⚡ | plugin/tests/unit/test_plugin_logging_landing.py | 250 | # Step 4: emit through the loggers grabbed BEFORE step 3. | COMMENT |
| LOW⚡ | plugin/server/application/install_source/manager.py | 1544 | # Step 1: classify. PATH_OUTSIDE_ROOTS bubbles up to the caller. | COMMENT |
| LOW⚡ | plugin/server/application/install_source/manager.py | 1551 | # Step 2: read plugin_id eagerly (Fix 1). Imported lazily here | COMMENT |
| LOW⚡ | plugin/server/application/install_source/manager.py | 1561 | # Step 3: builtin guard (Fix 12 / Req 5.2). | COMMENT |
| LOW⚡ | plugin/server/application/install_source/manager.py | 1710 | # Step 1: classify. PATH_OUTSIDE_ROOTS bubbles up to the caller. | COMMENT |
| LOW⚡ | plugin/server/application/install_source/manager.py | 1717 | # Step 2: read plugin_id eagerly (Fix 1). Imported lazily here | COMMENT |
| LOW⚡ | plugin/server/application/install_source/manager.py | 1725 | # Step 3: builtin guard (Fix 12 / Req 5.2). | COMMENT |
| LOW | plugin/server/application/install_source/manager.py | 1746 | # Step 4: build the market source_detail. ``previous_version`` is | COMMENT |
| LOW | plugin/server/application/install_source/manager.py | 2447 | # Step 3: Req 4.3 placeholder — directory_name stands in | COMMENT |
| LOW⚡ | utils/voice_clone.py | 105 | # Step 1 - 上传音频文件,获取 file_id | COMMENT |
| LOW⚡ | utils/voice_clone.py | 158 | # Step 2 - 用 file_id 创建/注册音色 | COMMENT |
| LOW⚡ | utils/voice_clone.py | 492 | # Step 1 - 上传音频到 tfLink,获取公网直链 | COMMENT |
| LOW⚡ | utils/voice_clone.py | 567 | # Step 2 - 通过 DashScope 注册音色 | COMMENT |
| LOW | docs/plugins/router.md | 48 | ### Step 1: Create the Router file | COMMENT |
| LOW | docs/plugins/router.md | 87 | ### Step 2: Register in the main plugin | COMMENT |
| LOW | docs/ja/plugins/router.md | 48 | ### Step 1: Router ファイルを作る | COMMENT |
| LOW | docs/ja/plugins/router.md | 88 | ### Step 2: メインプラグインで登録する | COMMENT |
| LOW⚡ | .github/workflows/build-desktop-linux.yml | 46 | # Step 0: Calculate version | COMMENT |
| LOW⚡ | .github/workflows/build-desktop-linux.yml | 74 | # Step 1: Build Python backend with Nuitka (Linux only) | COMMENT |
| LOW⚡ | .github/workflows/build-desktop-linux.yml | 499 | # Step 2: Build Electron desktop app (Linux only) | COMMENT |
| LOW⚡ | .github/workflows/build-desktop.yml | 91 | # Step 0: Calculate version | COMMENT |
| LOW⚡ | .github/workflows/build-desktop.yml | 121 | # Step 1: Build Python backend with Nuitka | COMMENT |
| LOW⚡ | .github/workflows/build-desktop.yml | 976 | # Step 2: Build Electron desktop app | COMMENT |
| LOW⚡ | .github/workflows/build-desktop.yml | 1311 | # Step 3: Publish Nightly Release | COMMENT |
| LOW⚡ | main_routers/config_router/gptsovits.py | 118 | # Step 1: Send init (merge advanced params, filter reserved fields) | COMMENT |
| LOW⚡ | main_routers/config_router/gptsovits.py | 123 | # Step 2: Wait for ready | COMMENT |
| 17 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | app/agent_server/api_routes.py | 1207 | # event-driven (no HTTP polling), so without these emits the cards of | COMMENT |
| MEDIUM | memory/facts.py | 4552 | # observation 砍掉后,valid_ids 还来自全集,LLM 可能 hallucinate | COMMENT |
| MEDIUM | memory/facts.py | 4628 | # 否则 LLM hallucinate 一个不在本次 prompt 里的 fact id 仍会被作为合法 | COMMENT |
| MEDIUM | memory/facts.py | 4671 | # ttype 来自 LLM JSON,理论上是 str/None;hallucinate 成 | COMMENT |
| MEDIUM | memory/event_log.py | 731 | # ── Reconciler scaffolding (RFC §3.5) ───────────────────────────────────── | COMMENT |
| MEDIUM | memory/hybrid_recall.py | 1214 | # can proceed while embedding model warms (if first call). | COMMENT |
| MEDIUM | memory/persona/corrections.py | 543 | # 没在这一批 prompt 里的合法全局 index(比如 hallucinate 出未来批 | COMMENT |
| MEDIUM | config/prompts/prompts_activity.py | 1368 | # likely to be natural reply openers than safe-to-drop scaffolding. Known | COMMENT |
| MEDIUM | tests/unit/test_fact_dedup.py | 1158 | # LLM hallucinates two decisions for the same (c1,e1) pair: a | COMMENT |
| MEDIUM | tests/unit/test_evidence_extraction.py | 132 | # ── S7: Stage-2 target_id validation rejects hallucinations ───────── | COMMENT |
| MEDIUM | tests/unit/test_evidence_archive.py | 1511 | # event-driven evidence values DID land on disk. The second save | COMMENT |
| MEDIUM⚡ | tests/unit/test_event_log.py | 798 | # ── Reconciler scaffolding ────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/test_game_router_concurrency.py | 1754 | # builder (peer-waiter orchestration). The RuntimeError | COMMENT |
| MEDIUM | tests/unit/test_game_router_concurrency.py | 1785 | # to actually be exercised; if the test scaffold never produced | COMMENT |
| MEDIUM | tests/testbench/docs/P32_BLUEPRINT.md | 221 | > 方法: 对照 3 锚点逐条思想实验 —— (1) 冻结横切原则 + LESSONS §7; (2) 实证的主程序/testbench 真实代码; (3) 用户原始意图. 产出矫正 SR#/RV#/LR# 已回写正文; 末轮 L31 语义 | CODE |
| MEDIUM | tests/testbench/docs/P32_BLUEPRINT.md | 253 | ### RAG 覆盖表 (§1.4 停机判据) | COMMENT |
| MEDIUM | tests/testbench/docs/AGENT_NOTES.md | 1263 | **2026-04-22 P24 Day 8 第二轮验收 hotfix #107 Part 3+4**: 用户 Part 2 修复后继续报 4 项, 均已落地: (1) **Session Load modal 残留"导入 JSON"按钮* | CODE |
| MEDIUM | tests/testbench/docs/LESSONS_LEARNED.md | 117 | ### 1.4 覆盖度 RAG 灯作为阶段方案自检工具 | COMMENT |
| MEDIUM | tests/testbench/docs/LESSONS_LEARNED.md | 520 | ### 6.2 每阶段完工前 RAG 灯自检 | COMMENT |
| MEDIUM | tests/testbench/docs/UPSTREAM_SYNC_2026-06.md | 495 | #### 3. RAG 覆盖度总表 (绿=已覆盖 / 黄=部分 / 红=零覆盖; 红项分 M必做 / O可选 / B待办) | COMMENT |
| MEDIUM | plugin/plugins/game_agent_minecraft/service.py | 48 | # LLM — we don't want VT100 noise in the model's context window. | COMMENT |
| MEDIUM | plugin/tests/unit/server/test_development_plugins.py | 363 | # Execute startup orchestration with real discovery and autostart selection. | COMMENT |
| MEDIUM | utils/storage/migration.py | 1490 | # trash: the new root's empty scaffolding, which may have received | COMMENT |
| MEDIUM | scripts/custom_channels/neko_channel.py | 237 | # Root config is only a fallback in multi-agent mode, so keep it disabled | COMMENT |
| MEDIUM | .github/workflows/build-desktop-linux.yml | 180 | # --- Prepare local embedding model assets --- | COMMENT |
| MEDIUM | .github/workflows/build-desktop.yml | 322 | # --- Prepare local embedding model assets (cross-platform) --- | COMMENT |
| MEDIUM⚡ | .github/workflows/docker-multi-arch.yml | 49 | # the "Prepare embedding model" steps below and Dockerfile step 6b. | COMMENT |
| MEDIUM | main_routers/game_router/runtime.py | 3719 | # unit-test scaffolding): key on text alone and gate by the time | COMMENT |
| MEDIUM | main_logic/proactive_chat/break_reminders.py | 290 | # Model configuration is an explicit orchestration dependency. Returns None | COMMENT |
| MEDIUM | main_logic/core/streaming.py | 886 | # read a hidden scaffold prompt (e.g. avatar-drop file | COMMENT |
| MEDIUM | main_logic/omni_offline_client/_streaming.py | 1298 | # stream their chain-of-thought into ``content`` ending in | COMMENT |
| MEDIUM | main_logic/asr_client/workers/faster_whisper.py | 104 | # only decide whether an exact known hallucination phrase is trusted. | COMMENT |
| MEDIUM | main_logic/asr_client/workers/faster_whisper.py | 701 | # known hallucinations it is only dropped when confidence is low. | COMMENT |
| MEDIUM | brain/computer_use.py | 265 | # The model is NOT fine-tuned for this format, so we provide full scaffolding: | COMMENT |
| MEDIUM | brain/task_executor.py | 943 | # recent-context window). Group with `agent_server.py` callback summary — | COMMENT |
| MEDIUM | brain/task_executor.py | 951 | # Total budget across the assembled recent-context window — fits ~2-3 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docker/watchdog/test-watchdog.sh | 2 | # Linux-only isolated regression harness. Run as root for real ownership checks. | COMMENT |
| MEDIUM | tests/node_harness.py | 118 | # the slowest harness in the suite measures 5.1s. | COMMENT |
| MEDIUM | tests/node_harness.py | 131 | # reaching the first line of a harness, failing a test that had run nothing. | COMMENT |
| MEDIUM | tests/node_harness.py | 231 | # Where the preload records that node reached the harness script. Retrying is | COMMENT |
| MEDIUM | tests/unit/test_audio_stream_queue.py | 1319 | # below would measure the harness instead of the product. | COMMENT |
| MEDIUM | tests/unit/test_text_chat.py | 219 | # Full conversation log for holistic evaluation | COMMENT |
| MEDIUM | tests/unit/test_text_chat.py | 255 | # The holistic evaluation at the end is the definitive pass/fail gate | COMMENT |
| MEDIUM | tests/unit/test_text_chat.py | 298 | # Final assertion — we require the holistic evaluation to pass | COMMENT |
| MEDIUM | tests/unit/test_voice_readiness_control.py | 235 | # Keep stdin open for the lost-confirmation case. The harness's twelve- | STRING |
| MEDIUM⚡ | tests/unit/test_daily_external_import.py | 504 | # 父 harness 已走真实 _arecord_unpersisted_day_fp(best-effort 包裹);这里 | COMMENT |
| MEDIUM | tests/unit/test_tool_calling.py | 62 | # summary budget)。真实 client 恒有 self.llm;harness 里若测试自己设了 fake llm | COMMENT |
| MEDIUM | tests/unit/test_evidence_extraction.py | 113 | # daily 导入的 harness 复刻了这段分支逻辑,只能钉住调用点传 flag 那一半; | COMMENT |
| MEDIUM | tests/unit/test_node_harness_contract.py | 71 | # harness 留了一条绕过这条契约、退回 node -e 的合法路径(Codex P2)。 | COMMENT |
| MEDIUM | tests/unit/test_node_harness_contract.py | 200 | # stays alive forever on it, which is the shape every "harness hangs" report in | COMMENT |
| MEDIUM | tests/unit/test_node_harness_contract.py | 231 | # replace what the harness was saying. | COMMENT |
| MEDIUM | tests/unit/test_node_harness_contract.py | 635 | # The other door to the same problem: a harness that aliases window onto the | COMMENT |
| MEDIUM | tests/unit/test_realtime_arbiter_fail_open.py | 2462 | # is still in flight, which is what the stalling harness arranges. | COMMENT |
| MEDIUM | tests/unit/test_realtime_arbiter_fail_open.py | 2659 | # harness artifact. The caller bounds this with wait_for. | COMMENT |
| MEDIUM | tests/unit/test_core_game_route_memory_contract.py | 5721 | pass # later, unrelated resets need state this harness lacks | CODE |
| MEDIUM | tests/unit/test_app_websocket_static_routes.py | 761 | # whole harness on the command line, which Windows refuses past 32767 | STRING |
| MEDIUM | tests/unit/test_avatar_annotation_frontend.py | 1470 | # Pin the value itself. The harness below reads the constant out of the | COMMENT |
| MEDIUM⚡ | tests/unit/test_asr_preview_keying.py | 76 | # whole harness on the command line, which Windows refuses past 32767 | COMMENT |
| MEDIUM | tests/unit/test_asr_workers.py | 459 | # This worker-only harness does not retire on error as the adapter does. | COMMENT |
| MEDIUM | tests/unit/test_evidence_token_cache.py | 44 | # ── helpers (minimal harness, keeps tests focused) ────────────────── | COMMENT |
| MEDIUM | tests/unit/test_mic_start_race.py | 1249 | # run_node_script writes to a temp file rather than passing the harness on | STRING |
| MEDIUM | tests/unit/test_game_router_concurrency.py | 278 | # sync — robust against future reordering of ``state["archive"]`` | COMMENT |
| MEDIUM | tests/unit/test_external_import_concurrency.py | 26 | # ── routes 层 harness ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/websocket_static/test_settings_hydration.py | 351 | # Structural half of the #2540 pin. The behavioural harness above can only | COMMENT |
| MEDIUM | …s/unit/activation/test_voice_activation_cold_prefix.py | 263 | # The harness releases this barrier before joining the detector, even | COMMENT |
| MEDIUM | tests/unit/asr_runtime/test_voice_wake_word_core.py | 96 | # Initial harness frame was buffered while the runtime prepared. | COMMENT |
| MEDIUM⚡ | tests/frontend/test_subtitle_incremental.py | 9711 | # near. Use generous bounds to stay robust against headless timer jitter. | COMMENT |
| MEDIUM | tests/testbench/pipeline/recall_fusion.py | 119 | # ── BM25-only fusion harness (cosine OOS) ────────────────────────────── | COMMENT |
| LOW | tests/testbench/pipeline/scoring_schema.py | 1093 | # we just return whatever we did manage to parse. | COMMENT |
| MEDIUM | tests/testbench/pipeline/reset_runner.py | 129 | # robust path to survive Windows file locks on SQLite | COMMENT |
| MEDIUM | tests/support/websocket_source_harness.py | 13 | # whole harness on the command line, which Windows refuses past 32767 | COMMENT |
| MEDIUM | .github/workflows/unit-tests.yml | 38 | # broke the cat-mind harness lives, so the guard against it stays honest. | COMMENT |
| MEDIUM | .github/workflows/unit-tests.yml | 64 | # comes preinstalled on the runner image; the frontend harness suites | COMMENT |
| MEDIUM | main_logic/activity/llm_enrichment.py | 605 | # Fallback to project-local robust parser (handles trailing | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | memory/evidence_handlers.py | 375 | # Step 3: remove from the active view (the original handler | COMMENT |
| LOW | memory/evidence_handlers.py | 457 | # Step 3: persona main-view removal. | COMMENT |
| LOW⚡ | tests/test_activity_tracker_followup.py | 177 | # Step 1: User in VS Code (work) for 100s | COMMENT |
| LOW⚡ | tests/test_activity_tracker_followup.py | 185 | # Step 2: User opens N.E.K.O | COMMENT |
| LOW | tests/test_activity_tracker_followup.py | 210 | # Step 1: unknown high-GPU app (an indie game not in keyword DB). | COMMENT |
| LOW | tests/test_activity_tracker_followup.py | 222 | # Step 2: brief glance at N.E.K.O. Prev observation must NOT be | COMMENT |
| LOW⚡ | tests/testbench/routers/session_router.py | 536 | # Step 5: dispose SQLAlchemy caches so the impending rmtree inside | COMMENT |
| LOW⚡ | tests/testbench/routers/session_router.py | 542 | # Step 6: create the new session. The SessionStore internally holds | COMMENT |
| LOW | tests/testbench/routers/session_router.py | 563 | # Step 7: extract tarball into the freshly created sandbox. We | COMMENT |
| LOW | tests/testbench/routers/session_router.py | 574 | # Step 8: wire archive data into the new session object. | COMMENT |
| LOW⚡ | tests/testbench/pipeline/chat_runner.py | 171 | # Step 2: preset-bundled key (free tier). | COMMENT |
| LOW⚡ | tests/testbench/pipeline/chat_runner.py | 177 | # Step 3: tests/api_keys.json fallback. | COMMENT |
| LOW | tests/testbench/pipeline/script_runner.py | 888 | # Step 1: 跳过落在 cursor 处的孤儿 assistant turn (= 没有前置 user 就出现 | COMMENT |
| LOW | tests/testbench/pipeline/script_runner.py | 913 | # Step 2: 当前 cursor 指向一条 user turn. | COMMENT |
| LOW | tests/testbench/pipeline/script_runner.py | 942 | # Step 3: 转发 stream_send 事件, 并在 'assistant' 出来时回填 reference. | COMMENT |
| LOW | tests/testbench/pipeline/script_runner.py | 992 | # Step 4: 根据 stream 成败决定游标走向. | COMMENT |
| LOW | tests/testbench/pipeline/reset_runner.py | 178 | # Step 1: always capture a pre_reset_backup first so the user can | COMMENT |
| LOW | tests/testbench/pipeline/reset_runner.py | 203 | # Step 2: clear messages + eval_results for every level. | COMMENT |
| LOW | tests/testbench/pipeline/reset_runner.py | 255 | # Step 3: re-anchor with a fresh init snapshot so the timeline starts | COMMENT |
| LOW | tests/testbench/pipeline/snapshot_store.py | 980 | # Step 1: safety net. If the user immediately rewinds again, we | COMMENT |
| LOW | tests/testbench/pipeline/snapshot_store.py | 999 | # Step 4: replace live fields with deep copies (never alias the | COMMENT |
| LOW | tests/testbench/pipeline/snapshot_store.py | 1025 | # Step 5: truncate forward entries. Find the target's position | COMMENT |
| LOW⚡ | tests/e2e/test_e2e_full_flow.py | 54 | # Step 1: 首页加载 | COMMENT |
| LOW⚡ | tests/e2e/test_e2e_full_flow.py | 62 | # Step 2: 开启语音通话 | COMMENT |
| LOW⚡ | tests/e2e/test_e2e_full_flow.py | 71 | # Step 3: 语音 10 轮 — 验证会话保持 + 消息增长 | COMMENT |
| LOW⚡ | tests/e2e/test_e2e_full_flow.py | 88 | # Step 4: 结束语音 -> 文本模式恢复 | COMMENT |
| LOW⚡ | tests/e2e/test_e2e_full_flow.py | 98 | # Step 5: VRM 模型切换 (Hot Reload) | COMMENT |
| LOW⚡ | tests/e2e/test_e2e_full_flow.py | 124 | # Step 6: 文本对话 + LLM 评估 | COMMENT |
| LOW⚡ | tests/e2e/test_e2e_full_flow.py | 157 | # Step 7: 插入截图后对话 | COMMENT |
| LOW⚡ | tests/e2e/test_e2e_full_flow.py | 190 | # Step 8: 角色弹窗切换 -> UI 完整性 | STRING |
| LOW⚡ | tests/e2e/test_e2e_full_flow.py | 205 | # Step 9: 语音<->文本切换验证 | STRING |
| LOW⚡ | tests/e2e/test_e2e_full_flow.py | 233 | # Step 10: 记忆文件检查 | STRING |
| LOW⚡ | plugin/tests/unit/test_plugin_logging_landing.py | 233 | # Step 2: import + grab a module-level logger BEFORE service_name is set. | COMMENT |
| LOW⚡ | plugin/tests/unit/test_plugin_logging_landing.py | 240 | # Step 3: host belatedly sets env + boots its logger sink. | COMMENT |
| LOW⚡ | plugin/tests/unit/test_plugin_logging_landing.py | 250 | # Step 4: emit through the loggers grabbed BEFORE step 3. | COMMENT |
| LOW⚡ | plugin/server/application/install_source/manager.py | 1544 | # Step 1: classify. PATH_OUTSIDE_ROOTS bubbles up to the caller. | COMMENT |
| LOW⚡ | plugin/server/application/install_source/manager.py | 1551 | # Step 2: read plugin_id eagerly (Fix 1). Imported lazily here | COMMENT |
| LOW⚡ | plugin/server/application/install_source/manager.py | 1561 | # Step 3: builtin guard (Fix 12 / Req 5.2). | COMMENT |
| LOW⚡ | plugin/server/application/install_source/manager.py | 1710 | # Step 1: classify. PATH_OUTSIDE_ROOTS bubbles up to the caller. | COMMENT |
| LOW⚡ | plugin/server/application/install_source/manager.py | 1717 | # Step 2: read plugin_id eagerly (Fix 1). Imported lazily here | COMMENT |
| LOW⚡ | plugin/server/application/install_source/manager.py | 1725 | # Step 3: builtin guard (Fix 12 / Req 5.2). | COMMENT |
| LOW | plugin/server/application/install_source/manager.py | 1746 | # Step 4: build the market source_detail. ``previous_version`` is | COMMENT |
| LOW | plugin/server/application/install_source/manager.py | 2447 | # Step 3: Req 4.3 placeholder — directory_name stands in | COMMENT |
| LOW⚡ | .github/workflows/build-desktop-linux.yml | 46 | # Step 0: Calculate version | COMMENT |
| LOW⚡ | .github/workflows/build-desktop-linux.yml | 74 | # Step 1: Build Python backend with Nuitka (Linux only) | COMMENT |
| LOW⚡ | .github/workflows/build-desktop-linux.yml | 499 | # Step 2: Build Electron desktop app (Linux only) | COMMENT |
| LOW⚡ | .github/workflows/build-desktop.yml | 91 | # Step 0: Calculate version | COMMENT |
| LOW⚡ | .github/workflows/build-desktop.yml | 121 | # Step 1: Build Python backend with Nuitka | COMMENT |
| LOW⚡ | .github/workflows/build-desktop.yml | 976 | # Step 2: Build Electron desktop app | COMMENT |
| LOW⚡ | .github/workflows/build-desktop.yml | 1311 | # Step 3: Publish Nightly Release | COMMENT |
| LOW⚡ | main_routers/config_router/gptsovits.py | 118 | # Step 1: Send init (merge advanced params, filter reserved fields) | COMMENT |
| LOW⚡ | main_routers/config_router/gptsovits.py | 123 | # Step 2: Wait for ready | COMMENT |
| LOW⚡ | main_routers/config_router/gptsovits.py | 130 | # Step 3: Send test text (use "append" command, same as gptsovits_tts_worker) | COMMENT |
| LOW⚡ | main_routers/config_router/gptsovits.py | 136 | # Step 4: Wait for first response | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/agent_server/results.py | 31 | CODE | |
| LOW | memory/embeddings.py | 958 | CODE | |
| LOW | memory/scoped_client.py | 422 | CODE | |
| LOW | tests/unit/test_focus_mode.py | 42 | CODE | |
| LOW | tests/unit/test_memory_recall.py | 68 | CODE | |
| LOW | tests/unit/test_external_route_registry.py | 32 | CODE | |
| LOW | tests/unit/test_avatar_annotation_frontend.py | 627 | CODE | |
| LOW | tests/unit/visit_memory_test_helpers.py | 75 | CODE | |
| LOW | …unit/voice_identity_service/test_service_activation.py | 153 | CODE | |
| LOW | …unit/voice_identity_service/test_service_enrollment.py | 157 | CODE | |
| LOW | …ts/unit/voice_identity_service/test_service_profile.py | 153 | CODE | |
| LOW | …s/unit/voice_identity_service/test_service_recovery.py | 153 | CODE | |
| LOW | …nit/voice_identity/test_enrollment_audio_normalizer.py | 19 | CODE | |
| LOW | tests/testbench/routers/judge_router.py | 1355 | CODE | |
| LOW | tests/testbench/routers/judge_router.py | 1424 | CODE | |
| LOW | tests/testbench/routers/diagnostics_router.py | 94 | CODE | |
| LOW | tests/testbench/pipeline/external_events.py | 1185 | CODE | |
| LOW | tests/testbench/pipeline/scoring_schema.py | 938 | CODE | |
| LOW | tests/testbench/pipeline/diagnostics_store.py | 192 | CODE | |
| LOW | tests/testbench/pipeline/diagnostics_store.py | 262 | CODE | |
| LOW | tests/support/voice_identity_fakes.py | 66 | CODE | |
| LOW | plugin/core/context.py | 750 | CODE | |
| LOW | plugin/core/context.py | 806 | CODE | |
| LOW | plugin/core/context.py | 832 | CODE | |
| LOW | plugin/core/context.py | 909 | CODE | |
| LOW | plugin/core/context.py | 949 | CODE | |
| LOW | plugin/core/context.py | 978 | CODE | |
| LOW | plugin/core/context.py | 1003 | CODE | |
| LOW | plugin/core/context.py | 1090 | CODE | |
| LOW | plugin/core/bus/messages.py | 116 | CODE | |
| LOW | plugin/core/bus/messages.py | 234 | CODE | |
| LOW | plugin/core/bus/messages.py | 267 | CODE | |
| LOW | plugin/plugins/mcp_adapter/__init__.py | 2821 | CODE | |
| LOW | plugin/plugins/game_agent_minecraft/client.py | 57 | CODE | |
| LOW | plugin/plugins/music_pusher/__init__.py | 1940 | CODE | |
| LOW | plugin/plugins/lifekit/routers/nearby.py | 49 | CODE | |
| LOW | plugin/plugins/lifekit/routers/locations.py | 101 | CODE | |
| LOW | plugin/_types/protocols.py | 349 | CODE | |
| LOW | plugin/_types/protocols.py | 365 | CODE | |
| LOW | plugin/_types/protocols.py | 381 | CODE | |
| LOW | plugin/_types/protocols.py | 434 | CODE | |
| LOW | …in/tests/unit/server/test_plugins_lifecycle_service.py | 162 | CODE | |
| LOW | plugin/server/application/plugin_cli/service.py | 294 | CODE | |
| LOW | plugin/server/application/plugin_cli/service.py | 361 | CODE | |
| LOW | plugin/server/routes/_install_task_store.py | 113 | CODE | |
| LOW | plugin/sdk/plugin/ui.py | 38 | CODE | |
| LOW | plugin/sdk/plugin/decorators.py | 57 | CODE | |
| LOW | plugin/sdk/plugin/decorators.py | 88 | CODE | |
| LOW | plugin/sdk/plugin/decorators.py | 256 | CODE | |
| LOW | plugin/sdk/plugin/decorators.py | 295 | CODE | |
| LOW | plugin/sdk/shared/core/push_message_schema.py | 188 | CODE | |
| LOW | plugin/sdk/shared/core/types.py | 215 | CODE | |
| LOW | plugin/sdk/shared/core/types.py | 229 | CODE | |
| LOW | plugin/sdk/shared/core/types.py | 259 | CODE | |
| LOW | plugin/sdk/shared/core/context.py | 303 | CODE | |
| LOW | plugin/sdk/shared/core/context.py | 328 | CODE | |
| LOW | plugin/sdk/shared/core/context.py | 425 | CODE | |
| LOW | plugin/sdk/shared/core/decorators.py | 310 | CODE | |
| LOW | plugin/sdk/shared/core/decorators.py | 355 | CODE | |
| LOW | plugin/neko_plugin_cli/core/archive_utils.py | 212 | CODE | |
| 45 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …n-manager/src/components/common/WorkbenchFilterBar.vue | 76 | :placeholder="placeholder" | CODE |
| LOW | …nd/react-neko-chat/src/AvatarToolDisplayNames.test.tsx | 41 | expect(screen.getByLabelText('Interaction name')).toHaveAttribute('placeholder', clickName); | CODE |
| LOW | …nd/react-neko-chat/src/AvatarToolDisplayNames.test.tsx | 64 | expect(screen.getByLabelText('Interaction name')).toHaveAttribute('placeholder', 'Delayed switch 1'); | CODE |
| LOW | …act-neko-chat/src/AvatarToolInteractionEditor.test.tsx | 266 | expect(interactionName).toHaveAttribute('placeholder', 'Mouse click 1'); | CODE |
| LOW | …tend/react-neko-chat/src/AvatarToolCreatePage.test.tsx | 329 | expect(imageName).toHaveAttribute('placeholder', 'Tool image 2'); | CODE |
| LOW | …end/react-neko-chat/src/AvatarToolItemManager.test.tsx | 839 | 'placeholder', | CODE |
| LOW | …end/react-neko-chat/src/AvatarToolItemManager.test.tsx | 1188 | 'placeholder', | CODE |
| LOW | config/surveys/0.8.3.json | 34 | "placeholder": "比如最近哪里让你想关掉、或者最希望优化的功能,或者只是想对开发猫猫说句话……(选填)", | CODE |
| LOW | config/surveys/README.md | 79 | "placeholder": "选填", // 未联动 / 来源题未选时的提示 | CODE |
| LOW | config/surveys/ja/0.8.3.json | 34 | "placeholder": "たとえば最近そっと閉じたくなった瞬間、いちばん改善してほしい機能、あるいは開発ねこへの一言でも……(任意)", | CODE |
| LOW | config/surveys/ru/0.8.3.json | 34 | "placeholder": "например, что в последнее время хотелось закрыть, какую функцию хотелось бы улучшить, или просто п | CODE |
| LOW | config/surveys/pt/0.8.3.json | 34 | "placeholder": "ex.: o que te deu vontade de fechar ultimamente, a função que mais gostaria de ver melhorada, ou s | CODE |
| LOW | config/surveys/zh-TW/0.8.3.json | 34 | "placeholder": "比如最近哪裡讓你想關掉、或者最希望優化的功能,或者只是想對開發貓貓說句話……(選填)", | CODE |
| LOW | config/surveys/ko/0.8.3.json | 34 | "placeholder": "예를 들면 요즘 끄고 싶었던 순간, 가장 개선됐으면 하는 기능, 아니면 그냥 개발냥이에게 한마디라도……(선택)", | CODE |
| LOW | config/surveys/es/0.8.3.json | 34 | "placeholder": "p. ej., qué te ha dado ganas de cerrarlo últimamente, la función que más te gustaría mejorar, o si | CODE |
| LOW | config/surveys/en/0.8.3.json | 34 | "placeholder": "e.g. what's made you want to close it lately, a feature you'd most like improved, or just somethin | CODE |
| LOW | tests/unit/test_galgame_dependency_slimming.py | 426 | image_path.write_bytes(b"placeholder") | CODE |
| LOW | tests/unit/test_galgame_dependency_slimming.py | 527 | image_path.write_bytes(b"placeholder") | CODE |
| LOW | tests/unit/test_voice_management_mutation_evidence.py | 32 | runtime = VoiceRuntime("cosyvoice", "fake-key", "https://isolated.example", "scope", "bucket") | CODE |
| LOW | tests/unit/test_icebreaker_router.py | 102 | "api_key": "fake-key", | CODE |
| LOW⚡ | tests/unit/test_community_oauth.py | 430 | "auth": {"user": {"email": "user@example.com"}}, | CODE |
| LOW⚡ | tests/unit/test_community_oauth.py | 438 | assert result["user"]["email"] == "user@example.com" | CODE |
| LOW | tests/unit/test_community_oauth.py | 168 | {"user": {"display_name": "User", "email": "user@example.com"}}, | CODE |
| LOW | tests/unit/test_community_oauth.py | 199 | "email": "user@example.com", | CODE |
| LOW | tests/unit/test_community_oauth.py | 219 | assert result["user"] == {"display_name": "User", "email": "user@example.com"} | CODE |
| LOW | tests/unit/test_community_oauth.py | 255 | "auth": {"user": {"email": "user@example.com"}}, | CODE |
| LOW | tests/unit/test_document_parser.py | 639 | _docx_bytes("placeholder", {"word/document.xml": document_xml}), | CODE |
| LOW | tests/unit/test_document_parser.py | 664 | _docx_bytes("placeholder", {"word/document.xml": document_xml}), | CODE |
| LOW | tests/unit/test_open_platform_media.py | 102 | connection._access_token = "fake-token" | CODE |
| LOW | tests/unit/test_topic_llm_enrichment.py | 328 | "api_key": "fake-key", | STRING |
| LOW | tests/unit/test_proactive_unanswered_repeat.py | 398 | "api_key": "fake-key", | CODE |
| LOW | tests/unit/test_proactive_unanswered_repeat.py | 533 | "api_key": "fake-key", | CODE |
| LOW | tests/unit/test_proactive_unanswered_repeat.py | 1684 | "api_key": "fake-key", | CODE |
| LOW | tests/unit/test_card_drop_session_facts.py | 3045 | json={"email": "user@example.com", "password": "password123"}, | CODE |
| LOW⚡ | tests/unit/test_knowledge_subsystem.py | 979 | filler = "\n\n".join(f"Paragraph {i}: " + "lorem ipsum dolor " * 40 for i in range(6)) | CODE |
| LOW | tests/unit/test_knowledge_subsystem.py | 1064 | paragraphs.append(f"Paragraph {i}: " + "lorem ipsum dolor " * 63) | CODE |
| LOW | tests/unit/test_anti_repeat_effects.py | 1884 | "placeholder": "[SECRET_TOKEN]", | CODE |
| LOW | tests/unit/test_proactive_phase2_generation.py | 378 | conversation_api_key="fake-key", | CODE |
| LOW⚡ | tests/unit/test_doubao_clone_outcomes.py | 32 | await DoubaoVoiceCloneClient("fake-key").clone_voice(io.BytesIO(b"wav"), speaker_id="S_isolated") | CODE |
| LOW⚡ | tests/unit/test_doubao_clone_outcomes.py | 49 | await DoubaoVoiceCloneClient("fake-key").clone_voice(io.BytesIO(b"wav"), speaker_id="S_isolated") | CODE |
| LOW | tests/frontend/test_subtitle_incremental.py | 5673 | assert result["placeholder"] == "[markdown]" | CODE |
| LOW | tests/frontend/test_api_settings.py | 2013 | expect(model).not_to_have_attribute('placeholder', 'gpt-user-choice') | CODE |
| LOW | tests/testbench/static/ui/workspace_placeholder.js | 19 | box.className = 'placeholder'; | CODE |
| LOW | tests/helpers/voice_overwrite_crash_worker.py | 31 | self.key = "isolated-fake-key" | CODE |
| LOW | plugin/plugins/app_launcher/static/index.html | 1189 | el.setAttribute('placeholder', t(key, el.getAttribute('placeholder') || '')); | CODE |
| LOW | plugin/plugins/wechat_integration/static/i18n.js | 122 | el.setAttribute('placeholder', this.t(key, el.getAttribute('placeholder') || '')); | CODE |
| LOW | plugin/plugins/claude_companion/static/index.html | 611 | <span class="path">C:\Users\<span class="placeholder">你的用户名</span>\.claude</span> | CODE |
| LOW | plugin/plugins/claude_companion/static/index.html | 796 | if (key.indexOf('.placeholder') >= 0 || el.getAttribute('placeholder')) { | CODE |
| LOW | utils/meme_fetcher.py | 375 | 'icon', 'banner', 'ad_', 'loading', 'placeholder', 'qrcode' | CODE |
| LOW | static/locales/ja.json | 5425 | "placeholder": { | CODE |
| LOW | static/locales/ja.json | 6312 | "placeholder": "ルートの準備を待っています", | CODE |
| LOW | static/locales/ru.json | 5425 | "placeholder": { | CODE |
| LOW | static/locales/ru.json | 6312 | "placeholder": "Дождитесь готовности маршрута", | CODE |
| LOW | static/locales/zh-CN.json | 5425 | "placeholder": { | CODE |
| LOW | static/locales/zh-CN.json | 6312 | "placeholder": "先等路由准备好", | CODE |
| LOW | static/locales/pt.json | 5425 | "placeholder": { | CODE |
| LOW | static/locales/pt.json | 6312 | "placeholder": "Aguarde a rota ficar pronta", | CODE |
| LOW | static/locales/en.json | 5425 | "placeholder": { | CODE |
| LOW | static/locales/en.json | 6312 | "placeholder": "Wait until the route is ready", | CODE |
| LOW | static/locales/ko.json | 5425 | "placeholder": { | CODE |
| 21 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | memory/anti_repeat.py | 0 | mark a name live again without dropping its cache or fencing it. the cloud apply never rewrites this sidecar -- it is no | STRING |
| HIGH | memory/startup_greeting_history.py | 0 | mark a name live again without dropping its cache or fencing it. the cloud apply never rewrites this sidecar -- it is no | STRING |
| HIGH | memory/anti_repeat_effects.py | 0 | mark a name live again without dropping its cache or fencing it. the cloud apply never rewrites this sidecar -- it is no | STRING |
| HIGH | memory/anti_repeat.py | 0 | forget one identity whose directory is being removed, and fence it. the sequence fence only covers snapshots staged befo | STRING |
| HIGH | memory/startup_greeting_history.py | 0 | forget one identity whose directory is being removed, and fence it. the sequence fence only covers snapshots staged befo | STRING |
| HIGH | memory/anti_repeat_effects.py | 0 | forget one identity whose directory is being removed, and fence it. the sequence fence only covers snapshots staged befo | STRING |
| HIGH | memory/anti_repeat.py | 0 | update the pending set and return the singleton, under one lock. the lock is _global_history_lock, deliberately, and not | STRING |
| HIGH | memory/anti_repeat_effects.py | 0 | update the pending set and return the singleton, under one lock. the lock is _global_history_lock, deliberately, and not | STRING |
| HIGH | memory/startup_greeting_history.py | 0 | update the pending set and return the singleton, under one lock. the lock is _global_history_lock, deliberately, and not | STRING |
| HIGH | memory/anti_repeat.py | 0 | lift retirement for live identities without touching their caches. | STRING |
| HIGH | memory/startup_greeting_history.py | 0 | lift retirement for live identities without touching their caches. | STRING |
| HIGH | memory/anti_repeat_effects.py | 0 | lift retirement for live identities without touching their caches. | STRING |
| HIGH | tests/unit/test_api_config_manager.py | 0 | return the patched configmanager singleton pointing at a temp dir. | STRING |
| HIGH | tests/unit/test_custom_api_slot_resolution.py | 0 | return the patched configmanager singleton pointing at a temp dir. | STRING |
| HIGH | tests/unit/test_custom_api_slot_model_defaults.py | 0 | return the patched configmanager singleton pointing at a temp dir. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/testbench/pipeline/snapshot_store.py | 560 | Update the hot cap / debounce window on a live store. Validation: * ``max_hot`` must be ≥ 1 (0 would | STRING |
| HIGH | plugin/core/host.py | 2571 | 触发自定义事件执行 Args: event_type: 自定义事件类型(例如 "file_change", "user_action") e | STRING |
| HIGH | plugin/config/schema.py | 344 | 验证插件配置 Args: config: 从 TOML 文件加载的配置字典 strict: 是否启用严格模式(默认 True) Returns: | STRING |
| HIGH | plugin/config/schema.py | 373 | 验证用户 Profile 配置 Args: config: 从 Profile TOML 文件加载的配置字典 Returns: 验证通过的 ProfileConf | STRING |
| HIGH | plugin/config/schema.py | 404 | 部分验证插件配置(用于配置更新场景) 只验证提供的字段,不要求所有必填字段都存在。 Args: config: 配置字典 require_plugin_secti | STRING |
| HIGH | plugin/_types/errors.py | 82 | 从字符串名称获取错误码 Args: name: 错误码名称(如 "VALIDATION_ERROR") Returns: 对 | STRING |
| HIGH | plugin/server/logs.py | 116 | 获取插件的日志目录。 落盘分层(与 writer 侧 ``plugin/core/host.py`` / ``plugin/logging_config.py`` 保持对偶): - 服务器日志:`` | STRING |
| HIGH | plugin/server/logs.py | 294 | 获取插件日志目录的绝对路径 Args: plugin_id: 插件ID(或 SERVER_LOG_ID 表示服务器日志) Returns: 日志目录的绝对路径字符串 R | STRING |
| HIGH | main_routers/live2d_router.py | 740 | Get parameter info of the specified Live2D model (from the .cdi3.json file). args: - model_name: model name | STRING |
| HIGH | main_routers/live2d_router.py | 836 | Load parameters from parameters.json in the model directory. args: - model_name: model name (without path o | STRING |
| HIGH | main_routers/workshop_router/meta.py | 219 | Get the path of a character card's .workshop_meta.json file Args: character_card_name: character c | STRING |
| HIGH | …gent/skills/mcp-builder/reference/python_mcp_server.md | 282 | Search for users in the Example system by name, email, or team. This tool searches across all user profiles in | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/test_cloudsave_startup_flow.py | 622 | CODE | |
| MEDIUM | tests/unit/test_memory_zh_tw.py | 2305 | CODE | |
| MEDIUM | tests/unit/test_tool_calling.py | 2115 | CODE | |
| MEDIUM | tests/unit/test_tool_calling.py | 2246 | CODE | |
| MEDIUM | tests/unit/test_tool_calling.py | 2660 | CODE | |
| MEDIUM | tests/unit/test_external_visual_delivery.py | 1081 | CODE | |
| MEDIUM | tests/unit/test_focus_mode.py | 617 | CODE | |
| MEDIUM | tests/unit/test_plugin_image_delivery.py | 3619 | CODE | |
| MEDIUM | tests/unit/test_anti_repeat.py | 1000 | CODE | |
| MEDIUM | tests/unit/test_anti_repeat_effects.py | 430 | CODE | |
| MEDIUM | tests/unit/test_onebot_client_forward.py | 42 | CODE | |
| MEDIUM | tests/unit/test_tool_frames_bus_copy.py | 561 | CODE | |
| MEDIUM | tests/unit/test_proactive_vision_screenshot_staging.py | 149 | CODE | |
| MEDIUM | plugin/tests/unit/server/test_model_config_service.py | 251 | CODE | |
| MEDIUM | plugin/tests/unit/server/test_plugin_query_status.py | 32 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docker/CONFIG_REFERENCE.md | 272 | "summaryModelApiKey": "your-api-key", | CODE |
| HIGH | docker/README_Docker.md | 73 | "coreApiKey": "your-api-key-here", | CODE |
| HIGH | docker/README_Docker.md | 180 | -e NEKO_CORE_API_KEY="your-api-key" \ | CODE |
| HIGH | tests/testbench/api_keys_registry.py | 120 | if stripped.lower() in {"sk-...", "your-api-key"}: | CODE |
| HIGH | .agent/skills/mcp-builder/reference/evaluation.md | 557 | export ANTHROPIC_API_KEY=your_api_key | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | app/monitor.py | 546 | # Set it to 127.0.0.1 for local-only use, and MONITOR_TOKEN to require | COMMENT |
| LOW | tests/unit/test_providers.py | 41 | # Check if provider exists in configuration | COMMENT |
| LOW | tests/unit/test_voice_session.py | 215 | # Check if instructions were sent | COMMENT |
| LOW⚡ | plugin/core/bus/types.py | 630 | # Check if we have any regex filters | COMMENT |
| LOW | utils/audio_processor.py | 355 | # Check if we need to reset (after long silence or on request) | COMMENT |
| LOW | main_routers/vrm_router.py | 732 | # Check if model_name is invalid (returns None from _get_emotion_config_path) | COMMENT |
| LOW | main_routers/system_router/files.py | 66 | # Check if the file exists | COMMENT |
| LOW | main_logic/omni_offline_client/_streaming.py | 814 | # Check if we need to switch to vision model. A staged proactive-vision | COMMENT |
| LOW | .agent/skills/skill-creator/scripts/init_skill.py | 208 | # Check if directory already exists | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/unit/test_workshop_content_gate.py | 2980 | ' def helper(ignored=_claiming_worker()):\n' | CODE |
| LOW⚡ | tests/unit/test_workshop_content_gate.py | 2985 | ' def helper():\n' | CODE |
| LOW⚡ | tests/unit/test_workshop_content_gate.py | 2989 | ' def helper(arg: _claiming_worker()) -> _claiming_worker():\n' | CODE |
| LOW | tests/unit/test_workshop_content_gate.py | 2828 | ' async def helper():\n' | CODE |
| LOW | tests/unit/test_workshop_content_gate.py | 7631 | ' def helper():\n' | CODE |
| LOW | tests/unit/test_openai_compatible_tts.py | 1501 | async def handle_request(request): | CODE |
| LOW | tests/unit/test_openai_compatible_tts.py | 1538 | async def handle_request(request): | CODE |
| LOW | …/unit/websocket_static/test_session_control_process.py | 132 | handler = _block_after(source, "async function handleRequest(request) {") | CODE |
| LOW | plugin/tests/unit/plugins/test_mcp_adapter_runtime.py | 297 | async def handle_request(self, incoming): | CODE |
| LOW⚡ | plugin/sdk/adapter/gateway_core.py | 63 | async def handle_request(self, incoming: ExternalRequest) -> Result[GatewayResponse, GatewayErrorLike]: | CODE |
| LOW⚡ | plugin/neko_plugin_cli/templates/generator.py | 557 | async def handle_request(self, raw_data: dict = None, **_): | CODE |
| LOW | static/app/app-game-voice-control.js | 240 | async function handleRequest(request) { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/unit/test_cfa_resilience.py | 471 | # Create a workshop directory with a model | COMMENT |
| MEDIUM | tests/frontend/test_memory_browser.py | 251 | # Create a minimal recent memory file for a test catgirl | COMMENT |
| MEDIUM | tests/testbench/smoke/p24_integration_smoke.py | 151 | # Create the active session first so we can test the 409 branch. | COMMENT |
| MEDIUM | tests/testbench/smoke/p21_persistence_smoke.py | 59 | # Create a session and inject data. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/run_testbench.sh | 4 | # Usage: | COMMENT |