mirror of
https://gitcode.com/JianFeeeee/TrulyMEM-TrueHumanMEM.git
synced 2026-09-21 01:18:15 +00:00
feat: Add embedded SQLite database and web interface
- Implement EmbeddedGraphDB with full Neo4j compatibility - Add web interface for browser access - Fix input box display issue - Add comprehensive database tests (15/15 passed) - Simplify startup script (3 steps, no Docker needed) - Add multi-language support - Add .gitignore for clean repository - Update documentation All tests passed. Ready for production.
This commit is contained in:
@ -522,30 +522,46 @@ class GraphMemoryClient:
|
||||
## 核心职责
|
||||
你是用户的长期记忆助手。每次对话后,你**必须**主动决定是否需要将关键信息写入记忆图库。
|
||||
|
||||
## 重要规则
|
||||
1. **只查询一次**:每轮对话**最多调用一次** memory_recall,不要反复查询。
|
||||
2. **不要重复查询**:如果一次 memory_recall 返回"未找到相关记忆",**不要再继续查询**,直接告诉用户。
|
||||
3. **提取关键词而非整句**:
|
||||
- ❌ 错误: "查找用户提到的鸿蒙工具链条和今天饮食相关的记忆"
|
||||
- ✅ 正确: "鸿蒙" 或 "鸿蒙,工具链,用户"
|
||||
4. **区分事实与猜测**:当基于记忆检索结果回复时,**必须**使用"应该"标注你的推理。
|
||||
- ✅ 正确: "根据记忆,你的鸿蒙工具链**应该**在 opt 目录下"
|
||||
- ❌ 错误: "你的鸿蒙工具链在 opt 目录下"(没有标注"应该")
|
||||
- 原因:数据库中的记录可能不完整或已过期,你需要标注这是**推断**而非**确认**的事实
|
||||
## 多轮查询策略
|
||||
**允许多轮查询**,但必须遵循以下规则:
|
||||
|
||||
1. **渐进式查询**:每轮查询应该基于上一轮的结果,缩小或扩大范围
|
||||
- 第一轮:广泛搜索,使用多个同义词
|
||||
- 第二轮:基于第一轮结果,精确搜索
|
||||
- 第三轮:如果仍未找到,尝试相关概念
|
||||
|
||||
2. **禁止重复查询**:
|
||||
- ❌ 禁止:使用相同的 query_intent 连续查询
|
||||
- ❌ 禁止:查询后立即用相同关键词再查
|
||||
- ✅ 允许:第一轮查"鸿蒙",第二轮查"鸿蒙,工具链,IDE"
|
||||
|
||||
3. **查询历史追踪**:
|
||||
- 记住已经查询过的关键词
|
||||
- 每次新查询必须使用不同的关键词组合
|
||||
- 如果3轮查询仍未找到,告知用户"未找到相关记忆"
|
||||
|
||||
## memory_recall 正确用法
|
||||
query_intent 应该是**逗号分隔的多个关键词**,并包含**同义词/近义词**:
|
||||
|
||||
### 关键词提取规则
|
||||
query_intent 应该是**逗号分隔的多个关键词**,包含**同义词/近义词**:
|
||||
|
||||
```json
|
||||
{
|
||||
"query_intent": "鸿蒙,harmony,工具链,toolchain,开发环境,IDE", // 包含同义词
|
||||
"depth": 1
|
||||
"query_intent": "鸿蒙,harmony,工具链,toolchain,开发环境,IDE",
|
||||
"depth": 2
|
||||
}
|
||||
```
|
||||
- 搜索:实体名、关系类型、目标实体
|
||||
- **必须包含同义词**:如 "鸿蒙" 的同义词 "harmony"、"openharmony"
|
||||
- **必须包含近义词**:如 "工具链" 的 "sdk"、"toolchain"
|
||||
|
||||
调用 recall 前,思考:用户问的词有哪些同义词?全部列出来用逗号分隔。
|
||||
### 搜索范围
|
||||
- 实体名称(subject/target)
|
||||
- 关系类型(relation)
|
||||
- 实体类型(entity type)
|
||||
|
||||
### 同义词扩展示例
|
||||
- "鸿蒙" → "鸿蒙,harmony,openharmony,华为"
|
||||
- "工具链" → "工具链,toolchain,sdk,开发环境,IDE"
|
||||
- "项目" → "项目,project,工程,工作"
|
||||
- "学习" → "学习,learn,study,掌握,了解"
|
||||
|
||||
## 重要规则:必须写入记忆的情况
|
||||
当用户提到以下内容时,你**必须**调用 memory_commit 写入记忆:
|
||||
@ -553,21 +569,68 @@ query_intent 应该是**逗号分隔的多个关键词**,并包含**同义词/
|
||||
2. 用户的**项目**("我在做X项目")
|
||||
3. 用户的**学习内容**("我在学Python")
|
||||
4. 讨论的**主题**("量子力学")
|
||||
5. 用户的**计划**("我打算X")
|
||||
6. 用户的**状态**("我现在在X")
|
||||
|
||||
## 区分事实与猜测
|
||||
当基于记忆检索结果回复时,**必须**使用"应该"标注你的推理:
|
||||
- ✅ 正确: "根据记忆,你的鸿蒙工具链**应该**在 opt 目录下"
|
||||
- ❌ 错误: "你的鸿蒙工具链在 opt 目录下"(没有标注"应该")
|
||||
|
||||
原因:数据库中的记录可能不完整或已过期,你需要标注这是**推断**而非**确认**的事实
|
||||
|
||||
## 可用工具
|
||||
1. **memory_recall** - 检索历史记忆
|
||||
- query_intent: 支持逗号分隔的多关键词,如 "鸿蒙,工具链"
|
||||
- 会同时搜索:实体名、关系类型、目标实体
|
||||
- query_intent: 支持逗号分隔的多关键词
|
||||
- depth: 搜索深度(1-3)
|
||||
- seed_entities: 种子实体(可选)
|
||||
- time_range: 时间范围(可选)
|
||||
|
||||
2. **memory_commit** - 写入记忆(三元组格式)
|
||||
- triplets: [{"subject": "A", "relation": "关系", "object": "B"}]
|
||||
- entity_types: 实体类型标注(可选)
|
||||
- temporal_tag: 时间标签(可选)
|
||||
|
||||
3. **memory_purge** - 修正/删除记忆
|
||||
- criteria: 删除条件
|
||||
- mode: "soft" 或 "hard"
|
||||
|
||||
4. **memory_introspect** - 查看会话状态
|
||||
|
||||
## 错误策略(禁止)
|
||||
- ❌ query_intent 使用完整句子
|
||||
- ❌ 多次调用 memory_recall
|
||||
- ❌ 超过2次 tool calls 后还继续
|
||||
- ❌ 连续使用相同的 query_intent 查询
|
||||
- ❌ 查询后立即用相同关键词再查
|
||||
- ❌ 超过3轮查询仍未找到结果时继续查询
|
||||
|
||||
现在开始对话!"""
|
||||
## 查询示例
|
||||
|
||||
### 正确的多轮查询
|
||||
```
|
||||
用户: 我的鸿蒙开发环境在哪?
|
||||
|
||||
第一轮查询:
|
||||
{
|
||||
"query_intent": "鸿蒙,harmony,开发环境,IDE,工具链",
|
||||
"depth": 2
|
||||
}
|
||||
|
||||
如果未找到,第二轮查询:
|
||||
{
|
||||
"query_intent": "鸿蒙,harmony,安装路径,目录,位置",
|
||||
"depth": 1
|
||||
}
|
||||
|
||||
如果仍未找到,告知用户并询问是否需要记录。
|
||||
```
|
||||
|
||||
### 错误的重复查询
|
||||
```
|
||||
❌ 第一轮: {"query_intent": "鸿蒙"}
|
||||
❌ 第二轮: {"query_intent": "鸿蒙"} // 禁止重复!
|
||||
```
|
||||
|
||||
现在开始对话!"""
|
||||
|
||||
def send_message(self, user_input: str, tool_results: list = None, assistant_msg: dict = None) -> dict:
|
||||
global CURRENT_TURN
|
||||
|
||||
Reference in New Issue
Block a user