OpenClaw 完整备份 - 2026-03-21

This commit is contained in:
huan
2026-03-21 15:31:06 +08:00
commit 8dd73a1d62
569 changed files with 76792 additions and 0 deletions
@@ -0,0 +1,10 @@
{
"backup_time": "20260321_145354",
"files": {
"json": "backups/memory_backup_20260321_145354.json",
"markdown": "backups/memory_backup_20260321_145354.md",
"vector": "backups/vector_20260321_145354",
"timestamp": "20260321_145354"
},
"total_memories": 20
}
@@ -0,0 +1,10 @@
{
"backup_time": "20260321_151149",
"files": {
"json": "backups/memory_backup_20260321_151149.json",
"markdown": "backups/memory_backup_20260321_151149.md",
"vector": "backups/vector_20260321_151149",
"timestamp": "20260321_151149"
},
"total_memories": 20
}
@@ -0,0 +1,309 @@
{
"version": "1.0",
"export_time": "2026-03-21T14:53:54.981182",
"total_count": 20,
"memories": [
{
"id": "58099dc0-0821-4160-8c0a-2318872d7f97",
"content": "向量记忆系统架构:硅基流动BGE-M3 + Chroma + SQLite",
"metadata": {
"tags": [
"系统",
"向量"
],
"source": "MEMORY.md"
},
"importance": 4,
"tier": "hot",
"created_at": "2026-03-21 06:53:19",
"updated_at": "2026-03-21 06:53:19"
},
{
"id": "19609b85-9301-499d-bfcc-54f80bee70ca",
"content": "潜力股池:中钨高新000657、北方稀土600111、南都电源300068、宁德时代300750、中芯国际688981",
"metadata": {
"tags": [
"股票",
"潜力股"
],
"source": "MEMORY.md"
},
"importance": 3,
"tier": "hot",
"created_at": "2026-03-21 06:53:18",
"updated_at": "2026-03-21 06:53:18"
},
{
"id": "023e98c3-5209-4f9c-aad4-abef1990d80b",
"content": "飞书应用 App ID: cli_a93815b250b9dcb5",
"metadata": {
"tags": [
"配置",
"飞书"
],
"source": "MEMORY.md"
},
"importance": 3,
"tier": "hot",
"created_at": "2026-03-21 06:53:18",
"updated_at": "2026-03-21 06:53:18"
},
{
"id": "f2687443-df55-4e30-9a7e-393fa0482189",
"content": "企业微信Bot ID: aibQ3hBrPtfh1C26UZA-KNdq1CAX_uj9GDW",
"metadata": {
"tags": [
"配置",
"企微"
],
"source": "MEMORY.md"
},
"importance": 3,
"tier": "hot",
"created_at": "2026-03-21 06:53:18",
"updated_at": "2026-03-21 06:53:18"
},
{
"id": "0befb952-a325-4220-a4c0-2e04ba4aa0b1",
"content": "股票监控配置:数据源腾讯财经,监控频率交易时间5分钟/收盘后30分钟",
"metadata": {
"tags": [
"股票",
"监控"
],
"source": "MEMORY.md"
},
"importance": 4,
"tier": "hot",
"created_at": "2026-03-21 06:53:18",
"updated_at": "2026-03-21 06:53:18"
},
{
"id": "30bf76a7-d20c-4c5d-95ea-58c4fc48a8ca",
"content": "岩山科技 002195:成本价10.68元,200股,盈利≥5%跑路,目标价11.21元",
"metadata": {
"tags": [
"股票",
"岩山科技"
],
"source": "MEMORY.md"
},
"importance": 5,
"tier": "hot",
"created_at": "2026-03-21 06:53:18",
"updated_at": "2026-03-21 06:53:18"
},
{
"id": "69b26384-1c18-42a8-bc72-d5918bde5be0",
"content": "云天化 600096:成本价42.00元,涨跌±5%预警",
"metadata": {
"tags": [
"股票",
"云天化"
],
"source": "MEMORY.md"
},
"importance": 4,
"tier": "hot",
"created_at": "2026-03-21 06:53:18",
"updated_at": "2026-03-21 06:53:18"
},
{
"id": "2ccf18a3-bfba-4e4e-a59f-fcdb56c0e903",
"content": "仕佳光子 688313:成本价15.00元,涨跌±5%预警",
"metadata": {
"tags": [
"股票",
"仕佳光子"
],
"source": "MEMORY.md"
},
"importance": 4,
"tier": "hot",
"created_at": "2026-03-21 06:53:18",
"updated_at": "2026-03-21 06:53:18"
},
{
"id": "d08bcddc-bb13-4eaa-b278-54096bd806cf",
"content": "铜陵有色 000630:成本价7.90元,1400股,跌破6.80元预警",
"metadata": {
"tags": [
"股票",
"铜陵有色"
],
"source": "MEMORY.md"
},
"importance": 5,
"tier": "hot",
"created_at": "2026-03-21 06:53:18",
"updated_at": "2026-03-21 06:53:18"
},
{
"id": "a9aff0cd-2f2e-4c94-8750-5fb00ce6ab71",
"content": "用户档案:称呼欢哥,技术栈Python/JavaScript/Linux,偏好直接答案+可执行代码",
"metadata": {
"tags": [
"用户",
"偏好"
],
"source": "MEMORY.md"
},
"importance": 5,
"tier": "hot",
"created_at": "2026-03-21 06:53:18",
"updated_at": "2026-03-21 06:53:18"
},
{
"id": "ea68fe7b-6463-4fe7-abf4-b0f03f3300d8",
"content": "银豹系统采购订单遇到确定按钮无法点击的问题",
"metadata": {
"tags": [
"问题",
"银豹"
],
"状态": "待解决"
},
"importance": 2,
"tier": "hot",
"created_at": "2026-03-21 06:51:36",
"updated_at": "2026-03-21 06:51:36"
},
{
"id": "23f398b5-339a-4ab3-9651-7c48cfa00979",
"content": "学习了在 AMD RX 580 上部署 Ollama 的方案",
"metadata": {
"tags": [
"学习",
"Ollama",
"GPU"
],
"重要性": "中"
},
"importance": 3,
"tier": "hot",
"created_at": "2026-03-21 06:51:36",
"updated_at": "2026-03-21 06:51:36"
},
{
"id": "245ec74a-f16d-4dcd-a993-1caa6fe691c2",
"content": "用户偏好:喜欢直接答案+可执行代码,解释要简练",
"metadata": {
"tags": [
"偏好",
"交互"
],
"来源": "USER.md"
},
"importance": 5,
"tier": "hot",
"created_at": "2026-03-21 06:51:36",
"updated_at": "2026-03-21 06:51:36"
},
{
"id": "86d1b3b0-46f6-4a98-92c2-f01b01195dff",
"content": "关注了铜陵有色股票,成本价 7.90 元,跌破 6.80 元预警",
"metadata": {
"tags": [
"股票",
"铜陵有色"
],
"类型": "投资"
},
"importance": 5,
"tier": "hot",
"created_at": "2026-03-21 06:51:36",
"updated_at": "2026-03-21 06:51:36"
},
{
"id": "574de41e-e3dd-488e-a181-16a4f9b1b1dd",
"content": "2026-03-21: 部署了向量记忆系统,采用硅基流动 BGE-M3 + Chroma + SQLite 架构",
"metadata": {
"tags": [
"系统部署",
"向量"
],
"项目": "记忆系统"
},
"importance": 4,
"tier": "hot",
"created_at": "2026-03-21 06:51:36",
"updated_at": "2026-03-21 06:51:36"
},
{
"id": "b48b18fa-d12c-43a9-a2e7-a958b1a1c693",
"content": "银豹系统采购订单遇到确定按钮无法点击的问题",
"metadata": {
"tags": [
"问题",
"银豹"
],
"状态": "待解决"
},
"importance": 2,
"tier": "hot",
"created_at": "2026-03-21 06:49:48",
"updated_at": "2026-03-21 06:49:48"
},
{
"id": "ca5d18fd-d298-4e46-83cc-2b2a03264b57",
"content": "学习了在 AMD RX 580 上部署 Ollama 的方案",
"metadata": {
"tags": [
"学习",
"Ollama",
"GPU"
],
"重要性": "中"
},
"importance": 3,
"tier": "hot",
"created_at": "2026-03-21 06:49:48",
"updated_at": "2026-03-21 06:49:48"
},
{
"id": "22a5569c-212f-4a27-8e9f-54baa3ef28c3",
"content": "用户偏好:喜欢直接答案+可执行代码,解释要简练",
"metadata": {
"tags": [
"偏好",
"交互"
],
"来源": "USER.md"
},
"importance": 5,
"tier": "hot",
"created_at": "2026-03-21 06:49:48",
"updated_at": "2026-03-21 06:49:48"
},
{
"id": "2eceba52-a885-43fb-9464-36a03edc15df",
"content": "关注了铜陵有色股票,成本价 7.90 元,跌破 6.80 元预警",
"metadata": {
"tags": [
"股票",
"铜陵有色"
],
"类型": "投资"
},
"importance": 5,
"tier": "hot",
"created_at": "2026-03-21 06:49:48",
"updated_at": "2026-03-21 06:49:48"
},
{
"id": "d91a2f68-76d2-46d5-aa2b-7ee72ee22444",
"content": "2026-03-21: 部署了向量记忆系统,采用硅基流动 BGE-M3 + Chroma + SQLite 架构",
"metadata": {
"tags": [
"系统部署",
"向量"
],
"项目": "记忆系统"
},
"importance": 4,
"tier": "hot",
"created_at": "2026-03-21 06:49:48",
"updated_at": "2026-03-21 06:49:48"
}
]
}
@@ -0,0 +1,226 @@
# 🧠 OpenClaw 向量记忆备份
> 导出时间: 2026-03-21 14:53:54
> 总数量: 20 条
---
## 1. [⭐⭐⭐⭐] 向量记忆系统架构:硅基流动BGE-M3 + Chroma + SQLite...
- **ID**: `58099dc0-0821-4160-8c0a-2318872d7f97`
- **重要性**: 4/5
- **层级**: hot
- **标签**: 系统, 向量
- **创建时间**: 2026-03-21 06:53:19
- **内容**: 向量记忆系统架构:硅基流动BGE-M3 + Chroma + SQLite
---
## 2. [⭐⭐⭐] 潜力股池:中钨高新000657、北方稀土600111、南都电源300068、宁德时代300750、中芯国际688981...
- **ID**: `19609b85-9301-499d-bfcc-54f80bee70ca`
- **重要性**: 3/5
- **层级**: hot
- **标签**: 股票, 潜力股
- **创建时间**: 2026-03-21 06:53:18
- **内容**: 潜力股池:中钨高新000657、北方稀土600111、南都电源300068、宁德时代300750、中芯国际688981
---
## 3. [⭐⭐⭐] 飞书应用 App ID: cli_a93815b250b9dcb5...
- **ID**: `023e98c3-5209-4f9c-aad4-abef1990d80b`
- **重要性**: 3/5
- **层级**: hot
- **标签**: 配置, 飞书
- **创建时间**: 2026-03-21 06:53:18
- **内容**: 飞书应用 App ID: cli_a93815b250b9dcb5
---
## 4. [⭐⭐⭐] 企业微信Bot ID: aibQ3hBrPtfh1C26UZA-KNdq1CAX_uj9GDW...
- **ID**: `f2687443-df55-4e30-9a7e-393fa0482189`
- **重要性**: 3/5
- **层级**: hot
- **标签**: 配置, 企微
- **创建时间**: 2026-03-21 06:53:18
- **内容**: 企业微信Bot ID: aibQ3hBrPtfh1C26UZA-KNdq1CAX_uj9GDW
---
## 5. [⭐⭐⭐⭐] 股票监控配置:数据源腾讯财经,监控频率交易时间5分钟/收盘后30分钟...
- **ID**: `0befb952-a325-4220-a4c0-2e04ba4aa0b1`
- **重要性**: 4/5
- **层级**: hot
- **标签**: 股票, 监控
- **创建时间**: 2026-03-21 06:53:18
- **内容**: 股票监控配置:数据源腾讯财经,监控频率交易时间5分钟/收盘后30分钟
---
## 6. [⭐⭐⭐⭐⭐] 岩山科技 002195:成本价10.68元,200股,盈利≥5%跑路,目标价11.21元...
- **ID**: `30bf76a7-d20c-4c5d-95ea-58c4fc48a8ca`
- **重要性**: 5/5
- **层级**: hot
- **标签**: 股票, 岩山科技
- **创建时间**: 2026-03-21 06:53:18
- **内容**: 岩山科技 002195:成本价10.68元,200股,盈利≥5%跑路,目标价11.21元
---
## 7. [⭐⭐⭐⭐] 云天化 600096:成本价42.00元,涨跌±5%预警...
- **ID**: `69b26384-1c18-42a8-bc72-d5918bde5be0`
- **重要性**: 4/5
- **层级**: hot
- **标签**: 股票, 云天化
- **创建时间**: 2026-03-21 06:53:18
- **内容**: 云天化 600096:成本价42.00元,涨跌±5%预警
---
## 8. [⭐⭐⭐⭐] 仕佳光子 688313:成本价15.00元,涨跌±5%预警...
- **ID**: `2ccf18a3-bfba-4e4e-a59f-fcdb56c0e903`
- **重要性**: 4/5
- **层级**: hot
- **标签**: 股票, 仕佳光子
- **创建时间**: 2026-03-21 06:53:18
- **内容**: 仕佳光子 688313:成本价15.00元,涨跌±5%预警
---
## 9. [⭐⭐⭐⭐⭐] 铜陵有色 000630:成本价7.90元,1400股,跌破6.80元预警...
- **ID**: `d08bcddc-bb13-4eaa-b278-54096bd806cf`
- **重要性**: 5/5
- **层级**: hot
- **标签**: 股票, 铜陵有色
- **创建时间**: 2026-03-21 06:53:18
- **内容**: 铜陵有色 000630:成本价7.90元,1400股,跌破6.80元预警
---
## 10. [⭐⭐⭐⭐⭐] 用户档案:称呼欢哥,技术栈Python/JavaScript/Linux,偏好直接答案+可执行代码...
- **ID**: `a9aff0cd-2f2e-4c94-8750-5fb00ce6ab71`
- **重要性**: 5/5
- **层级**: hot
- **标签**: 用户, 偏好
- **创建时间**: 2026-03-21 06:53:18
- **内容**: 用户档案:称呼欢哥,技术栈Python/JavaScript/Linux,偏好直接答案+可执行代码
---
## 11. [⭐⭐] 银豹系统采购订单遇到确定按钮无法点击的问题...
- **ID**: `ea68fe7b-6463-4fe7-abf4-b0f03f3300d8`
- **重要性**: 2/5
- **层级**: hot
- **标签**: 问题, 银豹
- **创建时间**: 2026-03-21 06:51:36
- **内容**: 银豹系统采购订单遇到确定按钮无法点击的问题
---
## 12. [⭐⭐⭐] 学习了在 AMD RX 580 上部署 Ollama 的方案...
- **ID**: `23f398b5-339a-4ab3-9651-7c48cfa00979`
- **重要性**: 3/5
- **层级**: hot
- **标签**: 学习, Ollama, GPU
- **创建时间**: 2026-03-21 06:51:36
- **内容**: 学习了在 AMD RX 580 上部署 Ollama 的方案
---
## 13. [⭐⭐⭐⭐⭐] 用户偏好:喜欢直接答案+可执行代码,解释要简练...
- **ID**: `245ec74a-f16d-4dcd-a993-1caa6fe691c2`
- **重要性**: 5/5
- **层级**: hot
- **标签**: 偏好, 交互
- **创建时间**: 2026-03-21 06:51:36
- **内容**: 用户偏好:喜欢直接答案+可执行代码,解释要简练
---
## 14. [⭐⭐⭐⭐⭐] 关注了铜陵有色股票,成本价 7.90 元,跌破 6.80 元预警...
- **ID**: `86d1b3b0-46f6-4a98-92c2-f01b01195dff`
- **重要性**: 5/5
- **层级**: hot
- **标签**: 股票, 铜陵有色
- **创建时间**: 2026-03-21 06:51:36
- **内容**: 关注了铜陵有色股票,成本价 7.90 元,跌破 6.80 元预警
---
## 15. [⭐⭐⭐⭐] 2026-03-21: 部署了向量记忆系统,采用硅基流动 BGE-M3 + Chroma + SQLite 架构...
- **ID**: `574de41e-e3dd-488e-a181-16a4f9b1b1dd`
- **重要性**: 4/5
- **层级**: hot
- **标签**: 系统部署, 向量
- **创建时间**: 2026-03-21 06:51:36
- **内容**: 2026-03-21: 部署了向量记忆系统,采用硅基流动 BGE-M3 + Chroma + SQLite 架构
---
## 16. [⭐⭐] 银豹系统采购订单遇到确定按钮无法点击的问题...
- **ID**: `b48b18fa-d12c-43a9-a2e7-a958b1a1c693`
- **重要性**: 2/5
- **层级**: hot
- **标签**: 问题, 银豹
- **创建时间**: 2026-03-21 06:49:48
- **内容**: 银豹系统采购订单遇到确定按钮无法点击的问题
---
## 17. [⭐⭐⭐] 学习了在 AMD RX 580 上部署 Ollama 的方案...
- **ID**: `ca5d18fd-d298-4e46-83cc-2b2a03264b57`
- **重要性**: 3/5
- **层级**: hot
- **标签**: 学习, Ollama, GPU
- **创建时间**: 2026-03-21 06:49:48
- **内容**: 学习了在 AMD RX 580 上部署 Ollama 的方案
---
## 18. [⭐⭐⭐⭐⭐] 用户偏好:喜欢直接答案+可执行代码,解释要简练...
- **ID**: `22a5569c-212f-4a27-8e9f-54baa3ef28c3`
- **重要性**: 5/5
- **层级**: hot
- **标签**: 偏好, 交互
- **创建时间**: 2026-03-21 06:49:48
- **内容**: 用户偏好:喜欢直接答案+可执行代码,解释要简练
---
## 19. [⭐⭐⭐⭐⭐] 关注了铜陵有色股票,成本价 7.90 元,跌破 6.80 元预警...
- **ID**: `2eceba52-a885-43fb-9464-36a03edc15df`
- **重要性**: 5/5
- **层级**: hot
- **标签**: 股票, 铜陵有色
- **创建时间**: 2026-03-21 06:49:48
- **内容**: 关注了铜陵有色股票,成本价 7.90 元,跌破 6.80 元预警
---
## 20. [⭐⭐⭐⭐] 2026-03-21: 部署了向量记忆系统,采用硅基流动 BGE-M3 + Chroma + SQLite 架构...
- **ID**: `d91a2f68-76d2-46d5-aa2b-7ee72ee22444`
- **重要性**: 4/5
- **层级**: hot
- **标签**: 系统部署, 向量
- **创建时间**: 2026-03-21 06:49:48
- **内容**: 2026-03-21: 部署了向量记忆系统,采用硅基流动 BGE-M3 + Chroma + SQLite 架构
---
@@ -0,0 +1,309 @@
{
"version": "1.0",
"export_time": "2026-03-21T15:11:49.229443",
"total_count": 20,
"memories": [
{
"id": "58099dc0-0821-4160-8c0a-2318872d7f97",
"content": "向量记忆系统架构:硅基流动BGE-M3 + Chroma + SQLite",
"metadata": {
"tags": [
"系统",
"向量"
],
"source": "MEMORY.md"
},
"importance": 4,
"tier": "hot",
"created_at": "2026-03-21 06:53:19",
"updated_at": "2026-03-21 06:53:19"
},
{
"id": "19609b85-9301-499d-bfcc-54f80bee70ca",
"content": "潜力股池:中钨高新000657、北方稀土600111、南都电源300068、宁德时代300750、中芯国际688981",
"metadata": {
"tags": [
"股票",
"潜力股"
],
"source": "MEMORY.md"
},
"importance": 3,
"tier": "hot",
"created_at": "2026-03-21 06:53:18",
"updated_at": "2026-03-21 06:53:18"
},
{
"id": "023e98c3-5209-4f9c-aad4-abef1990d80b",
"content": "飞书应用 App ID: cli_a93815b250b9dcb5",
"metadata": {
"tags": [
"配置",
"飞书"
],
"source": "MEMORY.md"
},
"importance": 3,
"tier": "hot",
"created_at": "2026-03-21 06:53:18",
"updated_at": "2026-03-21 06:53:18"
},
{
"id": "f2687443-df55-4e30-9a7e-393fa0482189",
"content": "企业微信Bot ID: aibQ3hBrPtfh1C26UZA-KNdq1CAX_uj9GDW",
"metadata": {
"tags": [
"配置",
"企微"
],
"source": "MEMORY.md"
},
"importance": 3,
"tier": "hot",
"created_at": "2026-03-21 06:53:18",
"updated_at": "2026-03-21 06:53:18"
},
{
"id": "0befb952-a325-4220-a4c0-2e04ba4aa0b1",
"content": "股票监控配置:数据源腾讯财经,监控频率交易时间5分钟/收盘后30分钟",
"metadata": {
"tags": [
"股票",
"监控"
],
"source": "MEMORY.md"
},
"importance": 4,
"tier": "hot",
"created_at": "2026-03-21 06:53:18",
"updated_at": "2026-03-21 06:53:18"
},
{
"id": "30bf76a7-d20c-4c5d-95ea-58c4fc48a8ca",
"content": "岩山科技 002195:成本价10.68元,200股,盈利≥5%跑路,目标价11.21元",
"metadata": {
"tags": [
"股票",
"岩山科技"
],
"source": "MEMORY.md"
},
"importance": 5,
"tier": "hot",
"created_at": "2026-03-21 06:53:18",
"updated_at": "2026-03-21 06:53:18"
},
{
"id": "69b26384-1c18-42a8-bc72-d5918bde5be0",
"content": "云天化 600096:成本价42.00元,涨跌±5%预警",
"metadata": {
"tags": [
"股票",
"云天化"
],
"source": "MEMORY.md"
},
"importance": 4,
"tier": "hot",
"created_at": "2026-03-21 06:53:18",
"updated_at": "2026-03-21 06:53:18"
},
{
"id": "2ccf18a3-bfba-4e4e-a59f-fcdb56c0e903",
"content": "仕佳光子 688313:成本价15.00元,涨跌±5%预警",
"metadata": {
"tags": [
"股票",
"仕佳光子"
],
"source": "MEMORY.md"
},
"importance": 4,
"tier": "hot",
"created_at": "2026-03-21 06:53:18",
"updated_at": "2026-03-21 06:53:18"
},
{
"id": "d08bcddc-bb13-4eaa-b278-54096bd806cf",
"content": "铜陵有色 000630:成本价7.90元,1400股,跌破6.80元预警",
"metadata": {
"tags": [
"股票",
"铜陵有色"
],
"source": "MEMORY.md"
},
"importance": 5,
"tier": "hot",
"created_at": "2026-03-21 06:53:18",
"updated_at": "2026-03-21 06:53:18"
},
{
"id": "a9aff0cd-2f2e-4c94-8750-5fb00ce6ab71",
"content": "用户档案:称呼欢哥,技术栈Python/JavaScript/Linux,偏好直接答案+可执行代码",
"metadata": {
"tags": [
"用户",
"偏好"
],
"source": "MEMORY.md"
},
"importance": 5,
"tier": "hot",
"created_at": "2026-03-21 06:53:18",
"updated_at": "2026-03-21 06:53:18"
},
{
"id": "ea68fe7b-6463-4fe7-abf4-b0f03f3300d8",
"content": "银豹系统采购订单遇到确定按钮无法点击的问题",
"metadata": {
"tags": [
"问题",
"银豹"
],
"状态": "待解决"
},
"importance": 2,
"tier": "hot",
"created_at": "2026-03-21 06:51:36",
"updated_at": "2026-03-21 06:51:36"
},
{
"id": "23f398b5-339a-4ab3-9651-7c48cfa00979",
"content": "学习了在 AMD RX 580 上部署 Ollama 的方案",
"metadata": {
"tags": [
"学习",
"Ollama",
"GPU"
],
"重要性": "中"
},
"importance": 3,
"tier": "hot",
"created_at": "2026-03-21 06:51:36",
"updated_at": "2026-03-21 06:51:36"
},
{
"id": "245ec74a-f16d-4dcd-a993-1caa6fe691c2",
"content": "用户偏好:喜欢直接答案+可执行代码,解释要简练",
"metadata": {
"tags": [
"偏好",
"交互"
],
"来源": "USER.md"
},
"importance": 5,
"tier": "hot",
"created_at": "2026-03-21 06:51:36",
"updated_at": "2026-03-21 06:51:36"
},
{
"id": "86d1b3b0-46f6-4a98-92c2-f01b01195dff",
"content": "关注了铜陵有色股票,成本价 7.90 元,跌破 6.80 元预警",
"metadata": {
"tags": [
"股票",
"铜陵有色"
],
"类型": "投资"
},
"importance": 5,
"tier": "hot",
"created_at": "2026-03-21 06:51:36",
"updated_at": "2026-03-21 06:51:36"
},
{
"id": "574de41e-e3dd-488e-a181-16a4f9b1b1dd",
"content": "2026-03-21: 部署了向量记忆系统,采用硅基流动 BGE-M3 + Chroma + SQLite 架构",
"metadata": {
"tags": [
"系统部署",
"向量"
],
"项目": "记忆系统"
},
"importance": 4,
"tier": "hot",
"created_at": "2026-03-21 06:51:36",
"updated_at": "2026-03-21 06:51:36"
},
{
"id": "b48b18fa-d12c-43a9-a2e7-a958b1a1c693",
"content": "银豹系统采购订单遇到确定按钮无法点击的问题",
"metadata": {
"tags": [
"问题",
"银豹"
],
"状态": "待解决"
},
"importance": 2,
"tier": "hot",
"created_at": "2026-03-21 06:49:48",
"updated_at": "2026-03-21 06:49:48"
},
{
"id": "ca5d18fd-d298-4e46-83cc-2b2a03264b57",
"content": "学习了在 AMD RX 580 上部署 Ollama 的方案",
"metadata": {
"tags": [
"学习",
"Ollama",
"GPU"
],
"重要性": "中"
},
"importance": 3,
"tier": "hot",
"created_at": "2026-03-21 06:49:48",
"updated_at": "2026-03-21 06:49:48"
},
{
"id": "22a5569c-212f-4a27-8e9f-54baa3ef28c3",
"content": "用户偏好:喜欢直接答案+可执行代码,解释要简练",
"metadata": {
"tags": [
"偏好",
"交互"
],
"来源": "USER.md"
},
"importance": 5,
"tier": "hot",
"created_at": "2026-03-21 06:49:48",
"updated_at": "2026-03-21 06:49:48"
},
{
"id": "2eceba52-a885-43fb-9464-36a03edc15df",
"content": "关注了铜陵有色股票,成本价 7.90 元,跌破 6.80 元预警",
"metadata": {
"tags": [
"股票",
"铜陵有色"
],
"类型": "投资"
},
"importance": 5,
"tier": "hot",
"created_at": "2026-03-21 06:49:48",
"updated_at": "2026-03-21 06:49:48"
},
{
"id": "d91a2f68-76d2-46d5-aa2b-7ee72ee22444",
"content": "2026-03-21: 部署了向量记忆系统,采用硅基流动 BGE-M3 + Chroma + SQLite 架构",
"metadata": {
"tags": [
"系统部署",
"向量"
],
"项目": "记忆系统"
},
"importance": 4,
"tier": "hot",
"created_at": "2026-03-21 06:49:48",
"updated_at": "2026-03-21 06:49:48"
}
]
}
@@ -0,0 +1,226 @@
# 🧠 OpenClaw 向量记忆备份
> 导出时间: 2026-03-21 15:11:49
> 总数量: 20 条
---
## 1. [⭐⭐⭐⭐] 向量记忆系统架构:硅基流动BGE-M3 + Chroma + SQLite...
- **ID**: `58099dc0-0821-4160-8c0a-2318872d7f97`
- **重要性**: 4/5
- **层级**: hot
- **标签**: 系统, 向量
- **创建时间**: 2026-03-21 06:53:19
- **内容**: 向量记忆系统架构:硅基流动BGE-M3 + Chroma + SQLite
---
## 2. [⭐⭐⭐] 潜力股池:中钨高新000657、北方稀土600111、南都电源300068、宁德时代300750、中芯国际688981...
- **ID**: `19609b85-9301-499d-bfcc-54f80bee70ca`
- **重要性**: 3/5
- **层级**: hot
- **标签**: 股票, 潜力股
- **创建时间**: 2026-03-21 06:53:18
- **内容**: 潜力股池:中钨高新000657、北方稀土600111、南都电源300068、宁德时代300750、中芯国际688981
---
## 3. [⭐⭐⭐] 飞书应用 App ID: cli_a93815b250b9dcb5...
- **ID**: `023e98c3-5209-4f9c-aad4-abef1990d80b`
- **重要性**: 3/5
- **层级**: hot
- **标签**: 配置, 飞书
- **创建时间**: 2026-03-21 06:53:18
- **内容**: 飞书应用 App ID: cli_a93815b250b9dcb5
---
## 4. [⭐⭐⭐] 企业微信Bot ID: aibQ3hBrPtfh1C26UZA-KNdq1CAX_uj9GDW...
- **ID**: `f2687443-df55-4e30-9a7e-393fa0482189`
- **重要性**: 3/5
- **层级**: hot
- **标签**: 配置, 企微
- **创建时间**: 2026-03-21 06:53:18
- **内容**: 企业微信Bot ID: aibQ3hBrPtfh1C26UZA-KNdq1CAX_uj9GDW
---
## 5. [⭐⭐⭐⭐] 股票监控配置:数据源腾讯财经,监控频率交易时间5分钟/收盘后30分钟...
- **ID**: `0befb952-a325-4220-a4c0-2e04ba4aa0b1`
- **重要性**: 4/5
- **层级**: hot
- **标签**: 股票, 监控
- **创建时间**: 2026-03-21 06:53:18
- **内容**: 股票监控配置:数据源腾讯财经,监控频率交易时间5分钟/收盘后30分钟
---
## 6. [⭐⭐⭐⭐⭐] 岩山科技 002195:成本价10.68元,200股,盈利≥5%跑路,目标价11.21元...
- **ID**: `30bf76a7-d20c-4c5d-95ea-58c4fc48a8ca`
- **重要性**: 5/5
- **层级**: hot
- **标签**: 股票, 岩山科技
- **创建时间**: 2026-03-21 06:53:18
- **内容**: 岩山科技 002195:成本价10.68元,200股,盈利≥5%跑路,目标价11.21元
---
## 7. [⭐⭐⭐⭐] 云天化 600096:成本价42.00元,涨跌±5%预警...
- **ID**: `69b26384-1c18-42a8-bc72-d5918bde5be0`
- **重要性**: 4/5
- **层级**: hot
- **标签**: 股票, 云天化
- **创建时间**: 2026-03-21 06:53:18
- **内容**: 云天化 600096:成本价42.00元,涨跌±5%预警
---
## 8. [⭐⭐⭐⭐] 仕佳光子 688313:成本价15.00元,涨跌±5%预警...
- **ID**: `2ccf18a3-bfba-4e4e-a59f-fcdb56c0e903`
- **重要性**: 4/5
- **层级**: hot
- **标签**: 股票, 仕佳光子
- **创建时间**: 2026-03-21 06:53:18
- **内容**: 仕佳光子 688313:成本价15.00元,涨跌±5%预警
---
## 9. [⭐⭐⭐⭐⭐] 铜陵有色 000630:成本价7.90元,1400股,跌破6.80元预警...
- **ID**: `d08bcddc-bb13-4eaa-b278-54096bd806cf`
- **重要性**: 5/5
- **层级**: hot
- **标签**: 股票, 铜陵有色
- **创建时间**: 2026-03-21 06:53:18
- **内容**: 铜陵有色 000630:成本价7.90元,1400股,跌破6.80元预警
---
## 10. [⭐⭐⭐⭐⭐] 用户档案:称呼欢哥,技术栈Python/JavaScript/Linux,偏好直接答案+可执行代码...
- **ID**: `a9aff0cd-2f2e-4c94-8750-5fb00ce6ab71`
- **重要性**: 5/5
- **层级**: hot
- **标签**: 用户, 偏好
- **创建时间**: 2026-03-21 06:53:18
- **内容**: 用户档案:称呼欢哥,技术栈Python/JavaScript/Linux,偏好直接答案+可执行代码
---
## 11. [⭐⭐] 银豹系统采购订单遇到确定按钮无法点击的问题...
- **ID**: `ea68fe7b-6463-4fe7-abf4-b0f03f3300d8`
- **重要性**: 2/5
- **层级**: hot
- **标签**: 问题, 银豹
- **创建时间**: 2026-03-21 06:51:36
- **内容**: 银豹系统采购订单遇到确定按钮无法点击的问题
---
## 12. [⭐⭐⭐] 学习了在 AMD RX 580 上部署 Ollama 的方案...
- **ID**: `23f398b5-339a-4ab3-9651-7c48cfa00979`
- **重要性**: 3/5
- **层级**: hot
- **标签**: 学习, Ollama, GPU
- **创建时间**: 2026-03-21 06:51:36
- **内容**: 学习了在 AMD RX 580 上部署 Ollama 的方案
---
## 13. [⭐⭐⭐⭐⭐] 用户偏好:喜欢直接答案+可执行代码,解释要简练...
- **ID**: `245ec74a-f16d-4dcd-a993-1caa6fe691c2`
- **重要性**: 5/5
- **层级**: hot
- **标签**: 偏好, 交互
- **创建时间**: 2026-03-21 06:51:36
- **内容**: 用户偏好:喜欢直接答案+可执行代码,解释要简练
---
## 14. [⭐⭐⭐⭐⭐] 关注了铜陵有色股票,成本价 7.90 元,跌破 6.80 元预警...
- **ID**: `86d1b3b0-46f6-4a98-92c2-f01b01195dff`
- **重要性**: 5/5
- **层级**: hot
- **标签**: 股票, 铜陵有色
- **创建时间**: 2026-03-21 06:51:36
- **内容**: 关注了铜陵有色股票,成本价 7.90 元,跌破 6.80 元预警
---
## 15. [⭐⭐⭐⭐] 2026-03-21: 部署了向量记忆系统,采用硅基流动 BGE-M3 + Chroma + SQLite 架构...
- **ID**: `574de41e-e3dd-488e-a181-16a4f9b1b1dd`
- **重要性**: 4/5
- **层级**: hot
- **标签**: 系统部署, 向量
- **创建时间**: 2026-03-21 06:51:36
- **内容**: 2026-03-21: 部署了向量记忆系统,采用硅基流动 BGE-M3 + Chroma + SQLite 架构
---
## 16. [⭐⭐] 银豹系统采购订单遇到确定按钮无法点击的问题...
- **ID**: `b48b18fa-d12c-43a9-a2e7-a958b1a1c693`
- **重要性**: 2/5
- **层级**: hot
- **标签**: 问题, 银豹
- **创建时间**: 2026-03-21 06:49:48
- **内容**: 银豹系统采购订单遇到确定按钮无法点击的问题
---
## 17. [⭐⭐⭐] 学习了在 AMD RX 580 上部署 Ollama 的方案...
- **ID**: `ca5d18fd-d298-4e46-83cc-2b2a03264b57`
- **重要性**: 3/5
- **层级**: hot
- **标签**: 学习, Ollama, GPU
- **创建时间**: 2026-03-21 06:49:48
- **内容**: 学习了在 AMD RX 580 上部署 Ollama 的方案
---
## 18. [⭐⭐⭐⭐⭐] 用户偏好:喜欢直接答案+可执行代码,解释要简练...
- **ID**: `22a5569c-212f-4a27-8e9f-54baa3ef28c3`
- **重要性**: 5/5
- **层级**: hot
- **标签**: 偏好, 交互
- **创建时间**: 2026-03-21 06:49:48
- **内容**: 用户偏好:喜欢直接答案+可执行代码,解释要简练
---
## 19. [⭐⭐⭐⭐⭐] 关注了铜陵有色股票,成本价 7.90 元,跌破 6.80 元预警...
- **ID**: `2eceba52-a885-43fb-9464-36a03edc15df`
- **重要性**: 5/5
- **层级**: hot
- **标签**: 股票, 铜陵有色
- **创建时间**: 2026-03-21 06:49:48
- **内容**: 关注了铜陵有色股票,成本价 7.90 元,跌破 6.80 元预警
---
## 20. [⭐⭐⭐⭐] 2026-03-21: 部署了向量记忆系统,采用硅基流动 BGE-M3 + Chroma + SQLite 架构...
- **ID**: `d91a2f68-76d2-46d5-aa2b-7ee72ee22444`
- **重要性**: 4/5
- **层级**: hot
- **标签**: 系统部署, 向量
- **创建时间**: 2026-03-21 06:49:48
- **内容**: 2026-03-21: 部署了向量记忆系统,采用硅基流动 BGE-M3 + Chroma + SQLite 架构
---
Binary file not shown.
+221
View File
@@ -0,0 +1,221 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
向量记忆系统 - 自动备份脚本
支持:
1. 导出到本地 JSON/Markdown
2. 同步到飞书云盘
3. 定时自动备份
"""
import os
import sys
import json
import sqlite3
import shutil
from datetime import datetime
from pathlib import Path
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from vector_memory import VectorMemorySystem
class MemoryBackup:
"""记忆备份管理器"""
def __init__(self, backup_dir: str = "./backups"):
self.backup_dir = Path(backup_dir)
self.backup_dir.mkdir(exist_ok=True)
def export_json(self, vm: VectorMemorySystem, filepath: str = None) -> str:
"""导出为 JSON 格式"""
if not filepath:
filepath = self.backup_dir / f"memory_backup_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json"
# 从 SQLite 读取全部记忆
conn = sqlite3.connect(vm.db_path)
conn.row_factory = sqlite3.Row
cursor = conn.execute("SELECT * FROM memories ORDER BY created_at DESC")
memories = []
for row in cursor.fetchall():
memories.append({
'id': row['id'],
'content': row['content'],
'metadata': json.loads(row['metadata']) if row['metadata'] else {},
'importance': row['importance'],
'tier': row['tier'],
'created_at': row['created_at'],
'updated_at': row['updated_at']
})
conn.close()
# 写入文件
backup_data = {
'version': '1.0',
'export_time': datetime.now().isoformat(),
'total_count': len(memories),
'memories': memories
}
with open(filepath, 'w', encoding='utf-8') as f:
json.dump(backup_data, f, ensure_ascii=False, indent=2)
print(f"✅ JSON 备份已保存: {filepath}")
return str(filepath)
def export_markdown(self, vm: VectorMemorySystem, filepath: str = None) -> str:
"""导出为 Markdown 格式(可读性好)"""
if not filepath:
filepath = self.backup_dir / f"memory_backup_{datetime.now().strftime('%Y%m%d_%H%M%S')}.md"
# 从 SQLite 读取
conn = sqlite3.connect(vm.db_path)
conn.row_factory = sqlite3.Row
cursor = conn.execute("SELECT * FROM memories ORDER BY created_at DESC")
rows = cursor.fetchall()
conn.close()
# 生成 Markdown
md_lines = [
"# 🧠 OpenClaw 向量记忆备份",
f"",
f"> 导出时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}",
f"> 总数量: {len(rows)}",
f"",
f"---",
f""
]
for i, row in enumerate(rows, 1):
metadata = json.loads(row['metadata']) if row['metadata'] else {}
tags = metadata.get('tags', [])
md_lines.append(f"## {i}. [{'' * row['importance']}] {row['content'][:60]}...")
md_lines.append(f"")
md_lines.append(f"- **ID**: `{row['id']}`")
md_lines.append(f"- **重要性**: {row['importance']}/5")
md_lines.append(f"- **层级**: {row['tier']}")
md_lines.append(f"- **标签**: {', '.join(tags) if tags else ''}")
md_lines.append(f"- **创建时间**: {row['created_at']}")
md_lines.append(f"- **内容**: {row['content']}")
md_lines.append(f"")
md_lines.append(f"---")
md_lines.append(f"")
with open(filepath, 'w', encoding='utf-8') as f:
f.write('\n'.join(md_lines))
print(f"✅ Markdown 备份已保存: {filepath}")
return str(filepath)
def backup_all(self, vm: VectorMemorySystem) -> dict:
"""执行完整备份"""
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
results = {
'json': None,
'markdown': None,
'vector': None,
'timestamp': timestamp
}
# 1. JSON 备份
results['json'] = self.export_json(vm)
# 2. Markdown 备份
results['markdown'] = self.export_markdown(vm)
# 3. 向量数据库备份(复制整个目录)
vector_backup = self.backup_dir / f"vector_{timestamp}"
shutil.copytree(
os.path.dirname(vm.db_path),
vector_backup,
dirs_exist_ok=True
)
results['vector'] = str(vector_backup)
# 生成备份清单
manifest = {
'backup_time': timestamp,
'files': results,
'total_memories': vm.count()
}
manifest_file = self.backup_dir / f"manifest_{timestamp}.json"
with open(manifest_file, 'w', encoding='utf-8') as f:
json.dump(manifest, f, indent=2)
print(f"\n📋 备份清单: {manifest_file}")
return results
def restore_from_json(self, json_file: str, vm: VectorMemorySystem = None):
"""从 JSON 恢复记忆"""
with open(json_file, 'r', encoding='utf-8') as f:
data = json.load(f)
if not vm:
api_key = os.getenv("SILICONFLOW_API_KEY")
vm = VectorMemorySystem(api_key=api_key)
print(f"📥 开始恢复 {len(data['memories'])} 条记忆...")
for mem in data['memories']:
try:
vm.add_memory(
content=mem['content'],
metadata=mem['metadata'],
importance=mem['importance']
)
except Exception as e:
print(f" ⚠️ 跳过重复: {mem['id']}")
print(f"✅ 恢复完成!")
def main():
import argparse
parser = argparse.ArgumentParser(description="向量记忆备份工具")
subparsers = parser.add_subparsers(dest="command")
# 导出命令
subparsers.add_parser("export-json", help="导出为 JSON")
subparsers.add_parser("export-markdown", help="导出为 Markdown")
subparsers.add_parser("backup", help="完整备份(JSON + Markdown + 向量库)")
# 恢复命令
restore_parser = subparsers.add_parser("restore", help="从 JSON 恢复")
restore_parser.add_argument("file", help="备份文件路径")
args = parser.parse_args()
# 获取 API Key
api_key = os.getenv("SILICONFLOW_API_KEY")
if not api_key:
print("❌ 请设置 SILICONFLOW_API_KEY 环境变量")
sys.exit(1)
# 初始化
vm = VectorMemorySystem(api_key=api_key)
backup = MemoryBackup()
# 执行命令
if args.command == "export-json":
backup.export_json(vm)
elif args.command == "export-markdown":
backup.export_markdown(vm)
elif args.command == "backup":
backup.backup_all(vm)
elif args.command == "restore":
backup.restore_from_json(args.file, vm)
else:
parser.print_help()
if __name__ == "__main__":
main()
+89
View File
@@ -0,0 +1,89 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
向量记忆系统 - 命令行工具
用法:
python3 memory_cli.py add "记忆内容" --importance 4 --tags tag1,tag2
python3 memory_cli.py search "查询内容"
python3 memory_cli.py recent
python3 memory_cli.py count
"""
import os
import sys
import argparse
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from vector_memory import VectorMemorySystem
def main():
parser = argparse.ArgumentParser(description="OpenClaw 向量记忆系统 CLI")
subparsers = parser.add_subparsers(dest="command", help="命令")
# 添加记忆
add_parser = subparsers.add_parser("add", help="添加记忆")
add_parser.add_argument("content", help="记忆内容")
add_parser.add_argument("--importance", "-i", type=int, default=3,
help="重要性 1-5 (默认: 3)")
add_parser.add_argument("--tags", "-t", type=str, default="",
help="标签,用逗号分隔")
# 搜索
search_parser = subparsers.add_parser("search", help="语义搜索")
search_parser.add_argument("query", help="查询内容")
search_parser.add_argument("--top", "-n", type=int, default=5,
help="返回数量 (默认: 5)")
# 最近
subparsers.add_parser("recent", help="查看最近记忆")
subparsers.add_parser("count", help="统计记忆数量")
# 删除
delete_parser = subparsers.add_parser("delete", help="删除记忆")
delete_parser.add_argument("memory_id", help="记忆 ID")
args = parser.parse_args()
# 获取 API Key
api_key = os.getenv("SILICONFLOW_API_KEY")
if not api_key:
print("❌ 请设置 SILICONFLOW_API_KEY 环境变量")
sys.exit(1)
# 初始化
vm = VectorMemorySystem(api_key=api_key)
# 执行命令
if args.command == "add":
tags = args.tags.split(",") if args.tags else []
metadata = {"tags": tags} if tags else {}
vm.add_memory(args.content, metadata, args.importance)
elif args.command == "search":
results = vm.search(args.query, args.top)
print(f"\n🔍 搜索: '{args.query}' (共 {len(results)} 条)")
for i, r in enumerate(results, 1):
print(f"\n{i}. {r['content']}")
print(f" 相似度: {r['similarity']:.2%} | ID: {r['id']}")
elif args.command == "recent":
recent = vm.get_recent(10)
print(f"\n📅 最近 {len(recent)} 条记忆:")
for i, r in enumerate(recent, 1):
print(f"{i}. {r['content'][:50]}...")
print(f" 创建于: {r['created_at']} | 重要性: {r['importance']}")
elif args.command == "count":
print(f"\n📊 记忆总数: {vm.count()}")
elif args.command == "delete":
vm.delete(args.memory_id)
else:
parser.print_help()
if __name__ == "__main__":
main()
+229
View File
@@ -0,0 +1,229 @@
# -*- coding: utf-8 -*-
"""
OpenClaw 向量记忆系统 - 核心引擎
基于 硅基流动 BGE-M3 + Chroma + SQLite
"""
import chromadb
from chromadb.config import Settings
from openai import OpenAI
import sqlite3
import json
import os
from datetime import datetime
import uuid
class VectorMemorySystem:
"""向量记忆系统核心类"""
def __init__(self, persist_dir: str = "./data/memory", api_key: str = None):
"""
初始化向量记忆系统
Args:
persist_dir: 数据存储目录
api_key: 硅基流动 API Key
"""
# 1. 初始化硅基流动客户端
if not api_key:
api_key = os.getenv("SILICONFLOW_API_KEY")
if not api_key:
raise ValueError("请设置 SILICONFLOW_API_KEY 环境变量")
self.client = OpenAI(
api_key=api_key,
base_url="https://api.siliconflow.cn/v1"
)
# 2. 初始化 Chroma 向量库
self.chroma = chromadb.Client(Settings(
persist_directory=persist_dir,
anonymized_telemetry=False
))
self.collection = self.chroma.get_or_create_collection(
name="openclaw_memory",
metadata={"description": "OpenClaw long-term memory"}
)
# 3. 初始化 SQLite(用于持久化)
self.db_path = f"{persist_dir}/memory.db"
self._init_sqlite()
print(f"✅ 向量记忆系统初始化完成")
print(f" - 数据目录: {persist_dir}")
print(f" - 向量模型: BAAI/bge-m3")
def _init_sqlite(self):
"""初始化 SQLite 数据库"""
self.conn = sqlite3.connect(self.db_path)
self.conn.execute("""
CREATE TABLE IF NOT EXISTS memories (
id TEXT PRIMARY KEY,
content TEXT NOT NULL,
metadata TEXT,
importance INTEGER DEFAULT 3,
tier TEXT DEFAULT 'hot',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
""")
self.conn.execute("""
CREATE INDEX IF NOT EXISTS idx_importance ON memories(importance)
""")
self.conn.execute("""
CREATE INDEX IF NOT EXISTS idx_created_at ON memories(created_at)
""")
self.conn.commit()
def _get_embedding(self, text: str) -> list:
"""调用 BGE-M3 获取向量"""
response = self.client.embeddings.create(
model="BAAI/bge-m3",
input=text
)
return response.data[0].embedding
def add_memory(self, content: str, metadata: dict = None, importance: int = 3) -> str:
"""
添加记忆(同时写入向量库 + SQLite)
Args:
content: 记忆内容
metadata: 元数据(字典)
importance: 重要性评分 1-5
Returns:
memory_id: 记忆唯一标识
"""
memory_id = str(uuid.uuid4())
# 1. 生成向量并存储到 Chroma
embedding = self._get_embedding(content)
self.collection.add(
ids=[memory_id],
embeddings=[embedding],
documents=[content],
metadatas=[metadata or {"importance": importance}]
)
# 2. 写入 SQLite 持久化
self.conn.execute(
"""INSERT INTO memories (id, content, metadata, importance)
VALUES (?, ?, ?, ?)""",
(memory_id, content, json.dumps(metadata or {}), importance)
)
self.conn.commit()
print(f"✅ 添加记忆: {content[:30]}...")
return memory_id
def search(self, query: str, top_k: int = 5) -> list:
"""
语义搜索
Args:
query: 查询文本
top_k: 返回数量
Returns:
记忆列表(包含 content, distance, metadata
"""
# 1. 查询向量
query_embedding = self._get_embedding(query)
# 2. 向量相似度搜索
results = self.collection.query(
query_embeddings=[query_embedding],
n_results=top_k
)
# 3. 格式化返回
memories = []
for i, doc in enumerate(results['documents'][0]):
memories.append({
'id': results['ids'][0][i],
'content': doc,
'distance': results['distances'][0][i],
'similarity': 1 - results['distances'][0][i],
'metadata': results['metadatas'][0][i]
})
return memories
def get_recent(self, limit: int = 10) -> list:
"""获取最近添加的记忆"""
cursor = self.conn.execute("""
SELECT id, content, metadata, importance, created_at
FROM memories
ORDER BY created_at DESC
LIMIT ?
""", (limit,))
return [{
'id': row[0],
'content': row[1],
'metadata': json.loads(row[2]) if row[2] else {},
'importance': row[3],
'created_at': row[4]
} for row in cursor.fetchall()]
def count(self) -> int:
"""获取记忆总数"""
cursor = self.conn.execute("SELECT COUNT(*) FROM memories")
return cursor.fetchone()[0]
def delete(self, memory_id: str):
"""删除指定记忆"""
self.collection.delete(ids=[memory_id])
self.conn.execute("DELETE FROM memories WHERE id=?", (memory_id,))
self.conn.commit()
print(f"🗑️ 删除记忆: {memory_id}")
# ============ 便捷函数 ============
def get_memory_system(api_key: str = None) -> VectorMemorySystem:
"""获取记忆系统单例(支持传入 API Key)"""
global _memory_system
if '_memory_system' not in globals() or _memory_system is None:
_memory_system = VectorMemorySystem(api_key=api_key)
return _memory_system
# 测试代码
if __name__ == "__main__":
import sys
# 检查 API Key
api_key = os.getenv("SILICONFLOW_API_KEY")
if not api_key and len(sys.argv) > 1:
api_key = sys.argv[1]
if not api_key:
print("❌ 请设置 SILICONFLOW_API_KEY 环境变量或作为参数传入")
print(" export SILICONFLOW_API_KEY='sk-xxx'")
sys.exit(1)
# 初始化
vm = VectorMemorySystem(api_key=api_key)
# 测试添加
print("\n📝 测试添加记忆...")
vm.add_memory(
content="今天学习了向量数据库+语义搜索的方案,采用硅基流动BGE-M3模型",
metadata={"tags": ["学习", "向量"], "source": "test"},
importance=4
)
# 测试搜索
print("\n🔍 测试语义搜索...")
results = vm.search("AI 记忆系统")
for r in results:
print(f" - {r['content'][:50]}... (相似度: {r['similarity']:.2%})")
# 统计
print(f"\n📊 当前记忆总数: {vm.count()}")