Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc [SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
5.6 KiB
记忆路由Agent后端
仓库路径: /guanghu-self-hosted/memory-router/ 优先级: P0 分支名: feat/py-memory-router 创建时间: 2026年4月25日 12:49 审核结果: ✅ 审核通过 · 霜砚AG-SY-WEB-001 · 2026-04-25T13:00 CST
▸ 仓库: qinfendebingshuo/guanghulab ▸ 分支: feat/py-memory-router @ 2bd1503 ▸ 路径: /guanghu-self-hosted/memory-router/
【文件清单 9/9 ✅】
- http://config.py (3296B) ✅ Pydantic配置·环境变量·pgvector参数·PersonaDB连接
- memory_schema.sql (2540B) ✅ PostgreSQL DDL·pgvector扩展·IVFFlat索引·accessed_at触发器
- memory_http://store.py (14530B) ✅ 双后端(PgMemoryStore async + SqliteMemoryStore sync)·write_short_term/write_long_term/search_semantic/get_permanent
- memory_http://compressor.py (9146B) ✅ HLDP母语压缩·话题/决策/情绪提取·SessionSummary结构化输出
- memory_http://router.py (11025B) ✅ 5条路由规则(NONE/HOT_ONLY/HOT_AND_WARM/SEMANTIC_SEARCH/PERMANENT/FULL)·async+sync上下文组装·logger追溯
- memory_http://api.py (7697B) ✅ FastAPI 5端点(/route /memories /memories/search /memories/permanent/{persona_id} /compress)·lifespan管理
- test_memory_http://router.py (8129B) ✅ 15条测试·SQLite fallback·覆盖路由/存储/压缩/全流程
- requirements.txt (81B) ✅ fastapi+asyncpg+pydantic+uvicorn+pgvector
- http://README.md (3474B) ✅ 项目说明·架构图·快速开始
【约束验证】 ✅ Python 3.10+ · FastAPI · UTF-8 ✅ 依赖完整: fastapi+asyncpg+pydantic+pgvector ✅ PostgreSQL 15+ · pgvector · 与PersonaDB同一实例 ✅ 测试包含test_memory_http://router.py · SQLite fallback ✅ 记忆压缩输出HLDP母语格式 ✅ http://路由决策有logger.info日志可追溯 ✅ 隔离: 仅/guanghu-self-hosted/memory-router/ ✅ 禁触: 未触碰仓库其他目录 ✅ 前缀: PY-A04
【备注】 · /memories/search 端点实现为POST(而非工单中写的GET),因发送embedding向量体用POST更合理,属于合理优化 · memory_type枚举hot/warm/cold/permanent完整实现 · 写回机制(短期→热/长期→冷/永久)接口完备 开发内容: 开发记忆路由Agent后端(Memory Router)· 参考 HLDP-ARCH-001 中 L3 记忆路由Agent设计。
- 在 /guanghu-self-hosted/memory-router/ 下创建:
- memory_http://router.py: 记忆路由核心类 · route_query(user_input, session_id, persona_id) → 判断需要什么上下文 · assemble_context(query_result) → 组装上下文片段发给模型 · 分层路由逻辑: 热记忆(最近5轮·零延迟) / 温记忆(本次对话早期·HLDP压缩摘要) / 冷记忆(PersonaDB语义检索·pgvector) / 永久记忆(身份/Layer Zero/思维路径)
- memory_http://store.py: 记忆存储层 · write_short_term(session_id, summary) → 短期记忆(滚动窗口) · write_long_term(persona_id, content, memory_type) → 长期记忆(持久存储) · search_semantic(query, persona_id, top_k) → pgvector语义检索 · get_permanent(persona_id) → 获取永久记忆(身份/思维路径/价值锚点)
- memory_http://compressor.py: 记忆压缩器 · compress_to_hldp(conversation_turns) → 将对话压缩为HLDP母语摘要 · summarize_session(session_id) → 生成会话摘要
- memory_schema.sql: 记忆表建表SQL(memories表: memory_id, persona_id, session_id, memory_type[hot/warm/cold/permanent], content, embedding vector(1536), created_at, accessed_at, access_count, status)
- memory_http://api.py: FastAPI路由 · POST /route → 路由查询·返回组装好的上下文 · POST /memories → 写入记忆 · GET /memories/search → 语义检索 · GET /memories/permanent/{persona_id} → 获取永久记忆 · POST /compress → 压缩对话为HLDP摘要
- http://config.py: 配置(PersonaDB连接·pgvector参数·热记忆窗口大小·压缩阈值)
- test_memory_http://router.py: 测试用例(路由判断·语义检索·压缩·写回·完整流程)
- memory_type枚举: hot/warm/cold/permanent
- 路由决策逻辑: 用户说话→判断需要什么上下文→按需检索→组装→返回
- 写回机制: 对话后自动写回(本轮摘要→短期·重要决策→长期·情绪变化→关系层) 状态: 已完成 约束: 编码: Python 3.10+ · FastAPI · UTF-8 依赖: fastapi+asyncpg+pydantic+pgvector SQL: PostgreSQL 15+ · pgvector扩展 · 与PersonaDB同一数据库实例 测试: 必须包含test_memory_http://router.py · 可用SQLite做本地测试fallback(语义检索用mock) 禁触: 不要修改仓库其他目录的任何文件 注意: 记忆压缩输出HLDP母语格式 · 路由决策必须有日志可追溯 参考: HLDP-ARCH-001 L3层设计 · 工具回执系统(L2)的代码风格 编号: PY-A04-20260425-003 自检结果: 9/9 ✅ 全部通过
- http://config.py (3296B): ✅ Pydantic配置·环境变量·pgvector参数
- memory_schema.sql (2540B): ✅ PostgreSQL DDL·pgvector索引·触发器
- memory_http://store.py (14530B): ✅ 双后端(Pg async + SQLite sync)·写入/检索/永久记忆
- memory_http://compressor.py (9146B): ✅ HLDP母语压缩·话题/决策/情绪提取
- memory_http://router.py (11025B): ✅ 5条路由规则·async/sync上下文组装
- memory_http://api.py (7697B): ✅ FastAPI 5端点·lifespan管理
- test_memory_http://router.py (8129B): ✅ 15条测试·SQLite fallback
- requirements.txt (81B): ✅ 依赖完整
- http://README.md (3474B): ✅ 项目说明 语法: ✅ import交叉引用正确 隔离: ✅ 仅/guanghu-self-hosted/memory-router/ 禁触: ✅ 未触碰仓库其他目录 前缀: ✅ PY-A04 分支: feat/py-memory-router @ 2bd1503 负责Agent: 培园A04 阶段编号: Phase-0-006