Charlie 语音助手 — 本地部署的私人AI助理,零配置Demo模式开箱即用,支持语音交互、ESP32开发板终端、飞书推送、MCP技能扩展。ASR→大脑→TTS语音闭环,Demo规则模式无需任何API key即可对话。
Drift inferred · capture-to-capture
- HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
- HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
- HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
- HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
- HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
- HIGH code analysis flagged dynamic code execution in SxLiuYu/charlie-voice-assistant
- HIGH code analysis flagged dynamic code execution in SxLiuYu/charlie-voice-assistant
- HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
- HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
- HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
- HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
- HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
- HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
- HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
- HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
- HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
- HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
- HIGH code analysis flagged committed secret, dynamic code execution in SxLiuYu/charlie-voice-assistant
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
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
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/ask-matt/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/charlie-dev/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/claude-handoff/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/code-review/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/codebase-design/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/diagnosing-bugs/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/domain-modeling/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/douyin-publishing/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/git-guardrails-claude-code/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/grill-me/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/grill-with-docs/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/grilling/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/handoff/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/implement/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/improve-codebase-architecture/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/loop-me/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/migrate-to-shoehorn/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/prototype/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/research/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/resolving-merge-conflicts/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/scaffold-exercises/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/setup-matt-pocock-skills/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/setup-pre-commit/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/setup-ts-deep-modules/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/tdd/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/teach/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/to-questionnaire/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/to-spec/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/to-tickets/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/triage/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/wait-what/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/wayfinder/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/wizard/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/writing-beats/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/writing-for-agents/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/writing-fragments/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/writing-shape/SKILL.md
- skill SxLiuYu-charlie-voice-assistant-deb5cda/.agents/skills/xiaohongshu-publishing/SKILL.md
- agent-rules SxLiuYu-charlie-voice-assistant-deb5cda/docs/AGENTS.md
danger signals4
- dynamic code execution __import__ sink SxLiuYu-charlie-voice-assistant-deb5cda/src/agent/retry.py :12
RETRY_AFTER_CAP = float(__import__("os").environ.get("ASSISTANT_KID_RETRY_AFTER_CAP", "60")) - dynamic code execution eval()/exec() SxLiuYu-charlie-voice-assistant-deb5cda/src/skills/magic-info.py :285
exec(_compiled, {'__builtins__': { - dynamic code execution eval()/exec() SxLiuYu-charlie-voice-assistant-deb5cda/src/tests/test_decisions.py :33
exec(code, mod.__dict__) - committed secret private key SxLiuYu-charlie-voice-assistant-deb5cda/config/cert/key.pem :1
PEM private key block (redacted)
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())