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. ✨

15.8 Moderate AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of AstrBotDevs/AstrBot, a Python project with 36,309 GitHub stars. SynthScan v2.0 examined 342,237 lines of code across 1470 source files, recording 4782 pattern matches distributed across 20 syntactic categories. The overall adjusted score of 15.8 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).

15.8
Adjusted Score
15.8
Raw Score
100%
Time Factor
2026-07-14
Last Push
36.3K
Stars
Python
Language
342.2K
Lines of Code
1.5K
Files
4.8K
Pattern Hits
2026-07-14
Scan Date
0.08
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 20HIGH 103MEDIUM 162LOW 4497

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 4782 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 Identifiers2635 hits · 2466 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.py232 def _ensure_logger_enricher_filter(cls, logger: logging.Logger) -> None:CODE
LOWastrbot/core/log.py243 def _ensure_logger_intercept_handler(cls, logger: logging.Logger) -> None:CODE
LOWastrbot/core/zip_updator.py57 async def fetch_github_default_branch(self, author: str, repo: str) -> str | None:CODE
LOWastrbot/core/zip_updator.py80 async def resolve_github_source_branch(CODE
LOWastrbot/core/zip_updator.py210 def github_api_release_parser(self, releases: list) -> list:CODE
LOWastrbot/core/zip_updator.py323 def _resolve_archive_root_dir(entries: list[str]) -> str:CODE
LOWastrbot/core/zip_updator.py352 def _finalize_extracted_archive(CODE
LOWastrbot/core/astr_main_agent.py801async def _compress_image_for_provider(CODE
LOWastrbot/core/astr_main_agent.py815def _is_generated_compressed_image_path(CODE
LOWastrbot/core/astr_main_agent.py364async def _get_workspace_path_for_umo(umo: str, plugin_context: Context) -> Path:CODE
LOWastrbot/core/astr_main_agent.py386async def _apply_workspace_extra_prompt(CODE
LOWastrbot/core/astr_main_agent.py452def _filter_skills_for_current_config(CODE
LOWastrbot/core/astr_main_agent.py484async def _ensure_persona_and_skills(CODE
LOWastrbot/core/astr_main_agent.py706def _append_quoted_image_attachment(req: ProviderRequest, image_path: str) -> None:CODE
LOWastrbot/core/astr_main_agent.py718def _append_quoted_audio_attachment(req: ProviderRequest, audio_path: str) -> None:CODE
LOWastrbot/core/astr_main_agent.py764def _get_quoted_message_parser_settings(CODE
LOWastrbot/core/astr_main_agent.py1203def _proactive_cron_job_tools(req: ProviderRequest, plugin_context: Context) -> None:CODE
LOWastrbot/core/astr_main_agent.py1244def _apply_web_search_citation_prompt(CODE
LOWastrbot/core/astr_main_agent.py1285def _get_fallback_chat_providers(CODE
LOWastrbot/core/astr_main_agent.py1320def _provider_supports_modality(provider: Provider, modality: str) -> bool:CODE
LOWastrbot/core/astr_main_agent.py1327def _select_image_chat_provider(CODE
LOWastrbot/core/desktop_runtime.py9def is_desktop_managed_backend() -> bool:CODE
LOWastrbot/core/astr_agent_tool_exec.py56 def _collect_image_urls_from_args(cls, image_urls_raw: T.Any) -> list[str]:CODE
LOWastrbot/core/astr_agent_tool_exec.py75 async def _collect_image_urls_from_message(CODE
LOWastrbot/core/astr_agent_tool_exec.py100 async def _collect_handoff_image_urls(CODE
LOWastrbot/core/astr_agent_tool_exec.py188 def _get_runtime_computer_tools(CODE
LOWastrbot/core/astr_agent_tool_exec.py376 async def _execute_handoff_background(CODE
LOWastrbot/core/astr_agent_tool_exec.py392 async def _run_handoff_in_background() -> None:CODE
LOWastrbot/core/astr_agent_tool_exec.py506 async def _wake_main_agent_for_background_result(CODE
LOWastrbot/core/astr_agent_run_util.py62def _build_tool_call_status_message(tool_info: dict | None) -> str:CODE
LOWastrbot/core/astr_agent_run_util.py68def _build_tool_result_status_message(CODE
LOWastrbot/core/astr_agent_run_util.py91def _should_buffer_llm_result(CODE
LOWastrbot/core/astr_agent_run_util.py103def _merge_buffered_llm_chains(CODE
LOWastrbot/core/conversation_mgr.py28 def register_on_session_deleted(CODE
LOWastrbot/core/conversation_mgr.py146 async def delete_conversations_by_user_id(self, unified_msg_origin: str) -> None:CODE
LOWastrbot/core/conversation_mgr.py226 async def get_filtered_conversations(CODE
LOWastrbot/core/conversation_mgr.py288 async def update_conversation_title(CODE
LOWastrbot/core/conversation_mgr.py310 async def update_conversation_persona_id(CODE
LOWastrbot/core/conversation_mgr.py367 async def get_human_readable_context(CODE
LOWastrbot/core/updator.py57 def terminate_child_processes(self) -> None:CODE
LOWastrbot/core/updator.py108 def _build_frozen_reboot_args(self) -> list[str]:CODE
LOWastrbot/core/updator.py119 def _reset_pyinstaller_environment() -> None:CODE
LOWastrbot/core/workspace.py21def normalize_umo_for_workspace(umo: str) -> str:CODE
LOWastrbot/core/workspace.py34def normalize_project_workspace_type(value: Any) -> str:CODE
LOWastrbot/core/workspace.py120def resolve_project_workspace_root(project: Any, *, fallback_umo: str) -> Path:CODE
LOWastrbot/core/workspace.py170async 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.py86 async def _init_or_reload_subagent_orchestrator(self) -> None:CODE
LOWastrbot/core/core_lifecycle.py104 def _warn_about_unset_default_chat_provider(self) -> None:CODE
LOWastrbot/core/core_lifecycle.py449 async def reload_pipeline_scheduler(self, conf_id: str) -> None:CODE
LOWastrbot/core/pipeline/bootstrap.py34def ensure_builtin_stages_registered() -> None:CODE
LOWastrbot/core/pipeline/rate_limit_check/stage.py87 def _remove_expired_timestamps(CODE
2575 more matches not shown…
Excessive Try-Catch Wrapping953 hits · 998 pts
SeverityFileLineSnippetContext
LOWmain.py131 except Exception as e:STRING
LOWmain.py161 except Exception as e:STRING
LOWmain.py191 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.py353 except Exception:CODE
LOWastrbot/core/log.py380 except Exception as e:CODE
LOWastrbot/core/astrbot_config_mgr.py90 except Exception:CODE
LOWastrbot/core/astrbot_config_mgr.py215 except Exception as e:CODE
LOWastrbot/core/zip_updator.py73 except Exception as exc:CODE
LOWastrbot/core/zip_updator.py165 except Exception as e:CODE
LOWastrbot/core/zip_updator.py205 except Exception as e:CODE
LOWastrbot/core/zip_updator.py372 except Exception:CODE
LOWastrbot/core/zip_updator.py393 except Exception:CODE
LOWastrbot/core/file_token_service.py49 except Exception:CODE
LOWastrbot/core/astr_main_agent.py810 except Exception as exc: # noqa: BLE001CODE
LOWastrbot/core/astr_main_agent.py293 except Exception as exc: # noqa: BLE001CODE
LOWastrbot/core/astr_main_agent.py382 except Exception:CODE
LOWastrbot/core/astr_main_agent.py400 except Exception as exc: # noqa: BLE001CODE
LOWastrbot/core/astr_main_agent.py642 except Exception:CODE
LOWastrbot/core/astr_main_agent.py699 except Exception as exc: # noqa: BLE001CODE
LOWastrbot/core/astr_main_agent.py732 except Exception as exc: # noqa: BLE001CODE
LOWastrbot/core/astr_main_agent.py917 except Exception as exc: # noqa: BLE001CODE
LOWastrbot/core/astr_main_agent.py955 except Exception as exc: # noqa: BLE001CODE
LOWastrbot/core/astr_main_agent.py1074 except Exception as e:CODE
LOWastrbot/core/astr_main_agent.py1506 except Exception as exc: # noqa: BLE001CODE
LOWastrbot/core/astr_main_agent.py1539 except Exception as exc: # noqa: BLE001CODE
MEDIUMastrbot/core/astr_agent_tool_exec.py160def _run_in_background() -> None:CODE
MEDIUMastrbot/core/astr_agent_tool_exec.py392def _run_handoff_in_background() -> None:CODE
LOWastrbot/core/astr_agent_tool_exec.py90 except Exception as e:CODE
LOWastrbot/core/astr_agent_tool_exec.py168 except Exception as e: # noqa: BLE001CODE
LOWastrbot/core/astr_agent_tool_exec.py353 except Exception:CODE
LOWastrbot/core/astr_agent_tool_exec.py400 except Exception as e: # noqa: BLE001CODE
LOWastrbot/core/astr_agent_tool_exec.py444 except Exception as e:CODE
LOWastrbot/core/astr_agent_tool_exec.py485 except Exception as e:CODE
LOWastrbot/core/astr_agent_tool_exec.py688 except Exception as e:CODE
LOWastrbot/core/astr_agent_tool_exec.py767 except Exception:CODE
LOWastrbot/core/astr_agent_tool_exec.py773 except Exception as e:CODE
LOWastrbot/core/astr_agent_tool_exec.py798 except Exception as e:CODE
LOWastrbot/core/astr_agent_run_util.py322 except Exception as e:CODE
LOWastrbot/core/astr_agent_run_util.py351 except Exception:CODE
LOWastrbot/core/astr_agent_run_util.py481 except Exception as e:CODE
LOWastrbot/core/astr_agent_run_util.py515 except Exception as e:CODE
LOWastrbot/core/astr_agent_run_util.py575 except Exception as e:CODE
LOWastrbot/core/astr_agent_run_util.py590 except Exception as e:CODE
LOWastrbot/core/astr_agent_run_util.py626 except Exception as e:CODE
LOWastrbot/core/astr_agent_run_util.py632 except Exception as e:CODE
LOWastrbot/core/conversation_mgr.py53 except Exception as e:CODE
LOWastrbot/core/updator.py167 except Exception as e:CODE
LOWastrbot/core/updator.py281 except Exception as exc:CODE
LOWastrbot/core/workspace.py158 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.py101 except Exception as e:CODE
LOWastrbot/core/core_lifecycle.py190 except Exception as e:CODE
LOWastrbot/core/core_lifecycle.py336 except Exception as e:CODE
LOWastrbot/core/core_lifecycle.py382 except Exception as e:CODE
LOWastrbot/core/core_lifecycle.py399 except Exception as e:CODE
LOWastrbot/core/core_lifecycle.py405 except Exception as e:CODE
893 more matches not shown…
Unused Imports482 hits · 435 pts
SeverityFileLineSnippetContext
LOWastrbot/core/log.py20CODE
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__.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
LOWastrbot/core/tools/computer_tools/__init__.py16CODE
LOWastrbot/core/tools/computer_tools/__init__.py16CODE
422 more matches not shown…
Docstring Block Structure67 hits · 335 pts
SeverityFileLineSnippetContext
HIGHAGENTS.md83Brief description of the function. Args: user_id: Description of the ID. force_refresh: DescriptionSTRING
HIGHastrbot/core/astrbot_config_mgr.py178删除指定配置文件 Args: conf_id: 配置文件的 UUID Returns: bool: 删除是否成功 Raises: STRING
HIGHastrbot/core/zip_updator.py84Resolve the GitHub branch used for repository source downloads. Args: repo_url: GitHub repository USTRING
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/updator.py214Download an AstrBot core update package without applying it. Args: latest: Whether to download the STRING
HIGHastrbot/core/updator.py295Apply a previously downloaded AstrBot core update package. Args: zip_path: Core update zip archive STRING
HIGHastrbot/core/workspace.py94Resolve a custom workspace path. Args: path: Stored workspace path. Relative values are rooted under AstrBoSTRING
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…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
HIGHastrbot/core/provider/sources/bailian_rerank_source.py126解析API响应结果 Args: data: API响应数据 Returns: 重排序结果列表 Raises: BaSTRING
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.py1229Ensure 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.py1272Ensure JPEG-compatible still images point to a JPEG file. Args: image_path: Local image path to inspect andSTRING
HIGHastrbot/core/utils/media_utils.py1435Extract 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/star/star_tools.py38Sends a message to a session by unified message origin. Args: session: Message session from event.sSTRING
HIGHastrbot/core/star/star_tools.py136Activates a registered function-calling tool. Args: name: Tool name. Returns: STRING
HIGHastrbot/core/star/star_tools.py153Deactivates a registered function-calling tool. Args: name: Tool name. Returns: STRING
HIGHastrbot/core/star/star_tools.py207Returns the absolute path to a plugin data directory. This method creates a dedicated directory under data/plugSTRING
HIGHastrbot/core/star/context.py229Run an agent loop that allows the LLM to call tools iteratively until a final answer is produced. If you do not STRING
HIGHastrbot/core/star/context.py329获取当前使用的聊天模型 Provider ID。 Args: umo: unified_message_origin。消息会话来源 ID。 Returns: STRING
HIGHastrbot/core/star/context.py425获取当前使用的用于文本生成任务的 LLM Provider(Chat_Completion 类型)。 Args: umo: unified_message_origin 值,如果传入并且用户启用了提STRING
HIGHastrbot/core/star/context.py450获取当前使用的用于 TTS 任务的 Provider。 Args: umo: unified_message_origin 值,如果传入,则使用该会话偏好的提供商。 ReturnsSTRING
HIGHastrbot/core/star/context.py470获取当前使用的用于 STT 任务的 Provider。 Args: umo: unified_message_origin 值,如果传入,则使用该会话偏好的提供商。 ReturnsSTRING
HIGHastrbot/core/star/context.py511根据 session(unified_msg_origin) 主动发送消息。 Args: session: 消息会话。通过 event.session 或者 event.unified_msg_orSTRING
HIGHastrbot/core/star/updator.py154Inspect plugin metadata in an AstrBot plugin archive. Args: zip_path: Path to the plugin archive. STRING
HIGHastrbot/core/star/updator.py191Validate that an archive contains a valid AstrBot plugin. Args: zip_path: Path to the plugin archivSTRING
HIGHastrbot/core/knowledge_base/kb_helper.py627从 URL 上传并处理文档(带原子性保证和失败清理) Args: url: 要提取内容的网页 URL chunk_size: 文本块大小 chunk_oSTRING
HIGHastrbot/core/knowledge_base/kb_mgr.py378从 URL 上传文档到指定的知识库 Args: kb_id: 知识库 ID url: 要提取内容的网页 URL chunk_size: 文本块大小 STRING
HIGHastrbot/core/knowledge_base/parsers/url_parser.py31 使用 Tavily API 从 URL 提取主要文本内容。 这是 web_searcher 插件中 tavily_extract_web_page 方法的简化版本, 专门为知识库模块设计,不STRING
HIGHastrbot/core/knowledge_base/parsers/text_parser.py16解析文本文件 尝试使用多种编码解析文件内容。 Args: file_content: 文件内容 file_name: 文件名 ReturnSTRING
HIGHastrbot/core/cron/manager.py32Normalize standard crontab weekdays for APScheduler. APScheduler treats numeric weekdays as Monday=0, while standarSTRING
HIGHastrbot/dashboard/services/plugin_service.py1250Validate a marketplace install request and resolve install URLs. Args: payload: Installation requesSTRING
HIGHastrbot/dashboard/services/plugin_service.py1302Resolve update information from the original marketplace source. Args: plugin_name: Installed plugiSTRING
HIGHastrbot/dashboard/services/plugin_service.py1367Bind an installed plugin to a marketplace source for future updates. Args: data: Binding request paSTRING
HIGHastrbot/dashboard/services/plugin_service.py1605Validate whether a GitHub repository contains AstrBot plugin metadata. Args: data: Dashboard requesSTRING
HIGHastrbot/dashboard/services/chat_service.py868Attach a new SSE subscriber to an active chat run. Args: username: Authenticated run owner. STRING
HIGHastrbot/dashboard/services/chatui_project_service.py215Normalize project workspace config from request payload. Args: payload: Request payload. STRING
HIGHastrbot/dashboard/services/tools_service.py268Set a tool permission level. Args: data: Legacy dashboard payload with ``name`` and ``permission``.STRING
HIGHscripts/prepare_release.py26Run a command and return captured stdout when requested. Args: args: Command and arguments to run. STRING
HIGHscripts/prepare_release.py64Run a git command in the repository root. Args: args: Arguments to pass after `git`. capture_outputSTRING
7 more matches not shown…
Decorative Section Separators88 hits · 300 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.py156 # =============================================================================COMMENT
MEDIUMastrbot/core/star/session_llm_manager.py158 # =============================================================================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.py338# ============================================================COMMENT
MEDIUMtests/conftest.py340# ============================================================COMMENT
MEDIUMtests/conftest.py357# ============================================================COMMENT
MEDIUMtests/conftest.py359# ============================================================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_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
MEDIUMtests/test_profile_aware_tools.py161# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUMtests/test_computer_config.py14# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUMtests/test_computer_config.py16# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUMtests/test_computer_config.py167# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUMtests/test_computer_config.py169# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUMtests/unit/test_tool_permission.py77# ── _default_permission ──────────────────────────────────────────────COMMENT
MEDIUMtests/unit/test_tool_permission.py85# ── _check_tool_permission ───────────────────────────────────────────COMMENT
MEDIUMtests/unit/test_tool_permission.py371# ── API: update_tool_permission ──────────────────────────────────────COMMENT
MEDIUMtests/unit/test_tool_permission.py15# ── helpers ──────────────────────────────────────────────────────────COMMENT
MEDIUMtests/unit/test_tool_permission.py173# ── _PermissionGuardedTool ───────────────────────────────────────────COMMENT
MEDIUMtests/unit/test_tool_permission.py307# ── get_full_tool_set ────────────────────────────────────────────────COMMENT
MEDIUMtests/unit/test_tool_permission.py336# ── API: get_tool_list permission fields ──────────────────────────────COMMENT
MEDIUMtests/unit/test_web_search_tools.py435# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_web_search_tools.py437# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_aiocqhttp_reply.py26# ============================================================COMMENT
MEDIUMtests/unit/test_aiocqhttp_reply.py28# ============================================================COMMENT
28 more matches not shown…
Deep Nesting274 hits · 230 pts
SeverityFileLineSnippetContext
LOWastrbot/core/astr_main_agent.py305CODE
LOWastrbot/core/astr_main_agent.py484CODE
LOWastrbot/core/astr_main_agent.py826CODE
LOWastrbot/core/astr_main_agent.py1210CODE
LOWastrbot/core/astr_main_agent.py1354CODE
LOWastrbot/core/astr_agent_tool_exec.py714CODE
LOWastrbot/core/astr_agent_tool_exec.py75CODE
LOWastrbot/core/astr_agent_tool_exec.py129CODE
LOWastrbot/core/astr_agent_tool_exec.py419CODE
LOWastrbot/core/astr_agent_tool_exec.py466CODE
LOWastrbot/core/astr_agent_tool_exec.py618CODE
LOWastrbot/core/astr_agent_run_util.py116CODE
LOWastrbot/core/astr_agent_run_util.py519CODE
LOWastrbot/core/astr_agent_run_util.py596CODE
LOWastrbot/core/conversation_mgr.py367CODE
LOWastrbot/core/updator.py206CODE
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/message_tools.py134CODE
LOWastrbot/core/tools/message_tools.py204CODE
LOWastrbot/core/tools/computer_tools/fs.py883CODE
LOWastrbot/core/config/astrbot_config.py166CODE
LOWastrbot/core/platform/astr_message_event.py142CODE
LOWastrbot/core/platform/manager.py309CODE
LOW…bot/core/platform/sources/dingtalk/dingtalk_adapter.py164CODE
LOW…bot/core/platform/sources/dingtalk/dingtalk_adapter.py551CODE
LOW…bot/core/platform/sources/dingtalk/dingtalk_adapter.py777CODE
LOW…bot/core/platform/sources/dingtalk/dingtalk_adapter.py783CODE
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.py1153CODE
LOW…t/core/platform/sources/weixin_oc/weixin_oc_adapter.py1707CODE
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
LOWastrbot/core/platform/sources/lark/lark_adapter.py191CODE
LOWastrbot/core/platform/sources/wecom/wecom_event.py82CODE
LOWastrbot/core/platform/sources/wecom/wecom_adapter.py308CODE
LOWastrbot/core/platform/sources/wecom/wecom_adapter.py358CODE
214 more matches not shown…
Hallucination Indicators20 hits · 200 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
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.py253 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.py6from 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_faiss_vec_db.py6from 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 Boilerplate109 hits · 106 pts
SeverityFileLineSnippetContext
LOWruntime_bootstrap.py9logger = logging.getLogger(__name__)CODE
LOWastrbot/core/log.py197 def _setup_loguru(cls) -> None:CODE
LOWastrbot/core/log.py216 def _setup_root_bridge(cls) -> None:CODE
LOWastrbot/core/log.py266 def set_queue_handler(cls, logger: logging.Logger, log_broker: LogBroker) -> None:CODE
LOWastrbot/core/astr_main_agent.py218def _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/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.py129__all__ = [CODE
LOWastrbot/core/tools/web_search_tools.py1239__all__ = [CODE
LOWastrbot/core/tools/cron_tools.py258__all__ = [CODE
LOWastrbot/core/tools/message_tools.py354__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.py221 def set_extra(self, key, value) -> None:CODE
LOWastrbot/core/platform/astr_message_event.py311 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.py838 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.py445 def _update_usage(self, token_usage: TokenUsage, usage: MessageDeltaUsage) -> None:CODE
LOWastrbot/core/provider/sources/anthropic_source.py1005 def set_key(self, key: str) -> None:CODE
LOWastrbot/core/provider/sources/openai_source.py1355 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.py33async def update_llm_metadata() -> None:CODE
LOWastrbot/core/utils/t2i/template_manager.py138 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/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
LOWastrbot/core/db/vec_db/faiss_impl/document_storage.py385 async def update_document_by_doc_id(self, doc_id: str, new_text: str) -> None:CODE
LOWastrbot/core/db/migration/sqlite_v3.py290 def update_conversation(self, user_id: str, cid: str, history: str) -> None:CODE
LOWastrbot/core/db/migration/sqlite_v3.py300 def update_conversation_title(self, user_id: str, cid: str, title: str) -> None:CODE
LOWastrbot/core/knowledge_base/kb_db_sqlite.py352 async def update_kb_stats(self, kb_id: str, vec_db: "FaissVecDB") -> None:CODE
LOWastrbot/core/knowledge_base/parsers/__init__.py8__all__ = [CODE
LOWastrbot/core/knowledge_base/chunking/__init__.py7__all__ = [CODE
LOWastrbot/core/knowledge_base/retrieval/__init__.py10__all__ = [CODE
49 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.py18 """This class represents the statistics of bot usage across different platforms.STRING
MEDIUMastrbot/core/db/po.py200 """This class represents preferences for bots."""STRING
MEDIUMastrbot/core/db/po.py227 """This class represents the message history for a specific platform.STRING
MEDIUMastrbot/core/db/po.py341 """This class represents attachments for messages in AstrBot.STRING
MEDIUMastrbot/core/db/po.py424 """This class represents projects for organizing ChatUI conversations.STRING
MEDIUMastrbot/core/db/po.py464 """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.py161 # Create a test fileCOMMENT
MEDIUMtests/unit/test_core_lifecycle.py663 # Create a task that completes quickly for testingCOMMENT
MEDIUMtests/unit/test_core_lifecycle.py713 # Create a mock handlerCOMMENT
MEDIUMtests/unit/test_core_lifecycle.py832 # Create a mock plugin that raises exception on terminationCOMMENT
MEDIUMtests/unit/test_star_base.py21 # Create a mock context with get_config methodCOMMENT
MEDIUMtests/unit/test_star_base.py25 # 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.py177 # Create a path that definitely doesn't existCOMMENT
MEDIUMtests/agent/test_context_manager.py509 # Create a mock compressorCOMMENT
MEDIUMtests/agent/test_context_manager.py900 # Create a mock compressorCOMMENT
MEDIUMtests/agent/test_context_manager.py923 # Create a mock compressorCOMMENT
AI Structural Patterns35 hits · 30 pts
SeverityFileLineSnippetContext
LOWastrbot/core/platform/astr_message_event.py417CODE
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.py679CODE
LOWastrbot/core/provider/provider.py96CODE
LOWastrbot/core/provider/provider.py135CODE
LOWastrbot/core/provider/entities.py77CODE
LOWastrbot/core/provider/entities.py329CODE
LOWastrbot/core/provider/sources/gemini_source.py816CODE
LOWastrbot/core/provider/sources/gemini_source.py883CODE
LOWastrbot/core/provider/sources/anthropic_source.py747CODE
LOWastrbot/core/provider/sources/anthropic_source.py820CODE
LOWastrbot/core/provider/sources/openai_source.py1176CODE
LOWastrbot/core/provider/sources/openai_source.py1254CODE
LOWastrbot/core/utils/io.py508CODE
LOWastrbot/core/utils/shared_preferences.py68CODE
LOWastrbot/core/utils/shared_preferences.py203CODE
LOWastrbot/core/agent/runners/tool_loop_agent_runner.py206CODE
LOWastrbot/core/star/context.py214CODE
LOWastrbot/core/star/command_management.py223CODE
LOWastrbot/core/star/filter/command.py64CODE
LOWastrbot/core/db/__init__.py597CODE
LOWastrbot/core/db/__init__.py690CODE
LOWastrbot/core/db/__init__.py709CODE
LOWastrbot/core/db/sqlite.py1321CODE
LOWastrbot/core/db/sqlite.py1392CODE
LOWastrbot/core/db/sqlite.py2080CODE
LOWastrbot/core/db/sqlite.py2117CODE
LOWastrbot/core/knowledge_base/kb_helper.py615CODE
LOWastrbot/core/knowledge_base/kb_mgr.py87CODE
LOWastrbot/core/knowledge_base/kb_mgr.py174CODE
LOWastrbot/dashboard/api/conversations.py113CODE
LOWastrbot/dashboard/api/conversations.py219CODE
LOWtests/test_qqofficial_group_message_create.py34CODE
Fake / Example Data23 hits · 23 pts
SeverityFileLineSnippetContext
LOWtests/test_plugin_manager.py428 zip_file_path.write_text("placeholder", encoding="utf-8")CODE
LOWtests/test_plugin_manager.py468 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.json73 "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.json77 "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.json73 "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.json77 "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.json73 "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.json77 "placeholder": "Search commands..."CODE
LOW…shboard/src/i18n/locales/en-US/features/extension.json23 "placeholder": "Search extensions...",CODE
Over-Commented Block18 hits · 18 pts
SeverityFileLineSnippetContext
LOWk8s/astrbot/04-service-loadbalancer.yaml21 # targetPort: 6195COMMENT
LOWk8s/astrbot/03-service-nodeport.yaml21 # - name: wecom-whCOMMENT
LOWastrbot/core/config/default.py541 },COMMENT
LOWastrbot/core/config/default.py3521 },COMMENT
LOWastrbot/core/config/default.py3541 # "provider_settings.file_extract.enable": True,COMMENT
LOW…bot/core/platform/sources/dingtalk/dingtalk_adapter.py721 # for segment in message_chain.chain: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.py201COMMENT
LOWastrbot/core/db/__init__.py661 # content: list,COMMENT
LOWchangelogs/v4.2.0.md1# What's ChangedCOMMENT
LOWchangelogs/v4.2.1.md1# What's ChangedCOMMENT
LOWdashboard/src/router/MainRoutes.ts141 // component: () => import('@/views/AlkaidPage.vue'),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.py830 # 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.py315 # 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
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
Overly Generic Function Names1 hit · 1 pts
SeverityFileLineSnippetContext
LOWastrbot/core/platform/webhook_server.py107 async def run_task(CODE