|
|
b0e201a16f
|
fix: 清理真正的退格符 \u{8} (llama-cli 进度动画)
|
2026-07-04 17:39:42 +08:00 |
|
|
|
15ab383603
|
fix: 编译错误 (\b 转义 + 临时变量生命周期)
|
2026-07-04 17:35:45 +08:00 |
|
|
|
9069145de6
|
fix: 解析 llama-cli 进度动画和回复在同一行的情况 (清理 \b 转义)
|
2026-07-04 17:28:06 +08:00 |
|
|
|
1c037db0c2
|
fix: 解析 llama-cli 输出,只提取生成回复 (去除 banner/进度动画/统计)
|
2026-07-04 17:18:58 +08:00 |
|
|
|
a3052ad6db
|
fix: piper 加 ESPEAK_DATA_PATH 环境变量 (espeak-ng-data 目录)
|
2026-07-04 17:10:23 +08:00 |
|
|
|
4fd7e7997e
|
fix: piper 二进制+依赖库+config 修正 (符号链接指向正确二进制,加 LD_LIBRARY_PATH 和 -c 参数)
|
2026-07-04 16:58:41 +08:00 |
|
|
|
706b1375ce
|
fix: llama-cli 加 --single-turn --no-warmup -sys,对齐 spike 调用方式 (修复卡死)
|
2026-07-04 16:39:33 +08:00 |
|
|
|
6810d1ca13
|
feat(M2.1): 设备端部署脚本 + whisper LD_LIBRARY_PATH + dog/cat 角色人设配置
|
2026-07-04 15:44:48 +08:00 |
|
|
|
a0c4ca2307
|
feat(M2.1): AI 语音对话插件骨架 + 模型管理 + HTTP API + config schema 扩展
这是 M2.1(语音数字生命 V1)的后端骨架实现,不含 Web UI / Flutter / 设备部署。
新增文件:
- src/plugins/ai/mod.rs: AiPlugin 薄层(持有 ChatPipeline Arc,处理消息系统联动)
- src/plugins/ai/backend.rs: AiBackend trait + LocalCliBackend (whisper-cli/llama-cli/piper 子进程)
+ CloudBackend 占位(V1 返回"暂未支持")
- src/plugins/ai/chat.rs: ChatPipeline 对话管线执行器(HTTP 层 spawn_blocking 直接调用)
- src/plugins/ai/model_manager.rs: ModelManager 模型资产管理
(清单/下载/切换/删除/配额/档位守门,参照 plugin_repo + version_manager 模式)
修改文件:
- src/core/message.rs: 新增 ChatRequest/ChatResponse/AiModelEvent 消息类型
- src/core/config.rs: AppConfig 新增 character 块(角色元信息+人设)+ ai 块(后端配置)
均为 #[serde(default)] 向后兼容旧配置
- src/plugins/mod.rs: 注册 ai 模块
- src/plugins/http/mod.rs: HttpState 新增 ai_pipeline + ai_models 字段及注册方法;
HttpPlugin 新增 set_ai_pipeline/set_ai_models 方法
- src/plugins/http/routes.rs: 新增 6 个 AI 相关路由
- POST /api/chat/text (文字对话,Web 端主路径)
- POST /api/chat/audio (语音对话,App 主路径)
- GET /api/models (模型清单+水位+配额)
- POST /api/models/download (下载模型,后台线程执行)
- POST /api/models/switch (切换激活模型)
- POST /api/models/delete (删除模型,保护当前激活)
- src/main.rs: 注册 AiPlugin,连接 pipeline 到 HttpPlugin
技术决策:
- 对话管线用 spawn_blocking 而非消息系统,满足 HTTP 同步响应需求
- ChatPipeline 用 Arc<Mutex> 共享,HTTP 和 AiPlugin 共用同一实例
- 互斥用 try_lock,忙时返回 409 而非阻塞
- Spike 结论固化: LLM t=2 锁大核、ctx=1024 限死、Qwen2.5-0.5B 默认档
待完成 (后续提交):
- Web 控制端 UI (文字对话 + 角色切换 + 模型管理界面)
- Flutter App (角色页/语音页/模型管理页)
- 设备端部署 llama.cpp/whisper.cpp/piper 二进制 + 模型下载
- 画面联动 (talk/idle 状态切换)
- 测试
注: Windows 开发环境缺 dbus,无法本地 cargo check;待目标机验证。
|
2026-07-04 15:01:00 +08:00 |
|