本项目为xiaozhi-esp32提供后端服务,帮助您快速搭建ESP32设备控制服务器。Backend service for xiaozhi-esp32, helps you quickly build an ESP32 device control server.
This report presents the forensic synthetic code analysis of xinnan-tech/xiaozhi-esp32-server, a JavaScript project with 10,047 GitHub stars. SynthScan v2.0 examined 248,474 lines of code across 978 source files, recording 764 pattern matches distributed across 16 syntactic categories. The overall adjusted score of 3.4 places this repository in the Likely human-written 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).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
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 764 distinct pattern matches across 16 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 | docs/index-stream-integration.md | 100 | except Exception as ex: | CODE |
| LOW | main/digital-human/start.py | 41 | except Exception as e: | CODE |
| LOW | main/digital-human/wakeword_runtime/core/detector.py | 81 | except Exception as exc: | CODE |
| LOW | main/digital-human/wakeword_runtime/core/detector.py | 146 | except Exception as exc: | CODE |
| LOW | main/digital-human/wakeword_runtime/core/detector.py | 152 | except Exception: | CODE |
| LOW | main/digital-human/wakeword_runtime/core/microphone.py | 90 | except Exception: | CODE |
| LOW | …/digital-human/wakeword_runtime/runtime/http_server.py | 160 | except Exception as exc: | CODE |
| LOW | …/digital-human/wakeword_runtime/runtime/http_server.py | 188 | except Exception as exc: | CODE |
| MEDIUM | …/digital-human/wakeword_runtime/runtime/http_server.py | 75 | def handle(self) -> None: | CODE |
| LOW | main/xiaozhi-server/core/auth.py | 71 | except Exception: | CODE |
| LOW | main/xiaozhi-server/core/websocket_server.py | 128 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/websocket_server.py | 141 | except Exception as close_error: | CODE |
| LOW | main/xiaozhi-server/core/websocket_server.py | 202 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/http_server.py | 87 | except Exception as e: | CODE |
| MEDIUM | main/xiaozhi-server/core/http_server.py | 35 | def start(self): | CODE |
| MEDIUM | main/xiaozhi-server/core/connection.py | 283 | def generate_title_task(): | CODE |
| MEDIUM | main/xiaozhi-server/core/connection.py | 303 | def save_memory_task(): | CODE |
| MEDIUM | main/xiaozhi-server/core/connection.py | 603 | def _initialize_components(self): | CODE |
| LOW⚡ | main/xiaozhi-server/core/connection.py | 261 | except Exception as e: | CODE |
| LOW⚡ | main/xiaozhi-server/core/connection.py | 268 | except Exception as final_error: | CODE |
| LOW⚡ | main/xiaozhi-server/core/connection.py | 273 | except Exception as close_error: | CODE |
| LOW⚡ | main/xiaozhi-server/core/connection.py | 313 | except Exception as e: | CODE |
| LOW⚡ | main/xiaozhi-server/core/connection.py | 318 | except Exception: | CODE |
| LOW⚡ | main/xiaozhi-server/core/connection.py | 323 | except Exception as e: | CODE |
| LOW⚡ | main/xiaozhi-server/core/connection.py | 329 | except Exception as close_error: | CODE |
| LOW⚡ | main/xiaozhi-server/core/connection.py | 784 | except Exception as e: | CODE |
| LOW⚡ | main/xiaozhi-server/core/connection.py | 794 | except Exception as e: | CODE |
| LOW⚡ | main/xiaozhi-server/core/connection.py | 1498 | except Exception as e: | CODE |
| LOW⚡ | main/xiaozhi-server/core/connection.py | 1502 | except Exception as e: | CODE |
| LOW⚡ | main/xiaozhi-server/core/connection.py | 1512 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 290 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 295 | except Exception: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 408 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 525 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 546 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 590 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 653 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 823 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 922 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 1124 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 1200 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 1238 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 1337 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 1537 | except Exception: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 1571 | except Exception as cleanup_error: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 1595 | except Exception: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 1613 | except Exception: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 1616 | except Exception as ws_error: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 1628 | except Exception as executor_error: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 1634 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 1696 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 1718 | except Exception as close_error: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 1725 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 1747 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/handle/intentHandler.py | 77 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/handle/intentHandler.py | 170 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/handle/reportHandle.py | 49 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/handle/reportHandle.py | 94 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/handle/reportHandle.py | 123 | except Exception as e: | CODE |
| LOW | main/xiaozhi-server/core/handle/reportHandle.py | 162 | except Exception as e: | CODE |
| 297 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | main/digital-human/wakeword_runtime/core/__init__.py | 1 | CODE | |
| LOW | main/digital-human/wakeword_runtime/core/__init__.py | 1 | CODE | |
| LOW | main/digital-human/wakeword_runtime/core/__init__.py | 2 | CODE | |
| LOW | main/digital-human/wakeword_runtime/core/__init__.py | 3 | CODE | |
| LOW | main/digital-human/wakeword_runtime/config/__init__.py | 1 | CODE | |
| LOW | main/digital-human/wakeword_runtime/config/__init__.py | 1 | CODE | |
| LOW | main/digital-human/wakeword_runtime/config/__init__.py | 2 | CODE | |
| LOW | main/digital-human/wakeword_runtime/plugins/__init__.py | 1 | CODE | |
| LOW | main/digital-human/wakeword_runtime/plugins/__init__.py | 2 | CODE | |
| LOW | main/digital-human/wakeword_runtime/plugins/__init__.py | 3 | CODE | |
| LOW | main/digital-human/wakeword_runtime/plugins/__init__.py | 4 | CODE | |
| LOW | main/digital-human/wakeword_runtime/bridge/__init__.py | 1 | CODE | |
| LOW | main/digital-human/wakeword_runtime/runtime/__init__.py | 1 | CODE | |
| LOW | main/digital-human/wakeword_runtime/runtime/__init__.py | 2 | CODE | |
| LOW | main/xiaozhi-server/core/handle/helloHandle.py | 9 | CODE | |
| LOW | main/xiaozhi-server/core/handle/intentHandler.py | 7 | CODE | |
| LOW | main/xiaozhi-server/core/handle/sendAudioHandle.py | 8 | CODE | |
| LOW | main/xiaozhi-server/core/handle/abortHandle.py | 5 | CODE | |
| LOW | main/xiaozhi-server/core/handle/textHandle.py | 4 | CODE | |
| LOW | main/xiaozhi-server/core/handle/reportHandle.py | 14 | CODE | |
| LOW | main/xiaozhi-server/core/handle/reportHandle.py | 18 | CODE | |
| LOW | main/xiaozhi-server/core/handle/receiveAudioHandle.py | 7 | CODE | |
| LOW | main/xiaozhi-server/core/handle/textMessageProcessor.py | 5 | CODE | |
| LOW | …hi-server/core/handle/textHandler/mcpMessageHandler.py | 5 | CODE | |
| LOW | …server/core/handle/textHandler/listenMessageHandler.py | 7 | CODE | |
| LOW | …hi-server/core/handle/textHandler/iotMessageHandler.py | 5 | CODE | |
| LOW | …-server/core/handle/textHandler/helloMessageHandler.py | 4 | CODE | |
| LOW | …server/core/handle/textHandler/serverMessageHandler.py | 1 | CODE | |
| LOW | …server/core/handle/textHandler/serverMessageHandler.py | 7 | CODE | |
| LOW | …i-server/core/providers/tools/mcp_endpoint/__init__.py | 3 | CODE | |
| LOW | …i-server/core/providers/tools/mcp_endpoint/__init__.py | 4 | CODE | |
| LOW | …i-server/core/providers/tools/mcp_endpoint/__init__.py | 5 | CODE | |
| LOW | …i-server/core/providers/tools/mcp_endpoint/__init__.py | 5 | CODE | |
| LOW | …i-server/core/providers/tools/mcp_endpoint/__init__.py | 5 | CODE | |
| LOW | …i-server/core/providers/tools/mcp_endpoint/__init__.py | 5 | CODE | |
| LOW | …i-server/core/providers/tools/mcp_endpoint/__init__.py | 5 | CODE | |
| LOW | …-server/core/providers/tools/device_iot/iot_handler.py | 9 | CODE | |
| LOW | …zhi-server/core/providers/tools/device_iot/__init__.py | 3 | CODE | |
| LOW | …zhi-server/core/providers/tools/device_iot/__init__.py | 4 | CODE | |
| LOW | …zhi-server/core/providers/tools/device_iot/__init__.py | 4 | CODE | |
| LOW | …zhi-server/core/providers/tools/device_iot/__init__.py | 5 | CODE | |
| LOW | …-server/core/providers/tools/device_mcp/mcp_handler.py | 13 | CODE | |
| LOW | …zhi-server/core/providers/tools/device_mcp/__init__.py | 3 | CODE | |
| LOW | …zhi-server/core/providers/tools/device_mcp/__init__.py | 4 | CODE | |
| LOW | …zhi-server/core/providers/tools/device_mcp/__init__.py | 4 | CODE | |
| LOW | …zhi-server/core/providers/tools/device_mcp/__init__.py | 4 | CODE | |
| LOW | …zhi-server/core/providers/tools/device_mcp/__init__.py | 4 | CODE | |
| LOW | …zhi-server/core/providers/tools/device_mcp/__init__.py | 4 | CODE | |
| LOW | …zhi-server/core/providers/tools/device_mcp/__init__.py | 11 | CODE | |
| LOW | …server/core/providers/tools/device_mcp/mcp_executor.py | 6 | CODE | |
| LOW | …zhi-server/core/providers/tools/server_mcp/__init__.py | 3 | CODE | |
| LOW | …zhi-server/core/providers/tools/server_mcp/__init__.py | 4 | CODE | |
| LOW | …zhi-server/core/providers/tools/server_mcp/__init__.py | 5 | CODE | |
| LOW | …i-server/core/providers/tools/server_mcp/mcp_client.py | 3 | CODE | |
| LOW | …server/core/providers/tools/server_plugins/__init__.py | 3 | CODE | |
| LOW | …core/providers/tools/server_plugins/plugin_executor.py | 7 | CODE | |
| LOW | …n/xiaozhi-server/core/providers/tools/base/__init__.py | 3 | CODE | |
| LOW | …n/xiaozhi-server/core/providers/tools/base/__init__.py | 3 | CODE | |
| LOW | …n/xiaozhi-server/core/providers/tools/base/__init__.py | 4 | CODE | |
| LOW | …xiaozhi-server/core/providers/tools/base/tool_types.py | 7 | CODE | |
| 63 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | main/digital-human/wakeword_runtime/core/detector.py | 129 | CODE | |
| LOW | …/digital-human/wakeword_runtime/bridge/event_bridge.py | 36 | CODE | |
| LOW | …/digital-human/wakeword_runtime/runtime/http_server.py | 64 | CODE | |
| LOW | …/digital-human/wakeword_runtime/runtime/http_server.py | 101 | CODE | |
| LOW | main/xiaozhi-server/core/websocket_server.py | 81 | CODE | |
| LOW | main/xiaozhi-server/core/connection.py | 278 | CODE | |
| LOW | main/xiaozhi-server/core/connection.py | 345 | CODE | |
| LOW | main/xiaozhi-server/core/connection.py | 1034 | CODE | |
| LOW | main/xiaozhi-server/core/connection.py | 1376 | CODE | |
| LOW | main/xiaozhi-server/core/connection.py | 1484 | CODE | |
| LOW | main/xiaozhi-server/core/connection.py | 1522 | CODE | |
| LOW | main/xiaozhi-server/core/connection.py | 1641 | CODE | |
| LOW | main/xiaozhi-server/core/connection.py | 1699 | CODE | |
| LOW | main/xiaozhi-server/core/connection.py | 1730 | CODE | |
| LOW | main/xiaozhi-server/core/handle/intentHandler.py | 83 | CODE | |
| LOW | main/xiaozhi-server/core/handle/intentHandler.py | 157 | CODE | |
| LOW | main/xiaozhi-server/core/handle/sendAudioHandle.py | 315 | CODE | |
| LOW | main/xiaozhi-server/core/handle/receiveAudioHandle.py | 43 | CODE | |
| LOW | …server/core/handle/textHandler/listenMessageHandler.py | 29 | CODE | |
| LOW | …hi-server/core/providers/tools/unified_tool_manager.py | 30 | CODE | |
| LOW | …e/providers/tools/mcp_endpoint/mcp_endpoint_handler.py | 58 | CODE | |
| LOW | …e/providers/tools/mcp_endpoint/mcp_endpoint_handler.py | 286 | CODE | |
| LOW | …-server/core/providers/tools/device_iot/iot_handler.py | 15 | CODE | |
| LOW | …-server/core/providers/tools/device_iot/iot_handler.py | 68 | CODE | |
| LOW | …server/core/providers/tools/device_iot/iot_executor.py | 17 | CODE | |
| LOW | …server/core/providers/tools/device_iot/iot_executor.py | 102 | CODE | |
| LOW | …server/core/providers/tools/device_iot/iot_executor.py | 111 | CODE | |
| LOW | …server/core/providers/tools/device_iot/iot_executor.py | 135 | CODE | |
| LOW | …rver/core/providers/tools/device_iot/iot_descriptor.py | 12 | CODE | |
| LOW | …-server/core/providers/tools/device_mcp/mcp_handler.py | 118 | CODE | |
| LOW | …-server/core/providers/tools/device_mcp/mcp_handler.py | 296 | CODE | |
| LOW | …i-server/core/providers/tools/server_mcp/mcp_client.py | 165 | CODE | |
| LOW | …-server/core/providers/tools/server_mcp/mcp_manager.py | 115 | CODE | |
| LOW | …core/providers/tools/server_plugins/plugin_executor.py | 19 | CODE | |
| LOW | …core/providers/tools/server_plugins/plugin_executor.py | 57 | CODE | |
| LOW | …n/xiaozhi-server/core/providers/llm/fastgpt/fastgpt.py | 21 | CODE | |
| LOW | main/xiaozhi-server/core/providers/llm/gemini/gemini.py | 128 | CODE | |
| LOW | …zhi-server/core/providers/llm/xinference/xinference.py | 33 | CODE | |
| LOW | …zhi-server/core/providers/llm/xinference/xinference.py | 61 | CODE | |
| LOW | main/xiaozhi-server/core/providers/llm/AliBL/AliBL.py | 23 | CODE | |
| LOW | main/xiaozhi-server/core/providers/llm/ollama/ollama.py | 27 | CODE | |
| LOW | main/xiaozhi-server/core/providers/llm/ollama/ollama.py | 94 | CODE | |
| LOW | main/xiaozhi-server/core/providers/llm/dify/dify.py | 22 | CODE | |
| LOW | main/xiaozhi-server/core/providers/llm/openai/openai.py | 91 | CODE | |
| LOW | main/xiaozhi-server/core/providers/llm/openai/openai.py | 137 | CODE | |
| LOW | …re/providers/memory/mem_local_short/mem_local_short.py | 135 | CODE | |
| LOW | …ozhi-server/core/providers/memory/powermem/powermem.py | 40 | CODE | |
| LOW | …ozhi-server/core/providers/memory/powermem/powermem.py | 150 | CODE | |
| LOW | …ozhi-server/core/providers/memory/powermem/powermem.py | 218 | CODE | |
| LOW | …/xiaozhi-server/core/providers/memory/mem0ai/mem0ai.py | 33 | CODE | |
| LOW | …/xiaozhi-server/core/providers/memory/mem0ai/mem0ai.py | 72 | CODE | |
| LOW | …-server/core/providers/intent/intent_llm/intent_llm.py | 135 | CODE | |
| LOW | …xiaozhi-server/core/providers/asr/sherpa_onnx_local.py | 38 | CODE | |
| LOW | main/xiaozhi-server/core/providers/asr/doubao_stream.py | 69 | CODE | |
| LOW | main/xiaozhi-server/core/providers/asr/doubao_stream.py | 159 | CODE | |
| LOW | …n/xiaozhi-server/core/providers/asr/aliyunbl_stream.py | 157 | CODE | |
| LOW | main/xiaozhi-server/core/providers/asr/aliyun_stream.py | 196 | CODE | |
| LOW | main/xiaozhi-server/core/providers/asr/xunfei_stream.py | 122 | CODE | |
| LOW | main/xiaozhi-server/core/providers/asr/xunfei_stream.py | 188 | CODE | |
| LOW | main/xiaozhi-server/core/providers/asr/vosk.py | 46 | CODE | |
| 66 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/context-provider-integration.md | 130 | class MockRequestHandler(http.server.SimpleHTTPRequestHandler): | CODE |
| LOW | main/digital-human/js/core/network/wakeword-bridge.js | 13 | export function startWakewordBridgeListener() { | CODE |
| LOW | main/digital-human/js/core/network/wakeword-bridge.js | 122 | export function stopWakewordBridgeListener() { | CODE |
| LOW | main/digital-human/js/core/network/wakeword-bridge.js | 139 | export function sendWakewordBridgeMessage(type, payload = {}, requestId = null) { | CODE |
| LOW | main/digital-human/js/core/network/wakeword-bridge.js | 191 | function parseWakewordBridgeMessage(rawData) { | CODE |
| LOW | main/digital-human/js/core/network/wakeword-bridge.js | 219 | function rejectAllWakewordRequests(errorMessage) { | CODE |
| LOW | main/digital-human/js/core/mcp/tools.js | 211 | function updatePropertyRangeVisibility() { | CODE |
| LOW | main/digital-human/js/core/audio/recorder.js | 344 | export async function checkMicrophoneAvailability() { | CODE |
| LOW | …digital-human/wakeword_runtime/config/config_loader.py | 138 | def _load_wake_words_from_keywords_file(model_dir: Path) -> list[str]: | CODE |
| LOW | …/digital-human/wakeword_runtime/runtime/http_server.py | 151 | def _build_wakeword_config_message(self, bridge: WakewordEventBridge) -> str: | CODE |
| LOW | …/digital-human/wakeword_runtime/runtime/http_server.py | 275 | def _receive_websocket_message(self) -> str | None: | CODE |
| LOW | main/digital-human/wakeword_runtime/runtime/app.py | 67 | def handle_wake_word_detected(self, wake_word: str, full_text: str) -> None: | CODE |
| LOW | main/manager-mobile/src/utils/index.ts | 18 | export function clearServerBaseUrlOverride() { | CODE |
| LOW | main/manager-mobile/src/pages/settings/index.vue | 207 | function clearAllCacheAfterUrlChange() { | CODE |
| LOW | main/manager-mobile/src/pages/agent/edit.vue | 173 | function buildCurrentEditableState() { | CODE |
| LOW | main/manager-mobile/src/pages/agent/edit.vue | 190 | function buildOriginalEditableState() { | CODE |
| LOW | main/manager-mobile/src/pages/agent/edit.vue | 302 | function openContextProviderDialog() { | CODE |
| LOW | main/manager-mobile/src/pages/agent/edit.vue | 345 | function applyPersistedAgentDetail(detail: AgentDetail, targetAgentId: string) { | CODE |
| LOW | main/manager-mobile/src/pages/agent/edit.vue | 370 | async function enhanceAgentDetailMetadata(detail: AgentDetail, targetAgentId: string, requestId: number) { | CODE |
| LOW | main/manager-mobile/src/pages/agent/edit.vue | 396 | function isActiveAgentDetailRequest(targetAgentId: string, requestId: number) { | CODE |
| LOW | main/manager-mobile/src/pages/agent/edit.vue | 400 | function invalidateTtsMetadataRequest() { | CODE |
| LOW | main/manager-mobile/src/pages/agent/edit.vue | 1081 | async function reloadAgentAfterSnapshotRestore(targetAgentId = agentId.value) { | CODE |
| LOW | …bile/src/pages/agent/components/AgentSnapshotPanel.vue | 335 | function invalidateSnapshotRequest() { | CODE |
| LOW | …bile/src/pages/agent/components/AgentSnapshotPanel.vue | 628 | async function requestRestoreConfirmation(options: Parameters<typeof message.confirm>[0]) { | CODE |
| LOW | …bile/src/pages/agent/components/AgentSnapshotPanel.vue | 919 | async function ensureCorrectWordMetadata(...snapshots: AgentSnapshotData[]) { | CODE |
| LOW | main/xiaozhi-server/performance_tester.py | 8 | def list_performance_tester_modules(): | CODE |
| LOW⚡ | main/xiaozhi-server/core/connection.py | 334 | async def _discard_message_with_bind_prompt(self): | CODE |
| LOW⚡ | main/xiaozhi-server/core/connection.py | 797 | async def _initialize_private_config_async(self): | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 382 | async def _process_mqtt_audio_message(self, message): | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 670 | def _inject_tool_call_fewshot(self): | CODE |
| LOW | main/xiaozhi-server/core/connection.py | 1751 | def _extract_direct_answer_response(arguments_str): | CODE |
| LOW | …aozhi-server/core/handle/textMessageHandlerRegistry.py | 22 | def _register_default_handlers(self) -> None: | CODE |
| LOW | main/xiaozhi-server/core/handle/sendAudioHandle.py | 58 | async def _wait_for_audio_completion(conn: "ConnectionHandler"): | CODE |
| LOW | main/xiaozhi-server/core/handle/sendAudioHandle.py | 147 | def _get_or_create_rate_controller( | CODE |
| LOW | main/xiaozhi-server/core/handle/sendAudioHandle.py | 227 | async def _send_audio_with_rate_control( | CODE |
| LOW⚡ | …hi-server/core/providers/tools/unified_tool_handler.py | 109 | def _initialize_home_assistant(self): | CODE |
| LOW⚡ | …hi-server/core/providers/tools/unified_tool_handler.py | 124 | def current_support_functions(self) -> List[str]: | CODE |
| LOW | …hi-server/core/providers/tools/unified_tool_manager.py | 49 | def get_function_descriptions(self) -> List[Dict[str, Any]]: | CODE |
| LOW | …e/providers/tools/mcp_endpoint/mcp_endpoint_handler.py | 58 | async def handle_mcp_endpoint_message(mcp_client: MCPEndpointClient, message: str): | CODE |
| LOW | …e/providers/tools/mcp_endpoint/mcp_endpoint_handler.py | 224 | async def send_mcp_endpoint_initialize(mcp_client: MCPEndpointClient): | CODE |
| LOW | …e/providers/tools/mcp_endpoint/mcp_endpoint_handler.py | 247 | async def send_mcp_endpoint_notification(mcp_client: MCPEndpointClient, method: str): | CODE |
| LOW | …e/providers/tools/mcp_endpoint/mcp_endpoint_handler.py | 259 | async def send_mcp_endpoint_tools_list(mcp_client: MCPEndpointClient): | CODE |
| LOW | …e/providers/tools/mcp_endpoint/mcp_endpoint_handler.py | 271 | async def send_mcp_endpoint_tools_list_continue( | CODE |
| LOW | …re/providers/tools/mcp_endpoint/mcp_endpoint_client.py | 74 | async def register_call_result_future(self, id: int, future: Future): | CODE |
| LOW | …-server/core/providers/tools/device_mcp/mcp_handler.py | 79 | async def register_call_result_future(self, id: int, future: Future): | CODE |
| LOW | …-server/core/providers/tools/device_mcp/mcp_handler.py | 238 | async def send_mcp_initialize_message(conn: "ConnectionHandler"): | CODE |
| LOW | …-server/core/providers/tools/device_mcp/mcp_handler.py | 273 | async def send_mcp_tools_list_request(conn: "ConnectionHandler"): | CODE |
| LOW | …-server/core/providers/tools/device_mcp/mcp_handler.py | 284 | async def send_mcp_tools_list_continue_request(conn: "ConnectionHandler", cursor: str): | CODE |
| LOW | …i-server/core/providers/tools/device_mcp/mcp_client.py | 72 | async def register_call_result_future(self, id: int, future: Future): | CODE |
| LOW | …core/providers/tools/server_plugins/plugin_executor.py | 112 | def _init_news_source_description(self, func_item, func_name): | CODE |
| LOW | main/xiaozhi-server/core/providers/llm/system_prompt.py | 1 | def get_system_prompt_for_function(functions: str) -> str: | CODE |
| LOW | main/xiaozhi-server/core/providers/asr/doubao_stream.py | 349 | def generate_audio_default_header(self): | CODE |
| LOW | main/xiaozhi-server/core/providers/asr/doubao_stream.py | 358 | def generate_last_audio_default_header(self): | CODE |
| LOW | main/xiaozhi-server/core/providers/tts/index_stream.py | 75 | def _process_remaining_text_stream(self, is_last=False): | CODE |
| LOW | main/xiaozhi-server/core/providers/tts/index_stream.py | 187 | def audio_to_opus_data_stream( | CODE |
| LOW | …zhi-server/core/providers/tts/huoshan_double_stream.py | 488 | async def _start_monitor_tts_response(self): | CODE |
| LOW | …zhi-server/core/providers/tts/huoshan_double_stream.py | 712 | def audio_to_opus_data_stream( | CODE |
| LOW | …zhi-server/core/providers/tts/huoshan_double_stream.py | 726 | def wav_to_opus_data_audio_raw_stream(self, raw_data_var, is_end=False, callback: Callable[[Any], Any]=None): | CODE |
| LOW | main/xiaozhi-server/core/providers/tts/aliyun_stream.py | 417 | async def _start_monitor_tts_response(self): | CODE |
| LOW | main/xiaozhi-server/core/providers/tts/aliyun_stream.py | 484 | def audio_to_opus_data_stream( | CODE |
| 30 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …/manager-web/public/generator/assets/index-Guo1hQ-y.js | 69 | Check: https://github.com/renzhezhilu/gifsicle-wasm-browser`},testType(A){return A instanceof Element?"element":Object. | CODE |
| CRITICAL | …modules/model/service/impl/ModelConfigServiceImpl.java | 260 | // com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator(UUID.replace("-","")) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | main/manager-mobile/vite.config.ts | 21 | import AutoImport from 'unplugin-auto-import/vite' | COMMENT |
| LOW | main/xiaozhi-server/config.yaml | 1 | # 在开发中,请在项目根目录创建data目录,然后在data目录创建名称为【.config.yaml】的空文件 | COMMENT |
| LOW | main/xiaozhi-server/config.yaml | 21 | # 视觉分析接口地址 | COMMENT |
| LOW | main/xiaozhi-server/config.yaml | 241 | # TTS将根据配置名称对应的type调用实际的TTS适配器 | COMMENT |
| LOW | main/xiaozhi-server/config.yaml | 301 | # 费用说明:PowerMem本身免费,实际费用取决于所选LLM和数据库 | COMMENT |
| LOW | main/xiaozhi-server/config.yaml | 341 | # port: 2881 | COMMENT |
| LOW | main/xiaozhi-server/config.yaml | 461 | # 平台地址:https://nls-portal.console.aliyun.com/ | COMMENT |
| LOW | main/xiaozhi-server/config.yaml | 501 | # 语言参数,1537为普通话,具体参考:https://ai.baidu.com/ai-doc/SPEECH/0lbxfnc9b | COMMENT |
| LOW | main/xiaozhi-server/config.yaml | 521 | # 2.创建api-key https://console.groq.com/keys | COMMENT |
| LOW | main/xiaozhi-server/config.yaml | 561 | # 讯飞流式语音识别服务 | COMMENT |
| LOW | main/xiaozhi-server/config.yaml | 801 | # 在页面底部获取appid和access_token | COMMENT |
| LOW | main/xiaozhi-server/config.yaml | 821 | # 高级文本处理配置(additions)- 用户可自定义添加火山引擎支持的任何高级参数 | COMMENT |
| LOW | main/xiaozhi-server/config.yaml | 881 | # language: "中文" # 指定输出语种,如:中文、英语、日语、韩语等,请根据所选音色支持的语言进行设置,不填则默认为中文 | COMMENT |
| LOW | main/xiaozhi-server/config.yaml | 981 | # pitch: 0 | COMMENT |
| LOW | main/xiaozhi-server/config.yaml | 1001 | # 阿里云智能语音交互服务,需要先在阿里云平台开通服务,然后获取验证信息 | COMMENT |
| LOW | main/xiaozhi-server/config.yaml | 1021 | # 阿里云CosyVoice大模型流式文本语音合成 | COMMENT |
| LOW | main/xiaozhi-server/config.yaml | 1041 | # speech_rate: 0 # 语速:-500到500 | COMMENT |
| LOW | main/xiaozhi-server/config.yaml | 1061 | # 302AI语音合成服务,需要先在302平台创建账户充值,并获取密钥信息 | COMMENT |
| LOW | main/xiaozhi-server/config.yaml | 1161 | api_key: 你的api_key | COMMENT |
| LOW | main/xiaozhi-server/config_from_api.yaml | 1 | # 如果你只想轻量化安装xiaozhi-server,只使用本地的配置文件,不需要理会这个文件,不需要改动本文件任何东西 | COMMENT |
| LOW | main/xiaozhi-server/config_from_api.yaml | 21 | # 你的manager-api的地址,最好使用局域网ip | COMMENT |
| LOW | main/manager-web/src/views/ModelConfig.vue | 741 | // padding: 16px 0; | COMMENT |
| LOW | main/manager-web/src/views/ModelConfig.vue | 761 | // border: none; | COMMENT |
| LOW | main/manager-web/src/views/ModelConfig.vue | 781 | // .batch-actions .el-button--danger { | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …zhi-server/core/providers/tts/huoshan_double_stream.py | 0 | 重写父类方法:使用独立的临时编码器处理音频文件,避免与tts流式编码器并发冲突。 双流式tts中,monitor任务在event loop线程接收tts音频并使用self.opus_encoder编码, 同时tts_text_priorit | STRING |
| HIGH | main/xiaozhi-server/core/providers/tts/aliyun_stream.py | 0 | 重写父类方法:使用独立的临时编码器处理音频文件,避免与tts流式编码器并发冲突。 双流式tts中,monitor任务在event loop线程接收tts音频并使用self.opus_encoder编码, 同时tts_text_priorit | STRING |
| HIGH | main/xiaozhi-server/core/providers/tts/xunfei_stream.py | 0 | 重写父类方法:使用独立的临时编码器处理音频文件,避免与tts流式编码器并发冲突。 双流式tts中,monitor任务在event loop线程接收tts音频并使用self.opus_encoder编码, 同时tts_text_priorit | STRING |
| HIGH | main/xiaozhi-server/core/providers/tts/alibl_stream.py | 0 | 重写父类方法:使用独立的临时编码器处理音频文件,避免与tts流式编码器并发冲突。 双流式tts中,monitor任务在event loop线程接收tts音频并使用self.opus_encoder编码, 同时tts_text_priorit | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | main/digital-human/wakeword_runtime/core/detector.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | main/digital-human/wakeword_runtime/core/microphone.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | …in/digital-human/wakeword_runtime/plugins/wake_word.py | 7 | logger = logging.getLogger(__name__) | CODE |
| LOW | main/digital-human/wakeword_runtime/plugins/audio.py | 7 | logger = logging.getLogger(__name__) | CODE |
| LOW | …/digital-human/wakeword_runtime/bridge/event_bridge.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | …/digital-human/wakeword_runtime/runtime/http_server.py | 42 | def set_restart_handler(self, handler: Callable[[], None]) -> None: | CODE |
| LOW | main/digital-human/wakeword_runtime/runtime/app.py | 7 | logger = logging.getLogger(__name__) | CODE |
| LOW | …i-server/core/providers/tools/mcp_endpoint/__init__.py | 13 | __all__ = [ | CODE |
| LOW | …zhi-server/core/providers/tools/device_iot/__init__.py | 7 | __all__ = [ | CODE |
| LOW | …zhi-server/core/providers/tools/device_mcp/__init__.py | 13 | __all__ = [ | CODE |
| LOW | …zhi-server/core/providers/tools/server_mcp/__init__.py | 7 | __all__ = ["ServerMCPManager", "ServerMCPExecutor", "ServerMCPClient"] | CODE |
| LOW | …server/core/providers/tools/server_plugins/__init__.py | 5 | __all__ = ["ServerPluginExecutor"] | CODE |
| LOW | …n/xiaozhi-server/core/providers/tools/base/__init__.py | 6 | __all__ = ["ToolType", "ToolDefinition", "ToolExecutor"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/readme/README_pt_BR.md | 333 | ### RAG Geração Aumentada por Recuperação | COMMENT |
| MEDIUM | main/xiaozhi-server/core/connection.py | 687 | # === few-shot 示例(is_temporary)=== | COMMENT |
| MEDIUM | main/xiaozhi-server/core/utils/dialogue.py | 150 | # 第二段:few-shot 示例(会话内不变) | COMMENT |
| MEDIUM | main/xiaozhi-server/core/utils/dialogue.py | 157 | # 第三段:实际对话历史(不含 few-shot) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …n/manager-mobile/src/pages/login/user-agreement-en.vue | 374 | 8.1 AI-Generated Content: The Service relies on third-party AI models to provide intelligent interaction cap | CODE |
| HIGH | main/manager-web/public/user-agreement-en.html | 233 | interaction capabilities. The content generated by AI may be inaccurate, incomplete, or inappropriate. The | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …i-server/core/providers/tools/server_mcp/mcp_client.py | 116 | 调用指定工具 Args: name: 工具名称 arguments: 工具参数 read_timeout_seconds: p | STRING |
| HIGH | main/xiaozhi-server/core/providers/asr/utils.py | 29 | 解析 FunASR 识别结果,按顺序提取标签和纯文本内容 Args: text: ASR 识别的原始文本,可能包含多种标签 Returns: dict: {"language": | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …hi-server/performance_tester/performance_tester_asr.py | 97 | and str(config[field]).lower() in ["你的", "placeholder", "none", "null", ""] | CODE |
| LOW | …hi-server/performance_tester/performance_tester_asr.py | 322 | and str(config[field]).lower() in ["你的", "placeholder", "none", "null", ""] | CODE |
| LOW | …hi-server/performance_tester/performance_tester_tts.py | 39 | and any(x in config[field] for x in ["你的", "placeholder"]) | CODE |
| LOW | …hi-server/performance_tester/performance_tester_llm.py | 254 | x in config["api_key"] for x in ["你的", "placeholder", "sk-xxx"] | CODE |
| LOW | …hi-server/performance_tester/performance_tester_llm.py | 471 | x in config["api_key"] for x in ["你的", "placeholder", "sk-xxx"] | CODE |
| LOW | …i-server/performance_tester/performance_tester_vllm.py | 38 | x in config["api_key"] for x in ["你的", "placeholder", "sk-xxx"] | CODE |
| LOW | …i-server/performance_tester/performance_tester_vllm.py | 161 | x in config["api_key"] for x in ["你的", "placeholder", "sk-xxx"] | CODE |
| LOW | …/manager-web/public/generator/assets/index-Guo1hQ-y.js | 55 | Vui lòng tải lại hình ảnh biểu tượng cảm xúc tùy chỉnh.`,incompatibleEmojiData:"Phát hiện dữ liệu biểu tượng cảm xúc khô | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …re/providers/tools/mcp_endpoint/mcp_endpoint_client.py | 30 | # Check if the cache is valid | COMMENT |
| LOW | …-server/core/providers/tools/device_mcp/mcp_handler.py | 35 | # Check if the cache is valid | COMMENT |
| LOW | …i-server/core/providers/tools/device_mcp/mcp_client.py | 28 | # Check if the cache is valid | COMMENT |
| LOW | main/xiaozhi-server/core/providers/tts/fishspeech.py | 25 | ): # Check if audio is a string (Base64) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | main/xiaozhi-server/core/providers/tts/fishspeech.py | 95 | self.api_key = config.get("api_key", "YOUR_API_KEY") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | main/xiaozhi-server/core/connection.py | 1803 | CODE | |
| LOW | …models/snakers4_silero-vad/src/silero_vad/utils_vad.py | 191 | CODE | |
| LOW | …models/snakers4_silero-vad/src/silero_vad/utils_vad.py | 91 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | main/xiaozhi-server/core/providers/llm/base.py | 31 | # For providers that don't support functions, just return regular response | COMMENT |