4.9 KiB
4.9 KiB
Dashboard Nanobot 技术规范书(当前实现)
本文档描述当前代码已落地的 Dashboard Nanobot 控制平面规范,覆盖前端流程、后端接口、配置文件生成和运行约束。
1. 产品目标
系统围绕三步主流程:
- 镜像工厂:仅管理 Docker 本地镜像与数据库登记状态。
- 引导创建:基于 READY 镜像创建 Bot,填写模型参数与代理文件。
- 运维 Dashboard:2D 控制台管理 Bot 对话、状态、日志与启停。
2. 前端模块规范
2.1 镜像工厂(Image Factory)
- 页面显示两类列表:
- 数据库已登记镜像(来源
/api/images) - Docker 本地镜像(来源
/api/docker-images)
- 数据库已登记镜像(来源
- 系统不再自动扫描
engines/。 - 仅通过“加入数据库”动作调用
/api/images/register完成登记。 - 创建向导仅允许使用
status=READY的已登记镜像。
2.2 引导创建(Bot Wizard)
- 采用 4 步流程:
- 选择 READY 镜像
- 模型与参数
- 代理文件配置
- 确认创建
- Provider 支持:
dashscope、openrouter、openai、deepseek。 - 提供模型连通性测试按钮(调用
/api/providers/test)。 - 标准模型参数:
temperaturetop_pmax_tokenscpu_coresmemory_mbstorage_gb
- 参数编辑交互:
temperature、top_p使用滑轨max_tokens使用数字输入 + 快捷档位cpu_cores、memory_mb、storage_gb使用数字输入
- 代理文件配置项(全部可编辑并持久化):
AGENTS.mdSOUL.mdUSER.mdTOOLS.mdIDENTITY.md
- 渠道配置:
- 创建向导只配置“可选外部渠道”(飞书/QQ 等)
dashboard渠道为内置渠道,不在向导中生成渠道块- 全局
sendProgress/sendToolHints作为独立开关提交
2.3 运维 Dashboard(2D)
- 不使用 3D 场景。
- 三栏布局:
- 左侧:Bot 列表、镜像、启停操作
- 中间:标准 LLM 对话区(Bot 左气泡 + 用户右气泡);Bot 处于 THINKING 时在对话流中显示思考动画
- 右侧:运行遥测、最后反馈、workspace 文件浏览器(双击进目录/返回上级/双击文件弹窗预览)
- 支持实时状态更新(WebSocket
/ws/monitor/{bot_id})。 - Skills 管理入口仅在运维面板(更多菜单):
- 列出当前 Bot 的
workspace/skills内容 - 支持删除技能目录/文件
- 支持上传 zip 并安全解压到
workspace/skills
- 列出当前 Bot 的
- 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:cpuCoresmemoryMBstorageGB
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/
.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对齐。