131 lines
3.4 KiB
Markdown
131 lines
3.4 KiB
Markdown
|
|
# 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 文件,确保配置一致性。
|