Repository Analysis

AstrBotDevs/AstrBot

AI Agent Assistant & development framework that integrates lots of IM platforms, LLMs, plugins and AI feature, and can be your openclaw alternative. ✨

16.3 Moderate AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of AstrBotDevs/AstrBot, a Python project with 39,733 GitHub stars. SynthScan v2.0 examined 379,088 lines of code across 1569 source files, recording 5315 pattern matches distributed across 21 syntactic categories. The overall adjusted score of 16.3 places this repository in the Moderate AI signal band.

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

16.3
Adjusted Score
16.3
Raw Score
100%
Time Factor
2026-08-28
Last Push
39.7K
Stars
Python
Language
379.1K
Lines of Code
1.6K
Files
5.3K
Pattern Hits
2026-08-29
Scan Date
0.11
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 22HIGH 151MEDIUM 180LOW 4962

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 5315 distinct pattern matches across 21 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 Identifiers3013 hits · 2807 pts
SeverityFileLineSnippetContext
LOWruntime_bootstrap.py12def _try_patch_aiohttp_ssl_context(CODE
LOWruntime_bootstrap.py36def configure_runtime_ca_bundle(log_obj: Any | None = None) -> bool:CODE
LOWruntime_bootstrap.py47def initialize_runtime_bootstrap(log_obj: Any | None = None) -> bool:CODE
LOWastrbot/core/log.py256 def _ensure_logger_enricher_filter(cls, logger: logging.Logger) -> None:CODE
LOWastrbot/core/log.py267 def _ensure_logger_intercept_handler(cls, logger: logging.Logger) -> None:CODE
LOWastrbot/core/log.py294 def _load_plugin_level_overrides(cls) -> dict[str, str]:CODE
LOWastrbot/core/log.py373 def _effective_plugin_log_level(cls, plugin_name: str) -> int:CODE
LOWastrbot/core/astr_main_agent.py845async def _compress_image_for_provider(CODE
LOWastrbot/core/astr_main_agent.py859def _is_generated_compressed_image_path(CODE
LOWastrbot/core/astr_main_agent.py382async def _get_workspace_path_for_umo(umo: str, plugin_context: Context) -> Path:CODE
LOWastrbot/core/astr_main_agent.py404async def _apply_workspace_extra_prompt(CODE
LOWastrbot/core/astr_main_agent.py490def _filter_skills_for_current_config(CODE
LOWastrbot/core/astr_main_agent.py522async def _ensure_persona_and_skills(CODE
LOWastrbot/core/astr_main_agent.py750def _append_quoted_image_attachment(req: ProviderRequest, image_path: str) -> None:CODE
LOWastrbot/core/astr_main_agent.py762def _append_quoted_audio_attachment(req: ProviderRequest, audio_path: str) -> None:CODE
LOWastrbot/core/astr_main_agent.py808def _get_quoted_message_parser_settings(CODE
LOWastrbot/core/astr_main_agent.py1249def _proactive_cron_job_tools(req: ProviderRequest, plugin_context: Context) -> None:CODE
LOWastrbot/core/astr_main_agent.py1290def _apply_web_search_citation_prompt(CODE
LOWastrbot/core/astr_main_agent.py1343def _get_fallback_chat_providers(CODE
LOWastrbot/core/astr_main_agent.py1378def _provider_supports_modality(provider: Provider, modality: str) -> bool:CODE
LOWastrbot/core/astr_main_agent.py1385def _select_image_chat_provider(CODE
LOWastrbot/core/desktop_runtime.py14def is_desktop_managed_backend() -> bool:CODE
LOWastrbot/core/desktop_runtime.py18def get_desktop_session_secret() -> str | None:CODE
LOWastrbot/core/desktop_runtime.py29def is_desktop_session_auth_enabled() -> bool:CODE
LOWastrbot/core/desktop_runtime.py48def verify_desktop_session_secret(CODE
LOWastrbot/core/astr_agent_tool_exec.py59 def _collect_image_urls_from_args(cls, image_urls_raw: T.Any) -> list[str]:CODE
LOWastrbot/core/astr_agent_tool_exec.py78 async def _collect_image_urls_from_message(CODE
LOWastrbot/core/astr_agent_tool_exec.py103 async def _collect_handoff_image_urls(CODE
LOWastrbot/core/astr_agent_tool_exec.py191 def _get_runtime_computer_tools(CODE
LOWastrbot/core/astr_agent_tool_exec.py381 async def _execute_handoff_background(CODE
LOWastrbot/core/astr_agent_tool_exec.py397 async def _run_handoff_in_background() -> None:CODE
LOWastrbot/core/astr_agent_tool_exec.py511 async def _wake_main_agent_for_background_result(CODE
LOWastrbot/core/zip_updater.py79 async def _fetch_repository_default_branch(CODE
LOWastrbot/core/zip_updater.py110 async def _resolve_repository_source(CODE
LOWastrbot/core/zip_updater.py324 def _resolve_archive_root_dir(entries: list[str]) -> str:CODE
LOWastrbot/core/zip_updater.py353 def _finalize_extracted_archive(CODE
LOWastrbot/core/astr_agent_run_util.py61def _build_tool_call_status_message(tool_info: dict | None) -> str:CODE
LOWastrbot/core/astr_agent_run_util.py67def _build_tool_result_status_message(CODE
LOWastrbot/core/astr_agent_run_util.py90def _should_buffer_llm_result(CODE
LOWastrbot/core/astr_agent_run_util.py102def _merge_buffered_llm_chains(CODE
LOWastrbot/core/conversation_mgr.py30 def register_on_session_deleted(CODE
LOWastrbot/core/conversation_mgr.py160 async def delete_conversations_by_user_id(self, unified_msg_origin: str) -> None:CODE
LOWastrbot/core/conversation_mgr.py240 async def get_filtered_conversations(CODE
LOWastrbot/core/conversation_mgr.py310 async def update_conversation_title(CODE
LOWastrbot/core/conversation_mgr.py335 async def update_conversation_persona_id(CODE
LOWastrbot/core/conversation_mgr.py392 async def get_human_readable_context(CODE
LOWastrbot/core/process_restart.py19def _terminate_child_processes() -> None:CODE
LOWastrbot/core/process_restart.py66def _build_frozen_restart_args() -> list[str]:CODE
LOWastrbot/core/process_restart.py78def _reset_pyinstaller_environment() -> None:CODE
LOWastrbot/core/workspace.py22def normalize_umo_for_workspace(umo: str) -> str:CODE
LOWastrbot/core/workspace.py35def normalize_project_workspace_type(value: Any) -> str:CODE
LOWastrbot/core/workspace.py121def resolve_project_workspace_root(project: Any, *, fallback_umo: str) -> Path:CODE
LOWastrbot/core/workspace.py191async def resolve_workspace_root_for_umo(CODE
LOWastrbot/core/persona_error_reply.py9def normalize_persona_custom_error_message(value: object) -> str | None:CODE
LOWastrbot/core/persona_error_reply.py17def extract_persona_custom_error_message_from_persona(CODE
LOWastrbot/core/persona_error_reply.py26def extract_persona_custom_error_message_from_event(event: Any) -> str | None:CODE
LOWastrbot/core/persona_error_reply.py37def set_persona_custom_error_message_on_event(CODE
LOWastrbot/core/persona_error_reply.py50async def resolve_persona_custom_error_message(CODE
LOWastrbot/core/persona_error_reply.py72async def resolve_event_conversation_persona_id(CODE
LOWastrbot/core/core_lifecycle.py99 async def _init_or_reload_subagent_orchestrator(self) -> None:CODE
2953 more matches not shown…
Excessive Try-Catch Wrapping984 hits · 1026 pts
SeverityFileLineSnippetContext
LOWmain.py105 except Exception as e:STRING
LOWruntime_bootstrap.py42 except Exception as exc:CODE
LOWastrbot/core/persona_mgr.py409 except Exception as e:CODE
LOWastrbot/core/initial_loader.py31 except Exception as e:CODE
LOWastrbot/core/log.py360 except Exception:CODE
LOWastrbot/core/log.py499 except Exception:CODE
LOWastrbot/core/log.py521 except Exception:CODE
LOWastrbot/core/log.py562 except Exception as e:CODE
LOWastrbot/core/astrbot_config_mgr.py118 except Exception:CODE
LOWastrbot/core/astrbot_config_mgr.py252 except Exception as e:CODE
LOWastrbot/core/file_token_service.py49 except Exception:CODE
LOWastrbot/core/dashboard_assets.py266 except Exception as exc:CODE
LOWastrbot/core/astr_main_agent.py854 except Exception as exc: # noqa: BLE001CODE
LOWastrbot/core/astr_main_agent.py311 except Exception as exc: # noqa: BLE001CODE
LOWastrbot/core/astr_main_agent.py400 except Exception:CODE
LOWastrbot/core/astr_main_agent.py418 except Exception as exc: # noqa: BLE001CODE
LOWastrbot/core/astr_main_agent.py686 except Exception:CODE
LOWastrbot/core/astr_main_agent.py743 except Exception as exc: # noqa: BLE001CODE
LOWastrbot/core/astr_main_agent.py776 except Exception as exc: # noqa: BLE001CODE
LOWastrbot/core/astr_main_agent.py963 except Exception as exc: # noqa: BLE001CODE
LOWastrbot/core/astr_main_agent.py1001 except Exception as exc: # noqa: BLE001CODE
LOWastrbot/core/astr_main_agent.py1120 except Exception as e:CODE
LOWastrbot/core/astr_main_agent.py1564 except Exception as exc: # noqa: BLE001CODE
LOWastrbot/core/astr_main_agent.py1597 except Exception as exc: # noqa: BLE001CODE
LOWastrbot/core/updater.py181 except Exception:CODE
LOWastrbot/core/updater.py348 except Exception as exc:CODE
LOWastrbot/core/updater.py361 except Exception:CODE
LOWastrbot/core/updater.py462 except Exception as exc:CODE
MEDIUMastrbot/core/astr_agent_tool_exec.py163def _run_in_background() -> None:CODE
MEDIUMastrbot/core/astr_agent_tool_exec.py397def _run_handoff_in_background() -> None:CODE
LOWastrbot/core/astr_agent_tool_exec.py93 except Exception as e:CODE
LOWastrbot/core/astr_agent_tool_exec.py171 except Exception as e: # noqa: BLE001CODE
LOWastrbot/core/astr_agent_tool_exec.py358 except Exception:CODE
LOWastrbot/core/astr_agent_tool_exec.py405 except Exception as e: # noqa: BLE001CODE
LOWastrbot/core/astr_agent_tool_exec.py449 except Exception as e:CODE
LOWastrbot/core/astr_agent_tool_exec.py490 except Exception as e:CODE
LOWastrbot/core/astr_agent_tool_exec.py691 except Exception as e:CODE
LOWastrbot/core/astr_agent_tool_exec.py770 except Exception:CODE
LOWastrbot/core/astr_agent_tool_exec.py776 except Exception as e:CODE
LOWastrbot/core/astr_agent_tool_exec.py801 except Exception as e:CODE
LOWastrbot/core/zip_updater.py97 except Exception as exc:CODE
LOWastrbot/core/zip_updater.py204 except Exception as e:CODE
LOWastrbot/core/zip_updater.py241 except Exception as e:CODE
LOWastrbot/core/zip_updater.py373 except Exception:CODE
LOWastrbot/core/zip_updater.py398 except Exception:CODE
LOWastrbot/core/astr_agent_run_util.py317 except Exception as e:CODE
LOWastrbot/core/astr_agent_run_util.py346 except Exception:CODE
LOWastrbot/core/astr_agent_run_util.py475 except Exception as e:CODE
LOWastrbot/core/astr_agent_run_util.py509 except Exception as e:CODE
LOWastrbot/core/astr_agent_run_util.py569 except Exception as e:CODE
LOWastrbot/core/astr_agent_run_util.py584 except Exception as e:CODE
LOWastrbot/core/astr_agent_run_util.py616 except Exception as e:CODE
LOWastrbot/core/astr_agent_run_util.py622 except Exception as e:CODE
LOWastrbot/core/conversation_mgr.py55 except Exception as e:CODE
LOWastrbot/core/process_restart.py145 except Exception as exc:CODE
LOWastrbot/core/workspace.py179 except Exception:CODE
LOWastrbot/core/persona_error_reply.py33 except Exception:CODE
LOWastrbot/core/persona_error_reply.py45 except Exception:CODE
LOWastrbot/core/core_lifecycle.py114 except Exception as e:CODE
LOWastrbot/core/core_lifecycle.py206 except Exception as e:CODE
924 more matches not shown…
Docstring Block Structure115 hits · 575 pts
SeverityFileLineSnippetContext
HIGHAGENTS.md83Brief description of the function. Args: user_id: Description of the ID. force_refresh: DescriptionSTRING
HIGHastrbot/core/astrbot_config_mgr.py220Delete a configuration profile. Args: conf_id: Configuration profile ID. Returns: STRING
HIGHastrbot/core/file_token_service.py30向令牌服务注册一个文件。 Args: file_path(str): 文件路径 timeout(float): 超时时间,单位秒(可选) Returns: STRING
HIGHastrbot/core/file_token_service.py70根据令牌获取文件路径,使用后令牌失效。 Args: file_token(str): 注册时返回的令牌 Returns: str: 文件路径 STRING
HIGHastrbot/core/dashboard_assets.py43Normalize a Dashboard version for comparison. Args: version: Version with an optional ``v`` prefix. ReSTRING
HIGHastrbot/core/updater.py142Download, validate, and apply matching Core and Dashboard packages. Args: version: Release tag or cSTRING
HIGHastrbot/core/updater.py387Download an AstrBot core update package without applying it. Args: latest: Whether to download the STRING
HIGHastrbot/core/updater.py476Apply a previously downloaded AstrBot core update package. Args: zip_path: Core update zip archive STRING
HIGHastrbot/core/zip_updater.py114Resolve a repository URL to a downloadable source archive. Args: repo_url: Repository URL, optionalSTRING
HIGHastrbot/core/workspace.py95Resolve a custom workspace path. Args: path: Stored workspace path. Relative values are rooted under AstrBoSTRING
HIGHastrbot/core/workspace.py122Resolve the workspace root from a project record. Args: project: Project-like object with workspace fields.STRING
HIGHastrbot/core/repository.py59Parse a public GitHub repository URL. Args: url: HTTP(S) GitHub URL, optionally ending in ``.git`` STRING
HIGHastrbot/core/repository.py133Return a raw file URL in the resolved branch. Args: path: Repository-relative file path. RSTRING
HIGHastrbot/core/repository.py156Normalize a repository locator without changing its transport. Args: url: GitHub shorthand, HTTP(S), SSH, oSTRING
HIGHastrbot/core/repository.py192Parse a repository locator without exposing its transfer implementation. Args: url: GitHub shorthand, HTTP(STRING
HIGHastrbot/core/tools/web_search_tools.py75Return the current key and advance the round-robin index. Args: provider_settings: Provider settingSTRING
HIGHastrbot/core/tools/web_search_tools.py181Call the Tavily Search API with API key failover. Args: provider_settings: Provider settings containing TavSTRING
HIGHastrbot/core/tools/web_search_tools.py242Call the Tavily Extract API with API key failover. Args: provider_settings: Provider settings containing TaSTRING
HIGHastrbot/core/tools/web_search_tools.py301Call the BoCha Search API with API key failover. Args: provider_settings: Provider settings containing BoChSTRING
HIGHastrbot/core/tools/web_search_tools.py367Call the Brave Search API with API key failover. Args: provider_settings: Provider settings containing BravSTRING
HIGHastrbot/core/tools/web_search_tools.py428Call the Firecrawl Search API with API key failover. Args: provider_settings: Provider settings containing STRING
HIGHastrbot/core/tools/web_search_tools.py494Call the Firecrawl Scrape API with API key failover. Args: provider_settings: Provider settings containing STRING
HIGHastrbot/core/platform/platform.py171统一 Webhook 回调入口。 支持统一 Webhook 模式的平台需要实现此方法。 当 Dashboard 收到 /api/platform/webhook/{uuid} 请求时,会调用此方法。 STRING
HIGH…urces/weixin_official_account/weixin_offacc_adapter.py514Creates a Weixin Official Account message event. Args: message: AstrBot message object to wrap. STRING
HIGHastrbot/core/platform/sources/misskey/misskey_api.py834通用消息发送函数:统一处理文本+媒体发送 Args: message_type: 消息类型 ('chat', 'room', 'note') target_id: 目标ID STRING
HIGH…atform/sources/qqofficial/qqofficial_chunked_upload.py68Compute the hashes required by QQ in one pass over a file. Args: file_path: Local file to hash. ReturnSTRING
HIGH…atform/sources/qqofficial/qqofficial_chunked_upload.py101Read exactly one requested file part. Args: file_path: Local file to read. offset: Zero-based byte STRING
HIGH…atform/sources/qqofficial/qqofficial_chunked_upload.py144Upload a file for one C2C user. Args: file_path: Local file to upload. file_type: QQ meSTRING
HIGH…atform/sources/qqofficial/qqofficial_chunked_upload.py177Upload a file for one QQ group. Args: file_path: Local file to upload. file_type: QQ meSTRING
HIGH…atform/sources/qqofficial/qqofficial_chunked_upload.py210Run the shared QQ chunk transfer flow for one destination path. Args: file_path: Local file to uploSTRING
HIGH…atform/sources/qqofficial/qqofficial_chunked_upload.py546Call QQ directly so business error codes remain available. qq-botpy's response handler discards the structured STRING
HIGH…core/platform/sources/qqofficial/login_registration.py104Decrypt the AppSecret returned by QQ bot QR binding. Args: encrypted_secret: Base64 payload containing 12-bSTRING
HIGH…core/platform/sources/qqofficial/login_registration.py242Poll a QQ Official Bot QR binding task once. Args: platform_config: Platform configuration from the dashboaSTRING
HIGH…latform/sources/qqofficial/qqofficial_message_event.py636Upload media to a QQ group or C2C session. Args: file_source: Local file path or remote URL to uploSTRING
HIGHastrbot/core/provider/func_tool_manager.py1079Asynchronously activate a registered function-calling tool. Args: name: Tool name. starSTRING
HIGHastrbot/core/provider/manager.py224Resolve a provider preference with configuration fallbacks. Args: provider_type: Provider type to rSTRING
HIGHastrbot/core/provider/sources/bailian_rerank_source.py142解析API响应结果 Args: data: API响应数据 Returns: 重排序结果列表 Raises: BaSTRING
HIGH…trbot/core/provider/sources/openai_responses_source.py304Send a non-streaming Responses API request. Args: payloads: Prepared Responses API payload. STRING
HIGH…trbot/core/provider/sources/openai_responses_source.py373Send a streaming Responses API request. Args: payloads: Prepared Responses API payload. STRING
HIGH…trbot/core/provider/sources/openai_responses_source.py491Normalize a Responses API response into AstrBot's LLM response. Args: response: SDK Responses API rSTRING
HIGHastrbot/core/utils/media_utils.py278Decode a base64 payload while tolerating omitted padding. Args: payload: Base64 payload without a data URI STRING
HIGHastrbot/core/utils/media_utils.py1026Convert a video file with ffmpeg. Args: video_path: Source video file path. output_format: Target fSTRING
HIGHastrbot/core/utils/media_utils.py1115Convert an audio file to the requested format with ffmpeg. Args: audio_path: Source audio file path. STRING
HIGHastrbot/core/utils/media_utils.py1234Ensure the audio path points to wav format by extension/guess and convert when needed. If the file appears to alreaSTRING
HIGHastrbot/core/utils/media_utils.py1279Ensure JPEG-compatible still images point to a JPEG file. Args: image_path: Local image path to inspect andSTRING
HIGHastrbot/core/utils/media_utils.py1442Extract a JPEG cover frame from a video. Args: video_path: Source video file path. output_path: OptSTRING
HIGHastrbot/core/utils/toml_parser.py7Read one quoted TOML string value and return its tail. Args: value: Raw value text that starts with a quoteSTRING
HIGHastrbot/core/utils/toml_parser.py35Read a simple inline TOML string array. Args: raw_value: Raw dependency array text, including the surroundiSTRING
HIGHastrbot/core/utils/toml_parser.py76Read project dependencies from a pyproject.toml file. Args: pyproject_path: Path to the pyproject.toml fileSTRING
HIGHastrbot/core/utils/tencent_record_helper.py17Decode a Tencent Silk file to 24 kHz mono PCM WAV. Args: silk_path: Input Tencent Silk file path. oSTRING
HIGHastrbot/core/utils/tencent_record_helper.py52Encode a WAV file to Tencent Silk. Args: wav_path: Input WAV file path. output_path: Output TencentSTRING
HIGHastrbot/core/utils/tencent_record_helper.py100Convert an audio file to 24 kHz mono 16-bit PCM WAV. Args: input_path: Source audio file path. outpSTRING
HIGHastrbot/core/agent/mcp_client.py733Call MCP tool with automatic reconnection on failure, max 2 retries. Args: tool_name: tool name STRING
HIGHastrbot/core/agent/runners/tool_loop_agent_runner.py465Await work while allowing a stop request to cancel it immediately. Args: awaitable: Provider or conSTRING
HIGHastrbot/core/star/star_manager.py1738Inspect the important metadata exposed by a plugin repository. Args: repo_url: Supported plugin repSTRING
HIGHastrbot/core/star/star_manager.py1945Update and reload an installed plugin. Args: plugin_name: Registered plugin name. proxySTRING
HIGHastrbot/core/star/star_tools.py40Sends a message to a session by unified message origin. Args: session: Message session from event.sSTRING
HIGHastrbot/core/star/star_tools.py139Activates a registered function-calling tool. Args: name: Tool name. Returns: STRING
HIGHastrbot/core/star/star_tools.py156Asynchronously activates a registered function-calling tool. Args: name: Tool name. ReturnSTRING
HIGHastrbot/core/star/star_tools.py174Deactivates a registered function-calling tool. Args: name: Tool name. Returns: STRING
55 more matches not shown…
Unused Imports507 hits · 455 pts
SeverityFileLineSnippetContext
LOWastrbot/core/log.py32CODE
LOWastrbot/core/subagent_orchestrator.py1CODE
LOWastrbot/core/__init__.py7CODE
LOWastrbot/core/__init__.py13CODE
LOWastrbot/core/__init__.py16CODE
LOWastrbot/core/__init__.py19CODE
LOWastrbot/core/__init__.py25CODE
LOWastrbot/core/astr_main_agent.py1CODE
LOWastrbot/core/exceptions.py1CODE
LOWastrbot/core/workspace.py1CODE
LOWastrbot/core/persona_error_reply.py1CODE
LOWastrbot/core/pipeline/__init__.py8CODE
LOWastrbot/core/pipeline/__init__.py13CODE
LOWastrbot/core/pipeline/__init__.py13CODE
LOWastrbot/core/pipeline/__init__.py18CODE
LOWastrbot/core/pipeline/__init__.py21CODE
LOWastrbot/core/pipeline/__init__.py22CODE
LOWastrbot/core/pipeline/__init__.py23CODE
LOWastrbot/core/pipeline/__init__.py24CODE
LOWastrbot/core/pipeline/__init__.py25CODE
LOWastrbot/core/pipeline/__init__.py26CODE
LOWastrbot/core/pipeline/__init__.py27CODE
LOWastrbot/core/pipeline/__init__.py28CODE
LOWastrbot/core/pipeline/__init__.py29CODE
LOWastrbot/core/pipeline/__init__.py72CODE
LOWastrbot/core/pipeline/__init__.py73CODE
LOWastrbot/core/pipeline/__init__.py74CODE
LOWastrbot/core/pipeline/__init__.py75CODE
LOWastrbot/core/pipeline/__init__.py76CODE
LOWastrbot/core/pipeline/__init__.py77CODE
LOWastrbot/core/pipeline/__init__.py78CODE
LOWastrbot/core/pipeline/__init__.py79CODE
LOWastrbot/core/pipeline/__init__.py80CODE
LOWastrbot/core/pipeline/context.py1CODE
LOWastrbot/core/pipeline/stage.py1CODE
LOWastrbot/core/pipeline/process_stage/follow_up.py1CODE
LOW…e/process_stage/method/agent_sub_stages/third_party.py33CODE
LOW…e/process_stage/method/agent_sub_stages/third_party.py34CODE
LOWastrbot/core/tools/registry.py1CODE
LOWastrbot/core/tools/computer_tools/__init__.py1CODE
LOWastrbot/core/tools/computer_tools/__init__.py1CODE
LOWastrbot/core/tools/computer_tools/__init__.py1CODE
LOWastrbot/core/tools/computer_tools/__init__.py6CODE
LOWastrbot/core/tools/computer_tools/__init__.py6CODE
LOWastrbot/core/tools/computer_tools/__init__.py6CODE
LOWastrbot/core/tools/computer_tools/__init__.py6CODE
LOWastrbot/core/tools/computer_tools/__init__.py6CODE
LOWastrbot/core/tools/computer_tools/__init__.py6CODE
LOWastrbot/core/tools/computer_tools/__init__.py14CODE
LOWastrbot/core/tools/computer_tools/__init__.py14CODE
LOWastrbot/core/tools/computer_tools/__init__.py15CODE
LOWastrbot/core/tools/computer_tools/__init__.py15CODE
LOWastrbot/core/tools/computer_tools/__init__.py15CODE
LOWastrbot/core/tools/computer_tools/__init__.py16CODE
LOWastrbot/core/tools/computer_tools/__init__.py16CODE
LOWastrbot/core/tools/computer_tools/__init__.py16CODE
LOWastrbot/core/tools/computer_tools/__init__.py16CODE
LOWastrbot/core/tools/computer_tools/__init__.py16CODE
LOWastrbot/core/tools/computer_tools/__init__.py16CODE
LOWastrbot/core/tools/computer_tools/__init__.py16CODE
447 more matches not shown…
Decorative Section Separators104 hits · 364 pts
SeverityFileLineSnippetContext
MEDIUM…ore/platform/sources/wecom_ai_bot/WXBizJsonMsgCrypt.py7# ------------------------------------------------------------------------COMMENT
MEDIUMastrbot/core/star/session_llm_manager.py10 # =============================================================================COMMENT
MEDIUMastrbot/core/star/session_llm_manager.py12 # =============================================================================COMMENT
MEDIUMastrbot/core/star/session_llm_manager.py81 # =============================================================================COMMENT
MEDIUMastrbot/core/star/session_llm_manager.py83 # =============================================================================COMMENT
MEDIUMastrbot/core/star/session_llm_manager.py157 # =============================================================================COMMENT
MEDIUMastrbot/core/star/session_llm_manager.py159 # =============================================================================COMMENT
MEDIUMastrbot/core/backup/constants.py38# ============================================================COMMENT
MEDIUMastrbot/core/backup/constants.py40# ============================================================COMMENT
MEDIUMastrbot/core/computer/booters/bay_manager.py21# ---------------------------------------------------------------------------COMMENT
MEDIUMastrbot/core/computer/booters/bay_manager.py23# ---------------------------------------------------------------------------COMMENT
MEDIUMastrbot/core/computer/booters/bay_manager.py46 # ------------------------------------------------------------------COMMENT
MEDIUMastrbot/core/computer/booters/bay_manager.py48 # ------------------------------------------------------------------COMMENT
MEDIUMastrbot/core/computer/booters/bay_manager.py233 # ------------------------------------------------------------------COMMENT
MEDIUMastrbot/core/computer/booters/bay_manager.py235 # ------------------------------------------------------------------COMMENT
MEDIUMtests/conftest.py29# ============================================================COMMENT
MEDIUMtests/conftest.py31# ============================================================COMMENT
MEDIUMtests/conftest.py102# ============================================================COMMENT
MEDIUMtests/conftest.py104# ============================================================COMMENT
MEDIUMtests/conftest.py161# ============================================================COMMENT
MEDIUMtests/conftest.py163# ============================================================COMMENT
MEDIUMtests/conftest.py233# ============================================================COMMENT
MEDIUMtests/conftest.py235# ============================================================COMMENT
MEDIUMtests/conftest.py268# ============================================================COMMENT
MEDIUMtests/conftest.py270# ============================================================COMMENT
MEDIUMtests/conftest.py287# ============================================================COMMENT
MEDIUMtests/conftest.py289# ============================================================COMMENT
MEDIUMtests/conftest.py344# ============================================================COMMENT
MEDIUMtests/conftest.py346# ============================================================COMMENT
MEDIUMtests/conftest.py363# ============================================================COMMENT
MEDIUMtests/conftest.py365# ============================================================COMMENT
MEDIUMtests/test_shipyard_neo_booter.py11# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUMtests/test_shipyard_neo_booter.py13# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUMtests/test_shipyard_neo_booter.py137# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUMtests/test_shipyard_neo_booter.py139# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUMtests/test_shipyard_neo_booter.py224# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUMtests/test_shipyard_neo_booter.py226# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUMtests/test_pip_installer.py1881# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_pip_installer.py1883# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_dashscope_embedding_source.py83# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_dashscope_embedding_source.py85# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_dashscope_embedding_source.py129# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_dashscope_embedding_source.py131# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_dashscope_embedding_source.py192# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_dashscope_embedding_source.py194# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_dashscope_embedding_source.py248# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_dashscope_embedding_source.py250# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_dashscope_embedding_source.py265# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_dashscope_embedding_source.py267# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_dashscope_embedding_source.py317# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_dashscope_embedding_source.py319# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_dashscope_embedding_source.py44# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_dashscope_embedding_source.py46# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_profile_aware_tools.py272# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUMtests/test_profile_aware_tools.py274# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUMtests/test_profile_aware_tools.py10# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUMtests/test_profile_aware_tools.py12# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUMtests/test_profile_aware_tools.py55# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUMtests/test_profile_aware_tools.py57# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUMtests/test_profile_aware_tools.py159# ═══════════════════════════════════════════════════════════════COMMENT
44 more matches not shown…
Deep Nesting300 hits · 254 pts
SeverityFileLineSnippetContext
LOWastrbot/core/platform_message_history_mgr.py32CODE
LOWastrbot/core/astr_main_agent.py323CODE
LOWastrbot/core/astr_main_agent.py522CODE
LOWastrbot/core/astr_main_agent.py870CODE
LOWastrbot/core/astr_main_agent.py1256CODE
LOWastrbot/core/astr_main_agent.py1412CODE
LOWastrbot/core/astr_agent_tool_exec.py717CODE
LOWastrbot/core/astr_agent_tool_exec.py78CODE
LOWastrbot/core/astr_agent_tool_exec.py132CODE
LOWastrbot/core/astr_agent_tool_exec.py424CODE
LOWastrbot/core/astr_agent_tool_exec.py471CODE
LOWastrbot/core/astr_agent_tool_exec.py621CODE
LOWastrbot/core/astr_agent_run_util.py115CODE
LOWastrbot/core/astr_agent_run_util.py513CODE
LOWastrbot/core/astr_agent_run_util.py590CODE
LOWastrbot/core/conversation_mgr.py392CODE
LOWastrbot/core/workspace.py121CODE
LOW…line/process_stage/method/agent_sub_stages/internal.py162CODE
LOW…e/process_stage/method/agent_sub_stages/third_party.py62CODE
LOW…e/process_stage/method/agent_sub_stages/third_party.py289CODE
LOWastrbot/core/pipeline/result_decorate/stage.py104CODE
LOWastrbot/core/pipeline/result_decorate/stage.py126CODE
LOWastrbot/core/pipeline/waking_check/stage.py77CODE
LOWastrbot/core/pipeline/respond/stage.py169CODE
LOWastrbot/core/pipeline/preprocess_stage/stage.py50CODE
LOWastrbot/core/tools/registry.py33CODE
LOWastrbot/core/tools/cron_tools.py101CODE
LOWastrbot/core/tools/message_tools.py137CODE
LOWastrbot/core/tools/message_tools.py207CODE
LOWastrbot/core/tools/message_tools.py403CODE
LOWastrbot/core/tools/computer_tools/shell.py315CODE
LOWastrbot/core/tools/computer_tools/fs.py894CODE
LOWastrbot/core/config/astrbot_config.py166CODE
LOWastrbot/core/platform/astr_message_event.py144CODE
LOWastrbot/core/platform/manager.py319CODE
LOW…bot/core/platform/sources/dingtalk/dingtalk_adapter.py164CODE
LOW…bot/core/platform/sources/dingtalk/dingtalk_adapter.py562CODE
LOW…bot/core/platform/sources/dingtalk/dingtalk_adapter.py792CODE
LOW…bot/core/platform/sources/dingtalk/dingtalk_adapter.py798CODE
LOWastrbot/core/platform/sources/kook/kook_client.py186CODE
LOWastrbot/core/platform/sources/kook/kook_client.py297CODE
LOWastrbot/core/platform/sources/kook/kook_adapter.py128CODE
LOWastrbot/core/platform/sources/kook/kook_adapter.py208CODE
LOWastrbot/core/platform/sources/kook/kook_adapter.py356CODE
LOW…atform/sources/qqofficial_webhook/qo_webhook_server.py169CODE
LOW…t/core/platform/sources/weixin_oc/weixin_oc_adapter.py1157CODE
LOW…t/core/platform/sources/weixin_oc/weixin_oc_adapter.py1712CODE
LOW…ore/platform/sources/discord/discord_platform_event.py132CODE
LOW…e/platform/sources/discord/discord_platform_adapter.py192CODE
LOW…atform/sources/aiocqhttp/aiocqhttp_platform_adapter.py198CODE
LOW…/platform/sources/aiocqhttp/aiocqhttp_message_event.py35CODE
LOW…/platform/sources/aiocqhttp/aiocqhttp_message_event.py70CODE
LOW…/platform/sources/aiocqhttp/aiocqhttp_message_event.py126CODE
LOW…/platform/sources/aiocqhttp/aiocqhttp_message_event.py199CODE
LOWastrbot/core/platform/sources/lark/lark_event.py191CODE
LOWastrbot/core/platform/sources/lark/lark_event.py311CODE
LOWastrbot/core/platform/sources/lark/lark_event.py415CODE
LOWastrbot/core/platform/sources/lark/lark_event.py938CODE
LOWastrbot/core/platform/sources/lark/lark_adapter.py131CODE
LOWastrbot/core/platform/sources/lark/lark_adapter.py156CODE
240 more matches not shown…
Hallucination Indicators22 hits · 220 pts
SeverityFileLineSnippetContext
CRITICALastrbot/core/platform/sources/lark/lark_event.py756 response = await self.bot.im.v1.message_reaction.acreate(request)CODE
CRITICALastrbot/core/platform/sources/lark/lark_event.py804 response = await self.bot.cardkit.v1.card.acreate(request)CODE
CRITICALastrbot/core/platform/sources/lark/lark_event.py870 response = await self.bot.cardkit.v1.card_element.acontent(request)CODE
CRITICALastrbot/core/platform/sources/lark/lark_event.py910 response = await self.bot.cardkit.v1.card.asettings(request)CODE
CRITICALastrbot/core/platform/sources/lark/lark_adapter.py116 response = await self.lark_api.im.v1.message_resource.aget(request)CODE
CRITICALastrbot/core/platform/sources/lark/lark_adapter.py354 response = await self.lark_api.im.v1.message.aget(request)CODE
CRITICALastrbot/core/provider/sources/gemini_source.py18from astrbot.core.exceptions import EmptyModelOutputErrorCODE
CRITICALastrbot/core/provider/sources/anthropic_source.py16from astrbot.core.exceptions import EmptyModelOutputErrorCODE
CRITICALastrbot/core/provider/sources/openai_source.py29from astrbot.core.exceptions import EmptyModelOutputErrorCODE
CRITICALastrbot/core/provider/sources/openai_tts_api_source.py51 async with self.client.audio.speech.with_streaming_response.create(CODE
CRITICAL…trbot/core/provider/sources/openai_responses_source.py13from astrbot.core.exceptions import EmptyModelOutputErrorCODE
CRITICALastrbot/core/agent/runners/tool_loop_agent_runner.py31from astrbot.core.exceptions import EmptyModelOutputErrorCODE
CRITICALastrbot/core/db/vec_db/faiss_impl/vec_db.py7from astrbot.core.exceptions import KnowledgeBaseUploadErrorCODE
CRITICALastrbot/core/knowledge_base/kb_helper.py13from astrbot.core.exceptions import KnowledgeBaseUploadErrorCODE
CRITICALastrbot/dashboard/api/chat.py252 return ok(request.app.state.services.config_profiles.list_profiles())CODE
CRITICALtests/test_openai_source.py14from astrbot.core.exceptions import EmptyModelOutputErrorCODE
CRITICALtests/test_anthropic_kimi_code_provider.py10from astrbot.core.exceptions import EmptyModelOutputErrorCODE
CRITICALtests/test_gemini_source.py8from astrbot.core.exceptions import EmptyModelOutputErrorCODE
CRITICALtests/test_kb_import.py10from astrbot.core.exceptions import KnowledgeBaseUploadErrorCODE
CRITICALtests/test_tool_loop_agent_runner.py22from astrbot.core.exceptions import EmptyModelOutputErrorCODE
CRITICALtests/unit/test_kb_upload_atomicity.py26from astrbot.core.exceptions import KnowledgeBaseUploadErrorCODE
CRITICALtests/unit/test_faiss_vec_db.py8from astrbot.core.exceptions import KnowledgeBaseUploadErrorCODE
Cross-File Repetition33 hits · 165 pts
SeverityFileLineSnippetContext
HIGH…bot/core/platform/sources/dingtalk/dingtalk_adapter.py0creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messaSTRING
HIGHastrbot/core/platform/sources/kook/kook_adapter.py0creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messaSTRING
HIGHastrbot/core/platform/sources/lark/lark_adapter.py0creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messaSTRING
HIGHastrbot/core/platform/sources/wecom/wecom_adapter.py0creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messaSTRING
HIGH…trbot/core/platform/sources/misskey/misskey_adapter.py0creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messaSTRING
HIGH…/core/platform/sources/wecom_ai_bot/wecomai_adapter.py0creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messaSTRING
HIGHastrbot/core/platform/sources/line/line_adapter.py0creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messaSTRING
HIGHastrbot/core/platform/sources/telegram/tg_adapter.py0creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messaSTRING
HIGHastrbot/core/platform/sources/slack/slack_adapter.py0creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messaSTRING
HIGH…core/platform/sources/mattermost/mattermost_adapter.py0creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messaSTRING
HIGHastrbot/core/platform/sources/satori/satori_adapter.py0creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messaSTRING
HIGH…trbot/core/platform/sources/webchat/webchat_adapter.py0creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messaSTRING
HIGHastrbot/core/platform/sources/wecom/wecom_kf_message.py0mit license copyright (c) 2021 lxns-network permission is hereby granted, free of charge, to any person obtaining a copySTRING
HIGHastrbot/core/platform/sources/wecom/wecom_kf.py0mit license copyright (c) 2021 lxns-network permission is hereby granted, free of charge, to any person obtaining a copySTRING
HIGHastrbot/core/message/components.py0mit license copyright (c) 2021 lxns-network permission is hereby granted, free of charge, to any person obtaining a copySTRING
HIGHastrbot/core/db/po.py0persona is a set of instructions for llms to follow. it can be used to customize the behavior of llms.STRING
HIGHdocs/zh/dev/star/plugin.md0persona is a set of instructions for llms to follow. it can be used to customize the behavior of llms.STRING
HIGHdocs/zh/dev/star/guides/ai.md0persona is a set of instructions for llms to follow. it can be used to customize the behavior of llms.STRING
HIGHdocs/en/dev/star/guides/ai.md0persona is a set of instructions for llms to follow. it can be used to customize the behavior of llms.STRING
HIGHastrbot/core/db/po.py0a list of strings, each representing a dialog to start withSTRING
HIGHdocs/zh/dev/star/plugin.md0a list of strings, each representing a dialog to start withSTRING
HIGHdocs/zh/dev/star/guides/ai.md0a list of strings, each representing a dialog to start withSTRING
HIGHdocs/en/dev/star/guides/ai.md0a list of strings, each representing a dialog to start withSTRING
HIGHastrbot/core/db/po.py0none means use all tools for default, empty list means no tools, otherwise a list of tool names.STRING
HIGHdocs/zh/dev/star/plugin.md0none means use all tools for default, empty list means no tools, otherwise a list of tool names.STRING
HIGHdocs/zh/dev/star/guides/ai.md0none means use all tools for default, empty list means no tools, otherwise a list of tool names.STRING
HIGHdocs/en/dev/star/guides/ai.md0none means use all tools for default, empty list means no tools, otherwise a list of tool names.STRING
HIGHastrbot/core/db/po.py0llm 人格类。 在 v4.0.0 版本及之后,推荐使用上面的 persona 类。并且, mood_imitation_dialogs 字段已被废弃。STRING
HIGHdocs/zh/dev/star/plugin.md0llm 人格类。 在 v4.0.0 版本及之后,推荐使用上面的 persona 类。并且, mood_imitation_dialogs 字段已被废弃。STRING
HIGHdocs/zh/dev/star/guides/ai.md0llm 人格类。 在 v4.0.0 版本及之后,推荐使用上面的 persona 类。并且, mood_imitation_dialogs 字段已被废弃。STRING
HIGHdocs/zh/dev/star/plugin.md0<div style="font-size: 32px;"> <h1 style="color: black">todo list</h1> <ul> {% for item in items %} <li>{{ item }}</li> STRING
HIGHdocs/zh/dev/star/guides/html-to-pic.md0<div style="font-size: 32px;"> <h1 style="color: black">todo list</h1> <ul> {% for item in items %} <li>{{ item }}</li> STRING
HIGHdocs/en/dev/star/guides/html-to-pic.md0<div style="font-size: 32px;"> <h1 style="color: black">todo list</h1> <ul> {% for item in items %} <li>{{ item }}</li> STRING
Modern Structural Boilerplate117 hits · 114 pts
SeverityFileLineSnippetContext
LOWruntime_bootstrap.py9logger = logging.getLogger(__name__)CODE
LOWastrbot/core/log.py221 def _setup_loguru(cls) -> None:CODE
LOWastrbot/core/log.py240 def _setup_root_bridge(cls) -> None:CODE
LOWastrbot/core/log.py324 def set_plugin_log_level(cls, plugin_name: str, level: str | None) -> None:CODE
LOWastrbot/core/log.py404 def set_queue_handler(cls, logger: logging.Logger, log_broker: LogBroker) -> None:CODE
LOWastrbot/core/dashboard_assets.py13__all__ = [CODE
LOWastrbot/core/astr_main_agent.py226def _set_llm_error_message(event: AstrMessageEvent, message: str) -> None:CODE
LOWastrbot/core/umop_config_router.py63 async def update_routing_data(self, new_routing: dict[str, str]) -> None:CODE
LOWastrbot/core/umop_config_router.py83 async def update_route(self, umo: str, conf_id: str) -> None:CODE
LOWastrbot/core/updater.py31__all__ = ["AstrBotUpdater", "UpdateProgress", "UpdateProgressCallback"]CODE
LOWastrbot/core/zip_updater.py17__all__ = ["ReleaseInfo"]CODE
LOWastrbot/core/process_restart.py16__all__ = ["restart_process"]CODE
LOWastrbot/core/repository.py6__all__ = [CODE
LOWastrbot/core/pipeline/bootstrap.py52__all__ = ["ensure_builtin_stages_registered"]CODE
LOWastrbot/core/pipeline/stage_order.py15__all__ = ["STAGES_ORDER"]CODE
LOWastrbot/core/pipeline/__init__.py82__all__ = [CODE
LOWastrbot/core/tools/registry.py335__all__ = [CODE
LOWastrbot/core/tools/knowledge_base_tools.py145__all__ = [CODE
LOWastrbot/core/tools/web_search_tools.py1243__all__ = [CODE
LOWastrbot/core/tools/cron_tools.py324__all__ = [CODE
LOWastrbot/core/tools/message_tools.py562__all__ = [CODE
LOWastrbot/core/tools/computer_tools/__init__.py34__all__ = [CODE
LOW…bot/core/tools/computer_tools/shipyard_neo/__init__.py16__all__ = [CODE
LOWastrbot/core/config/__init__.py4__all__ = [CODE
LOWastrbot/core/platform/__init__.py6__all__ = [CODE
LOWastrbot/core/platform/astr_message_event.py222 def set_extra(self, key, value) -> None:CODE
LOWastrbot/core/platform/astr_message_event.py314 def set_result(self, result: MessageEventResult | str) -> None:CODE
LOW…atform/sources/qqofficial_webhook/qo_webhook_server.py122 def _setup_connection(self) -> None:CODE
LOW…tform/sources/qqofficial_webhook/qo_webhook_adapter.py30 def set_platform(self, platform: "QQOfficialWebhookPlatformAdapter") -> None:CODE
LOWastrbot/core/platform/sources/lark/server.py200 def set_callback(self, callback: Callable[[dict], Awaitable[None]]) -> None:CODE
LOWastrbot/core/platform/sources/wecom_ai_bot/__init__.py9__all__ = [CODE
LOW…t/core/platform/sources/wecom_ai_bot/wecomai_server.py45 def _setup_routes(self) -> None:CODE
LOWastrbot/core/platform/sources/slack/client.py43 def _setup_routes(self) -> None:CODE
LOW…form/sources/qqofficial/qqofficial_platform_adapter.py40def _set_raw_message_fields(message: Any, data: dict[str, Any]) -> None:CODE
LOW…form/sources/qqofficial/qqofficial_platform_adapter.py187 def set_platform(self, platform: QQOfficialPlatformAdapter) -> None:CODE
LOWastrbot/core/provider/provider.py35 def set_model(self, model_name: str) -> None:CODE
LOWastrbot/core/provider/provider.py87 def set_key(self, key: str) -> None:CODE
LOWastrbot/core/provider/entites.py11__all__ = [CODE
LOWastrbot/core/provider/__init__.py4__all__ = ["Provider", "ProviderMetaData", "STTProvider"]CODE
LOWastrbot/core/provider/manager.py921 async def update_provider(self, origin_provider_id: str, new_config: dict) -> None:CODE
LOWastrbot/core/provider/sources/gemini_source.py972 def set_key(self, key) -> None:CODE
LOWastrbot/core/provider/sources/anthropic_source.py454 def _update_usage(self, token_usage: TokenUsage, usage: MessageDeltaUsage) -> None:CODE
LOWastrbot/core/provider/sources/anthropic_source.py1014 def set_key(self, key: str) -> None:CODE
LOWastrbot/core/provider/sources/openai_source.py1364 def set_key(self, key) -> None:CODE
LOWastrbot/core/provider/sources/gsv_selfhosted_source.py88 async def _set_model_weights(self) -> None:CODE
LOWastrbot/core/utils/totp.py116def set_pending_totp_secret(secret: str | None) -> None:CODE
LOWastrbot/core/utils/totp.py127def set_rotation_verified(value: bool) -> None:CODE
LOWastrbot/core/utils/quoted_message_parser.py8__all__ = [CODE
LOWastrbot/core/utils/llm_metadata.py38async def update_llm_metadata() -> None:CODE
LOWastrbot/core/utils/t2i/template_manager.py174 def update_template(self, name: str, content: str) -> None:CODE
LOWastrbot/core/utils/quoted_message/__init__.py5__all__ = [CODE
LOWastrbot/core/agent/runners/__init__.py3__all__ = ["BaseAgentRunner"]CODE
LOWastrbot/core/star/session_llm_manager.py42 async def set_llm_status_for_session(session_id: str, enabled: bool) -> None:CODE
LOWastrbot/core/star/session_llm_manager.py113 async def set_tts_status_for_session(session_id: str, enabled: bool) -> None:CODE
LOWastrbot/core/star/config.py67def update_config(namespace: str, key: str, value) -> None:CODE
LOWastrbot/core/star/__init__.py10__all__ = [CODE
LOWastrbot/core/star/updater.py31__all__ = ["PLUGIN_METADATA_FILENAMES"]CODE
LOWastrbot/core/star/register/__init__.py28__all__ = [CODE
LOWastrbot/core/star/filter/__init__.py15__all__ = ["AstrBotConfig", "AstrMessageEvent", "HandlerFilter", "MessageType"]CODE
LOWastrbot/core/db/vec_db/faiss_impl/__init__.py9__all__ = ["FaissVecDB"]CODE
57 more matches not shown…
Self-Referential Comments25 hits · 68 pts
SeverityFileLineSnippetContext
MEDIUMastrbot/core/utils/media_utils.py1044 # Create an output path when the caller does not provide one.COMMENT
MEDIUMastrbot/core/agent/mcp_client.py559 # Create a new client sessionCOMMENT
MEDIUMastrbot/core/agent/mcp_client.py605 # Create a new client sessionCOMMENT
MEDIUMastrbot/core/agent/mcp_client.py648 # Create a new client sessionCOMMENT
MEDIUMastrbot/core/db/po.py20 """This class represents the statistics of bot usage across different platforms.STRING
MEDIUMastrbot/core/db/po.py213 """This class represents preferences for bots."""STRING
MEDIUMastrbot/core/db/po.py240 """This class represents the message history for a specific platform.STRING
MEDIUMastrbot/core/db/po.py363 """This class represents attachments for messages in AstrBot.STRING
MEDIUMastrbot/core/db/po.py446 """This class represents projects for organizing ChatUI conversations.STRING
MEDIUMastrbot/core/db/po.py486 """This class represents the relationship between platform sessions and ChatUI projects."""STRING
MEDIUMtests/test_security_fixes.py17 # Create an instance and test that random string generation worksCOMMENT
MEDIUMtests/test_security_fixes.py62 # Create a provider with test configCOMMENT
MEDIUMtests/test_security_fixes.py103 # Create a context similar to what's used in io.pyCOMMENT
MEDIUMtests/unit/test_event_bus.py77 # Create a mock eventCOMMENT
MEDIUMtests/unit/test_computer.py164 # Create a test fileCOMMENT
MEDIUMtests/unit/test_core_lifecycle.py672 # Create a task that completes quickly for testingCOMMENT
MEDIUMtests/unit/test_core_lifecycle.py722 # Create a mock handlerCOMMENT
MEDIUMtests/unit/test_core_lifecycle.py841 # Create a mock plugin that raises exception on terminationCOMMENT
MEDIUMtests/unit/test_star_base.py22 # Create a mock context with get_config methodCOMMENT
MEDIUMtests/unit/test_star_base.py26 # Create a concrete Star subclass for testingCOMMENT
MEDIUMtests/unit/test_tool_conflict_resolution.py77 # Create a mock object without 'active' attributeCOMMENT
MEDIUMtests/unit/test_config.py179 # Create a path that definitely doesn't existCOMMENT
MEDIUMtests/agent/test_context_manager.py509 # Create a mock compressorCOMMENT
MEDIUMtests/agent/test_context_manager.py917 # Create a mock compressorCOMMENT
MEDIUMtests/agent/test_context_manager.py940 # Create a mock compressorCOMMENT
AI Structural Patterns33 hits · 26 pts
SeverityFileLineSnippetContext
LOWastrbot/core/platform/astr_message_event.py420CODE
LOW…atform/sources/qqofficial_webhook/qo_webhook_server.py159CODE
LOWastrbot/core/platform/sources/discord/components.py12CODE
LOWastrbot/core/platform/sources/misskey/misskey_api.py474CODE
LOW…latform/sources/qqofficial/qqofficial_message_event.py742CODE
LOWastrbot/core/provider/provider.py96CODE
LOWastrbot/core/provider/provider.py135CODE
LOWastrbot/core/provider/entities.py79CODE
LOWastrbot/core/provider/entities.py331CODE
LOWastrbot/core/provider/sources/gemini_source.py816CODE
LOWastrbot/core/provider/sources/gemini_source.py883CODE
LOWastrbot/core/provider/sources/anthropic_source.py756CODE
LOWastrbot/core/provider/sources/anthropic_source.py829CODE
LOWastrbot/core/provider/sources/openai_source.py1185CODE
LOWastrbot/core/provider/sources/openai_source.py1263CODE
LOWastrbot/core/utils/shared_preferences.py299CODE
LOWastrbot/core/agent/runners/tool_loop_agent_runner.py207CODE
LOWastrbot/core/star/context.py215CODE
LOWastrbot/core/star/command_management.py223CODE
LOWastrbot/core/star/filter/command.py64CODE
LOWastrbot/core/db/__init__.py617CODE
LOWastrbot/core/db/__init__.py710CODE
LOWastrbot/core/db/__init__.py729CODE
LOWastrbot/core/db/sqlite.py1632CODE
LOWastrbot/core/db/sqlite.py1703CODE
LOWastrbot/core/db/sqlite.py2394CODE
LOWastrbot/core/db/sqlite.py2431CODE
LOWastrbot/core/knowledge_base/kb_helper.py721CODE
LOWastrbot/core/knowledge_base/kb_mgr.py87CODE
LOWastrbot/core/knowledge_base/kb_mgr.py187CODE
LOWastrbot/dashboard/api/conversations.py124CODE
LOWastrbot/dashboard/api/conversations.py250CODE
LOWtests/test_qqofficial_group_message_create.py37CODE
Fake / Example Data23 hits · 23 pts
SeverityFileLineSnippetContext
LOWtests/test_plugin_manager.py458 zip_file_path.write_text("placeholder", encoding="utf-8")CODE
LOWtests/test_plugin_manager.py502 zip_file_path.write_text("placeholder", encoding="utf-8")CODE
LOWtests/test_quoted_message_parser.py97 id="placeholder", chain=[Plain(text="quoted content")], message_str=""CODE
LOWtests/test_quoted_message_parser.py347 reply = Reply(id="placeholder", chain=[Image(file=file_uri)], message_str="")CODE
LOWtests/test_quoted_message_parser.py366 id="placeholder", chain=[Image(file=str(non_image_file))], message_str=""CODE
LOWdashboard/src/i18n/locales/ru-RU/features/chat.json5 "placeholder": "Спросите что угодно...",CODE
LOWdashboard/src/i18n/locales/ru-RU/features/chat.json74 "placeholder": "Спросить об этом фрагменте..."CODE
LOWdashboard/src/i18n/locales/ru-RU/features/config.json74 "placeholder": "Поиск по настройкам (поле/описание/подсказка)",CODE
LOW…rc/i18n/locales/ru-RU/features/session-management.json35 "placeholder": "Поиск сессии..."CODE
LOWdashboard/src/i18n/locales/ru-RU/features/command.json79 "placeholder": "Поиск команд..."CODE
LOW…shboard/src/i18n/locales/ru-RU/features/extension.json23 "placeholder": "Поиск плагинов...",CODE
LOWdashboard/src/i18n/locales/zh-CN/features/chat.json5 "placeholder": "想问什么都可以",CODE
LOWdashboard/src/i18n/locales/zh-CN/features/chat.json74 "placeholder": "继续追问这段内容..."CODE
LOWdashboard/src/i18n/locales/zh-CN/features/config.json74 "placeholder": "搜索配置项(字段名/描述/提示)",CODE
LOW…rc/i18n/locales/zh-CN/features/session-management.json35 "placeholder": "搜索会话..."CODE
LOWdashboard/src/i18n/locales/zh-CN/features/command.json79 "placeholder": "搜索指令..."CODE
LOW…shboard/src/i18n/locales/zh-CN/features/extension.json23 "placeholder": "搜索插件...",CODE
LOWdashboard/src/i18n/locales/en-US/features/chat.json5 "placeholder": "Ask anything...",CODE
LOWdashboard/src/i18n/locales/en-US/features/chat.json74 "placeholder": "Ask about this excerpt..."CODE
LOWdashboard/src/i18n/locales/en-US/features/config.json74 "placeholder": "Search config items (key/description/hint)",CODE
LOW…rc/i18n/locales/en-US/features/session-management.json35 "placeholder": "Search sessions..."CODE
LOWdashboard/src/i18n/locales/en-US/features/command.json79 "placeholder": "Search commands..."CODE
LOW…shboard/src/i18n/locales/en-US/features/extension.json23 "placeholder": "Search extensions...",CODE
Over-Commented Block16 hits · 16 pts
SeverityFileLineSnippetContext
LOWk8s/astrbot/04-service-loadbalancer.yaml21 # targetPort: 6195COMMENT
LOWk8s/astrbot/03-service-nodeport.yaml21 # - name: wecom-whCOMMENT
LOWastrbot/core/config/default.py3821 # "type": "object",COMMENT
LOWastrbot/core/platform/sources/kook/kook_config.py81COMMENT
LOWastrbot/core/platform/sources/kook/kook_config.py101# # 日志配置COMMENT
LOWastrbot/core/platform/sources/kook/kook_config.py121# "enable_connection_pooling": True, # 是否启用连接池COMMENT
LOWastrbot/core/platform/sources/webchat/webchat_event.py221 payload["text"] = textCOMMENT
LOWastrbot/core/utils/shared_preferences.py41 # In-memory overlay of preferences written through this process. It givesCOMMENT
LOWastrbot/core/db/__init__.py681 # content: list,COMMENT
LOWchangelogs/v4.2.0.md1# What's ChangedCOMMENT
LOWchangelogs/v4.2.1.md1# What's ChangedCOMMENT
LOWdashboard/src/router/MainRoutes.ts261 path: '/alkaid/knowledge-base',COMMENT
LOW.github/auto_assign.yml21COMMENT
LOW.github/workflows/codeql.yml1# For most projects, this workflow file will not need changing; you simply needCOMMENT
LOW.github/workflows/codeql.yml61 # Initializes the CodeQL tools for scanning.COMMENT
LOWopenspec/config.yaml1schema: spec-drivenCOMMENT
Cross-Language Confusion3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHastrbot/core/utils/t2i/network_strategy.py34 "T2I Shiki runtime not found at %s. Run `cd dashboard && pnpm run build:t2i-shiki-runtime` to regenerate it.CODE
HIGHastrbot/core/star/filter/command_group.py125 if self.equals(event.message_str.strip()):CODE
HIGHtests/test_mimo_api_sources.py474 text = '{"choices":[{"message":null}]}'CODE
Redundant / Tautological Comments9 hits · 14 pts
SeverityFileLineSnippetContext
LOWastrbot/core/tools/computer_tools/fs.py841 # Check if file existsCOMMENT
LOWastrbot/core/provider/sources/openai_source.py769 # Check if this looks like OpenAI content-part formatCOMMENT
LOWastrbot/core/provider/sources/openai_source.py788 # Check if the string is a JSON-encoded list (e.g., "[{'type': 'text', ...}]")COMMENT
LOWastrbot/core/utils/trace.py53 # Check if trace recording is enabledCOMMENT
LOWastrbot/core/agent/mcp_client.py790 # Set running_event to unblock any waiting tasksCOMMENT
LOWastrbot/core/computer/booters/boxlite.py49 # Read file contentCOMMENT
LOWastrbot/cli/utils/plugin.py316 # Check if plugin existsCOMMENT
LOWscripts/start-with-neo.sh198 # Check if process is still aliveCOMMENT
LOW.github/auto_assign.yml19# Set 0 to add all the reviewers (default: 0)COMMENT
Modern AI Meta-Vocabulary3 hits · 8 pts
SeverityFileLineSnippetContext
MEDIUM…core/agent/runners/dashscope/dashscope_agent_runner.py184 # RAG 引用脚标格式化COMMENT
MEDIUM…core/agent/runners/dashscope/dashscope_agent_runner.py342 # 添加 RAG 引用COMMENT
MEDIUMdocs/en/providers/agent-runners/dashscope.md7On the [Alibaba Cloud Bailian Application](https://bailian.console.aliyun.com/app-center#/app-center) website, click to CODE
AI Slop Vocabulary2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMastrbot/core/knowledge_base/kb_helper.py89 # More robust regex to handle potential LLM formatting errors (spaces, newlines in tags)STRING
MEDIUMdashboard/src/components/chat/LiveOrb.vue187 // Repeat once to make it seamlessCOMMENT
Overly Generic Function Names3 hits · 3 pts
SeverityFileLineSnippetContext
LOWastrbot/core/platform/webhook_server.py107 async def run_task(CODE
LOWtests/test_updater_socks.py1288 def handle_request(request: httpx.Request) -> httpx.Response: # noqa: ARG001CODE
LOWtests/test_updater_socks.py1233 def handle_request(request: httpx.Request) -> httpx.Response:CODE
Slop Phrases1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/codeql.yml55 # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize howCOMMENT
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWscripts/start-with-neo.sh5# Usage:COMMENT
Dead Code1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMtests/unit/test_kb_upload_atomicity.py80CODE