dashboard-nanobot/design/dashboard-nanobot.md

147 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Dashboard Nanobot 技术规范书(当前实现)
本文档描述当前代码已落地的 Dashboard Nanobot 控制平面规范,覆盖前端流程、后端接口、配置文件生成和运行约束。
## 1. 产品目标
系统围绕三步主流程:
1. 镜像工厂:仅管理 Docker 本地镜像与数据库登记状态。
2. 引导创建:基于 READY 镜像创建 Bot填写模型参数与代理文件。
3. 运维 Dashboard2D 控制台管理 Bot 对话、状态、日志与启停。
## 2. 前端模块规范
### 2.1 镜像工厂Image Factory
- 页面显示两类列表:
- 数据库已登记镜像(来源 `/api/images`
- Docker 本地镜像(来源 `/api/docker-images`
- 系统不再自动扫描 `engines/`
- 仅通过“加入数据库”动作调用 `/api/images/register` 完成登记。
- 创建向导仅允许使用 `status=READY` 的已登记镜像。
### 2.2 引导创建Bot Wizard
- 采用 4 步流程:
1. 选择 READY 镜像
2. 模型与参数
3. 代理文件配置
4. 确认创建
- Provider 支持:`dashscope`、`openrouter`、`openai`、`deepseek`。
- 提供模型连通性测试按钮(调用 `/api/providers/test`)。
- 标准模型参数:
- `temperature`
- `top_p`
- `max_tokens`
- `cpu_cores`
- `memory_mb`
- `storage_gb`
- 参数编辑交互:
- `temperature`、`top_p` 使用滑轨
- `max_tokens` 使用数字输入 + 快捷档位
- `cpu_cores`、`memory_mb`、`storage_gb` 使用数字输入
- 代理文件配置项(全部可编辑并持久化):
- `AGENTS.md`
- `SOUL.md`
- `USER.md`
- `TOOLS.md`
- `IDENTITY.md`
- 渠道配置:
- 创建向导只配置“可选外部渠道”(飞书/QQ 等)
- `dashboard` 渠道为内置渠道,不在向导中生成渠道块
- 全局 `sendProgress/sendToolHints` 作为独立开关提交
### 2.3 运维 Dashboard2D
- 不使用 3D 场景。
- 三栏布局:
- 左侧Bot 列表、镜像、启停操作
- 中间:标准 LLM 对话区Bot 左气泡 + 用户右气泡Bot 处于 THINKING 时在对话流中显示思考动画
- 右侧运行遥测、最后反馈、workspace 文件浏览器(双击进目录/返回上级/双击文件弹窗预览)
- 支持实时状态更新WebSocket `/ws/monitor/{bot_id}`)。
- Skills 管理入口仅在运维面板(更多菜单):
- 列出当前 Bot 的 `workspace/skills` 内容
- 支持删除技能目录/文件
- 支持上传 zip 并安全解压到 `workspace/skills`
- workspace 可视化接口:
- `/api/bots/{bot_id}/workspace/tree`
- `/api/bots/{bot_id}/workspace/file`
### 2.4 主题与语言
- 支持 `light/dark` 切换。
- 支持 `中文/English` 切换。
- 切换状态保存在浏览器 `localStorage`
## 3. 后端行为规范
### 3.1 镜像登记策略
- `/api/images`:只返回数据库登记镜像,并和 Docker 实时对账更新状态。
- `/api/docker-images`:列出本地 `nanobot-base:*`
- `/api/images/register`:将本地镜像显式写入登记表。
### 3.2 Bot 创建与启动
- `/api/bots` 创建时必须满足:
- 镜像已登记
- 镜像状态 `READY`
- 本机 Docker 存在该镜像
- `/api/bots/{id}/start` 启动前写入 workspace
- `.nanobot/config.json`
- `.nanobot/workspace/AGENTS.md`
- `.nanobot/workspace/SOUL.md`
- `.nanobot/workspace/USER.md`
- `.nanobot/workspace/TOOLS.md`
- `.nanobot/workspace/IDENTITY.md`
- 容器资源配额来自 `config.json.runtime.resources`
- `cpuCores`
- `memoryMB`
- `storageGB`
### 3.3 基础镜像升级策略
- 运维面板基础配置允许切换 `image_tag`
- 切换镜像时后端仅更新配置文件,不自动重启容器。
- 需由用户手动执行停止/启动,使新镜像生效。
- 因 workspace 挂载路径不变,已安装插件、脚本和产物文件会保留。
### 3.3 Provider 测试接口
- `/api/providers/test` 当前支持:
- `openrouter``/models`
- `dashscope``/models`
- 返回模型预览列表与匹配提示。
### 3.4 Skills 文件系统接口
- `GET /api/bots/{bot_id}/skills`:列出 `workspace/skills` 一级技能项。
- `POST /api/bots/{bot_id}/skills/upload`:上传 zip做路径安全校验后解压安装。
- `DELETE /api/bots/{bot_id}/skills/{skill_name}`:删除指定技能目录/文件。
## 4. Workspace 规范
宿主机目录:`workspace/bots/{bot_id}/.nanobot/`
```text
.nanobot/
├── config.json
└── workspace/
├── AGENTS.md
├── SOUL.md
├── USER.md
├── TOOLS.md
├── IDENTITY.md
├── memory/
└── skills/
```
`skills/` 目录下每个一级目录(或单文件)视为一个可管理技能单元。
## 5. 与 nanobot 的兼容原则
- 不侵入 nanobot 源码。
- 控制平面通过文件与容器生命周期管理进行编排。
- Bootstrap 文件命名与 `nanobot.agent.context.ContextBuilder.BOOTSTRAP_FILES` 对齐。