- Add build.rs: scan resources/skills/, compress each with tar+zstd, embed via include_bytes! - Add src/skills/builtin.rs: runtime auto-install built-in skills to ~/.picobot/skills/ - Add about-picobot built-in skill: SKILL.md index + references/ (config, db-schema, architecture, faq, commands) + assets/config.example.json - Update skill loading: reverse priority (agents < picobot < workspace), deduplicate by name - Update skills prompt: re-query get_skill when user asks about installed skills - Change max_tool_iterations default from 20 to 99
102 lines
3.5 KiB
Markdown
102 lines
3.5 KiB
Markdown
# 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 秒) |
|
||
|
||
## 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 | 耗时(毫秒) |
|