AI Agent Assistant & development framework that integrates lots of IM platforms, LLMs, plugins and AI feature, and can be your openclaw alternative. ✨
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).
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.
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.
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.
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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | runtime_bootstrap.py | 12 | def _try_patch_aiohttp_ssl_context( | CODE |
| LOW⚡ | runtime_bootstrap.py | 36 | def configure_runtime_ca_bundle(log_obj: Any | None = None) -> bool: | CODE |
| LOW⚡ | runtime_bootstrap.py | 47 | def initialize_runtime_bootstrap(log_obj: Any | None = None) -> bool: | CODE |
| LOW | astrbot/core/log.py | 232 | def _ensure_logger_enricher_filter(cls, logger: logging.Logger) -> None: | CODE |
| LOW | astrbot/core/log.py | 243 | def _ensure_logger_intercept_handler(cls, logger: logging.Logger) -> None: | CODE |
| LOW | astrbot/core/zip_updator.py | 57 | async def fetch_github_default_branch(self, author: str, repo: str) -> str | None: | CODE |
| LOW | astrbot/core/zip_updator.py | 80 | async def resolve_github_source_branch( | CODE |
| LOW | astrbot/core/zip_updator.py | 210 | def github_api_release_parser(self, releases: list) -> list: | CODE |
| LOW | astrbot/core/zip_updator.py | 323 | def _resolve_archive_root_dir(entries: list[str]) -> str: | CODE |
| LOW | astrbot/core/zip_updator.py | 352 | def _finalize_extracted_archive( | CODE |
| LOW⚡ | astrbot/core/astr_main_agent.py | 801 | async def _compress_image_for_provider( | CODE |
| LOW⚡ | astrbot/core/astr_main_agent.py | 815 | def _is_generated_compressed_image_path( | CODE |
| LOW | astrbot/core/astr_main_agent.py | 364 | async def _get_workspace_path_for_umo(umo: str, plugin_context: Context) -> Path: | CODE |
| LOW | astrbot/core/astr_main_agent.py | 386 | async def _apply_workspace_extra_prompt( | CODE |
| LOW | astrbot/core/astr_main_agent.py | 452 | def _filter_skills_for_current_config( | CODE |
| LOW | astrbot/core/astr_main_agent.py | 484 | async def _ensure_persona_and_skills( | CODE |
| LOW | astrbot/core/astr_main_agent.py | 706 | def _append_quoted_image_attachment(req: ProviderRequest, image_path: str) -> None: | CODE |
| LOW | astrbot/core/astr_main_agent.py | 718 | def _append_quoted_audio_attachment(req: ProviderRequest, audio_path: str) -> None: | CODE |
| LOW | astrbot/core/astr_main_agent.py | 764 | def _get_quoted_message_parser_settings( | CODE |
| LOW | astrbot/core/astr_main_agent.py | 1203 | def _proactive_cron_job_tools(req: ProviderRequest, plugin_context: Context) -> None: | CODE |
| LOW | astrbot/core/astr_main_agent.py | 1244 | def _apply_web_search_citation_prompt( | CODE |
| LOW | astrbot/core/astr_main_agent.py | 1285 | def _get_fallback_chat_providers( | CODE |
| LOW | astrbot/core/astr_main_agent.py | 1320 | def _provider_supports_modality(provider: Provider, modality: str) -> bool: | CODE |
| LOW | astrbot/core/astr_main_agent.py | 1327 | def _select_image_chat_provider( | CODE |
| LOW | astrbot/core/desktop_runtime.py | 9 | def is_desktop_managed_backend() -> bool: | CODE |
| LOW | astrbot/core/astr_agent_tool_exec.py | 56 | def _collect_image_urls_from_args(cls, image_urls_raw: T.Any) -> list[str]: | CODE |
| LOW | astrbot/core/astr_agent_tool_exec.py | 75 | async def _collect_image_urls_from_message( | CODE |
| LOW | astrbot/core/astr_agent_tool_exec.py | 100 | async def _collect_handoff_image_urls( | CODE |
| LOW | astrbot/core/astr_agent_tool_exec.py | 188 | def _get_runtime_computer_tools( | CODE |
| LOW | astrbot/core/astr_agent_tool_exec.py | 376 | async def _execute_handoff_background( | CODE |
| LOW | astrbot/core/astr_agent_tool_exec.py | 392 | async def _run_handoff_in_background() -> None: | CODE |
| LOW | astrbot/core/astr_agent_tool_exec.py | 506 | async def _wake_main_agent_for_background_result( | CODE |
| LOW | astrbot/core/astr_agent_run_util.py | 62 | def _build_tool_call_status_message(tool_info: dict | None) -> str: | CODE |
| LOW | astrbot/core/astr_agent_run_util.py | 68 | def _build_tool_result_status_message( | CODE |
| LOW | astrbot/core/astr_agent_run_util.py | 91 | def _should_buffer_llm_result( | CODE |
| LOW | astrbot/core/astr_agent_run_util.py | 103 | def _merge_buffered_llm_chains( | CODE |
| LOW | astrbot/core/conversation_mgr.py | 28 | def register_on_session_deleted( | CODE |
| LOW | astrbot/core/conversation_mgr.py | 146 | async def delete_conversations_by_user_id(self, unified_msg_origin: str) -> None: | CODE |
| LOW | astrbot/core/conversation_mgr.py | 226 | async def get_filtered_conversations( | CODE |
| LOW | astrbot/core/conversation_mgr.py | 288 | async def update_conversation_title( | CODE |
| LOW | astrbot/core/conversation_mgr.py | 310 | async def update_conversation_persona_id( | CODE |
| LOW | astrbot/core/conversation_mgr.py | 367 | async def get_human_readable_context( | CODE |
| LOW | astrbot/core/updator.py | 57 | def terminate_child_processes(self) -> None: | CODE |
| LOW | astrbot/core/updator.py | 108 | def _build_frozen_reboot_args(self) -> list[str]: | CODE |
| LOW | astrbot/core/updator.py | 119 | def _reset_pyinstaller_environment() -> None: | CODE |
| LOW | astrbot/core/workspace.py | 21 | def normalize_umo_for_workspace(umo: str) -> str: | CODE |
| LOW | astrbot/core/workspace.py | 34 | def normalize_project_workspace_type(value: Any) -> str: | CODE |
| LOW | astrbot/core/workspace.py | 120 | def resolve_project_workspace_root(project: Any, *, fallback_umo: str) -> Path: | CODE |
| LOW | astrbot/core/workspace.py | 170 | async def resolve_workspace_root_for_umo( | CODE |
| LOW⚡ | astrbot/core/persona_error_reply.py | 9 | def normalize_persona_custom_error_message(value: object) -> str | None: | CODE |
| LOW⚡ | astrbot/core/persona_error_reply.py | 17 | def extract_persona_custom_error_message_from_persona( | CODE |
| LOW⚡ | astrbot/core/persona_error_reply.py | 26 | def extract_persona_custom_error_message_from_event(event: Any) -> str | None: | CODE |
| LOW⚡ | astrbot/core/persona_error_reply.py | 37 | def set_persona_custom_error_message_on_event( | CODE |
| LOW⚡ | astrbot/core/persona_error_reply.py | 50 | async def resolve_persona_custom_error_message( | CODE |
| LOW | astrbot/core/persona_error_reply.py | 72 | async def resolve_event_conversation_persona_id( | CODE |
| LOW | astrbot/core/core_lifecycle.py | 86 | async def _init_or_reload_subagent_orchestrator(self) -> None: | CODE |
| LOW | astrbot/core/core_lifecycle.py | 104 | def _warn_about_unset_default_chat_provider(self) -> None: | CODE |
| LOW | astrbot/core/core_lifecycle.py | 449 | async def reload_pipeline_scheduler(self, conf_id: str) -> None: | CODE |
| LOW | astrbot/core/pipeline/bootstrap.py | 34 | def ensure_builtin_stages_registered() -> None: | CODE |
| LOW | astrbot/core/pipeline/rate_limit_check/stage.py | 87 | def _remove_expired_timestamps( | CODE |
| 2575 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | main.py | 131 | except Exception as e: | STRING |
| LOW | main.py | 161 | except Exception as e: | STRING |
| LOW | main.py | 191 | except Exception as e: | STRING |
| LOW⚡ | runtime_bootstrap.py | 42 | except Exception as exc: | CODE |
| LOW | astrbot/core/persona_mgr.py | 409 | except Exception as e: | CODE |
| LOW | astrbot/core/initial_loader.py | 31 | except Exception as e: | CODE |
| LOW | astrbot/core/log.py | 353 | except Exception: | CODE |
| LOW | astrbot/core/log.py | 380 | except Exception as e: | CODE |
| LOW | astrbot/core/astrbot_config_mgr.py | 90 | except Exception: | CODE |
| LOW | astrbot/core/astrbot_config_mgr.py | 215 | except Exception as e: | CODE |
| LOW | astrbot/core/zip_updator.py | 73 | except Exception as exc: | CODE |
| LOW | astrbot/core/zip_updator.py | 165 | except Exception as e: | CODE |
| LOW | astrbot/core/zip_updator.py | 205 | except Exception as e: | CODE |
| LOW | astrbot/core/zip_updator.py | 372 | except Exception: | CODE |
| LOW | astrbot/core/zip_updator.py | 393 | except Exception: | CODE |
| LOW | astrbot/core/file_token_service.py | 49 | except Exception: | CODE |
| LOW⚡ | astrbot/core/astr_main_agent.py | 810 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | astrbot/core/astr_main_agent.py | 293 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | astrbot/core/astr_main_agent.py | 382 | except Exception: | CODE |
| LOW | astrbot/core/astr_main_agent.py | 400 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | astrbot/core/astr_main_agent.py | 642 | except Exception: | CODE |
| LOW | astrbot/core/astr_main_agent.py | 699 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | astrbot/core/astr_main_agent.py | 732 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | astrbot/core/astr_main_agent.py | 917 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | astrbot/core/astr_main_agent.py | 955 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | astrbot/core/astr_main_agent.py | 1074 | except Exception as e: | CODE |
| LOW | astrbot/core/astr_main_agent.py | 1506 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | astrbot/core/astr_main_agent.py | 1539 | except Exception as exc: # noqa: BLE001 | CODE |
| MEDIUM | astrbot/core/astr_agent_tool_exec.py | 160 | def _run_in_background() -> None: | CODE |
| MEDIUM | astrbot/core/astr_agent_tool_exec.py | 392 | def _run_handoff_in_background() -> None: | CODE |
| LOW | astrbot/core/astr_agent_tool_exec.py | 90 | except Exception as e: | CODE |
| LOW | astrbot/core/astr_agent_tool_exec.py | 168 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | astrbot/core/astr_agent_tool_exec.py | 353 | except Exception: | CODE |
| LOW | astrbot/core/astr_agent_tool_exec.py | 400 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | astrbot/core/astr_agent_tool_exec.py | 444 | except Exception as e: | CODE |
| LOW | astrbot/core/astr_agent_tool_exec.py | 485 | except Exception as e: | CODE |
| LOW | astrbot/core/astr_agent_tool_exec.py | 688 | except Exception as e: | CODE |
| LOW | astrbot/core/astr_agent_tool_exec.py | 767 | except Exception: | CODE |
| LOW | astrbot/core/astr_agent_tool_exec.py | 773 | except Exception as e: | CODE |
| LOW | astrbot/core/astr_agent_tool_exec.py | 798 | except Exception as e: | CODE |
| LOW | astrbot/core/astr_agent_run_util.py | 322 | except Exception as e: | CODE |
| LOW | astrbot/core/astr_agent_run_util.py | 351 | except Exception: | CODE |
| LOW | astrbot/core/astr_agent_run_util.py | 481 | except Exception as e: | CODE |
| LOW | astrbot/core/astr_agent_run_util.py | 515 | except Exception as e: | CODE |
| LOW | astrbot/core/astr_agent_run_util.py | 575 | except Exception as e: | CODE |
| LOW | astrbot/core/astr_agent_run_util.py | 590 | except Exception as e: | CODE |
| LOW | astrbot/core/astr_agent_run_util.py | 626 | except Exception as e: | CODE |
| LOW | astrbot/core/astr_agent_run_util.py | 632 | except Exception as e: | CODE |
| LOW | astrbot/core/conversation_mgr.py | 53 | except Exception as e: | CODE |
| LOW | astrbot/core/updator.py | 167 | except Exception as e: | CODE |
| LOW | astrbot/core/updator.py | 281 | except Exception as exc: | CODE |
| LOW | astrbot/core/workspace.py | 158 | except Exception: | CODE |
| LOW⚡ | astrbot/core/persona_error_reply.py | 33 | except Exception: | CODE |
| LOW⚡ | astrbot/core/persona_error_reply.py | 45 | except Exception: | CODE |
| LOW | astrbot/core/core_lifecycle.py | 101 | except Exception as e: | CODE |
| LOW | astrbot/core/core_lifecycle.py | 190 | except Exception as e: | CODE |
| LOW | astrbot/core/core_lifecycle.py | 336 | except Exception as e: | CODE |
| LOW | astrbot/core/core_lifecycle.py | 382 | except Exception as e: | CODE |
| LOW | astrbot/core/core_lifecycle.py | 399 | except Exception as e: | CODE |
| LOW | astrbot/core/core_lifecycle.py | 405 | except Exception as e: | CODE |
| 893 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | astrbot/core/log.py | 20 | CODE | |
| LOW | astrbot/core/subagent_orchestrator.py | 1 | CODE | |
| LOW | astrbot/core/__init__.py | 7 | CODE | |
| LOW | astrbot/core/__init__.py | 13 | CODE | |
| LOW | astrbot/core/__init__.py | 16 | CODE | |
| LOW | astrbot/core/__init__.py | 19 | CODE | |
| LOW | astrbot/core/__init__.py | 25 | CODE | |
| LOW | astrbot/core/astr_main_agent.py | 1 | CODE | |
| LOW | astrbot/core/exceptions.py | 1 | CODE | |
| LOW | astrbot/core/workspace.py | 1 | CODE | |
| LOW | astrbot/core/persona_error_reply.py | 1 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 8 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 13 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 13 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 18 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 21 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 22 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 23 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 24 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 25 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 26 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 27 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 28 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 29 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 72 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 73 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 74 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 75 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 76 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 77 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 78 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 79 | CODE | |
| LOW | astrbot/core/pipeline/__init__.py | 80 | CODE | |
| LOW | astrbot/core/pipeline/context.py | 1 | CODE | |
| LOW | astrbot/core/pipeline/stage.py | 1 | CODE | |
| LOW | astrbot/core/pipeline/process_stage/follow_up.py | 1 | CODE | |
| LOW | …e/process_stage/method/agent_sub_stages/third_party.py | 33 | CODE | |
| LOW | …e/process_stage/method/agent_sub_stages/third_party.py | 34 | CODE | |
| LOW | astrbot/core/tools/registry.py | 1 | CODE | |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 1 | CODE | |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 1 | CODE | |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 1 | CODE | |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 6 | CODE | |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 6 | CODE | |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 6 | CODE | |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 6 | CODE | |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 6 | CODE | |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 6 | CODE | |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 14 | CODE | |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 14 | CODE | |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 15 | CODE | |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 16 | CODE | |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 16 | CODE | |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 16 | CODE | |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 16 | CODE | |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 16 | CODE | |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 16 | CODE | |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 16 | CODE | |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 16 | CODE | |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 16 | CODE | |
| 422 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | AGENTS.md | 83 | Brief description of the function. Args: user_id: Description of the ID. force_refresh: Description | STRING |
| HIGH | astrbot/core/astrbot_config_mgr.py | 178 | 删除指定配置文件 Args: conf_id: 配置文件的 UUID Returns: bool: 删除是否成功 Raises: | STRING |
| HIGH | astrbot/core/zip_updator.py | 84 | Resolve the GitHub branch used for repository source downloads. Args: repo_url: GitHub repository U | STRING |
| HIGH | astrbot/core/file_token_service.py | 30 | 向令牌服务注册一个文件。 Args: file_path(str): 文件路径 timeout(float): 超时时间,单位秒(可选) Returns: | STRING |
| HIGH | astrbot/core/file_token_service.py | 70 | 根据令牌获取文件路径,使用后令牌失效。 Args: file_token(str): 注册时返回的令牌 Returns: str: 文件路径 | STRING |
| HIGH | astrbot/core/updator.py | 214 | Download an AstrBot core update package without applying it. Args: latest: Whether to download the | STRING |
| HIGH | astrbot/core/updator.py | 295 | Apply a previously downloaded AstrBot core update package. Args: zip_path: Core update zip archive | STRING |
| HIGH | astrbot/core/workspace.py | 94 | Resolve a custom workspace path. Args: path: Stored workspace path. Relative values are rooted under AstrBo | STRING |
| HIGH | astrbot/core/tools/web_search_tools.py | 75 | Return the current key and advance the round-robin index. Args: provider_settings: Provider setting | STRING |
| HIGH | astrbot/core/tools/web_search_tools.py | 181 | Call the Tavily Search API with API key failover. Args: provider_settings: Provider settings containing Tav | STRING |
| HIGH | astrbot/core/tools/web_search_tools.py | 242 | Call the Tavily Extract API with API key failover. Args: provider_settings: Provider settings containing Ta | STRING |
| HIGH | astrbot/core/tools/web_search_tools.py | 301 | Call the BoCha Search API with API key failover. Args: provider_settings: Provider settings containing BoCh | STRING |
| HIGH | astrbot/core/tools/web_search_tools.py | 367 | Call the Brave Search API with API key failover. Args: provider_settings: Provider settings containing Brav | STRING |
| HIGH | astrbot/core/tools/web_search_tools.py | 428 | Call the Firecrawl Search API with API key failover. Args: provider_settings: Provider settings containing | STRING |
| HIGH | astrbot/core/tools/web_search_tools.py | 494 | Call the Firecrawl Scrape API with API key failover. Args: provider_settings: Provider settings containing | STRING |
| HIGH | astrbot/core/platform/platform.py | 171 | 统一 Webhook 回调入口。 支持统一 Webhook 模式的平台需要实现此方法。 当 Dashboard 收到 /api/platform/webhook/{uuid} 请求时,会调用此方法。 | STRING |
| HIGH | …urces/weixin_official_account/weixin_offacc_adapter.py | 514 | Creates a Weixin Official Account message event. Args: message: AstrBot message object to wrap. | STRING |
| HIGH | astrbot/core/platform/sources/misskey/misskey_api.py | 834 | 通用消息发送函数:统一处理文本+媒体发送 Args: message_type: 消息类型 ('chat', 'room', 'note') target_id: 目标ID | STRING |
| HIGH | …core/platform/sources/qqofficial/login_registration.py | 104 | Decrypt the AppSecret returned by QQ bot QR binding. Args: encrypted_secret: Base64 payload containing 12-b | STRING |
| HIGH | …core/platform/sources/qqofficial/login_registration.py | 242 | Poll a QQ Official Bot QR binding task once. Args: platform_config: Platform configuration from the dashboa | STRING |
| HIGH | astrbot/core/provider/sources/bailian_rerank_source.py | 126 | 解析API响应结果 Args: data: API响应数据 Returns: 重排序结果列表 Raises: Ba | STRING |
| HIGH | astrbot/core/utils/media_utils.py | 278 | Decode a base64 payload while tolerating omitted padding. Args: payload: Base64 payload without a data URI | STRING |
| HIGH | astrbot/core/utils/media_utils.py | 1026 | Convert a video file with ffmpeg. Args: video_path: Source video file path. output_format: Target f | STRING |
| HIGH | astrbot/core/utils/media_utils.py | 1115 | Convert an audio file to the requested format with ffmpeg. Args: audio_path: Source audio file path. | STRING |
| HIGH | astrbot/core/utils/media_utils.py | 1229 | Ensure the audio path points to wav format by extension/guess and convert when needed. If the file appears to alrea | STRING |
| HIGH | astrbot/core/utils/media_utils.py | 1272 | Ensure JPEG-compatible still images point to a JPEG file. Args: image_path: Local image path to inspect and | STRING |
| HIGH | astrbot/core/utils/media_utils.py | 1435 | Extract a JPEG cover frame from a video. Args: video_path: Source video file path. output_path: Opt | STRING |
| HIGH | astrbot/core/utils/toml_parser.py | 7 | Read one quoted TOML string value and return its tail. Args: value: Raw value text that starts with a quote | STRING |
| HIGH | astrbot/core/utils/toml_parser.py | 35 | Read a simple inline TOML string array. Args: raw_value: Raw dependency array text, including the surroundi | STRING |
| HIGH | astrbot/core/utils/toml_parser.py | 76 | Read project dependencies from a pyproject.toml file. Args: pyproject_path: Path to the pyproject.toml file | STRING |
| HIGH | astrbot/core/utils/tencent_record_helper.py | 17 | Decode a Tencent Silk file to 24 kHz mono PCM WAV. Args: silk_path: Input Tencent Silk file path. o | STRING |
| HIGH | astrbot/core/utils/tencent_record_helper.py | 52 | Encode a WAV file to Tencent Silk. Args: wav_path: Input WAV file path. output_path: Output Tencent | STRING |
| HIGH | astrbot/core/utils/tencent_record_helper.py | 100 | Convert an audio file to 24 kHz mono 16-bit PCM WAV. Args: input_path: Source audio file path. outp | STRING |
| HIGH | astrbot/core/agent/mcp_client.py | 733 | Call MCP tool with automatic reconnection on failure, max 2 retries. Args: tool_name: tool name | STRING |
| HIGH | astrbot/core/star/star_tools.py | 38 | Sends a message to a session by unified message origin. Args: session: Message session from event.s | STRING |
| HIGH | astrbot/core/star/star_tools.py | 136 | Activates a registered function-calling tool. Args: name: Tool name. Returns: | STRING |
| HIGH | astrbot/core/star/star_tools.py | 153 | Deactivates a registered function-calling tool. Args: name: Tool name. Returns: | STRING |
| HIGH | astrbot/core/star/star_tools.py | 207 | Returns the absolute path to a plugin data directory. This method creates a dedicated directory under data/plug | STRING |
| HIGH | astrbot/core/star/context.py | 229 | Run an agent loop that allows the LLM to call tools iteratively until a final answer is produced. If you do not | STRING |
| HIGH | astrbot/core/star/context.py | 329 | 获取当前使用的聊天模型 Provider ID。 Args: umo: unified_message_origin。消息会话来源 ID。 Returns: | STRING |
| HIGH | astrbot/core/star/context.py | 425 | 获取当前使用的用于文本生成任务的 LLM Provider(Chat_Completion 类型)。 Args: umo: unified_message_origin 值,如果传入并且用户启用了提 | STRING |
| HIGH | astrbot/core/star/context.py | 450 | 获取当前使用的用于 TTS 任务的 Provider。 Args: umo: unified_message_origin 值,如果传入,则使用该会话偏好的提供商。 Returns | STRING |
| HIGH | astrbot/core/star/context.py | 470 | 获取当前使用的用于 STT 任务的 Provider。 Args: umo: unified_message_origin 值,如果传入,则使用该会话偏好的提供商。 Returns | STRING |
| HIGH | astrbot/core/star/context.py | 511 | 根据 session(unified_msg_origin) 主动发送消息。 Args: session: 消息会话。通过 event.session 或者 event.unified_msg_or | STRING |
| HIGH | astrbot/core/star/updator.py | 154 | Inspect plugin metadata in an AstrBot plugin archive. Args: zip_path: Path to the plugin archive. | STRING |
| HIGH | astrbot/core/star/updator.py | 191 | Validate that an archive contains a valid AstrBot plugin. Args: zip_path: Path to the plugin archiv | STRING |
| HIGH | astrbot/core/knowledge_base/kb_helper.py | 627 | 从 URL 上传并处理文档(带原子性保证和失败清理) Args: url: 要提取内容的网页 URL chunk_size: 文本块大小 chunk_o | STRING |
| HIGH | astrbot/core/knowledge_base/kb_mgr.py | 378 | 从 URL 上传文档到指定的知识库 Args: kb_id: 知识库 ID url: 要提取内容的网页 URL chunk_size: 文本块大小 | STRING |
| HIGH | astrbot/core/knowledge_base/parsers/url_parser.py | 31 | 使用 Tavily API 从 URL 提取主要文本内容。 这是 web_searcher 插件中 tavily_extract_web_page 方法的简化版本, 专门为知识库模块设计,不 | STRING |
| HIGH | astrbot/core/knowledge_base/parsers/text_parser.py | 16 | 解析文本文件 尝试使用多种编码解析文件内容。 Args: file_content: 文件内容 file_name: 文件名 Return | STRING |
| HIGH | astrbot/core/cron/manager.py | 32 | Normalize standard crontab weekdays for APScheduler. APScheduler treats numeric weekdays as Monday=0, while standar | STRING |
| HIGH | astrbot/dashboard/services/plugin_service.py | 1250 | Validate a marketplace install request and resolve install URLs. Args: payload: Installation reques | STRING |
| HIGH | astrbot/dashboard/services/plugin_service.py | 1302 | Resolve update information from the original marketplace source. Args: plugin_name: Installed plugi | STRING |
| HIGH | astrbot/dashboard/services/plugin_service.py | 1367 | Bind an installed plugin to a marketplace source for future updates. Args: data: Binding request pa | STRING |
| HIGH | astrbot/dashboard/services/plugin_service.py | 1605 | Validate whether a GitHub repository contains AstrBot plugin metadata. Args: data: Dashboard reques | STRING |
| HIGH | astrbot/dashboard/services/chat_service.py | 868 | Attach a new SSE subscriber to an active chat run. Args: username: Authenticated run owner. | STRING |
| HIGH | astrbot/dashboard/services/chatui_project_service.py | 215 | Normalize project workspace config from request payload. Args: payload: Request payload. | STRING |
| HIGH | astrbot/dashboard/services/tools_service.py | 268 | Set a tool permission level. Args: data: Legacy dashboard payload with ``name`` and ``permission``. | STRING |
| HIGH | scripts/prepare_release.py | 26 | Run a command and return captured stdout when requested. Args: args: Command and arguments to run. | STRING |
| HIGH | scripts/prepare_release.py | 64 | Run a git command in the repository root. Args: args: Arguments to pass after `git`. capture_output | STRING |
| 7 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …ore/platform/sources/wecom_ai_bot/WXBizJsonMsgCrypt.py | 7 | # ------------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | astrbot/core/star/session_llm_manager.py | 10 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | astrbot/core/star/session_llm_manager.py | 12 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | astrbot/core/star/session_llm_manager.py | 81 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | astrbot/core/star/session_llm_manager.py | 83 | # ============================================================================= | COMMENT |
| MEDIUM | astrbot/core/star/session_llm_manager.py | 156 | # ============================================================================= | COMMENT |
| MEDIUM | astrbot/core/star/session_llm_manager.py | 158 | # ============================================================================= | COMMENT |
| MEDIUM | astrbot/core/backup/constants.py | 38 | # ============================================================ | COMMENT |
| MEDIUM | astrbot/core/backup/constants.py | 40 | # ============================================================ | COMMENT |
| MEDIUM | astrbot/core/computer/booters/bay_manager.py | 21 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | astrbot/core/computer/booters/bay_manager.py | 23 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | astrbot/core/computer/booters/bay_manager.py | 46 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | astrbot/core/computer/booters/bay_manager.py | 48 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | astrbot/core/computer/booters/bay_manager.py | 233 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | astrbot/core/computer/booters/bay_manager.py | 235 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/conftest.py | 29 | # ============================================================ | COMMENT |
| MEDIUM⚡ | tests/conftest.py | 31 | # ============================================================ | COMMENT |
| MEDIUM | tests/conftest.py | 102 | # ============================================================ | COMMENT |
| MEDIUM | tests/conftest.py | 104 | # ============================================================ | COMMENT |
| MEDIUM | tests/conftest.py | 161 | # ============================================================ | COMMENT |
| MEDIUM | tests/conftest.py | 163 | # ============================================================ | COMMENT |
| MEDIUM | tests/conftest.py | 233 | # ============================================================ | COMMENT |
| MEDIUM | tests/conftest.py | 235 | # ============================================================ | COMMENT |
| MEDIUM | tests/conftest.py | 268 | # ============================================================ | COMMENT |
| MEDIUM | tests/conftest.py | 270 | # ============================================================ | COMMENT |
| MEDIUM | tests/conftest.py | 287 | # ============================================================ | COMMENT |
| MEDIUM | tests/conftest.py | 289 | # ============================================================ | COMMENT |
| MEDIUM | tests/conftest.py | 338 | # ============================================================ | COMMENT |
| MEDIUM | tests/conftest.py | 340 | # ============================================================ | COMMENT |
| MEDIUM | tests/conftest.py | 357 | # ============================================================ | COMMENT |
| MEDIUM | tests/conftest.py | 359 | # ============================================================ | COMMENT |
| MEDIUM | tests/test_shipyard_neo_booter.py | 11 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/test_shipyard_neo_booter.py | 13 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/test_shipyard_neo_booter.py | 137 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/test_shipyard_neo_booter.py | 139 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/test_shipyard_neo_booter.py | 224 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/test_shipyard_neo_booter.py | 226 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | tests/test_profile_aware_tools.py | 272 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | tests/test_profile_aware_tools.py | 274 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/test_profile_aware_tools.py | 10 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/test_profile_aware_tools.py | 12 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/test_profile_aware_tools.py | 55 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/test_profile_aware_tools.py | 57 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/test_profile_aware_tools.py | 159 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/test_profile_aware_tools.py | 161 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/test_computer_config.py | 14 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/test_computer_config.py | 16 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/test_computer_config.py | 167 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | tests/test_computer_config.py | 169 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | tests/unit/test_tool_permission.py | 77 | # ── _default_permission ────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/unit/test_tool_permission.py | 85 | # ── _check_tool_permission ─────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/unit/test_tool_permission.py | 371 | # ── API: update_tool_permission ────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/test_tool_permission.py | 15 | # ── helpers ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/test_tool_permission.py | 173 | # ── _PermissionGuardedTool ─────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/test_tool_permission.py | 307 | # ── get_full_tool_set ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/test_tool_permission.py | 336 | # ── API: get_tool_list permission fields ────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/unit/test_web_search_tools.py | 435 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_web_search_tools.py | 437 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_aiocqhttp_reply.py | 26 | # ============================================================ | COMMENT |
| MEDIUM⚡ | tests/unit/test_aiocqhttp_reply.py | 28 | # ============================================================ | COMMENT |
| 28 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | astrbot/core/astr_main_agent.py | 305 | CODE | |
| LOW | astrbot/core/astr_main_agent.py | 484 | CODE | |
| LOW | astrbot/core/astr_main_agent.py | 826 | CODE | |
| LOW | astrbot/core/astr_main_agent.py | 1210 | CODE | |
| LOW | astrbot/core/astr_main_agent.py | 1354 | CODE | |
| LOW | astrbot/core/astr_agent_tool_exec.py | 714 | CODE | |
| LOW | astrbot/core/astr_agent_tool_exec.py | 75 | CODE | |
| LOW | astrbot/core/astr_agent_tool_exec.py | 129 | CODE | |
| LOW | astrbot/core/astr_agent_tool_exec.py | 419 | CODE | |
| LOW | astrbot/core/astr_agent_tool_exec.py | 466 | CODE | |
| LOW | astrbot/core/astr_agent_tool_exec.py | 618 | CODE | |
| LOW | astrbot/core/astr_agent_run_util.py | 116 | CODE | |
| LOW | astrbot/core/astr_agent_run_util.py | 519 | CODE | |
| LOW | astrbot/core/astr_agent_run_util.py | 596 | CODE | |
| LOW | astrbot/core/conversation_mgr.py | 367 | CODE | |
| LOW | astrbot/core/updator.py | 206 | CODE | |
| LOW | …line/process_stage/method/agent_sub_stages/internal.py | 162 | CODE | |
| LOW | …e/process_stage/method/agent_sub_stages/third_party.py | 62 | CODE | |
| LOW | …e/process_stage/method/agent_sub_stages/third_party.py | 289 | CODE | |
| LOW | astrbot/core/pipeline/result_decorate/stage.py | 104 | CODE | |
| LOW | astrbot/core/pipeline/result_decorate/stage.py | 126 | CODE | |
| LOW | astrbot/core/pipeline/waking_check/stage.py | 77 | CODE | |
| LOW | astrbot/core/pipeline/respond/stage.py | 169 | CODE | |
| LOW | astrbot/core/pipeline/preprocess_stage/stage.py | 50 | CODE | |
| LOW | astrbot/core/tools/registry.py | 33 | CODE | |
| LOW | astrbot/core/tools/message_tools.py | 134 | CODE | |
| LOW | astrbot/core/tools/message_tools.py | 204 | CODE | |
| LOW | astrbot/core/tools/computer_tools/fs.py | 883 | CODE | |
| LOW | astrbot/core/config/astrbot_config.py | 166 | CODE | |
| LOW | astrbot/core/platform/astr_message_event.py | 142 | CODE | |
| LOW | astrbot/core/platform/manager.py | 309 | CODE | |
| LOW | …bot/core/platform/sources/dingtalk/dingtalk_adapter.py | 164 | CODE | |
| LOW | …bot/core/platform/sources/dingtalk/dingtalk_adapter.py | 551 | CODE | |
| LOW | …bot/core/platform/sources/dingtalk/dingtalk_adapter.py | 777 | CODE | |
| LOW | …bot/core/platform/sources/dingtalk/dingtalk_adapter.py | 783 | CODE | |
| LOW | astrbot/core/platform/sources/kook/kook_client.py | 186 | CODE | |
| LOW | astrbot/core/platform/sources/kook/kook_client.py | 297 | CODE | |
| LOW | astrbot/core/platform/sources/kook/kook_adapter.py | 128 | CODE | |
| LOW | astrbot/core/platform/sources/kook/kook_adapter.py | 208 | CODE | |
| LOW | astrbot/core/platform/sources/kook/kook_adapter.py | 356 | CODE | |
| LOW | …atform/sources/qqofficial_webhook/qo_webhook_server.py | 169 | CODE | |
| LOW | …t/core/platform/sources/weixin_oc/weixin_oc_adapter.py | 1153 | CODE | |
| LOW | …t/core/platform/sources/weixin_oc/weixin_oc_adapter.py | 1707 | CODE | |
| LOW | …ore/platform/sources/discord/discord_platform_event.py | 132 | CODE | |
| LOW | …e/platform/sources/discord/discord_platform_adapter.py | 192 | CODE | |
| LOW | …atform/sources/aiocqhttp/aiocqhttp_platform_adapter.py | 198 | CODE | |
| LOW | …/platform/sources/aiocqhttp/aiocqhttp_message_event.py | 35 | CODE | |
| LOW | …/platform/sources/aiocqhttp/aiocqhttp_message_event.py | 70 | CODE | |
| LOW | …/platform/sources/aiocqhttp/aiocqhttp_message_event.py | 126 | CODE | |
| LOW | …/platform/sources/aiocqhttp/aiocqhttp_message_event.py | 199 | CODE | |
| LOW | astrbot/core/platform/sources/lark/lark_event.py | 191 | CODE | |
| LOW | astrbot/core/platform/sources/lark/lark_event.py | 311 | CODE | |
| LOW | astrbot/core/platform/sources/lark/lark_event.py | 415 | CODE | |
| LOW | astrbot/core/platform/sources/lark/lark_event.py | 938 | CODE | |
| LOW | astrbot/core/platform/sources/lark/lark_adapter.py | 131 | CODE | |
| LOW | astrbot/core/platform/sources/lark/lark_adapter.py | 156 | CODE | |
| LOW | astrbot/core/platform/sources/lark/lark_adapter.py | 191 | CODE | |
| LOW | astrbot/core/platform/sources/wecom/wecom_event.py | 82 | CODE | |
| LOW | astrbot/core/platform/sources/wecom/wecom_adapter.py | 308 | CODE | |
| LOW | astrbot/core/platform/sources/wecom/wecom_adapter.py | 358 | CODE | |
| 214 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | astrbot/core/platform/sources/lark/lark_event.py | 756 | response = await self.bot.im.v1.message_reaction.acreate(request) | CODE |
| CRITICAL | astrbot/core/platform/sources/lark/lark_event.py | 804 | response = await self.bot.cardkit.v1.card.acreate(request) | CODE |
| CRITICAL | astrbot/core/platform/sources/lark/lark_event.py | 870 | response = await self.bot.cardkit.v1.card_element.acontent(request) | CODE |
| CRITICAL | astrbot/core/platform/sources/lark/lark_event.py | 910 | response = await self.bot.cardkit.v1.card.asettings(request) | CODE |
| CRITICAL | astrbot/core/platform/sources/lark/lark_adapter.py | 116 | response = await self.lark_api.im.v1.message_resource.aget(request) | CODE |
| CRITICAL | astrbot/core/platform/sources/lark/lark_adapter.py | 354 | response = await self.lark_api.im.v1.message.aget(request) | CODE |
| CRITICAL | astrbot/core/provider/sources/gemini_source.py | 18 | from astrbot.core.exceptions import EmptyModelOutputError | CODE |
| CRITICAL | astrbot/core/provider/sources/anthropic_source.py | 16 | from astrbot.core.exceptions import EmptyModelOutputError | CODE |
| CRITICAL | astrbot/core/provider/sources/openai_source.py | 29 | from astrbot.core.exceptions import EmptyModelOutputError | CODE |
| CRITICAL | astrbot/core/provider/sources/openai_tts_api_source.py | 51 | async with self.client.audio.speech.with_streaming_response.create( | CODE |
| CRITICAL | astrbot/core/agent/runners/tool_loop_agent_runner.py | 31 | from astrbot.core.exceptions import EmptyModelOutputError | CODE |
| CRITICAL | astrbot/core/db/vec_db/faiss_impl/vec_db.py | 7 | from astrbot.core.exceptions import KnowledgeBaseUploadError | CODE |
| CRITICAL | astrbot/core/knowledge_base/kb_helper.py | 13 | from astrbot.core.exceptions import KnowledgeBaseUploadError | CODE |
| CRITICAL | astrbot/dashboard/api/chat.py | 253 | return ok(request.app.state.services.config_profiles.list_profiles()) | CODE |
| CRITICAL | tests/test_openai_source.py | 14 | from astrbot.core.exceptions import EmptyModelOutputError | CODE |
| CRITICAL | tests/test_anthropic_kimi_code_provider.py | 10 | from astrbot.core.exceptions import EmptyModelOutputError | CODE |
| CRITICAL | tests/test_gemini_source.py | 6 | from astrbot.core.exceptions import EmptyModelOutputError | CODE |
| CRITICAL | tests/test_kb_import.py | 10 | from astrbot.core.exceptions import KnowledgeBaseUploadError | CODE |
| CRITICAL | tests/test_tool_loop_agent_runner.py | 22 | from astrbot.core.exceptions import EmptyModelOutputError | CODE |
| CRITICAL | tests/unit/test_faiss_vec_db.py | 6 | from astrbot.core.exceptions import KnowledgeBaseUploadError | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …bot/core/platform/sources/dingtalk/dingtalk_adapter.py | 0 | creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messa | STRING |
| HIGH | astrbot/core/platform/sources/kook/kook_adapter.py | 0 | creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messa | STRING |
| HIGH | astrbot/core/platform/sources/lark/lark_adapter.py | 0 | creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messa | STRING |
| HIGH | astrbot/core/platform/sources/wecom/wecom_adapter.py | 0 | creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messa | STRING |
| HIGH | …trbot/core/platform/sources/misskey/misskey_adapter.py | 0 | creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messa | STRING |
| HIGH | …/core/platform/sources/wecom_ai_bot/wecomai_adapter.py | 0 | creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messa | STRING |
| HIGH | astrbot/core/platform/sources/line/line_adapter.py | 0 | creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messa | STRING |
| HIGH | astrbot/core/platform/sources/telegram/tg_adapter.py | 0 | creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messa | STRING |
| HIGH | astrbot/core/platform/sources/slack/slack_adapter.py | 0 | creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messa | STRING |
| HIGH | …core/platform/sources/mattermost/mattermost_adapter.py | 0 | creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messa | STRING |
| HIGH | astrbot/core/platform/sources/satori/satori_adapter.py | 0 | creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messa | STRING |
| HIGH | …trbot/core/platform/sources/webchat/webchat_adapter.py | 0 | creates a wecom ai bot message event. args: message: astrbot message object to wrap. returns: created wecom ai bot messa | STRING |
| HIGH | astrbot/core/platform/sources/wecom/wecom_kf_message.py | 0 | mit license copyright (c) 2021 lxns-network permission is hereby granted, free of charge, to any person obtaining a copy | STRING |
| HIGH | astrbot/core/platform/sources/wecom/wecom_kf.py | 0 | mit license copyright (c) 2021 lxns-network permission is hereby granted, free of charge, to any person obtaining a copy | STRING |
| HIGH | astrbot/core/message/components.py | 0 | mit license copyright (c) 2021 lxns-network permission is hereby granted, free of charge, to any person obtaining a copy | STRING |
| HIGH | astrbot/core/db/po.py | 0 | persona is a set of instructions for llms to follow. it can be used to customize the behavior of llms. | STRING |
| HIGH | docs/zh/dev/star/plugin.md | 0 | persona is a set of instructions for llms to follow. it can be used to customize the behavior of llms. | STRING |
| HIGH | docs/zh/dev/star/guides/ai.md | 0 | persona is a set of instructions for llms to follow. it can be used to customize the behavior of llms. | STRING |
| HIGH | docs/en/dev/star/guides/ai.md | 0 | persona is a set of instructions for llms to follow. it can be used to customize the behavior of llms. | STRING |
| HIGH | astrbot/core/db/po.py | 0 | a list of strings, each representing a dialog to start with | STRING |
| HIGH | docs/zh/dev/star/plugin.md | 0 | a list of strings, each representing a dialog to start with | STRING |
| HIGH | docs/zh/dev/star/guides/ai.md | 0 | a list of strings, each representing a dialog to start with | STRING |
| HIGH | docs/en/dev/star/guides/ai.md | 0 | a list of strings, each representing a dialog to start with | STRING |
| HIGH | astrbot/core/db/po.py | 0 | none means use all tools for default, empty list means no tools, otherwise a list of tool names. | STRING |
| HIGH | docs/zh/dev/star/plugin.md | 0 | none means use all tools for default, empty list means no tools, otherwise a list of tool names. | STRING |
| HIGH | docs/zh/dev/star/guides/ai.md | 0 | none means use all tools for default, empty list means no tools, otherwise a list of tool names. | STRING |
| HIGH | docs/en/dev/star/guides/ai.md | 0 | none means use all tools for default, empty list means no tools, otherwise a list of tool names. | STRING |
| HIGH | astrbot/core/db/po.py | 0 | llm 人格类。 在 v4.0.0 版本及之后,推荐使用上面的 persona 类。并且, mood_imitation_dialogs 字段已被废弃。 | STRING |
| HIGH | docs/zh/dev/star/plugin.md | 0 | llm 人格类。 在 v4.0.0 版本及之后,推荐使用上面的 persona 类。并且, mood_imitation_dialogs 字段已被废弃。 | STRING |
| HIGH | docs/zh/dev/star/guides/ai.md | 0 | llm 人格类。 在 v4.0.0 版本及之后,推荐使用上面的 persona 类。并且, mood_imitation_dialogs 字段已被废弃。 | STRING |
| HIGH | docs/zh/dev/star/plugin.md | 0 | <div style="font-size: 32px;"> <h1 style="color: black">todo list</h1> <ul> {% for item in items %} <li>{{ item }}</li> | STRING |
| HIGH | docs/zh/dev/star/guides/html-to-pic.md | 0 | <div style="font-size: 32px;"> <h1 style="color: black">todo list</h1> <ul> {% for item in items %} <li>{{ item }}</li> | STRING |
| HIGH | docs/en/dev/star/guides/html-to-pic.md | 0 | <div style="font-size: 32px;"> <h1 style="color: black">todo list</h1> <ul> {% for item in items %} <li>{{ item }}</li> | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | runtime_bootstrap.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | astrbot/core/log.py | 197 | def _setup_loguru(cls) -> None: | CODE |
| LOW | astrbot/core/log.py | 216 | def _setup_root_bridge(cls) -> None: | CODE |
| LOW | astrbot/core/log.py | 266 | def set_queue_handler(cls, logger: logging.Logger, log_broker: LogBroker) -> None: | CODE |
| LOW | astrbot/core/astr_main_agent.py | 218 | def _set_llm_error_message(event: AstrMessageEvent, message: str) -> None: | CODE |
| LOW | astrbot/core/umop_config_router.py | 63 | async def update_routing_data(self, new_routing: dict[str, str]) -> None: | CODE |
| LOW | astrbot/core/umop_config_router.py | 83 | async def update_route(self, umo: str, conf_id: str) -> None: | CODE |
| LOW | astrbot/core/pipeline/bootstrap.py | 52 | __all__ = ["ensure_builtin_stages_registered"] | CODE |
| LOW | astrbot/core/pipeline/stage_order.py | 15 | __all__ = ["STAGES_ORDER"] | CODE |
| LOW | astrbot/core/pipeline/__init__.py | 82 | __all__ = [ | CODE |
| LOW | astrbot/core/tools/registry.py | 335 | __all__ = [ | CODE |
| LOW | astrbot/core/tools/knowledge_base_tools.py | 129 | __all__ = [ | CODE |
| LOW | astrbot/core/tools/web_search_tools.py | 1239 | __all__ = [ | CODE |
| LOW | astrbot/core/tools/cron_tools.py | 258 | __all__ = [ | CODE |
| LOW | astrbot/core/tools/message_tools.py | 354 | __all__ = [ | CODE |
| LOW | astrbot/core/tools/computer_tools/__init__.py | 34 | __all__ = [ | CODE |
| LOW | …bot/core/tools/computer_tools/shipyard_neo/__init__.py | 16 | __all__ = [ | CODE |
| LOW | astrbot/core/config/__init__.py | 4 | __all__ = [ | CODE |
| LOW | astrbot/core/platform/__init__.py | 6 | __all__ = [ | CODE |
| LOW | astrbot/core/platform/astr_message_event.py | 221 | def set_extra(self, key, value) -> None: | CODE |
| LOW | astrbot/core/platform/astr_message_event.py | 311 | def set_result(self, result: MessageEventResult | str) -> None: | CODE |
| LOW | …atform/sources/qqofficial_webhook/qo_webhook_server.py | 122 | def _setup_connection(self) -> None: | CODE |
| LOW | …tform/sources/qqofficial_webhook/qo_webhook_adapter.py | 30 | def set_platform(self, platform: "QQOfficialWebhookPlatformAdapter") -> None: | CODE |
| LOW | astrbot/core/platform/sources/lark/server.py | 200 | def set_callback(self, callback: Callable[[dict], Awaitable[None]]) -> None: | CODE |
| LOW | astrbot/core/platform/sources/wecom_ai_bot/__init__.py | 9 | __all__ = [ | CODE |
| LOW | …t/core/platform/sources/wecom_ai_bot/wecomai_server.py | 45 | def _setup_routes(self) -> None: | CODE |
| LOW | astrbot/core/platform/sources/slack/client.py | 43 | def _setup_routes(self) -> None: | CODE |
| LOW | …form/sources/qqofficial/qqofficial_platform_adapter.py | 40 | def _set_raw_message_fields(message: Any, data: dict[str, Any]) -> None: | CODE |
| LOW | …form/sources/qqofficial/qqofficial_platform_adapter.py | 187 | def set_platform(self, platform: QQOfficialPlatformAdapter) -> None: | CODE |
| LOW | astrbot/core/provider/provider.py | 35 | def set_model(self, model_name: str) -> None: | CODE |
| LOW | astrbot/core/provider/provider.py | 87 | def set_key(self, key: str) -> None: | CODE |
| LOW | astrbot/core/provider/entites.py | 11 | __all__ = [ | CODE |
| LOW | astrbot/core/provider/__init__.py | 4 | __all__ = ["Provider", "ProviderMetaData", "STTProvider"] | CODE |
| LOW | astrbot/core/provider/manager.py | 838 | async def update_provider(self, origin_provider_id: str, new_config: dict) -> None: | CODE |
| LOW | astrbot/core/provider/sources/gemini_source.py | 972 | def set_key(self, key) -> None: | CODE |
| LOW | astrbot/core/provider/sources/anthropic_source.py | 445 | def _update_usage(self, token_usage: TokenUsage, usage: MessageDeltaUsage) -> None: | CODE |
| LOW | astrbot/core/provider/sources/anthropic_source.py | 1005 | def set_key(self, key: str) -> None: | CODE |
| LOW | astrbot/core/provider/sources/openai_source.py | 1355 | def set_key(self, key) -> None: | CODE |
| LOW | astrbot/core/provider/sources/gsv_selfhosted_source.py | 88 | async def _set_model_weights(self) -> None: | CODE |
| LOW | astrbot/core/utils/totp.py | 116 | def set_pending_totp_secret(secret: str | None) -> None: | CODE |
| LOW | astrbot/core/utils/totp.py | 127 | def set_rotation_verified(value: bool) -> None: | CODE |
| LOW | astrbot/core/utils/quoted_message_parser.py | 8 | __all__ = [ | CODE |
| LOW | astrbot/core/utils/llm_metadata.py | 33 | async def update_llm_metadata() -> None: | CODE |
| LOW | astrbot/core/utils/t2i/template_manager.py | 138 | def update_template(self, name: str, content: str) -> None: | CODE |
| LOW | astrbot/core/utils/quoted_message/__init__.py | 5 | __all__ = [ | CODE |
| LOW | astrbot/core/agent/runners/__init__.py | 3 | __all__ = ["BaseAgentRunner"] | CODE |
| LOW | astrbot/core/star/session_llm_manager.py | 42 | async def set_llm_status_for_session(session_id: str, enabled: bool) -> None: | CODE |
| LOW | astrbot/core/star/session_llm_manager.py | 113 | async def set_tts_status_for_session(session_id: str, enabled: bool) -> None: | CODE |
| LOW | astrbot/core/star/config.py | 67 | def update_config(namespace: str, key: str, value) -> None: | CODE |
| LOW | astrbot/core/star/__init__.py | 10 | __all__ = [ | CODE |
| LOW | astrbot/core/star/register/__init__.py | 28 | __all__ = [ | CODE |
| LOW | astrbot/core/star/filter/__init__.py | 15 | __all__ = ["AstrBotConfig", "AstrMessageEvent", "HandlerFilter", "MessageType"] | CODE |
| LOW | astrbot/core/db/vec_db/faiss_impl/__init__.py | 9 | __all__ = ["FaissVecDB"] | CODE |
| LOW | astrbot/core/db/vec_db/faiss_impl/document_storage.py | 385 | async def update_document_by_doc_id(self, doc_id: str, new_text: str) -> None: | CODE |
| LOW⚡ | astrbot/core/db/migration/sqlite_v3.py | 290 | def update_conversation(self, user_id: str, cid: str, history: str) -> None: | CODE |
| LOW⚡ | astrbot/core/db/migration/sqlite_v3.py | 300 | def update_conversation_title(self, user_id: str, cid: str, title: str) -> None: | CODE |
| LOW | astrbot/core/knowledge_base/kb_db_sqlite.py | 352 | async def update_kb_stats(self, kb_id: str, vec_db: "FaissVecDB") -> None: | CODE |
| LOW | astrbot/core/knowledge_base/parsers/__init__.py | 8 | __all__ = [ | CODE |
| LOW | astrbot/core/knowledge_base/chunking/__init__.py | 7 | __all__ = [ | CODE |
| LOW | astrbot/core/knowledge_base/retrieval/__init__.py | 10 | __all__ = [ | CODE |
| 49 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | astrbot/core/utils/media_utils.py | 1044 | # Create an output path when the caller does not provide one. | COMMENT |
| MEDIUM | astrbot/core/agent/mcp_client.py | 559 | # Create a new client session | COMMENT |
| MEDIUM | astrbot/core/agent/mcp_client.py | 605 | # Create a new client session | COMMENT |
| MEDIUM | astrbot/core/agent/mcp_client.py | 648 | # Create a new client session | COMMENT |
| MEDIUM | astrbot/core/db/po.py | 18 | """This class represents the statistics of bot usage across different platforms. | STRING |
| MEDIUM | astrbot/core/db/po.py | 200 | """This class represents preferences for bots.""" | STRING |
| MEDIUM | astrbot/core/db/po.py | 227 | """This class represents the message history for a specific platform. | STRING |
| MEDIUM | astrbot/core/db/po.py | 341 | """This class represents attachments for messages in AstrBot. | STRING |
| MEDIUM | astrbot/core/db/po.py | 424 | """This class represents projects for organizing ChatUI conversations. | STRING |
| MEDIUM | astrbot/core/db/po.py | 464 | """This class represents the relationship between platform sessions and ChatUI projects.""" | STRING |
| MEDIUM | tests/test_security_fixes.py | 17 | # Create an instance and test that random string generation works | COMMENT |
| MEDIUM | tests/test_security_fixes.py | 62 | # Create a provider with test config | COMMENT |
| MEDIUM | tests/test_security_fixes.py | 103 | # Create a context similar to what's used in io.py | COMMENT |
| MEDIUM | tests/unit/test_event_bus.py | 77 | # Create a mock event | COMMENT |
| MEDIUM | tests/unit/test_computer.py | 161 | # Create a test file | COMMENT |
| MEDIUM | tests/unit/test_core_lifecycle.py | 663 | # Create a task that completes quickly for testing | COMMENT |
| MEDIUM | tests/unit/test_core_lifecycle.py | 713 | # Create a mock handler | COMMENT |
| MEDIUM | tests/unit/test_core_lifecycle.py | 832 | # Create a mock plugin that raises exception on termination | COMMENT |
| MEDIUM⚡ | tests/unit/test_star_base.py | 21 | # Create a mock context with get_config method | COMMENT |
| MEDIUM⚡ | tests/unit/test_star_base.py | 25 | # Create a concrete Star subclass for testing | COMMENT |
| MEDIUM⚡ | tests/unit/test_tool_conflict_resolution.py | 77 | # Create a mock object without 'active' attribute | COMMENT |
| MEDIUM | tests/unit/test_config.py | 177 | # Create a path that definitely doesn't exist | COMMENT |
| MEDIUM | tests/agent/test_context_manager.py | 509 | # Create a mock compressor | COMMENT |
| MEDIUM | tests/agent/test_context_manager.py | 900 | # Create a mock compressor | COMMENT |
| MEDIUM | tests/agent/test_context_manager.py | 923 | # Create a mock compressor | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | astrbot/core/platform/astr_message_event.py | 417 | CODE | |
| LOW | …atform/sources/qqofficial_webhook/qo_webhook_server.py | 159 | CODE | |
| LOW | astrbot/core/platform/sources/discord/components.py | 12 | CODE | |
| LOW | astrbot/core/platform/sources/misskey/misskey_api.py | 474 | CODE | |
| LOW | …latform/sources/qqofficial/qqofficial_message_event.py | 679 | CODE | |
| LOW | astrbot/core/provider/provider.py | 96 | CODE | |
| LOW | astrbot/core/provider/provider.py | 135 | CODE | |
| LOW | astrbot/core/provider/entities.py | 77 | CODE | |
| LOW | astrbot/core/provider/entities.py | 329 | CODE | |
| LOW | astrbot/core/provider/sources/gemini_source.py | 816 | CODE | |
| LOW | astrbot/core/provider/sources/gemini_source.py | 883 | CODE | |
| LOW | astrbot/core/provider/sources/anthropic_source.py | 747 | CODE | |
| LOW | astrbot/core/provider/sources/anthropic_source.py | 820 | CODE | |
| LOW | astrbot/core/provider/sources/openai_source.py | 1176 | CODE | |
| LOW | astrbot/core/provider/sources/openai_source.py | 1254 | CODE | |
| LOW | astrbot/core/utils/io.py | 508 | CODE | |
| LOW | astrbot/core/utils/shared_preferences.py | 68 | CODE | |
| LOW | astrbot/core/utils/shared_preferences.py | 203 | CODE | |
| LOW | astrbot/core/agent/runners/tool_loop_agent_runner.py | 206 | CODE | |
| LOW | astrbot/core/star/context.py | 214 | CODE | |
| LOW | astrbot/core/star/command_management.py | 223 | CODE | |
| LOW | astrbot/core/star/filter/command.py | 64 | CODE | |
| LOW | astrbot/core/db/__init__.py | 597 | CODE | |
| LOW | astrbot/core/db/__init__.py | 690 | CODE | |
| LOW | astrbot/core/db/__init__.py | 709 | CODE | |
| LOW | astrbot/core/db/sqlite.py | 1321 | CODE | |
| LOW | astrbot/core/db/sqlite.py | 1392 | CODE | |
| LOW | astrbot/core/db/sqlite.py | 2080 | CODE | |
| LOW | astrbot/core/db/sqlite.py | 2117 | CODE | |
| LOW | astrbot/core/knowledge_base/kb_helper.py | 615 | CODE | |
| LOW | astrbot/core/knowledge_base/kb_mgr.py | 87 | CODE | |
| LOW | astrbot/core/knowledge_base/kb_mgr.py | 174 | CODE | |
| LOW | astrbot/dashboard/api/conversations.py | 113 | CODE | |
| LOW | astrbot/dashboard/api/conversations.py | 219 | CODE | |
| LOW | tests/test_qqofficial_group_message_create.py | 34 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_plugin_manager.py | 428 | zip_file_path.write_text("placeholder", encoding="utf-8") | CODE |
| LOW | tests/test_plugin_manager.py | 468 | zip_file_path.write_text("placeholder", encoding="utf-8") | CODE |
| LOW | tests/test_quoted_message_parser.py | 97 | id="placeholder", chain=[Plain(text="quoted content")], message_str="" | CODE |
| LOW | tests/test_quoted_message_parser.py | 347 | reply = Reply(id="placeholder", chain=[Image(file=file_uri)], message_str="") | CODE |
| LOW | tests/test_quoted_message_parser.py | 366 | id="placeholder", chain=[Image(file=str(non_image_file))], message_str="" | CODE |
| LOW | dashboard/src/i18n/locales/ru-RU/features/chat.json | 5 | "placeholder": "Спросите что угодно...", | CODE |
| LOW | dashboard/src/i18n/locales/ru-RU/features/chat.json | 73 | "placeholder": "Спросить об этом фрагменте..." | CODE |
| LOW | dashboard/src/i18n/locales/ru-RU/features/config.json | 74 | "placeholder": "Поиск по настройкам (поле/описание/подсказка)", | CODE |
| LOW | …rc/i18n/locales/ru-RU/features/session-management.json | 35 | "placeholder": "Поиск сессии..." | CODE |
| LOW | dashboard/src/i18n/locales/ru-RU/features/command.json | 77 | "placeholder": "Поиск команд..." | CODE |
| LOW | …shboard/src/i18n/locales/ru-RU/features/extension.json | 23 | "placeholder": "Поиск плагинов...", | CODE |
| LOW | dashboard/src/i18n/locales/zh-CN/features/chat.json | 5 | "placeholder": "想问什么都可以", | CODE |
| LOW | dashboard/src/i18n/locales/zh-CN/features/chat.json | 73 | "placeholder": "继续追问这段内容..." | CODE |
| LOW | dashboard/src/i18n/locales/zh-CN/features/config.json | 74 | "placeholder": "搜索配置项(字段名/描述/提示)", | CODE |
| LOW | …rc/i18n/locales/zh-CN/features/session-management.json | 35 | "placeholder": "搜索会话..." | CODE |
| LOW | dashboard/src/i18n/locales/zh-CN/features/command.json | 77 | "placeholder": "搜索指令..." | CODE |
| LOW | …shboard/src/i18n/locales/zh-CN/features/extension.json | 23 | "placeholder": "搜索插件...", | CODE |
| LOW | dashboard/src/i18n/locales/en-US/features/chat.json | 5 | "placeholder": "Ask anything...", | CODE |
| LOW | dashboard/src/i18n/locales/en-US/features/chat.json | 73 | "placeholder": "Ask about this excerpt..." | CODE |
| LOW | dashboard/src/i18n/locales/en-US/features/config.json | 74 | "placeholder": "Search config items (key/description/hint)", | CODE |
| LOW | …rc/i18n/locales/en-US/features/session-management.json | 35 | "placeholder": "Search sessions..." | CODE |
| LOW | dashboard/src/i18n/locales/en-US/features/command.json | 77 | "placeholder": "Search commands..." | CODE |
| LOW | …shboard/src/i18n/locales/en-US/features/extension.json | 23 | "placeholder": "Search extensions...", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | k8s/astrbot/04-service-loadbalancer.yaml | 21 | # targetPort: 6195 | COMMENT |
| LOW | k8s/astrbot/03-service-nodeport.yaml | 21 | # - name: wecom-wh | COMMENT |
| LOW | astrbot/core/config/default.py | 541 | }, | COMMENT |
| LOW | astrbot/core/config/default.py | 3521 | }, | COMMENT |
| LOW | astrbot/core/config/default.py | 3541 | # "provider_settings.file_extract.enable": True, | COMMENT |
| LOW | …bot/core/platform/sources/dingtalk/dingtalk_adapter.py | 721 | # for segment in message_chain.chain: | COMMENT |
| LOW | astrbot/core/platform/sources/kook/kook_config.py | 81 | COMMENT | |
| LOW | astrbot/core/platform/sources/kook/kook_config.py | 101 | # # 日志配置 | COMMENT |
| LOW | astrbot/core/platform/sources/kook/kook_config.py | 121 | # "enable_connection_pooling": True, # 是否启用连接池 | COMMENT |
| LOW | astrbot/core/platform/sources/webchat/webchat_event.py | 201 | COMMENT | |
| LOW | astrbot/core/db/__init__.py | 661 | # content: list, | COMMENT |
| LOW | changelogs/v4.2.0.md | 1 | # What's Changed | COMMENT |
| LOW | changelogs/v4.2.1.md | 1 | # What's Changed | COMMENT |
| LOW | dashboard/src/router/MainRoutes.ts | 141 | // component: () => import('@/views/AlkaidPage.vue'), | COMMENT |
| LOW | .github/auto_assign.yml | 21 | COMMENT | |
| LOW | .github/workflows/codeql.yml | 1 | # For most projects, this workflow file will not need changing; you simply need | COMMENT |
| LOW | .github/workflows/codeql.yml | 61 | # Initializes the CodeQL tools for scanning. | COMMENT |
| LOW | openspec/config.yaml | 1 | schema: spec-driven | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | astrbot/core/utils/t2i/network_strategy.py | 34 | "T2I Shiki runtime not found at %s. Run `cd dashboard && pnpm run build:t2i-shiki-runtime` to regenerate it. | CODE |
| HIGH | astrbot/core/star/filter/command_group.py | 125 | if self.equals(event.message_str.strip()): | CODE |
| HIGH | tests/test_mimo_api_sources.py | 474 | text = '{"choices":[{"message":null}]}' | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | astrbot/core/tools/computer_tools/fs.py | 830 | # Check if file exists | COMMENT |
| LOW | astrbot/core/provider/sources/openai_source.py | 769 | # Check if this looks like OpenAI content-part format | COMMENT |
| LOW | astrbot/core/provider/sources/openai_source.py | 788 | # Check if the string is a JSON-encoded list (e.g., "[{'type': 'text', ...}]") | COMMENT |
| LOW | astrbot/core/utils/trace.py | 53 | # Check if trace recording is enabled | COMMENT |
| LOW | astrbot/core/agent/mcp_client.py | 790 | # Set running_event to unblock any waiting tasks | COMMENT |
| LOW | astrbot/core/computer/booters/boxlite.py | 49 | # Read file content | COMMENT |
| LOW | astrbot/cli/utils/plugin.py | 315 | # Check if plugin exists | COMMENT |
| LOW | scripts/start-with-neo.sh | 198 | # Check if process is still alive | COMMENT |
| LOW | .github/auto_assign.yml | 19 | # Set 0 to add all the reviewers (default: 0) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …core/agent/runners/dashscope/dashscope_agent_runner.py | 184 | # RAG 引用脚标格式化 | COMMENT |
| MEDIUM | …core/agent/runners/dashscope/dashscope_agent_runner.py | 342 | # 添加 RAG 引用 | COMMENT |
| MEDIUM | docs/en/providers/agent-runners/dashscope.md | 7 | On the [Alibaba Cloud Bailian Application](https://bailian.console.aliyun.com/app-center#/app-center) website, click to | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | astrbot/core/knowledge_base/kb_helper.py | 89 | # More robust regex to handle potential LLM formatting errors (spaces, newlines in tags) | STRING |
| MEDIUM | dashboard/src/components/chat/LiveOrb.vue | 187 | // Repeat once to make it seamless | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/codeql.yml | 55 | # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | scripts/start-with-neo.sh | 5 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | astrbot/core/platform/webhook_server.py | 107 | async def run_task( | CODE |