# Dashboard Nanobot 数据库设计文档(同步到当前代码) 数据库默认使用 SQLite:`data/nanobot_dashboard.db`。 ## 1. ERD ```mermaid erDiagram BOTINSTANCE ||--o{ CHANNELROUTE : "路由" BOTINSTANCE ||--o{ BOTMESSAGE : "消息" NANOBOTIMAGE ||--o{ BOTINSTANCE : "被引用" BOTINSTANCE { string id PK string name text system_prompt text soul_md text agents_md text user_md text tools_md text identity_md text tools_config_json string llm_provider string llm_model string api_key string api_base float temperature float top_p int max_tokens float presence_penalty float frequency_penalty string workspace_dir UK string docker_status string image_tag string current_state text last_action datetime created_at datetime updated_at } BOTMESSAGE { int id PK string bot_id FK string role text text text media_json datetime created_at } NANOBOTIMAGE { string tag PK string image_id string version string status string source_dir datetime created_at } CHANNELROUTE { int id PK string bot_id FK string channel_type string external_app_id string app_secret text extra_config int internal_port boolean is_active } ``` ## 2. 表说明 ### 2.1 `botinstance` 存储机器人实例核心配置与运行参数。 - 运行与镜像:`docker_status`、`image_tag` - LLM 基础:`llm_provider`、`llm_model`、`api_key`、`api_base` - LLM 参数:`temperature`、`top_p`、`max_tokens` - Agent Bootstrap 内容:`soul_md`、`agents_md`、`user_md`、`tools_md`、`identity_md` - 工具配置:`tools_config_json` - 运行态:`current_state`、`last_action` ### 2.2 `botmessage` 保存 Dashboard 渠道持久化对话消息。 - `role`:`user | assistant` - `text`:消息正文 - `media_json`:附件路径列表(JSON 字符串) ### 2.3 `nanobotimage` 镜像登记表(只记录显式登记镜像)。 - `tag`: 如 `nanobot-base:v0.1.4` - `status`: `READY | BUILDING | ERROR | UNKNOWN` - `source_dir`: 当前手工模式通常为 `manual` ### 2.4 `channelroute` 渠道路由映射表。 - `dashboard` 为内置渠道,不允许删除或禁用。 - `extra_config` 保存各渠道差异化字段。 ## 3. 已移除的数据表 以下旧表已废弃,并在服务启动时自动删除: - `skillregistry` - `botskillmapping` 技能管理改为 **workspace 文件系统模式**: - 路径:`workspace/bots/{bot_id}/.nanobot/workspace/skills/` - 管理 API:`/api/bots/{bot_id}/skills`、`/api/bots/{bot_id}/skills/upload`、`/api/bots/{bot_id}/skills/{skill_name}` ## 4. 启动迁移策略(当前实现) 服务启动时自动执行: 1. `SQLModel.metadata.create_all(engine)` 2. 删除旧 skills 表(`DROP TABLE IF EXISTS botskillmapping/skillregistry`) 3. 针对 `botinstance` 和 `botmessage` 做增量列补齐(`ALTER TABLE ADD COLUMN`) ## 5. 安全与一致性 - `api_key`、`app_secret` 建议加密存储(当前代码为明文字段,生产需加密层)。 - 启动 Bot 前,以数据库字段 + 渠道路由重新生成 workspace 文件,确保配置一致性。