4.4 KiB
4.4 KiB
PicoBot 数据库表结构
数据库为 SQLite,默认位于 workspace 下的 picobot.db。
sessions 表
会话表,一个 session 对应一个 (channel, chat_id, dialog_id) 组合。
| 字段 | 类型 | 说明 |
|---|---|---|
id |
TEXT PK | session ID,格式 <channel>:<chat_id>:<dialog_id> |
channel |
TEXT | 渠道名称 |
chat_id |
TEXT | 聊天/群组标识 |
dialog_id |
TEXT | 对话标识 |
title |
TEXT | 会话标题(默认 "新对话") |
created_at |
INTEGER | 创建时间(unix 秒) |
last_active_at |
INTEGER | 最后活跃时间 |
message_count |
INTEGER | 消息计数 |
routing_info |
TEXT | 路由信息 |
deleted_at |
INTEGER | 软删除时间戳 |
last_consolidated_at |
INTEGER | 上次记忆归并时间 |
last_compressed_message_at |
INTEGER | 上次上下文压缩消息序号 |
messages 表
| 字段 | 类型 | 说明 |
|---|---|---|
id |
TEXT PK | 消息 UUID |
session_id |
TEXT FK | 所属会话,外键关联 sessions(id) |
seq |
INTEGER | 消息序号 |
role |
TEXT | 角色: user / assistant / tool / system |
content |
TEXT | 消息内容 |
media_refs |
TEXT | 多媒体引用 JSON |
tool_call_id |
TEXT | 工具调用 ID |
tool_name |
TEXT | 工具名称 |
tool_calls |
TEXT | 工具调用参数 JSON |
source |
TEXT | 消息来源(跨会话消息时标记来源 session_id) |
created_at |
INTEGER | 创建时间(unix 秒) |
reasoning_content |
TEXT | provider 返回的推理内容(如有) |
background_tasks 表
delegate 后台子任务表。session_id 不使用数据库外键,因为 session 使用软删除,关联关系由应用层维护。
| 字段 | 类型 | 说明 |
|---|---|---|
id |
TEXT PK | 后台任务 ID |
session_id |
TEXT | 所属会话 |
channel |
TEXT | 回传渠道 |
chat_id |
TEXT | 回传目标对话 |
prompt |
TEXT | 子任务提示 |
allowed_tools |
TEXT | 允许工具 JSON |
status |
TEXT | pending / running / completed / failed / cancelled |
result |
TEXT | 执行结果 |
error |
TEXT | 错误信息 |
tool_calls_count |
INTEGER | 工具调用次数 |
iterations |
INTEGER | Agent 迭代次数 |
started_at |
INTEGER | 开始时间 |
finished_at |
INTEGER | 结束时间 |
created_at |
INTEGER | 创建时间 |
memories 表
长期记忆存储。
| 字段 | 类型 | 说明 |
|---|---|---|
id |
TEXT PK | 记忆 UUID |
key |
TEXT UNIQUE | 记忆唯一键 |
content |
TEXT | 记忆内容 |
category |
TEXT | 类别: knowledge / timeline |
importance |
REAL | 重要性权重 (0-1) |
session_id |
TEXT | 关联会话 |
created_at |
TEXT | 创建时间 |
updated_at |
TEXT | 更新时间 |
配套 FTS5 全文索引虚拟表 memory_fts(key, content),用于关键词搜索,通过触发器自动同步。
scheduled_jobs 表
| 字段 | 类型 | 说明 |
|---|---|---|
id |
TEXT PK | 任务 UUID |
name |
TEXT | 任务名称 |
schedule |
TEXT | 调度规则 JSON(once/every/cron) |
prompt |
TEXT | 任务提示词 |
channel |
TEXT | 执行渠道 |
chat_id |
TEXT | 目标对话 |
model |
TEXT | 使用的模型(可选) |
enabled |
INTEGER | 是否启用 (1/0) |
delete_after_run |
INTEGER | 执行后自动删除 (1/0) |
next_run_at |
INTEGER | 下次执行时间 |
last_run_at |
INTEGER | 上次执行时间 |
last_status |
TEXT | 上次执行状态 |
last_error |
TEXT | 上次错误信息 |
job_runs 表
| 字段 | 类型 | 说明 |
|---|---|---|
id |
INTEGER PK | 自增 ID |
job_id |
TEXT FK | 关联任务,外键关联 scheduled_jobs(id) |
started_at |
INTEGER | 开始时间 |
finished_at |
INTEGER | 结束时间 |
status |
TEXT | 执行状态 |
output |
TEXT | 执行输出 |
error |
TEXT | 错误信息 |
duration_ms |
INTEGER | 耗时(毫秒) |
llm_calls 表
记录所有 LLM API 调用的请求/响应详情,自动保留最近 1000 条。
| 字段 | 类型 | 说明 |
|---|---|---|
id |
INTEGER PK | 自增 ID |
created_at |
INTEGER | 调用时间 |
provider |
TEXT | 提供商类型 |
model |
TEXT | 模型名称 |
request_body |
TEXT | 请求体 JSON |
response_body |
TEXT | 响应体 JSON |
error |
TEXT | 错误信息 |
duration_ms |
INTEGER | 耗时(毫秒) |