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
PythonMITCreated 2026-04-11
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

Top issues

Snapshot: 2026-11-11T15:31:17Z · Data license Apache-2.0 · JSON