Files
smartmate/backend/memory/README.md
LoveLosita fae162162a Version: 0.9.13.dev.260410
后端:
1. Memory Day1 链路打通(chat_history -> outbox -> memory_jobs)
   - 更新 service/events/chat_history_persist.go:聊天消息落库同事务追加 memory.extract.requested 事件(仅 user 消息,失败回滚后由 outbox 重试)
   - 新建 service/events/memory_extract_requested.go:消费 memory.extract.requested 并幂等入队 memory_jobs,补齐 payload 校验、文本截断与 idempotency key
   - 更新 cmd/start.go:注册 RegisterMemoryExtractRequestedHandler
2. Memory 模块骨架落地(先跑通状态机,再接入真实抽取)
   - 新建 memory/model、repo、service、orchestrator、worker、utils 目录与 Day1 mock 抽取执行链
   - 新建 model/memory.go:补齐 memory_items / memory_jobs / memory_audit_logs / memory_user_settings 与事件 payload 模型
   - 更新 inits/mysql.go:接入 4 张 memory 相关表 AutoMigrate
3. RAG 复用基础设施预埋(依赖可替换)
   - 新建 infra/rag:core pipeline + chunk/embed/retrieve/rerank/store/corpus/config 分层实现
   - 默认接入 MockEmbedder + InMemoryStore,预留 Milvus / Eino 适配实现
   - 新增 infra/rag/RAG复用接口实施计划.md
4. 本地依赖与交接文档同步
   - 更新 docker-compose.yml:新增 etcd / minio / milvus / attu 服务与数据卷
   - 删除 newAgent/HANDOFF_工具研究与运行态重置.md、newAgent/阶段3_上下文瘦身设计.md
   - 新增 newAgent/HANDOFF_WebSearch两阶段实施计划.md、memory/HANDOFF-RAG复用后续实施计划.md、memory/README.md
前端:无 仓库:无
2026-04-10 13:07:54 +08:00

29 lines
1.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Memory 模块Day1 骨架)
## 本轮目标
1. 打通 `memory.extract.requested` 事件发布与消费。
2. 消费后把任务可靠写入 `memory_jobs`(支持幂等)。
3. 提供 `worker.RunOnce()`,可手工推进 `pending -> processing -> success/failed`
## 本轮边界(刻意不做)
1. 不接真实 LLM 抽取与冲突决策。
2. 不接 Milvus 向量召回。
3. 不做读取注入链路Day2 再接)。
## 目录说明
- `model/`:记忆领域 DTO、状态机、配置对象。
- `repo/``memory_*` 表访问。
- `service/`:任务入队门面与配置加载。
- `orchestrator/`写入链路编排Day1 为 mock 抽取)。
- `worker/`:任务执行器(支持手工触发单次运行)。
- `utils/``ExtractJSON``NormalizeFacts` 等工具函数。
## 手工验证建议
1. 发起一轮聊天后,检查 outbox 是否存在 `memory.extract.requested`
2. 等待消费后,检查 `memory_jobs` 是否新增 `pending` 记录。
3. 手工调用 `worker.RunOnce()`,确认任务推进到 `success/failed`