本项目使用 SQLite 作为本地数据库,用于存储:
- 对话历史记录
- 提示词链
- 用户配置
- 爬虫任务
- 攻击任务
- 扫描结果
在 .env 文件中配置 DATABASE_URL:
# 相对路径(推荐,存储在项目根目录的 data 文件夹)
DATABASE_URL=sqlite:///./data/m_bot.db
# 绝对路径(Windows)
DATABASE_URL=sqlite:///C:/path/to/m_bot.db
# 绝对路径(Linux/Mac)
DATABASE_URL=sqlite:////path/to/m_bot.db如果不配置,默认使用: data/m_bot.db
首次运行时,数据库会自动创建并初始化所有表结构。无需手动操作。
运行测试脚本验证数据库功能:
python test_sqlite_connection.py-
conversations - 对话历史记录
- 存储智能体与用户的对话
- 支持按智能体类型、会话ID查询
-
prompt_chains - 提示词链
- 存储自定义提示词链配置
- 支持名称唯一性
-
user_configs - 用户配置
- 存储用户自定义配置项
- 支持分类管理
-
crawler_tasks - 爬虫任务
- 记录爬虫任务执行历史
- 支持状态跟踪
-
attack_tasks - 攻击任务
- 记录网络攻击测试任务
- 支持定时调度
-
scan_results - 扫描结果
- 存储网络扫描结果
- 包含漏洞信息
from database.manager import DatabaseManager
from database.models import Conversation
from datetime import datetime
# 初始化数据库管理器
db = DatabaseManager()
# 保存对话
conversation = Conversation(
agent_type="simple",
user_message="你好",
assistant_message="你好!有什么可以帮助你的吗?",
session_id="session-123",
timestamp=datetime.now()
)
db.save_conversation(conversation)
# 获取对话历史
conversations = db.get_conversations(agent_type="simple", limit=10)
# 获取统计信息
stats = db.get_stats()
print(f"对话记录数: {stats['conversations']}")# 查看数据库统计
python main.py db-stats
# 查看对话历史
python main.py db-history --limit 10
# 清空对话历史
python main.py db-clear --yes- 默认位置:
项目根目录/data/m_bot.db - 自定义位置: 通过
DATABASE_URL环境变量配置
# Windows
copy data\m_bot.db backup\m_bot_backup.db
# Linux/Mac
cp data/m_bot.db backup/m_bot_backup.db# Windows
copy backup\m_bot_backup.db data\m_bot.db
# Linux/Mac
cp backup/m_bot_backup.db data/m_bot.db- 数据库文件已添加到
.gitignore,不会被提交到版本控制 - 数据目录:
data/目录包含所有数据库文件,已添加到.gitignore - 并发访问: SQLite 支持多读单写,适合单机应用
- 性能: 对于大量数据,建议定期清理历史记录
如果遇到 "database is locked" 错误:
- 检查是否有其他进程正在使用数据库
- 确保所有数据库连接已正确关闭
如果遇到权限错误:
- 确保数据库文件所在目录有写权限
- 检查文件系统权限设置
如果数据库文件损坏:
- 使用备份文件恢复
- 或删除数据库文件,系统会在下次运行时自动重建
说明:本项目仅使用 SQLite 作为数据库,不支持迁移到其他数据库类型。