Commit Graph

8 Commits

Author SHA1 Message Date
LoveLosita
1ed558b488 Version: 0.4.8.dev.260308
feat: 🏗️ 实现 Agent 消息可靠异步持久化(Outbox + Kafka)

* 新增 Outbox 数据模型与消息载荷定义,位于 `backend/model/outbox.go`
* 新增 Outbox DAO,支持创建、扫描、发布标记、失败重试与消费落库事务,位于 `backend/dao/outbox.go`
* 新增 Kafka 基础封装,包含配置、生产者、消费者与消息包装,位于 `backend/kafka` 文件夹

  * `config.go`:Kafka 配置文件
  * `producer.go`:Kafka 生产者
  * `consumer.go`:Kafka 消费者
  * `envelope.go`:消息封装处理
* 新增异步管道服务,处理扫描投递与消费落库,位于 `backend/service/agent_async_pipeline.go`
* 接入 Agent 聊天链路的可靠持久化,替换原有 goroutine 直接写库逻辑,位于 `backend/service/agent.go`
* 启动流程接入管道初始化与启动,位于 `backend/cmd/start.go`
* 增加 Kafka 配置项,更新 `backend/config.yaml` 与 `backend/config.example.yaml`
* 引入 Kafka 依赖:`github.com/segmentio/kafka-go`(见 `backend/go.mod`, `backend/go.sum`)

fix: 🐛 修复首启偶发 user 消息重复落库问题

* 解决因 Outbox 状态并发回写竞态,导致 `consumed` 被晚到的 `published` 覆盖的问题
* 在 `MarkPublished` 中增加条件,避免覆盖已标记为 `consumed` 或 `dead` 的消息,修复位置:`backend/dao/outbox.go`

perf:  更新 Docker Compose 配置与 Kafka 相关服务

* 更新 `docker-compose.yml` 文件,新增 Kafka 配置与服务

fix: 🧹 优化缓存删除逻辑

* 在 `cache deleter` 中忽略了 `model.AgentOutboxMessage`、`model.ChatHistory` 与 `model.AgentChat` 这三个结构体
* 防止这些结构体对应的表单删除缓存时,导致控制台消息爆炸
2026-03-08 12:53:54 +08:00
LoveLosita
4906f814fd Version: 0.4.6.dev.260307
feat: 🎯 新增 Token 估算与裁剪工具

* 在 `backend/pkg/token_budget.go` 中新增 Token 估算与裁剪工具

  * 最大上下文 Token 数量设置为 224000,预留冗余 28000
  * 从最旧消息开始裁剪,直到历史 Token 数量低于预算
  * 根据裁剪后的历史消息数量动态计算 Redis 动态窗口大小

refactor: ♻️ 接入 Token 裁剪至 Service 主流程

* 在 `backend/service/agent.go` 中接入 Token 裁剪逻辑

  * 先从历史数据获取(缓存未命中则查询数据库)
  * 按 Token 预算裁剪历史消息,裁剪后再喂模型
  * 根据裁剪结果动态调整 Redis 会话窗口

refactor: ♻️ 改造 Redis 历史队列为会话级动态窗口

* 在 `backend/dao/agent-cache.go` 中新增 `SetSessionWindowSize` 与 `EnforceHistoryWindow`
* `PushMessage` 和 `BackfillHistory` 方法使用会话动态窗口,而非固定 20 条历史消息
* 默认窗口大小提升至 128,但会被会话动态窗口值覆盖
2026-03-07 16:37:07 +08:00
LoveLosita
3f95d23376 Version: 0.4.5.dev.260307
feat: 📡 更新 SSE 消息流格式

* 将 SSE 消息流格式更新为 Apifox 可识别的 OpenAI 格式
* 便于后续与前端的对接与协作
2026-03-07 16:11:11 +08:00
LoveLosita
26c350f378 Version: 0.4.4.dev.260307
feat: 🚀 增强会话管理与缓存机制

* 会话 ID 空值兜底,若 `conversation_id` 为空时自动生成 UUID
* 在响应头写入 `X-Conversation-ID`,供前端使用,保持同一会话状态

perf:  会话状态缓存优化

* 当缓存未命中但 DB 已确认/创建会话后,调用 `SetConversationStatus` 回写 Redis
* 缓存写回失败时记录日志,不中断聊天主流程,确保业务流畅性

fix: 🐛 修复历史消息顺序问题与编译错误

* 修复历史消息顺序问题,保证返回的 N 条历史消息按时间正序喂给模型

  * 通过反转 `created_at desc` 查询结果的切片,确保模型输入顺序正确
* 修复 `fmt.Errorf` 参数不匹配问题,修正编译错误
* 整理 `agent-cache.go` 为标准 UTF-8 编码,避免 Go 编译报错 `invalid UTF-8 encoding`

feat: 🛠️ 独立构建 MCP 服务器

* 使用 `Codex` 构建独立于后端的 MCP 服务器,简化与 Codex 的协作
* 通过该服务器方便 Codex 直接测试和查看 Redis 与 MySQL 中的数据
2026-03-07 15:25:40 +08:00
LoveLosita
204e78d1fe Version: 0.4.3.dev.260305
perf:  引入 Redis 缓存优化上下文读写性能

* 为上下文写入与提取逻辑新增 Redis 缓存层,减少数据库直接读取开销
* 在 Redis 中实现简单滑动窗口裁剪策略,控制上下文消息数量并降低存储压力

refactor: ♻️ 上下文持久化逻辑改为异步执行

* 对写缓存与写数据库逻辑引入 `goroutine` 实现简单异步处理
* 降低接口阻塞时间,提高 Agent 对话接口响应性能
* 当前尚未完善异步流程中的错误传递与处理机制,后续将补充完整错误链路管理
2026-03-05 22:36:53 +08:00
LoveLosita
cb5ac07e3c Version: 0.4.2.dev.260305
feat: 🧠 支持切换模型思考模式

* 新增模型思考开关配置,支持动态控制模型是否启用思考模式
2026-03-05 21:45:57 +08:00
LoveLosita
f9d52e0c5e Version: 0.4.1.dev.260304
feat: 💬 新增对话创建与上下文记忆机制

* 新增对话的创建与使用功能,实现会话级上下文隔离
* 实现上下文保存与传递机制,使模型具备持续对话记忆能力
* 引入滑动窗口策略控制上下文规模
* 当前窗口大小限制为 20 条消息,超过后自动丢弃最早消息以控制上下文长度

docs: 📝 更新示例配置文件

* 更新示例配置文件,新增 `agent` 相关配置信息
* 明确 Agent 模块运行所需参数,方便本地部署与环境初始化

undo: ⚠️ Agent 上下文读取性能待优化

* 当前测试中模型响应速度偏慢
* 计划后续将上下文暂存至缓存层,以减少读取与拼接开销并提升响应速度
2026-03-04 19:56:08 +08:00
LoveLosita
5f86dcda2b Version: 0.4.0.dev.260302
修改了gitignore文件,使得yaml不会被上传,保护隐私
接入eino,实现了agent的消息sse流式传输
2026-03-02 14:30:07 +08:00