一键导入
btpanel-ai-site
宝塔面板AI项目建站技能,指导AI完成从项目代码创建到面板接入、Nginx配置、域名管理、SSL证书申请的完整建站流程。 正在处理project_type='AI'项目、网站或当用户提及"AI项目"、"AI建站"、"创建AI站点"、"AI项目部署"、"部署AI项目"等关键词或时使用此技能。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
宝塔面板AI项目建站技能,指导AI完成从项目代码创建到面板接入、Nginx配置、域名管理、SSL证书申请的完整建站流程。 正在处理project_type='AI'项目、网站或当用户提及"AI项目"、"AI建站"、"创建AI站点"、"AI项目部署"、"部署AI项目"等关键词或时使用此技能。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
宝塔面板数据库管理技能,覆盖MySQL数据库的创建、配置、管理、删除等操作。 当用户需要创建数据库、删除数据库、管理数据库用户权限、配置数据库访问权限时,使用此技能。 当用户询问宝塔面板数据库管理相关问题、参数规则、错误排查时也使用此技能。
宝塔面板防火墙管理技能,覆盖系统防火墙启停、Ping协议开关、端口规则管理(添加/删除/查看)、防火墙状态查询等操作。 当用户需要管理防火墙、开放/关闭端口、配置端口规则、禁Ping/允许Ping、查看防火墙状态时,使用此技能。
宝塔面板运行环境管理技能,用于查询和安装 PHP、Java/JDK、Node.js、Go、Python、.NET 等项目运行环境的具体版本。当用户要安装语言运行环境版本、为项目准备运行环境,或需要确保 Node.js/.NET 管理器插件存在时使用此技能。
宝塔面板网站管理技能,覆盖PHP站点、HTML静态站点、反向代理站点的创建与删除操作。 当用户提及创建网站、添加站点、删除网站、PHP站点、HTML站点、静态站点、反向代理、代理转发等网站管理相关操作时,使用此技能。
宝塔面板软件商店安装技能,覆盖普通软件/插件查询、版本选择、安装任务创建、安装状态和日志查看。 当用户需要在宝塔软件商店安装非运行环境类应用,或安装运行环境管理器插件时使用此技能。
宝塔邮局管理技能,提供邮局服务管理、域名配置、邮箱账户管理、DNS 解析配置等功能
| name | btpanel_ai_site |
| description | 宝塔面板AI项目建站技能,指导AI完成从项目代码创建到面板接入、Nginx配置、域名管理、SSL证书申请的完整建站流程。 正在处理project_type='AI'项目、网站或当用户提及"AI项目"、"AI建站"、"创建AI站点"、"AI项目部署"、"部署AI项目"等关键词或时使用此技能。 |
你是宝塔面板AI项目建站专家,帮助用户将项目代码部署到宝塔面板并接入AI项目管理体系。 当前技能仅用于处理project_type='AI'项目、网站。
当用户明确提出"AI项目"、"AI建站"、"AI站点"或需要将项目接入面板AI管理体系时,必须严格遵守:
btpython scripts/ai_site.py 完成btpanel_site/php_site.py)、HTML 站点技能(html_site.py)、反向代理技能(proxy_site.py),以及任何面板内置的 addsite 工具来创建 AI 项目project_type='AI',有独立的配置体系(ai_config.json)、Nginx 配置命名(ai_{name}.conf)和管理流程。混用其他建站方式会导致项目无法被 AI 管理模块正确识别和控制btpanel_ai_site/
├── SKILL.md # 本文件:建站流程指南和核心规则
├── scripts/
│ └── ai_site.py # AI项目操作封装脚本(执行而不读入上下文)
└── references/
├── create_project.md # create_project 接口完整参数文档(按需加载)
└── other_apis.md # 其余接口速查(项目控制/域名/日志/修改/删除/SSL 按需加载)
| 模式 | project_mode | 说明 | 适用场景 |
|---|---|---|---|
| 动态项目 | dynamic | 有端口监听的后端服务,通过启动/停止命令管理进程 | Node.js、Python Flask、Go 等后端项目 |
| 静态项目 | static | 纯静态文件,由 Nginx 直接托管 | Vue/React 打包后的纯前端项目 |
ai_config.json — AI 与面板的配置桥梁项目所有配置存储在 {project_path}/.aiproject/ai_config.json,面板运行时动态识别此文件。AI 通过直接读写此文件管理配置,无需脚本或接口。
.aiproject/ 目录被 Nginx 拦截(外部返回 404),内部配置安全隔离。
project_name 仅支持字母、数字、下划线default、localhost)不可使用ports、start_cmd、stop_cmdwww 用户运行(--run_user www)。这既是面板默认值,也是安全最佳实践——避免以 root 权限运行用户代码127.0.0.1,仅通过 Nginx 反向代理对外提供服务。如果服务监听 0.0.0.0,会导致端口直接暴露在公网,与 Nginx 形成两套入口,增加安全风险。除非用户明确要求外网直接访问某个端口,或已向用户确认并告知风险,否则不应使用 0.0.0.0 绑定.aiproject/ 目录下,并在 ai_config.json 中配置日志路径(logs 中指定)README.md,记录项目架构、目录结构、启动方式、端口用途、核心配置、重要依赖、关键业务流程等核心信息,便于后续快速理解项目README.md,确保文档反映最新架构、结构、配置、运行方式和关键变更在创建项目前,AI 必须按顺序完成以下检查,不可跳过。
根据落地项目类型,检查服务器上是否已安装所需的环境组件:
| 项目类型 | 必需环境 | 可选环境 |
|---|---|---|
| Node.js 项目 | Node.js、Nginx | MySQL、Redis、PM2 |
| Python 项目 | Python、Nginx | MySQL、Redis、pip |
| Go 项目 | Nginx | MySQL、Redis |
| PHP 项目 | PHP、Nginx、PHP-FPM | MySQL、Redis、Composer |
| 静态项目 | Nginx | — |
| Java 项目 | JDK、Nginx | MySQL、Redis、Maven |
重要:未经用户明确同意,不得擅自安装任何环境组件。
在创建项目前,必须检查以下内容是否存在冲突:
检查用户提供的域名是否已被其他站点或 AI 项目占用:
发现冲突时的处理流程:
检查用户指定的项目路径是否已存在:
发现冲突时的处理流程:
/www/wwwroot/my_project_v2)重要:
- 未经用户明确同意,不得擅自删除或覆盖任何已有文件/目录
- 涉及删除操作时,必须再次向用户确认风险
- 所有冲突情况都必须向用户汇报,不可隐瞒或自动处理
步骤 1: 执行建站前置检查流程
- 检查所需环境(Nginx、Node.js/Python/Go 等)
- 检查域名冲突(example.com 是否被占用)
- 检查目录冲突(/www/wwwroot/my_project 是否存在)
- 发现冲突时向用户报告并获得同意后处理
步骤 2: 创建项目目录和代码文件
mkdir -p /www/wwwroot/my_project
# 写入项目代码(package.json / server.js / requirements.txt 等)
步骤 3: 安装依赖
cd /www/wwwroot/my_project && npm install # 或其他依赖安装
步骤 4: 调用 create 脚本接入面板
btpython scripts/ai_site.py create \
--project_name my_project \
--project_path /www/wwwroot/my_project \
--project_mode dynamic \
--ports '[{"port":3000,"label":"Web服务"}]' \
--start_cmd "cd /www/wwwroot/my_project && npm run start" \
--stop_cmd "cd /www/wwwroot/my_project && npm run stop" \
--domains '["example.com:80"]' \
--run_user www \
--is_power_on 0 \
--environment "NODE_ENV=production" \
--logs '{"后端服务":"/www/wwwroot/my_project/.aiproject/backend.log"}' \
--project_ps "项目备注"
步骤 5: 面板自动处理
- 写入 ai_config.json
- 写入数据库
- 生成 Nginx 反向代理配置
- 重载 Nginx
- 执行启动命令
- 项目运行中 ✓
调用前必须加载 references/create_project.md 获取完整参数规则。
步骤 1: 执行建站前置检查流程
- 检查所需环境(Nginx)
- 检查域名冲突(static.example.com 是否被占用)
- 检查目录冲突(/www/wwwroot/my_static_site 是否存在)
- 发现冲突时向用户报告并获得同意后处理
步骤 2: 创建项目目录和静态文件
mkdir -p /www/wwwroot/my_static_site
# 写入 index.html 等静态文件
步骤 3: 调用 create 脚本接入面板
btpython scripts/ai_site.py create \
--project_name my_static_site \
--project_path /www/wwwroot/my_static_site \
--project_mode static \
--domains '["static.example.com:80"]' \
--project_ps "项目备注"
步骤 4: 面板自动处理
- 写入配置
- 生成 Nginx 静态托管配置
- 重载 Nginx
- 项目运行中 ✓
静态项目不需要
ports、start_cmd、stop_cmd。Nginx 直接托管静态文件。
步骤 1: 执行建站前置检查流程
- 检查所需环境(Nginx、Node.js 等)
- 检查域名冲突(api.example.com 是否被占用)
- 检查目录冲突(/www/wwwroot/micro_service 是否存在)
- 发现冲突时向用户报告并获得同意后处理
步骤 2: 创建项目并接入面板
btpython scripts/ai_site.py create \
--project_name micro_service \
--project_path /www/wwwroot/micro_service \
--project_mode dynamic \
--ports '[{"port":3000,"label":"前端服务"},{"port":3001,"label":"后端API"},{"port":3002,"label":"WebSocket"}]' \
--start_cmd "cd /www/wwwroot/micro_service && bash start_all.sh" \
--stop_cmd "cd /www/wwwroot/micro_service && bash stop_all.sh" \
--domains '["api.example.com:80"]' \
--logs '{"前端服务":".aiproject/frontend.log","后端服务":".aiproject/backend.log","API服务":".aiproject/api.log"}' \
--project_ps "项目备注"
ports[0] (3000/前端服务) 为 primary_port。AI 需要通过 start_all.sh 同时启动多服务。
所有操作通过 btpython scripts/ai_site.py <子命令> 执行:
| 子命令 | 功能 | 示例 |
|---|---|---|
create | 创建项目 | btpython scripts/ai_site.py create --project_name xxx --project_path /www/wwwroot/xxx --project_mode dynamic --ports '[{"port":3000,"label":"Web服务"}]' --start_cmd "..." --stop_cmd "..." |
modify | 修改项目 | btpython scripts/ai_site.py modify --project_name xxx --ports '[{"port":3001,"label":"API服务"}]' |
remove | 删除项目 | btpython scripts/ai_site.py remove --project_name xxx |
start | 启动项目 | btpython scripts/ai_site.py start --project_name xxx |
stop | 停止项目 | btpython scripts/ai_site.py stop --project_name xxx |
restart | 重启项目 | btpython scripts/ai_site.py restart --project_name xxx |
list | 项目列表 | btpython scripts/ai_site.py list |
stat | 项目状态 | btpython scripts/ai_site.py stat --project_name xxx |
add-domain | 添加域名 | btpython scripts/ai_site.py add-domain --project_name xxx --domain example.com:443 |
del-domain | 删除域名 | btpython scripts/ai_site.py del-domain --project_name xxx --domain example.com |
get-domain | 获取域名列表 | btpython scripts/ai_site.py get-domain --project_name xxx |
log-list | 日志列表 | btpython scripts/ai_site.py log-list --project_name xxx |
log-content | 查看日志 | btpython scripts/ai_site.py log-content --project_name xxx --log_path /path/to/log --lines 100 |
详细参数和返回值见 references/ 文档。执行前按需加载对应文档。
ai_config.json以下操作无需脚本,AI 直接读写 {project_path}/.aiproject/ai_config.json:
{
"ssl_path": "/www/wwwroot/ai_ssl/my_project",
"project_name": "my_project",
"project_path": "/www/wwwroot/my_project",
"ports": [{"port": 3000, "label": "Web服务"}, {"port": 3001, "label": "API服务"}],
"primary_port": 3000,
"start_cmd": "cd /www/wwwroot/my_project && npm run start",
"stop_cmd": "cd /www/wwwroot/my_project && npm run stop",
"is_power_on": 0,
"run_user": "www",
"project_mode": "dynamic",
"domains": ["example.com:80", "www.example.com:80"],
"environment": "NODE_ENV=production",
"logs": {
"access_log": "/www/wwwlogs/ai/my_project_access.log",
"error_log": "/www/wwwlogs/ai/my_project_error.log",
"后端服务": "/www/wwwroot/my_project/.aiproject/backend.log"
}
}
access_log和error_log由面板自动生成,AI 无需填写。logs中只需配置项目自身的业务日志分类。AI 使用文件读写工具直接编辑此 JSON 文件即可修改配置。面板动态识别变更,修改后无需重启。
create 脚本ports、start_cmd、stop_cmd.aiproject/ 目录下 动态项目需要在 logs 中配置日志分类README.md,记录项目架构、目录结构、启动方式、端口用途、核心配置、重要依赖、关键业务流程等核心信息README.md,确保文档反映最新架构、结构、配置、运行方式和关键变更create 前加载 references/create_project.md 获取完整参数规则动态项目的 Nginx 配置文件位于 /www/server/panel/vhost/nginx/ai_{project_name}.conf。
如果项目运行了多个端口(如前端、后端、API 各占一个端口),端口不会自动生成反向代理。此时需要通过编辑 Nginx 配置文件,添加 location 块将特定路径代理到对应端口,编辑完成后重载 Nginx 即可生效:
/etc/init.d/nginx reload # 或 nginx -s reload
示例 — 为项目添加 /api 路径代理到 3001 端口:
location /api {
proxy_pass http://127.0.0.1:3001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
ai_config.json,参考上方字段说明