Commit Graph

53 Commits

Author SHA1 Message Date
312e762aff fix: 修复文本输入时 LLM API 报错的问题
- 移除 contentPart.Text 的 omitempty 标签
- 确保 text 字段始终存在于 JSON 请求中
2026-06-14 13:02:07 +08:00
51ed6aa563 feat: 添加文字输入对话功能
- 后端 WsQuery 添加 text 字段,支持文本输入模式
- Pipeline 支持文本查询时跳过 STT 直接使用输入文本
- 前端 ChatPanel 添加文字输入框,连接状态下可用
- useVisionSession 添加 sendTextMessage 方法
- 更新接口文档,添加文本输入模式说明
2026-06-14 12:52:39 +08:00
f6a2348c04 fix:修复语音对话配置 2026-06-14 12:29:46 +08:00
hhs
96cf009228 test: 更新测试文件适配构造函数签名变更 2026-06-14 11:55:29 +08:00
hhs
544716fe27 fix: pipeline.go TTS 输出格式/采样率从配置读取
- New() 改为接收 *config.Config 参数
- OutputFmt/SampleRate 从 config.AI.TTS 读取
2026-06-14 11:55:24 +08:00
hhs
8a966c29b7 fix: TTS 服务去除重复默认值,新增 httpClientTimeout 参数
- 去除 model/voice/endpoint 的 fallback 默认值
- HTTP Client 超时从 config 传入
2026-06-14 11:55:20 +08:00
hhs
aae0629b2d fix: LLM 服务去除重复默认值,新增 httpClientTimeout 参数
- 去除 model/endpoint 的 fallback 默认值
- HTTP Client 超时从 config 传入
2026-06-14 11:55:19 +08:00
hhs
03b3566822 fix: STT 服务去除重复默认值,新增 timeout 参数
- Deepgram/MiMo STT 超时从 config 传入
- 去除 model/endpoint 的 fallback 默认值,由 config 层保证
2026-06-14 11:55:18 +08:00
hhs
f1ce28966c fix: handler.go 心跳/版本号/CheckOrigin/历史上限改为配置驱动
- 心跳间隔和超时从 config.Server 读取
- ServerVersion 从 config.App.Version 读取
- CheckOrigin 通过 config.Server.AllowedOrigins 控制
- GetHistory limit 从 config.Session.MaxHistory 读取
2026-06-14 11:55:15 +08:00
hhs
63f8cc279d fix: main.go 使用配置值替代硬编码
- 版本号支持 -ldflags 构建时注入
- Session TTL/maxHistory 从配置读取
- 优雅关闭超时从配置读取
- AI 服务构造函数传入 HTTP Client 超时参数
2026-06-14 11:55:10 +08:00
hhs
22aefbc216 feat: 扩展配置结构,新增 Session/Heartbeat/Shutdown/STT Timeout/HTTP Client/TTS Output 配置项 2026-06-14 11:55:06 +08:00
hhs
00abc6c1e1 fix: 修复 pipeline_test.go 中 New 函数调用参数不足的问题 2026-06-14 11:18:58 +08:00
eb7ebecfc0 fix:修复了模型语音问题 2026-06-14 11:12:49 +08:00
hhs
37af0dbe06 feat: 添加 AI 服务初始化时的模型配置日志 2026-06-14 10:18:48 +08:00
hhs
e967d89e7e feat: 添加 MiMo TTS 语音合成服务
实现基于 Xiaomi MiMo TTS API 的语音合成 provider,使用冰糖音色。
- 新增 MiMoService 实现 tts.Service 接口
- 使用 chat/completions 格式,与 MiMo STT 保持一致
- 在 main.go 添加 TTS provider 切换逻辑(mimo/xiaomi)
- 配置文件默认音色设为冰糖
- 包含完整测试覆盖(9 个测试用例)
2026-06-14 10:05:56 +08:00
hhs
ca09a1fb72 chore: 清理配置文件并移动功能创意文档
- .gitignore 添加 .env,防止密钥泄露
- 删除误提交的 backend/.env
- TTS 模型名修正为 mimo-v2.5-tts
- 功能创意.md 移至 docs/10-功能创意.md
2026-06-14 08:53:12 +08:00
hhs
6e0c67e1cb docs: 文档与代码一致性检查与修复
- 修复心跳 Bug:应用层 ping 不更新 lastPong,60 秒后连接会被错误断开
- 03-接口文档:audio/mpeg→audio/mp3、STTConfig/TTSConfig 补充 Model 字段、
  APP_ENV 环境变量名修正、配置搜索路径补充、.env 加载说明、Vite proxy 说明修正
- 02-系统架构:补充 ConfigPanel/Toast 组件、Model Router/Rate Limiter 标注规划中、
  补充 Gin 框架、MVP 存储改为 Memory、AI 服务 provider 更新、Orchestrator 伪代码对齐
- 04-技术选型:新增 AI 服务栈选型章节(STT/LLM/TTS)、PostgreSQL 标注规划中
- 06-语音交互:VAD 参数名修正、STT 改为一次性识别描述、音频编码格式补充
- 07-视觉理解:关键帧检测代码改为 TypeScript、分辨率修正、阈值逻辑统一
- 08-成本控制:变量名修正、未实现功能标注规划中、对话历史裁剪策略补充
- CLAUDE.md:同步更新技术栈、模块结构、存储策略描述
2026-06-14 08:52:36 +08:00
a7d679d04f feat: 功能优化 2026-06-13 22:20:31 +08:00
hhs
322061c387 fix: MiMo ASR 认证头改为 Authorization: Bearer
MiMo API 使用标准 Bearer Token 认证,而非自定义 api-key 头。
2026-06-13 21:57:56 +08:00
hhs
420871cd7e fix: 修复 MiMo ASR endpoint 路径重复拼接导致 404 的问题
config.yaml 中 endpoint 已包含 /chat/completions,而 mimo.go 会自动拼接该路径,
导致实际请求地址变为 .../chat/completions/chat/completions。

- config.yaml: endpoint 改为 base URL https://api.xiaomimimo.com/v1
- .env.example: STT endpoint 示例更新为 MiMo 地址
2026-06-13 21:51:26 +08:00
hhs
e3eb4f264b chore: 更新 STT API Key 和 endpoint 2026-06-13 21:43:43 +08:00
hhs
3d3de828fc feat: 添加 Xiaomi MiMo ASR 语音识别提供者
- 新增 MiMoService 实现 stt.Service 接口,通过 HTTP POST 调用 OpenAI 兼容的 /chat/completions 接口
- 自动将原始 PCM 数据封装为 WAV 格式(MiMo 仅支持 mp3/wav)
- 语言代码映射:zh-CN→zh、en-US→en、其他→auto
- main.go 添加 provider 选择逻辑(mimo/xiaomi → MiMo,其他 → Deepgram)
- 更新 config.yaml 使用正确的 model 名称 mimo-v2.5-asr
- 添加完整单元测试
2026-06-13 21:31:58 +08:00
hhs
b0a7ce885e fix: 修复返回给前端的 totalTokens 为0的问题并提供示例 .env 2026-06-13 21:09:56 +08:00
hhs
3c665cde5d feat: 更新模型配置 2026-06-13 19:57:55 +08:00
hhs
0d9d3db73b feat: 更新配置文档 2026-06-13 19:57:35 +08:00
hhs
0b2bbb827d feat: Phase 8.1 - WS 集成测试 (handler_test.go)
使用 Gin test server + gorilla/websocket client 验证完整 WebSocket 流程:
- connected 连接建立、ping/pong 心跳
- 完整 query→stt_result→llm_chunk→tts_audio→llm_done 流程
- interrupt 中断、disconnect 断开清理
- 无效 JSON、未知消息类型错误处理
- 多次查询、无图片查询、TTS 未启用等场景
- 每次连接创建独立会话
2026-06-13 16:37:51 +08:00
hhs
a6a6a16185 feat: Phase 6.3 - 注册 Session REST 路由,统一依赖注入 2026-06-13 16:22:53 +08:00
hhs
f07916ab0f fix: Phase 6.2 - Health 端点对齐接口文档 (uptime_seconds 整数格式) 2026-06-13 16:21:53 +08:00
hhs
b7e803fa90 feat: Phase 6.1 - 实现 Session REST API 路由 (POST/DELETE) 2026-06-13 16:21:09 +08:00
hhs
085e19038b fix: Phase 5.3 - 统一使用 client.sessionMgr 调用 UpdateConfig 2026-06-13 16:15:17 +08:00
hhs
314554ded7 feat: Phase 5.2 - 实现 query 处理逻辑
- 创建可取消的 context 并存储 cancel func
- 获取对话历史并传递给 orchestrator
- 启动 orchestrator.ProcessQuery goroutine 处理查询
- 请求完成后自动清理 cancel func 和活跃请求标记
2026-06-13 16:14:20 +08:00
hhs
19535e6a37 feat: Phase 5.1 - Client 扩展,添加 orchestrator 依赖
- 扩展 Client 结构体,添加 sessionManager、orchestrator、cancelFuncs 字段
- 创建 WSClient 适配器实现 orchestrator.Sender 接口
- 更新 ServeWS 函数签名,接收 orchestrator 参数
- 在 main.go 中初始化 AI 服务和 Orchestrator
2026-06-13 16:13:22 +08:00
hhs
c9c697fe64 feat: 实现 AI Orchestrator(核心编排)
- 实现 Orchestrator 接口(4.1)
- 实现 Sender 接口(4.2)
- 实现 STT → LLM → TTS 流式并行管道(4.3)
- 实现句子切分器(4.4)
- 实现错误降级处理(4.5)
- 实现 Interrupt 支持(4.6)
- 编写完整的单元测试(4.7)
2026-06-13 16:05:18 +08:00
hhs
041dee319b chore: go mod tidy 清理依赖 2026-06-13 15:50:10 +08:00
hhs
29e186c062 test: 编写 TTS 测试(mock HTTP,覆盖成功/API 错误/超时/空文本/取消/部分失败/自定义 voice) 2026-06-13 15:48:55 +08:00
hhs
acc7dfce43 feat: 实现 OpenAI TTS 服务(逐句合成 + 5s 超时 + 静默跳过失败) 2026-06-13 15:47:43 +08:00
hhs
450c2c66c3 feat: 定义 TTS Service 接口(SynthesizeStream + Options/Chunk) 2026-06-13 15:46:48 +08:00
hhs
90f4b907a7 test: 编写 LLM 测试(mock SSE 流,覆盖成功/图片/历史/API 错误/超时/Usage) 2026-06-13 15:45:51 +08:00
hhs
96b4c4899a feat: 实现 OpenAI LLM 服务(SSE 流式解析 + 多模态消息构建)及 System Prompt 定义 2026-06-13 15:44:23 +08:00
hhs
078cfe6278 feat: 定义 LLM Service 接口(ChatStream + Request/Chunk/TokenUsage) 2026-06-13 15:42:14 +08:00
hhs
8f9b0b881e feat: 实现 Deepgram STT 服务及测试(WebSocket mock,覆盖成功/超时/空音频/多轮 final) 2026-06-13 15:41:44 +08:00
hhs
6fcbf023b4 feat: 实现 Deepgram STT 服务(WebSocket 连接 + 音频发送 + 结果接收) 2026-06-13 15:39:39 +08:00
hhs
22784bf421 feat: 定义 STT Service 接口(Recognize + Options) 2026-06-13 15:38:59 +08:00
hhs
fe4dedec71 feat: WS handler 接入 SessionManager,main.go 注入依赖 + 健康检查获取活跃会话数
Some checks failed
Backend CI / ci (pull_request) Failing after 15s
Frontend CI / ci (pull_request) Has been cancelled
2026-06-13 15:31:15 +08:00
hhs
26f87ce35a test: 编写 Session Manager 内存实现测试(覆盖 Create/Get/Expire/Destroy/History 上限等) 2026-06-13 15:29:13 +08:00
hhs
ba6d565c0f feat: 实现 Redis 版 SessionManager(Hash + List,TTL 自动刷新) 2026-06-13 15:27:41 +08:00
hhs
f172e6c468 feat: 实现内存版 SessionManager(TTL 30 分钟,历史上限 20 条) 2026-06-13 15:25:23 +08:00
hhs
6b8bd3c554 feat: 定义 SessionManager 接口 + SessionConfigPatch 模型 2026-06-13 15:24:07 +08:00
hhs
da87ec776b feat: main.go 接入配置 + graceful shutdown + logger 迁移
- main.go: 接入 config.Load() 替换硬编码 :8080
- main.go: 添加 signal.NotifyContext + http.Server.Shutdown(10s drain)
- main.go: 初始化 Zap 日志,prod 环境切换 Gin release 模式
- ws/handler.go: 所有 log.Printf 替换为 logger.Log 结构化日志
- 修复 .gitignore 排除规则(/server 仅匹配根目录二进制)
- 新增 zap、viper 依赖
2026-06-13 15:18:03 +08:00
hhs
c523f53724 feat: 实现配置管理(Viper)
- 新增 internal/config/config.go,定义完整配置结构体
- 支持 YAML 文件 + 环境变量覆盖(CAMTALK_ 前缀)
- 新增 config.yaml 默认配置文件
2026-06-13 15:17:37 +08:00