death34018-hue /AionsHome
Aion — 一个支持长期记忆、语音交互、摄像头视觉的伴侣。 A self-hosted AI companion with long-term memory, voice interaction, camera vision, and smart home integration.
★ 992⑂ 210👁 2⑃ 2● 5▤ 0◈ 0
992
stars
210
forks
2
watchers
2
prs
5
issues
0
releases
0
discussions
README
Aion Chat 项目档案 项目定位 局域网 + 外网(Tailscale 组网)多端同步 AI 聊天程序 + 摄像头智能监控系统。PC/手机浏览器同时使用,支持 PWA 安装为独立 App(全屏无地址栏),数据全部存在本地电脑上。 技术栈 - 后端:Python FastAPI + SQLite (aiosqlite) + WebSocket - 前端:多页面架构(原生 JS,无框架),暖光主题,手机/PC 自适应。chat.html/css/js 为主聊天页(结构/样式/逻辑分离),独立功能页通过 common.css/common.js 共享样式和工具函数 - 摄像头:OpenCV (cv2) DirectShow 后端后台线程采集 + ESP32-CAM HTTP 远程抓帧(双摄切换 + App 桥接模式) - 语音:WebRTC VAD 语音检测 + 硬基流动 ASR (SenseVoiceSmall) + TTS (CosyVoice2) + 语音消息(按住录制) - AI 接口:硬基流动(OpenAI 兼容)、Google Gemini(REST API)、AiPro 中转站(OpenAI 兼容)、Gemini CLI(本地子进程调用,免费 OAuth 认证)、Codex CLI(本地子进程调用,Connor 专用) - AI 生图:Gemini gemini-3.1-flash-image-preview(REST API generateContent,responseModalities=["IMAGE"]) - Embedding:Gemini gemini-embedding-001(3072维),余弦相似度检索 - Android App:Java,WebView + 前台推送服务(OkHttp 4.12.0 WebSocket)+ 原生录音桥 + 原生摄像头桥 + 原生视频录制桥(MediaCodec + MediaMuxer),compileSdk 34 / minSdk 24 - 音乐:pyncm(网易云音乐 API,搜索/歌曲详情/音频URL,支持 MUSIC_U Cookie VIP 登录 + 服务端代理推流) - EPUB 解析:ebooklib(EPUB 读取)+ BeautifulSoup4 / lxml(HTML 解析) - 基金监控:akshare(A股/基金数据拉取)+ chinese-calendar(中国节假日/交易日判断) - MCP 娱乐室:mcp(Python MCP SDK,支持 Streamable HTTP / stdio 传输,接入外部服务如 AI 小镇) - 聊天室:三人群聊(用户 + Aion + Connor-Codex),Connor 代理通过 HTTP 轮询接入 Codex CLI 服务,随机回复顺序,统一时间线上下文(私聊+群聊合并排序,场景切换标记),统一记忆总结(Aion/Connor 各自合并私聊+群聊消息总结,独立锚点,1小时无新消息自动触发),图片收发(用户发图→CLI 管线通过本地绝对路径传递、API 管线通过 base64 内嵌,Codex 回复 [[image:...]] 标记→前端渲染,图片存储于 Connor-Codex/uploads/YYYY-MM-DD/),TTS 语音合成(Aion/Connor 独立音色配置,硬基流动 CosyVoice2 服务端流式切分+并行合成,通过 SSE 推送音频分段顺序播放,配置持久化 localStorage) - 依赖库:fastapi, uvicorn, httpx, aiosqlite, opencv-python, Pillow, sounddevice, numpy, webrtcvad-wheels, pyncm, pywin32, psutil, ebooklib, beautifulsoup4, lxml, akshare, chinese-calendar, mcp 模块化文件结构 项目已从单文件拆分为 12 个模块化文件: 项目根目录/ ├── 一键启动.bat 双击启动服务(内含绝对路径,搬迁后需修改) ├── 模型预设.txt 模型列表参考 ├── public/ 公共静态资源 │ ├── BackGround.png │ ├── icon.png 原始图标(1024x941) │ ├── icon-192.png PWA 图标 192x192(自动生成) │ ├── icon-512.png PWA 图标 512x512(自动生成) │ ├── AionMonitoralart.mp3 Core 查看监控前的提示音 │ ├── AIonResponse.mp3 语音唤醒回复音频("诶,我在呢") │ ├── UserIcon.png 用户聊天头像 │ ├── AIIcon.png AI 聊天头像 │ └── 生图锚点.jpg SELFIE 参考图(AI 人物一致性锚点) │ └── wallpaper/ 动态壁纸媒体文件(图片+视频) ├── AionApp/ Android WebView 原生壳(Java,Android Studio 项目) │ ├── app/src/main/java/com/aion/chat/ │ │ ├── LauncherActivity.java 启动页:双地址选择(家庭WiFi / Tailscale)+ 记住选择 + 启动推送服务 │ │ ├── WebViewActivity.java WebView 主页:全屏加载 chat.html,麦克风权限,前后台状态通知推送服务 │ │ ├── AudioBridge.java 原生录音桥:AudioRecord 16kHz → base64 → JS 回调,录制时同步转发 PCM 给 VideoBridge │ │ ├── CameraBridge.java 原生摄像头桥:legacy Camera API → NV21 字节旋转 → JPEG → JS 轮询(绕过 WebView HTTPS 限制),录制时转发帧给 VideoBridge │ │ ├── VideoBridge.java 原生视频录制桥:MediaCodec(H.264) + MediaCodec(AAC) + MediaMuxer → MP4,复用 CameraBridge/AudioBridge 的帧数据 │ │ ├── (Ai