Commit Graph

399 Commits

Author SHA1 Message Date
9576884619 docs: 新增 Eino 框架技术文档和重构实施记录
- docs/11-Eino框架技术文档.md: 框架简介、技术选型对比、核心概念(Lambda/Graph/ChatModel/StreamReader/Callback/State)、CamTalk Graph 设计、目录结构、注意事项
- docs/12-Eino重构实施记录.md: 重构背景、架构变更、四阶段实施详情、代码统计、遗留事项

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-19 22:09:07 +08:00
4ffd84510e refactor: 清理旧编排代码,新增 eino 包单元测试
删除旧代码:
- orchestrator/pipeline.go: 旧 STT→LLM→TTS 手写 goroutine 管道
- orchestrator/splitter.go: 旧句子切分器
- orchestrator/pipeline_test.go: 旧 Pipeline 测试
- ai/llm/openai.go: 旧 LLM OpenAI 实现(被 eino-ext ChatModel 替代)
- ai/llm/openai_test.go: 旧 LLM 测试

保留的接口和工具:
- orchestrator/orchestrator.go: Orchestrator 接口(ws/handler 依赖)
- orchestrator/sender.go: Sender 接口(eino/callback 依赖)
- ai/llm/llm.go: Request/Chunk/TokenUsage 类型定义
- ai/llm/prompt.go: BuildSystemPrompt(eino/nodes_history 依赖)
- ai/llm/scenarios.go: GetScenarioPrompt(eino/nodes_history 依赖)

新增测试:
- eino/graph_test.go: 13 个测试覆盖类型构建、State 并发安全、
  Context 注入、延迟计算、接口实现检查等

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-19 22:04:39 +08:00
4b731b5ac0 feat: 实现 Eino Graph 构建与 Orchestrator 适配器,切换 main.go
- graph.go: 构建 Graph 拓扑 START→STT→History→ChatModel→Splitter→TTS→Done→END
  - 创建 eino-ext ChatModel 对接 DashScope OpenAI 兼容接口
  - 统一使用值类型(PipelineInput/PipelineOutput)
  - Callback 在运行时通过 Stream option 传入
- adapter.go: EinoOrchestrator 实现 orchestrator.Orchestrator 接口
  - 解码 base64 音频/图片,注入 context 值
  - 调用 Graph.Stream() 触发惰性执行并消费输出
  - 追加用户/助手消息到历史
- main.go: 移除旧 llmService + orchestrator.New()
  替换为 eino.NewPipelineGraph() + eino.NewEinoOrchestrator()
- 各节点统一使用值类型,State 传递请求元数据

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-19 21:58:17 +08:00
fd5c7712f8 feat: 引入 Eino 框架并实现 AI 编排层基础设施与节点
- 引入 cloudwego/eino v0.9.9 和 eino-ext/components/model/openai v0.1.13
- 新增 internal/eino/ 包:
  - types.go: PipelineInput/Output、STTOutput、TokenUsage 类型定义
  - state.go: PipelineState 跨节点状态收集(线程安全)
  - callback.go: ChatModel OnEndWithStreamOutput 回调,逐 token 推送 llm_chunk
  - nodes_stt.go: STT Lambda,支持文本/语音输入模式
  - nodes_history.go: 历史组装 Lambda,含多模态图片支持
  - nodes_splitter.go: 句子分割 Transform Lambda
  - nodes_tts.go: TTS Lambda,逐句合成推送音频
  - nodes_done.go: Done Lambda,发送 llm_done 并追加历史

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-19 21:49:28 +08:00
b10a508356 Merge pull request 'refactor: 统一配置文件系统并重构项目设计文档' (#120) from docs/complete-doc into develop
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/120
2026-06-19 19:43:02 +08:00
hhs
c0b4eeda46 refactor: 统一配置文件系统
- 补全 backend/config.yaml 所有非敏感配置项并添加中文注释
- 重写 config.go:Load(workDir) 显式传参,BindEnv 绑定敏感字段,删除 AutomaticEnv
- setDefaults 默认值与 config.yaml 保持一致(mimo/dashscope)
- backend/.env.example 重写为纯敏感信息模板
- .env 固定在 /opt/camtalk/.env,docker-compose 通过绝对路径加载
- deploy.sh 统一使用 --env-file,移除硬编码 IP
- deploy.yml 删除 CI 写入 .env 的步骤
- Dockerfile 移除 COPY config.yaml
- 修复 deploy.yml 中 POSTGRES_PASSWORD 的 &{{ 拼写错误
2026-06-19 18:41:35 +08:00
hhs
e6481e0faa docs: 添加 Eino 重构代码计划文档 2026-06-19 17:45:41 +08:00
hhs
a04275cc76 docs: 按功能模块重构文档结构
- 新建 01-架构设计.md:合并项目概述+系统架构+持久化设计,含 Mermaid 架构图、模块图、时序图、ER 图、部署图
- 新建 02-接口文档.md:合并接口文档+持久化 API+用户模块 API,统一格式去重
- 重编号 03~09,去掉状态标注,规划中功能标记为待实现
- 删除 PLAN_BACKEND.md、PLAN_USER_MODULE.md 及冗余文档
2026-06-19 15:31:52 +08:00
hhs
dca37f3e48 docs: 同步文档与代码实现状态
- 02-系统架构: Redis/PostgreSQL 标注已实现,模块表新增 Auth/Store/Migrations,更新表设计和前端组件
- 03-接口文档: config 新增 scenario 字段,Manager 接口补全 UpdateTitle/ListByUser,配置结构体同步,扩展接口替换为实际 Repository
- 04-技术选型: 持久化层标注已实现
- 06-语音交互: TTS Voice 更正为 mimo_default
- 11-持久化与用户系统设计: 所有 Phase 标记完成
- PLAN_BACKEND/PLAN_USER_MODULE: 标记完成状态
- README: 新增实现状态总览,补充文档索引
2026-06-19 14:58:43 +08:00
hhs
16302af7d2 docs: 添加 Eino 框架参考文档 2026-06-19 14:35:06 +08:00
hhs
5d8cacf16d docs: 更新 README 文档
Some checks are pending
Deploy / deploy (push) Waiting to run
2026-06-14 23:59:00 +08:00
hhs
dbfdf3c3e5 docs: README
All checks were successful
Deploy / deploy (push) Successful in 19s
2026-06-14 23:58:41 +08:00
54454ae2d7 Merge pull request '部署优化' (#119) from develop into main
All checks were successful
Deploy / deploy (push) Successful in 35s
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/119
2026-06-14 21:33:01 +08:00
720c2e2b5b Merge pull request 'feat:部署优化' (#118) from feat/build into develop
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/118
2026-06-14 21:29:04 +08:00
c2bae4e3b7 feat:部署优化 2026-06-14 21:28:18 +08:00
838493145f Merge pull request '部署' (#117) from develop into main
Some checks failed
Deploy / deploy (push) Failing after 17s
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/117
2026-06-14 21:25:32 +08:00
943f36e9ec Merge pull request '部署优化' (#116) from feat/build into develop
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/116
2026-06-14 21:25:06 +08:00
083ede8b6d feat: 部署优化 2026-06-14 21:24:11 +08:00
14242eb896 Merge pull request 'fix: 修复 Docker Compose 环境下 PostgreSQL 连接失败' (#115) from develop into main
All checks were successful
Deploy / deploy (push) Successful in 1m30s
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/115
2026-06-14 20:50:31 +08:00
6db5bef519 Merge pull request 'fix: 修复 Docker Compose 环境下 PostgreSQL 连接失败' (#114) from fix/actions into develop
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/114
2026-06-14 20:48:31 +08:00
hhs
1ddd75d34f fix: 修复 Docker Compose 环境下 PostgreSQL 连接失败 2026-06-14 20:47:00 +08:00
7ea6c0d4f2 Merge pull request '版本升级' (#113) from develop into main
All checks were successful
Deploy / deploy (push) Successful in 1m36s
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/113
2026-06-14 20:44:51 +08:00
97357013bb Merge pull request 'feat:添加对话情景功能' (#112) from feat/optimize into develop
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/112
2026-06-14 20:41:50 +08:00
057a226610 Merge remote-tracking branch 'origin/develop' into feat/optimize
# Conflicts:
#	frontend/src/lib/errors.ts
2026-06-14 20:40:05 +08:00
b60e513317 feat:添加对话情景功能 2026-06-14 20:32:30 +08:00
638a387550 Merge pull request 'fix: 修复 ChatPanel vadError 属性类型不匹配导致构建失败' (#110) from develop into main
All checks were successful
Deploy / deploy (push) Successful in 1m30s
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/110
2026-06-14 20:11:19 +08:00
9dc9025d10 Merge pull request 'fix: 修复 ChatPanel vadError 属性类型不匹配导致构建失败' (#109) from fix/frontend into develop
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/109
2026-06-14 20:10:59 +08:00
hhs
92e47718bc fix: 修复 ChatPanel vadError 属性类型不匹配导致构建失败 2026-06-14 20:10:31 +08:00
6ce36e3ed8 Merge pull request 'fix: 更换 PostgreSQL 镜像源' (#108) from develop into main
Some checks failed
Deploy / deploy (push) Failing after 1m22s
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/108
2026-06-14 20:00:02 +08:00
6032608e49 Merge pull request 'fix: 更换 PostgreSQL 镜像源' (#107) from fix/actions into develop
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/107
2026-06-14 19:59:41 +08:00
hhs
668da26e23 fix: 更换 PostgreSQL 镜像源 2026-06-14 19:58:22 +08:00
44f4f3ce1a Merge pull request 'feat:语音对话优化' (#106) from feat/onload into develop
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/106
2026-06-14 19:55:02 +08:00
c3118dd72a feat:语音对话优化 2026-06-14 19:54:22 +08:00
f22243a2d2 Merge pull request 'fix: 更换 PostgreSQL 镜像源为轩辕镜像,修复阿里云镜像拉取失败' (#105) from develop into main
Some checks failed
Deploy / deploy (push) Failing after 14s
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/105
2026-06-14 19:52:04 +08:00
8ff3c519ac Merge pull request 'fix: 更换 PostgreSQL 镜像源为轩辕镜像,修复阿里云镜像拉取失败' (#104) from fix/actions into develop
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/104
2026-06-14 19:51:50 +08:00
hhs
ffc9b4a320 fix: 更换 PostgreSQL 镜像源为轩辕镜像,修复阿里云镜像拉取失败 2026-06-14 19:51:15 +08:00
eba0607f94 Merge pull request 'Merge pull request 'fix: 移除未使用的变量和导入,修复 tsc 编译错误'' (#103) from develop into main
Some checks failed
Deploy / deploy (push) Failing after 17s
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/103
2026-06-14 19:44:35 +08:00
e89585e453 Merge pull request 'fix: 移除未使用的变量和导入,修复 tsc 编译错误' (#102) from fix/actions into develop
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/102
2026-06-14 19:43:59 +08:00
hhs
e11934cf70 fix: 移除未使用的变量和导入,修复 tsc 编译错误 2026-06-14 19:37:16 +08:00
1f19435951 Merge pull request 'Merge pull request 'feat: 添加 PostgreSQL 服务并挂载数据库迁移脚本'' (#101) from develop into main
Some checks failed
Deploy / deploy (push) Failing after 1m32s
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/101
2026-06-14 19:25:37 +08:00
16105f5ac6 Merge pull request 'feat: 添加 PostgreSQL 服务并挂载数据库迁移脚本' (#99) from feature/reload into develop
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/99
2026-06-14 19:01:45 +08:00
hhs
386c918591 feat: 添加 PostgreSQL 服务并挂载数据库迁移脚本 2026-06-14 19:00:06 +08:00
hhs
966b30218a feat: 实现 sessions 持久化,支持会话恢复 2026-06-14 18:54:18 +08:00
d724a8e9f9 Merge pull request 'feat: 对接 PostgreSQL 存储层' (#98) from build/backend into develop
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/98
2026-06-14 18:46:05 +08:00
8360e31328 Merge pull request 'feat/talk' (#97) from feat/talk into develop
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/97
2026-06-14 18:44:47 +08:00
1109ab41f7 refactor: 将退出登录功能从顶部导航栏移至设置面板 2026-06-14 18:42:47 +08:00
hhs
542720695d feat: 对接 PostgreSQL 存储层 2026-06-14 18:40:37 +08:00
8de956719c feat: 实现前端认证系统,WebSocket 连接携带 JWT token
- 新增 AuthContext/AuthProvider:登录/注册状态管理,JWT 自动刷新
- 新增 AuthPage 组件:登录/注册表单,支持模式切换和前端校验
- 新增 api.ts:封装 auth REST API 客户端(register/login/refresh/logout)
- WebSocket 连接时拼接 ?token=<jwt>,重连自动携带
- useVisionSession 接受 accessToken 参数并透传
- App.tsx 包裹 AuthProvider,未登录时显示登录页
- storage.ts 新增 token/user 的 localStorage 存储
- i18n 新增中/英/日三语 auth 翻译
- App.css 新增 auth 页面和用户 badge 样式
2026-06-14 18:38:45 +08:00
a1ae7740f1 Merge pull request 'feat: 构建用户模块,实现用户对话历史持久化,完善接口文档' (#96) from build/backend into develop
Reviewed-on: http://8.161.227.145:3000/XEngineers/CamTalk/pulls/96
2026-06-14 18:08:14 +08:00
hhs
b57adf153b docs: 补充用户模块 REST API 接口契约
- PLAN_USER_MODULE.md 新增「前端 API 接口参考」章节
- 03-接口文档.md 同步认证接口、对话接口、WebSocket 认证变更
- 新增错误码 USERNAME_TAKEN / INVALID_CREDENTIALS / INVALID_TOKEN / INVALID_INPUT
- 数据模型补充 User / ConversationSummary / StoredMessage 及对应 TypeScript 类型
- 配置结构体补充 AuthConfig(JWTSecret / AccessTTL / RefreshTTL)
2026-06-14 18:05:50 +08:00