Files
beaver_project/app-instance
steven_li 30ab74ffb2 feat(engine): 添加MCP连接管理和工具集成功能
- 集成MCP连接管理器,支持MCP服务器连接
- 添加多种内置工具:ClarifyTool、CronTool、DelegateTool、ExecuteCodeTool、
  PatchFileTool、ProcessTool、SendMessageTool、SpawnTool、TerminalTool、
  TodoTool、WebFetchTool、WebSearchTool、WriteFileTool等
- 实现工具注册和装配功能
- 添加技能选择上下文参数
- 支持思考模式控制参数thinking_enabled

feat(coordinator): 重构任务执行计划器参数命名

- 将learning_candidate_enabled重命名为allow_candidate_generation
- 更新TeamGraphScheduler中的参数传递
- 修改LocalAgentRunner中的相关参数处理
- 更新README文档中的相应描述

refactor(context): 标准化工具调用参数格式

- 添加_json导入用于参数序列化
- 实现_provider_tool_calls方法标准化OpenAI兼容的工具调用载荷
- 修复工具调用中参数非字符串类型的序列化问题

refactor(session): 优化消息历史记录过滤逻辑

- 修改get_messages_as_conversation为基于运行状态过滤消息
- 排除未完成、失败或错误结束的运行记录
- 改进对话历史的可见性控制机制

fix(store): 修复FTS索引重建逻辑

- 添加异常处理防止FTS索引创建失败
- 实现_rebuild_fts_index方法重新构建全文搜索索引
- 优化索引触发器和表的维护流程
2026-05-14 09:43:48 +08:00
..
2026-03-18 14:22:00 +08:00
2026-03-13 16:40:08 +08:00
2026-03-13 16:40:08 +08:00
2026-03-13 16:40:08 +08:00
2026-03-13 16:40:08 +08:00
2026-03-13 16:40:08 +08:00

app-instance

单实例应用单元:

  • 一个 Docker 容器里同时运行前端、后端和 Nginx 反代
  • 前端走 /
  • 后端 API 走 /api
  • WebSocket 走 /ws

关键文件

  • Dockerfile
    • 统一镜像构建入口
  • entrypoint.sh
    • 容器内启动前端、后端、Nginx
  • create-instance.sh
    • 创建实例目录、生成配置、启动容器、写注册表
  • remove-instance.sh
    • 删除容器、移除注册表、可选清理实例目录
  • list-instances.sh
    • 查看当前注册实例
  • instance-registry.py
    • 维护 runtime/registry/instances.json

注册表

默认注册表路径:

runtime/registry/instances.json

每条记录至少包含:

  • instance_id
  • instance_slug
  • container_name
  • host_port
  • public_url
  • instance_root
  • image_name

常用命令

1. 构建镜像

docker build -t nano/app-instance:latest .

2. 创建实例

./create-instance.sh \
  --image nano/app-instance:latest \
  --instance-id demo-001 \
  --auth-username admin \
  --auth-password 123456 \
  --api-key 'your-api-key'

可选参数:

  • --host-port
  • --public-url
  • --username
  • --email
  • --instance-host
  • --authz-base-url
  • --backend-id
  • --client-id
  • --client-secret
  • --network
  • --host-bind-ip
  • --build
  • --replace

3. 查看实例

./list-instances.sh
./list-instances.sh --json

4. 删除实例

./remove-instance.sh --instance-id demo-001

如果要把实例目录也一并清掉:

./remove-instance.sh --instance-id demo-001 --purge-data

目录约定

默认实例数据目录:

runtime/instances/<instance-slug>/

其中会生成:

runtime/instances/<instance-slug>/
└── beaver-home
    ├── config.json
    ├── web_auth_users.json
    └── workspace/

这个目录是单用户 sandbox 的配置与数据边界。容器内会把它挂到:

/root/.beaver/

并设置:

BEAVER_CONFIG_PATH=/root/.beaver/config.json
BEAVER_WORKSPACE=/root/.beaver/workspace

所以模型 provider/api_key/api_base/model 配一次即可Web / channel 请求不需要、也不应该携带 API Key。

当前状态

这层已经支持:

  • 统一镜像构建
  • 镜像内安装并启动新的 beaver 后端
  • 实例创建
  • 实例删除
  • 实例列表
  • 基于注册表的端口分配
  • 为 deploy-control / router-proxy 记录用户名和实例 host

生产注意

  • 实例容器的宿主机端口默认只绑定 127.0.0.1
  • 外部访问应统一走 router-proxy
  • 如果你确实要把单个实例端口直接暴露到公网,再显式传 --host-bind-ip 0.0.0.0

下一步可以继续接:

  • portal 调用创建实例
  • URL 分配和反向代理
  • 实例续期 / 停用 / 启用