github Python re-analysis due

SxLiuYu/charlie-voice-assistant

github

Charlie 语音助手 — 本地部署的私人AI助理,零配置Demo模式开箱即用,支持语音交互、ESP32开发板终端、飞书推送、MCP技能扩展。ASR→大脑→TTS语音闭环,Demo规则模式无需任何API key即可对话。

maintainer
SxLiuYu
license
first seen
2026-08-12
last seen
2026-08-14
releases · 30d
3
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
  2. HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
  3. HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
  4. HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
  5. HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
  6. HIGH code analysis flagged dynamic code execution in SxLiuYu/charlie-voice-assistant
  7. HIGH code analysis flagged dynamic code execution in SxLiuYu/charlie-voice-assistant
  8. HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
  9. HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
  10. HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
  11. HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
  12. HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
  13. HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
  14. HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
  15. HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
  16. HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
  17. HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
  18. HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
capabilities 111 tools
transport http counts 111 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • _get_default_city
  • ac_control
  • ac_status
  • add_clothing
  • add_recipe
  • add_reminder
  • add_shopping_item
  • browse_damai
  • browse_dianping
  • browse_douyin
  • browse_feishu
  • browse_jd
  • browse_maoyan
  • browse_meituan
  • browse_page
  • browse_pdd
  • browse_taobao
  • browse_toutiao
  • browse_xianyu
  • calculate
  • clear_shopping_list
  • click_element
  • compare_price
  • control_tesla_ac
  • correct
  • daily_summary
  • dedup
  • deep_research
  • evolution_status
  • execute_scene
  • fill_form
  • forget
  • generate_recipe
  • get_air_quality
  • get_calendar
  • get_calendar_today
  • get_current_time
  • get_detailed_weather
  • get_earthquake_alert
  • get_exchange_rate
  • get_holiday_info
  • get_location
  • get_market_overview
  • get_my_location
  • get_news
  • get_recipe
  • get_sports
  • get_stock
  • get_trending
  • get_video_info
  • good_morning
  • goodnight
  • habit_streak
  • habit_today
  • habit_week
  • learn_from_history
  • learn_protocol
  • leaving_home
  • list_alarms
  • list_messages
  • list_notes
  • list_playlists
  • list_protocols
  • list_recipes
  • list_shopping_items
  • log_habit
  • memory_status
  • movie_time
  • on_this_day
  • open_alipay
  • open_lifestyle_app
  • open_wechat
  • play_music
  • play_playlist
  • play_random_music
  • play_white_noise
  • random_recipe
  • read_page
  • recall
  • recommend_by_context
  • recommend_daily
  • recommend_recipe
  • remove_clothing
  • run_code
  • save_note
  • schedule_task
  • screenshot
  • search_charging_stations
  • search_docs
  • search_jd
  • search_music
  • search_products
  • search_recipe
  • search_videos
  • search_web
  • self_optimize
  • send_message
  • set_alarm
  • set_speech_speed
  • set_timer
  • set_volume
  • shopping_search
  • stop_music
  • suggest_preferences
  • system_status
  • translate
  • wardrobe_list
  • web_search
  • web_search_free
  • weekly_summary
  • yesterday_summary
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit deb5cda · analyzer v32 · 42m ago

skills & prompt files 39

danger signals4

code evidence vv3.5.0 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 136

filesystem 44

  • fs SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/social-media-publishing/publish.py :9 from pathlib import Path
  • fs (weak) SxLiuYu-charlie-voice-assistant-deb5cda/scripts/download-models.py :38 with tarfile.open(archive, "r:bz2") as tf:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/agent/asr_tts.py :32 with open(BAIDU_TOKEN_FILE) as f:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/agent/history.py :49 with open(HISTORY_LOCK_FILE, "a+", encoding="utf-8") as lock_file:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/agent/preferences.py :29 with open(PREFS_LOCK_FILE, "a+", encoding="utf-8") as lock_file:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/agent/system_msg.py :106 with open(_evolution_file, 'r', encoding='utf-8') as _f:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/app/audio.py :34 with wave.open(io.BytesIO(data), "rb") as wav:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/app/cert.py :43 with open(key_path, "wb") as f:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/app/magic_base.py :92 with open(path, "r", encoding="utf-8") as f:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/app/preflight.py :7 import shutil
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/app/reminders.py :39 with open(REMINDERS_LOCK_FILE, "a+", encoding="utf-8") as lock_file:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/app/xiaozhi_codec.py :56 with open(path, "rb") as f:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/app/xiaozhi_ws.py :764 # Firmware v2.1 keeps the WS open (and disables its local
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/charlie_main.py :15 import shutil
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/cli_voice_service.py :67 bio = wave.open(io := tempfile.SpooledTemporaryFile(), "wb")
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/hardware/local_wake.py :231 with wave.open(wav_buffer, 'wb') as wf:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/integrations/magic_phone_cli.py :43 os.unlink(temp_output)
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/integrations/personalized_push.py :38 with open(_PUSHED_FILE, "r", encoding="utf-8") as f:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/make_portable_zip.py :25 os.remove(OUT)
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/browser_actions.py :15 from pathlib import Path
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-browser.py :165 with open(tmp_path, 'rb') as f:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-decisions.py :178 with open(FEEDBACK_FILE, 'r', encoding='utf-8') as f:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-evolution.py :28 with open(_get_evolution_file(), 'r', encoding='utf-8') as f:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-habits.py :21 with open(HABITS_FILE, 'r', encoding='utf-8') as f:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-memory.py :103 with open(_get_memory_file(), 'r', encoding='utf-8') as f:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-notes.py :31 with open(filepath, "w", encoding="utf-8") as f:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-recipe.py :39 with open(RECIPE_FILE, "r", encoding="utf-8") as f:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-scenes.py :72 with open(PROTOCOLS_FILE, 'r', encoding='utf-8') as f:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-summary.py :27 with open(history_file, 'r', encoding='utf-8') as f:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-system.py :46 import shutil
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-wardrobe.py :81 with open(WARDROBE_FILE, 'r', encoding='utf-8') as f:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/test_system.py :88 data = _j.load(open(rf))
  • fs (weak) SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/conftest.py :33 import shutil
  • fs (weak) SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/test_audio_activity.py :12 with wave.open(buf, "wb") as wav:
  • fs (weak) SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/test_core.py :37 os.remove(os.path.join(TMP_DIR, f))
  • fs (weak) SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/test_decisions.py :31 with open(mod.__file__, "r", encoding="utf-8") as f:
  • fs (weak) SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/test_runtime_resilience.py :2 from pathlib import Path
  • fs (weak) SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/test_security_fixes.py :75 result = self._eval("open('/etc/passwd')")
  • fs (weak) SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/test_utils.py :195 with open(path, "r", encoding="utf-8") as f:
  • fs (weak) SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/test_voice_agent.py :215 with open({lock_file!r}, "a+", encoding="utf-8") as lock_file:
  • fs (weak) SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/test_voice_server.py :22 with wave.open(buf, "wb") as wav:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/utils.py :18 with open(path, "a+", encoding="utf-8") as lock_file:
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/voice_agent.py :883 import shutil
  • fs SxLiuYu-charlie-voice-assistant-deb5cda/src/voice_server.py :476 with open(TUNNEL_FILE, encoding="utf-8") as f:

shell / exec 23

  • shell SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/social-media-publishing/publish.py :7 import subprocess
  • shell SxLiuYu-charlie-voice-assistant-deb5cda/src/agent/asr_tts.py :268 r = subprocess.run(
  • shell SxLiuYu-charlie-voice-assistant-deb5cda/src/app/audio.py :70 r = subprocess.run(
  • shell SxLiuYu-charlie-voice-assistant-deb5cda/src/app/cert.py :81 import subprocess
  • shell SxLiuYu-charlie-voice-assistant-deb5cda/src/app/xiaozhi_codec.py :11 import subprocess
  • shell SxLiuYu-charlie-voice-assistant-deb5cda/src/app/xiaozhi_ws.py :16 import subprocess
  • shell SxLiuYu-charlie-voice-assistant-deb5cda/src/charlie_main.py :25 import subprocess as _sp
  • shell SxLiuYu-charlie-voice-assistant-deb5cda/src/cli_voice_service.py :15 subprocess.run(["afplay", path], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
  • shell SxLiuYu-charlie-voice-assistant-deb5cda/src/hardware/presence.py :13 import subprocess
  • shell SxLiuYu-charlie-voice-assistant-deb5cda/src/integrations/baize_skills_mcp.py :53 import subprocess
  • shell SxLiuYu-charlie-voice-assistant-deb5cda/src/integrations/magic_phone_cli.py :18 out = subprocess.run(["ffmpeg","-f","avfoundation","-list_devices","true","-i",""],
  • shell SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-music.py :4 import subprocess, json as _json, random
  • shell SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-reminder.py :94 import subprocess, platform
  • shell SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-scenes.py :184 subprocess.run(["osascript", "-e", f"set volume output volume {level}"], timeout=5)
  • shell SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-system.py :16 import subprocess, platform
  • shell (weak) SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/test_question_paths.py :6 import subprocess
  • shell (weak) SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/test_runtime_resilience.py :11 import subprocess
  • shell (weak) SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/test_utils.py :307 proc = subprocess.Popen([sys.executable, "-c", script])
  • shell (weak) SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/test_voice_agent.py :207 import subprocess
  • shell (weak) SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/test_voice_server.py :1390 from subprocess import CompletedProcess
  • shell (weak) SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/test_xiaozhi_ws.py :15 import subprocess
  • shell SxLiuYu-charlie-voice-assistant-deb5cda/src/voice_agent.py :583 import subprocess, tempfile, os as _os, re as _re
  • shell SxLiuYu-charlie-voice-assistant-deb5cda/src/voice_server.py :791 subprocess.run(["afplay", tmp_path], timeout=30, capture_output=True)

network 42

  • net (weak) SxLiuYu-charlie-voice-assistant-deb5cda/scripts/download-models.py :12 import urllib.request
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/agent/asr_tts.py :351 import requests as _req
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/agent/retry.py :6 import requests
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/app/cert.py :4 import socket
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/app/config.py :4 import socket
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/app/environment.py :23 r = requests.get("https://geocoding-api.open-meteo.com/v1/search",
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/app/exchange_rate.py :21 r = requests.get(f"https://open.er-api.com/v6/latest/{base}", timeout=10)
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/app/finance.py :73 r = requests.get(
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/app/geo.py :18 r = requests.get(url, params={"lang": "zh-CN"}, timeout=10)
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/app/holiday.py :19 r = requests.get(
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/app/llm_config.py :94 import requests as _req
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/app/mqtt_server.py :124 self._udp_sock: Optional[socket.socket] = None
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/app/ntfy_push.py :14 import requests
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/app/on_this_day.py :26 r = requests.get(
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/app/routes/system.py :9 import socket
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/app/sports.py :32 r = requests.get(
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/app/weather.py :41 geo = requests.get("https://restapi.amap.com/v3/geocode/geo",
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/app/xiaozhi_ws.py :184 import requests as _r
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/integrations/baize_skills_mcp.py :26 r = requests.post(DASHSCOPE, headers={"Authorization": f"Bearer {ALIYUN}", "Content-Type": "application/json"},
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/integrations/feishu_bot.py :44 import requests
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/integrations/personalized_push.py :115 r = requests.get("https://www.douyin.com/aweme/v1/web/hot/search/list/",
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/integrations/tuya_api.py :21 import requests
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/browser_actions.py :63 r = requests.post(f"{FEISHU_BASE}/auth/v3/tenant_access_token/internal",
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-douyin.py :27 r = requests.get("https://www.douyin.com/aweme/v1/web/search/item/",
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-feishu.py :30 r = requests.post(f"{FEISHU_BASE}/auth/v3/tenant_access_token/internal",
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-info.py :46 r = requests.get("https://ok.surf/api/v1/cors/news-feed",
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-life.py :13 from urllib.parse import quote
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-recipe.py :181 import requests
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-scenes.py :100 r = requests.get("https://restapi.amap.com/v3/weather/weatherInfo",
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-summary.py :123 import requests
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-system.py :90 import socket, platform, time as _t
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-taobao.py :27 r = requests.get("https://s.taobao.com/search",
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-wardrobe.py :108 r = requests.get("https://restapi.amap.com/v3/config/district",
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/mcp_common.py :21 r = requests.post(DASHSCOPE, headers={"Authorization": f"Bearer {ALIYUN}", "Content-Type": "application/json"},
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/test_system.py :21 r = requests.get(f"{HOST}/health", timeout=5)
  • net (weak) SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/test_config.py :33 import socket
  • net (weak) SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/test_runtime_resilience.py :5 import requests
  • net (weak) SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/test_voice_agent.py :9 import requests
  • net (weak) SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/test_voice_server.py :475 import socket as socket_module
  • net (weak) SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/test_xiaozhi_ws.py :14 import socket
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/voice_agent.py :115 import requests.adapters
  • net SxLiuYu-charlie-voice-assistant-deb5cda/src/voice_server.py :18 import socket

secrets 26

  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/agent/asr_tts.py :18 BAIDU_API_KEY = os.getenv("BAIDU_API_KEY", "")
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/agent/system_msg.py :158 _ark_key = (os.getenv("ARK_KEY") or "").strip()
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/app/auth.py :9 AUTH_TOKEN = os.getenv("AUTH_TOKEN", "")
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/app/llm_config.py :18 ARK_KEY = os.getenv("ARK_KEY", "")
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/app/mcp_registry.py :46 "env": {"TAVILY_API_KEY": os.getenv("TAVILY_API_KEY", ""),
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/app/mqtt_server.py :148 password = os.getenv("MQTT_PASSWORD", "")
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/app/routes/system.py :64 return (http_port(), https_port(), bool(os.getenv("AUTH_TOKEN", "").strip()))
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/app/weather.py :32 amap = os.getenv("AMAP_KEY", os.getenv("AMAP_MAPS_API_KEY", ""))
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/app/xiaozhi_ws.py :181 api_key = os.getenv("FINNA_API_KEY", "")
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/integrations/baize_skills_mcp.py :20 TAVILY = os.getenv("TAVILY_API_KEY", "")
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/integrations/feishu_bot.py :40 app_secret = os.getenv("FEISHU_APP_SECRET", "")
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/integrations/personalized_push.py :23 AGNES_KEY = os.getenv("AGNES_KEY", "")
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/integrations/tuya_api.py :93 api_key = os.environ.get("TUYA_API_KEY")
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/integrations/tuya_proxy.py :13 if not os.getenv("TUYA_API_KEY"):
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/browser_actions.py :19 FEISHU_APP_SECRET = os.getenv("FEISHU_APP_SECRET", "")
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-feishu.py :17 FEISHU_APP_SECRET = os.getenv("FEISHU_APP_SECRET", "")
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-info.py :110 amap_key = os.getenv("AMAP_KEY", "")
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-life.py :45 AMAP = os.getenv("AMAP_KEY", os.getenv("AMAP_MAPS_API_KEY", ""))
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-recipe.py :175 ark_key = os.getenv("ARK_KEY", "")
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-scenes.py :98 AMAP = os.getenv("AMAP_KEY", "")
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-summary.py :124 ark_key = os.getenv("ARK_KEY", "")
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-wardrobe.py :104 amap_key = os.getenv("AMAP_KEY", "")
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/mcp_common.py :8 ALIYUN = os.getenv("ALIYUN_API_KEY", "")
  • secrets (weak) SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/test_runtime_resilience.py :18 "os.environ['GLM_KEY']='test'; "
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/voice_agent.py :40 ARK_KEY = os.getenv("ARK_KEY", "")
  • secrets SxLiuYu-charlie-voice-assistant-deb5cda/src/voice_server.py :684 app_secret = os.getenv("FEISHU_APP_SECRET", "")

database 2

  • db SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/social-media-publishing/publish.py :13 import sqlite3, shutil
  • db SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/browser_actions.py :39 import sqlite3, shutil, tempfile

tool registrations 112

  • web_search_free SxLiuYu-charlie-voice-assistant-deb5cda/src/integrations/baize_skills_mcp.py :78
  • web_search SxLiuYu-charlie-voice-assistant-deb5cda/src/integrations/baize_skills_mcp.py :103
  • shopping_search SxLiuYu-charlie-voice-assistant-deb5cda/src/integrations/baize_skills_mcp.py :128
  • deep_research SxLiuYu-charlie-voice-assistant-deb5cda/src/integrations/baize_skills_mcp.py :152
  • open_wechat SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-apps.py :106
  • open_alipay SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-apps.py :115
  • browse_douyin SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-apps.py :124
  • browse_toutiao SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-apps.py :136
  • browse_meituan SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-apps.py :148
  • browse_taobao SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-apps.py :160
  • browse_jd SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-apps.py :172
  • browse_pdd SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-apps.py :184
  • browse_dianping SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-apps.py :195
  • browse_maoyan SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-apps.py :206
  • browse_damai SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-apps.py :215
  • browse_xianyu SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-apps.py :224
  • browse_feishu SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-apps.py :235
  • browse_page SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-browser.py :46
  • search_web SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-browser.py :69
  • read_page SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-browser.py :100
  • click_element SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-browser.py :117
  • screenshot SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-browser.py :142
  • fill_form SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-browser.py :173
  • search_videos SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-douyin.py :17
  • get_trending SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-douyin.py :50
  • get_video_info SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-douyin.py :78
  • learn_from_history SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-evolution.py :163
  • self_optimize SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-evolution.py :227
  • suggest_preferences SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-evolution.py :281
  • evolution_status SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-evolution.py :337
  • search_docs SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-feishu.py :41
  • send_message SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-feishu.py :67
  • list_messages SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-feishu.py :92
  • get_calendar SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-feishu.py :122
  • log_habit SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-habits.py :67
  • habit_streak SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-habits.py :86
  • habit_today SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-habits.py :109
  • habit_week SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-habits.py :130
  • get_current_time SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-info.py :10
  • get_detailed_weather SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-info.py :19
  • get_news SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-info.py :32
  • get_location SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-info.py :90
  • translate SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-info.py :133
  • calculate SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-info.py :142
  • get_holiday_info SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-info.py :155
  • get_exchange_rate SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-info.py :187
  • on_this_day SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-info.py :203
  • get_my_location SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-info.py :214
  • run_code SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-info.py :226
  • get_stock SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-jarvis.py :13
  • get_market_overview SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-jarvis.py :26
  • get_air_quality SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-jarvis.py :38
  • get_earthquake_alert SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-jarvis.py :49
  • get_sports SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-jarvis.py :60
  • open_lifestyle_app SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-life.py :9
  • search_charging_stations SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-life.py :38
  • control_tesla_ac SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-life.py :63
  • leaving_home SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-life.py :74
  • recall SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-memory.py :298
  • memory_status SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-memory.py :318
  • correct SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-memory.py :334
  • dedup SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-memory.py :351
  • forget SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-memory.py :362
  • search_music SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-music.py :10
  • play_music SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-music.py :36
  • play_random_music SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-music.py :90
  • stop_music SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-music.py :134
  • list_playlists SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-music.py :140
  • play_playlist SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-music.py :160
  • play_white_noise SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-music.py :209
  • set_alarm SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-music.py :238
  • save_note SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-notes.py :8
  • list_notes SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-notes.py :38
  • add_shopping_item SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-notes.py :64
  • list_shopping_items SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-notes.py :95
  • clear_shopping_list SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-notes.py :115
  • search_recipe SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-recipe.py :231
  • get_recipe SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-recipe.py :257
  • list_recipes SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-recipe.py :283
  • random_recipe SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-recipe.py :307
  • recommend_recipe SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-recipe.py :320
  • recommend_daily SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-recipe.py :365
  • recommend_by_context SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-recipe.py :430
  • add_recipe SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-recipe.py :490
  • generate_recipe SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-recipe.py :521
  • add_reminder SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-reminder.py :25
  • set_timer SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-reminder.py :68
  • get_calendar_today SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-reminder.py :87
  • schedule_task SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-reminder.py :128
  • list_alarms SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-reminder.py :154
  • goodnight SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-scenes.py :370
  • good_morning SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-scenes.py :379
  • movie_time SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-scenes.py :388
  • leaving_home SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-scenes.py :397
  • learn_protocol SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-scenes.py :497
  • list_protocols SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-scenes.py :531
  • execute_scene SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-scenes.py :547
  • daily_summary SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-summary.py :170
  • yesterday_summary SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-summary.py :184
  • weekly_summary SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-summary.py :198
  • set_volume SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-system.py :7
  • set_speech_speed SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-system.py :58
  • system_status SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-system.py :83
  • search_products SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-taobao.py :17
  • search_jd SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-taobao.py :56
  • compare_price SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-taobao.py :91
  • _get_default_city SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-wardrobe.py :213
  • wardrobe_list SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-wardrobe.py :255
  • add_clothing SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-wardrobe.py :285
  • remove_clothing SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-wardrobe.py :313
  • ac_control SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/mcp_ir_control.py :38
  • ac_status SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/mcp_ir_control.py :75

declared dependencies 79

  • mcp@==1.29.0
  • PyJWT@==2.13.0
  • Pygments@==2.20.0
  • aiohappyeyeballs@==2.7.1
  • aiohttp@==3.14.3
  • aiosignal@==1.4.0
  • annotated-doc@==0.0.5
  • annotated-types@==0.8.0
  • anyio@==4.14.2
  • attrs@==26.1.0
  • certifi@==2026.7.22
  • cffi@==2.1.0
  • charset-normalizer@==3.4.9
  • click@==8.4.2
  • cryptography@==49.0.0
  • dashscope@==1.26.4
  • distro@==1.9.0
  • eval_type_backport@==0.4.0
  • fastapi@==0.141.1
  • frozenlist@==1.8.0
  • h11@==0.16.0
  • httpcore@==1.0.9
  • httpx-sse@==0.4.3
  • httpx@==0.28.1
  • idna@==3.18
  • iniconfig@==2.3.0
  • jiter@==0.16.0
  • json5@==0.15.0
  • jsonlines@==4.0.0
  • jsonschema-specifications@==2025.9.1
  • jsonschema@==4.26.0
  • markdown-it-py@==4.2.0
  • mcp-types@==2.0.0
  • mdurl@==0.1.2
  • multidict@==6.7.1
  • numpy@*
  • openai@==2.50.0
  • opentelemetry-api@==1.44.0
  • packaging@==26.2
  • pillow@==12.3.0
  • pluggy@==1.6.0
  • propcache@==0.5.2
  • psutil@==7.2.2
  • pycparser@==3.0
  • pydantic-settings@==2.14.2
  • pydantic@==2.13.4
  • pydantic_core@==2.46.4
  • python-dateutil@==2.9.0.post0
  • python-dotenv@==1.2.2
  • python-multipart@==0.0.32
  • qwen-agent@==0.0.34
  • referencing@==0.37.0
  • regex@==2026.7.19
  • requests@==2.34.2
  • rich@==15.0.0
  • rpds-py@==2026.6.3
  • shellingham@==1.5.4
  • six@==1.17.0
  • sniffio@==1.3.1
  • sse-starlette@==3.4.6
  • starlette@==1.3.1
  • tiktoken@==0.13.0
  • tqdm@==4.70.0
  • truststore@==0.10.4
  • typer@==0.27.0
  • typing-inspection@==0.4.2
  • typing_extensions@==4.16.0
  • urllib3@==2.7.0
  • uvicorn@==0.52.0
  • websocket-client@==1.9.0
  • websockets@==17.0
  • yarl@==1.24.5
  • silero-vad@*
  • sounddevice@*
  • soundfile@*
  • vosk@*
  • opuslib@>=3.0.1
  • sherpa_onnx@*
  • pytest@==9.1.1

perm:untrusted 1

  • untrusted SxLiuYu-charlie-voice-assistant-deb5cda/src/integrations/baize_skills_mcp.py :111 r = requests.post("https://api.tavily.com/search", json=body, timeout=30).json()

transport_posture 3

  • network-listening, binds all interfaces, no auth detected SxLiuYu-charlie-voice-assistant-deb5cda/src/charlie_main.py :188 config = uvicorn.Config(app, host="0.0.0.0", port=port, log_level="warning")
  • network-listening, binds all interfaces, no auth detected SxLiuYu-charlie-voice-assistant-deb5cda/src/hardware/https_server.py :20 uvicorn.run(app, host="0.0.0.0", port=port,
  • binds all interfaces (0.0.0.0) SxLiuYu-charlie-voice-assistant-deb5cda/src/voice_server.py :3843 uvicorn.run(app, host="0.0.0.0", port=http_port())