SuperAPI AI 工具集

btpanel_ai_site

部署与运维

查看项目

更新于 10-15 11:02

技能介绍

用途

本技能用于指导 AI 将 project_type='AI' 的项目代码部署到宝塔面板,并接入面板的 AI 项目管理体系。技能仅用于处理 project_type='AI' 的项目与网站,当用户提及"AI项目"、"AI建站"、"创建AI站点"、"AI项目部署"、"部署AI项目"等关键词时使用。

强制性约束

  • 所有建站操作通过 btpython scripts/ai_site.py 完成。
  • 禁止使用其他建站方式,包括 PHP 站点技能(btpanel_site/php_site.py)、HTML 站点技能(html_site.py)、反向代理技能(proxy_site.py),以及面板内置的 addsite 工具来创建 AI 项目。
  • AI 项目与其他项目类型隔离:AI 项目的 project_type='AI',有独立的配置体系(ai_config.json)、Nginx 配置命名(ai_{name}.conf)和管理流程。混用其他建站方式会导致项目无法被 AI 管理模块正确识别和控制。

主要能力

技能通过 btpython scripts/ai_site.py 提供以下子命令:create(创建项目)、modify(修改项目)、remove(删除项目)、start(启动项目)、stop(停止项目)、restart(重启项目)、list(项目列表)、stat(项目状态)、add-domain(添加域名)、del-domain(删除域名)、get-domain(获取域名列表)、log-list(日志列表)、log-content(查看日志)。

两种项目模式

  • 动态项目(project_mode=dynamic):有端口监听的后端服务,通过启动/停止命令管理进程,适用于 Node.js、Python Flask、Go 等后端项目。
  • 静态项目(project_mode=static):纯静态文件,由 Nginx 直接托管,适用于 Vue/React 打包后的纯前端项目。静态项目不需要 ports、start_cmd、stop_cmd。

使用方式

配置桥梁 ai_config.json

项目所有配置存储在 {project_path}/.aiproject/ai_config.json,面板运行时动态识别此文件。AI 通过直接读写此文件管理配置,无需脚本或接口。.aiproject/ 目录被 Nginx 拦截(外部返回 404),内部配置安全隔离。修改后无需重启。

完整字段包括:ssl_path、project_name、project_path、ports、primary_port、start_cmd、stop_cmd、is_power_on、run_user、project_mode、domains、environment、logs。其中 access_log 和 error_log 由面板自动生成,AI 无需填写,logs 中只需配置项目自身的业务日志分类。

关键约定

  • project_name 仅支持字母、数字、下划线,面板保留名称(default、localhost)不可使用,项目名称全局唯一。
  • AI 先创建项目目录和代码文件,再调用脚本接入面板。
  • 动态项目必须提供 ports、start_cmd、stop_cmd。
  • 运行用户:无特殊需求时统一使用 www 用户运行(--run_user www),避免以 root 权限运行用户代码。
  • 服务端口绑定:非网站端口(后端 API、前端 dev server 等)默认绑定 127.0.0.1,仅通过 Nginx 反向代理对外提供服务。除非用户明确要求外网直接访问某个端口或已确认风险,否则不应使用 0.0.0.0 绑定。
  • 项目日志:通过服务启动的项目必须配备服务日志,并指定日志文件路径放在 .aiproject/ 目录下,并在 ai_config.json 中配置日志路径。
  • README.md:项目完成后必须在项目根目录创建或更新 README.md,记录项目架构、目录结构、启动方式、端口用途、核心配置、重要依赖、关键业务流程等核心信息;后期修改项目时必须同步更新。

建站前置检查流程(必须执行)

步骤 1:检查项目所需环境。根据落地项目类型检查服务器是否已安装所需环境组件,例如 Node.js 项目需 Node.js、Nginx(可选 MySQL、Redis、PM2);Python 项目需 Python、Nginx;Go 项目需 Nginx;PHP 项目需 PHP、Nginx、PHP-FPM;静态项目需 Nginx;Java 项目需 JDK、Nginx。环境未安装时须向用户报告缺失组件、说明原因、提出安装建议,获得用户明确同意后再调用对应技能工具安装。未经用户明确同意,不得擅自安装任何环境组件。

步骤 2:检查域名和目录冲突。检查域名是否已被其他站点或 AI 项目占用、指定项目路径是否已存在。发现冲突时向用户报告并提供解决方案(如更换域名、删除旧项目、使用其他路径、清空目录等),等待用户选择并明确同意后再执行。未经用户明确同意,不得擅自删除或覆盖任何已有文件/目录。

建站场景示例

  • 场景 A 动态项目(Node.js/Python/Go 后端):执行前置检查 → 创建项目目录和代码 → 安装依赖 → 调用 create 脚本接入面板(提供 ports、start_cmd、stop_cmd、domains、run_user、logs 等参数)→ 面板自动写入 ai_config.json、写入数据库、生成 Nginx 反向代理配置、重载 Nginx、执行启动命令。
  • 场景 B 静态项目(Vue/React 打包后):执行前置检查 → 创建项目目录和静态文件 → 调用 create 脚本(指定 project_mode static,无需 ports、start_cmd、stop_cmd)→ 面板生成 Nginx 静态托管配置并重载 Nginx。
  • 场景 C 多端口微服务项目:ports 中 ports[0] 为 primary_port,AI 需通过 start_all.sh 同时启动多服务;多个端口不会自动生成反向代理,需通过编辑 Nginx 配置文件添加 location 块将特定路径代理到对应端口,编辑完成后重载 Nginx 生效。

适用场景

适用于需要将 AI 类型项目代码部署到宝塔面板并接入 AI 项目管理体系的场景,包括动态后端项目、静态前端项目、多端口微服务项目。

限制

  • 当前技能仅用于处理 project_type='AI' 项目、网站。
  • 面板保留名称(default、localhost)不可使用,项目名称全局唯一。
  • 域名需提前解析到服务器 IP,否则 SSL 申请失败。
  • create 前后续需加载 references/create_project.md 获取完整参数规则,其他接口操作需加载 references/other_apis.md。
  • 关于该技能的具体收费、价格、平台支持范围、性能效果等,资料暂未提供。