dashboard-nanobot/design/database.md

3.4 KiB
Raw Blame History

Dashboard Nanobot 数据库设计文档(同步到当前代码)

数据库默认使用 SQLitedata/nanobot_dashboard.db

1. ERD

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_statusimage_tag
  • LLM 基础:llm_providerllm_modelapi_keyapi_base
  • LLM 参数:temperaturetop_pmax_tokens
  • Agent Bootstrap 内容:soul_mdagents_mduser_mdtools_mdidentity_md
  • 工具配置:tools_config_json
  • 运行态:current_statelast_action

2.2 botmessage

保存 Dashboard 渠道持久化对话消息。

  • roleuser | 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. 针对 botinstancebotmessage 做增量列补齐(ALTER TABLE ADD COLUMN

5. 安全与一致性

  • api_keyapp_secret 建议加密存储(当前代码为明文字段,生产需加密层)。
  • 启动 Bot 前,以数据库字段 + 渠道路由重新生成 workspace 文件,确保配置一致性。