# PicoBot 数据库表结构 数据库为 SQLite,默认位于 workspace 下的 `picobot.db`。 ## sessions 表 会话表,一个 session 对应一个 (channel, chat_id, dialog_id) 组合。 | 字段 | 类型 | 说明 | |------|------|------| | `id` | TEXT PK | session 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 | 耗时(毫秒) |