需求说清楚,Codex之类的Agent已经能自己读项目、改代码、补测试,也能顺手把配置文件也整理好。
可真正做过网站的人都知道:代码改完,从不等于把事情做完。
文件要传到服务器,目录权限要检查,域名、证书、数据库、伪静态缺一不可。上线之后还得确认Nginx有没有报错、磁盘是不是快满了、备份任务有没有按时跑。
于是一个很割裂的场景出现了:AI在本地项目里干得飞快,到了服务器部署这一步,往往还是要切浏览器窗口打开终端、登录宝塔、手动上传文件、翻日志等等。部署和运维却常常停留在“人肉接力”,无法打通AI一站式开发部署的最后一公里。
针对上述割裂场景,我整了个懒人笨方法:将SSH pem私钥喂给Codex,由它建立SSH通道直连云服务器,自动化执行代码上传、全流程部署,相当于自建丐版CI/CD方案。 该方案初期运行稳定无异常,但一次部署脚本校验疏漏,导致Codex误删除站点Nginx配置文件,直接酿成一起Codex运维操作翻车事故。。。
我只好想办法另辟蹊径:寻找一个更安全、有效的办法 。其实现在市面上云服务器都自带云Agent,比如腾讯云Hermes Agent,但是要收费,不适合我这种穷鬼玩家,另外也没实在解决Codex完成开发部署割裂的痛点,于是方案被我pass掉了。不过还得感谢Hermes Agent,让我有了灵感,既然Hermes Agent本身是个智能体,所以它本身肯定也具备了Skill这些拓展能力,于是我开始搜寻它的能力代替方案。果不其然,其实宝塔面板团队官方早在github开源了aaPanel/btpanel-skills。它做的事情很直接:把宝塔面板已有的API能力,整理成AI Agent可以理解、调用并遵守约束的Skill。
它不是要重新发明一个运维面板,而是在Codex与宝塔之间搭一座桥。
01
PART
AI 会写代码了,为什么部署和运维还得手动?
THE LAST MILE
宝塔面板已经把建站、数据库、SSL、计划任务和软件服务集中到了一个后台,对个人站长和小团队来说,确实大幅降低了服务器管理门槛。
这些事情并不难,却非常碎。服务器只有一台时还能靠记忆,多到三五台以后,登录、切换、对比和汇总就会变成稳定的时间消耗。(翻各种应用台账、检索散落各处配置文件、日志文件等等都是一件非常痛苦的事情。。。)
更麻烦的是AI编程之后的“最后一公里”。
假设你对Codex说:“修复上传接口,并调整Nginx的请求体限制。”它可以修改本地代码,也可以给出一段正确的Nginx配置。但如果没有服务器工具和授权,它并不知道生产环境的配置文件在哪里,更不能擅自连接服务器、备份旧文件、写入新配置并检查服务是否正常。
开发者只能接过接力棒:
在本地确认代码修改; 打开终端或宝塔面板; 找到远程目录并上传文件; 调整权限和配置; 重载服务; 再回到日志页面确认有没有新错误。
这条链路里,Codex知道“改了什么”,宝塔知道“线上是什么状态”,但两边互不相通。
btpanel-skills 正是从这个断点切入。它让Agent不只会给建议,还能在用户授权和确认之后,调用宝塔API获取真实数据、执行明确操作,并把结果带回对话。
02
PART
Skill是什么,它与普通脚本有什么不同?
SKILL, NOT JUST SCRIPT
第一次看到Skill,很多人的直觉是:“不就是把几个Python脚本打包吗?”(即前面自述的翻车方案QAQ)
只说对了一半。
普通脚本解决的是“怎么调用接口”。Skill还要告诉AI:什么时候调用、先做什么、哪些操作必须确认、哪些敏感信息不能碰,以及结果应该怎样解释给用户。
以仓库里的btpanel 为例,它不只提供资源监控、网站检查和日志读取脚本,还在 SKILL.md中写明了AI的行为约束:
展示数据时保持中立,不夸大告警; 建议必须基于实际监控结果,不能臆测; 不主动泄露IP、Token和域名等敏感信息; 获取数据前先说明准备执行哪些检查; 涉及修改与高风险操作时,先告知影响并取得确认。
这就是Skill与“扔给AI一堆脚本”的区别。脚本负责确定性执行,Skill负责把执行能力放进一套Agent可理解的工作流程。
整个项目可以看成三层:
自然语言层:用户直接说“检查所有服务器有没有异常”“看看证书快过期了吗”。 Skill决策层:Agent根据说明选择监控、网站、日志或文件脚本,并补齐服务器名称、筛选条件等参数。 宝塔API层:Python客户端读取配置,调用真实面板接口,再把结果结构化返回。
因此,它既不是让大模型直接“猜”服务器状态,也不是把整台服务器的Shell权限毫无保留地交给AI。它走的是一条更安全、更容易控制的路径:围绕宝塔已经开放的能力,提供范围明确的操作工具。相比于Agent使用SSH直连服务器的“裸奔”方案,这个Skill方案给服务器多了一层宝塔API沙盒保护。
03
PART
三个 Skill,组成一套宝塔运维工具箱
THREE-SKILL MATRIX
仓库目前包含三个相互关联的Skill,分别覆盖“看状态”“管文件”和“管网站”。
这是基础运维监控Skill,也是最适合第一次上手的部分。
它可以汇总CPU、内存、磁盘、网络和系统负载,检查网站是否运行、SSL 证书是否即将到期,还能查看Nginx、Apache、MySQL、Redis等服务状态。
当服务出现异常时,它可以继续读取 Nginx、Apache、Redis、MySQL、PostgreSQL 等日志;安全侧可以查看 SSH 服务状态、分析登录记录和失败尝试。
更实用的是多服务器支持。你可以给每台面板配置一个名称,例如 prod-01、blog-02,再让Agent汇总所有服务器,而不是逐台登录。
Codex修改完代码之后,最容易卡住的就是远程文件。
btpanel-files 提供目录浏览、文件读取、编辑、创建、删除、状态查看和权限修改,还支持让服务器从指定 URL 下载文件、解压 ZIP。
这些能力意味着Agent可以帮助完成部署链路中的一部分实际操作,例如:
查看 /www/wwwroot下的站点目录; 读取 Nginx 配置或错误日志的最后几十行; 修改文件前先拉取原内容进行比较; 创建发布目录或空文件; 下载程序包并解压; 检查或修正文件权限与所有者。
但它没有把风险藏起来。Skill 明确要求:编辑前先读原文件,重要配置修改前建议备份,删除前确认目标路径,不主动读取 /etc/shadow、.env、config.php等可能包含敏感信息的文件。
仓库实现中的删除操作会优先进入回收站,而不是直接永久抹除。即便如此,线上文件操作依然应该谨慎确认。
第三个 Skill 更像一套面向PHP网站的“建站操作台”。
它可以创建、删除、启用和停用网站,查看站点详情,切换PHP版本或改为纯静态站点;也可以添加、删除绑定域名,申请或上传 SSL 证书,开启强制HTTPS。
对于常见建站需求,它还提供伪静态规则管理和数据库管理,仓库列出的模板包括WordPress、ThinkPHP、Laravel、Discuz、Typecho、DedeCMS等常见程序。
如果你对Agent说:“创建一个PHP8.2 的站点,绑定域名并创建数据库”,Skill可以把这句话拆成站点、PHP和数据库操作。但删除站点、切换运行环境、处理证书私钥等动作,仍然必须经过影响确认。
三个Skill放在一起,形成了清晰的分工:
btpanel负责观察,btpanel-files负责文件,btpanel-phpsite负责网站生命周期。
04
PART
五个最实用的真实场景
REAL-WORLD SCENARIOS
功能列表看起来很多,真正落到日常工作里,我个人用的最多的下面五个场景。
这是本文最想强调的场景。
Codex在本地完成修改后,Agent可以继续查看远程目录、读取线上配置、下载或解压发布包、调整文件内容与权限,并在操作后检查服务和日志。
这不等于仓库已经提供一条完整的自动发布流水线,却补上了很多过去必须人工点击的服务器步骤。对个人项目和轻量自建站点而言,这座“桥”非常实用。
你可以说:“检查所有服务器的CPU、内存、磁盘、网站和核心服务,按风险排序。”
Agent会组合资源、网站和服务检查,再根据设定阈值标出异常。相比逐台登录面板,它更适合每天例行巡检,也方便把结果整理成固定格式的报告。
证书问题最让人头疼的地方,不是不会续期,而是经常到过期才发现。
sites.py 支持筛选 30 天内即将到期或已经过期的证书。我的方案是给Codex建个定时任务执行这类检查,可以把“用户反馈网站打不开”变成“提前看到待处理清单”。
额额,举个最常见的例子:“网站502了”,只看Nginx是否运行远远不够。
更合理的顺序是先curl各种指令检查网站和服务状态,再读取对应错误日志,最后结合CPU、内存和磁盘判断问题来自应用、服务还是资源。Skill把这些原本分散的入口组织成一次连续对话。
配置了备份任务,不代表备份真的可用。
通过计划任务和执行日志,可以检查备份任务是否启用、最近是否执行、有没有报错。对于数据库和站点文件,这种检查往往比“看到计划任务列表里有一行”更可靠。
05
PART
从安装到第一次巡检
QUICK START
仓库使用Python实现,公开说明要求宝塔面板版本不低于9.0.0,Python不低于3.10。
Skill依赖的工具版本安装、升级,可以一句话让Codex代为安装,例如:

先安装基础依赖:
pip install requests pyyaml rich
如果使用OpenClaw,README推荐通过ClawHub安装基础监控Skill:
clawhub install btpanel
在本地开发或离线环境中,也可以从仓库的 skills/目录手动复制相应技能。若要同时使用文件管理和PHP站点能力,应一并部署对应的 btpanel_files、btpanel_phpsite目录以及公共模块。
接下来,到宝塔面板的“面板设置→API接口”中开启接口并获取Token,IP白名单应填运行Codex/Skill这台机器访问公网时使用的IP,如果配置失败,Codex也会帮你揪出正确IP,这个问题后面我也会提一嘴。

然后添加服务器配置:
python3 ~/.codex/skills/btpanel/scripts/bt-config.py add \
-n 服务器别名\
-H https://你的面板地址:端口 \
-t 你的API_TOKEN

如果面板使用Let’s Encrypt或商业CA签发的受信任证书,保留默认SSL 校验。如果使用宝塔默认的自签名证书,可以在确认风险后增加:
--verify-ssl false
配置信息默认写入~/.openclaw/bt-skills.yaml。它包含面板地址和PI Token,绝不能提交到Git仓库,也不应该复制进聊天截图或公开文档。
配置完成后,可以先做一次资源巡检:
python3 ~/.codex/skills/btpanel/scripts/monitor.py --format table
检查即将过期的SSL 证书:
python3 ~/.codex/skills/btpanel/scripts/sites.py --filter ssl-warning
排查指定服务器的Nginx错误:
python3 ~/.codex/skills/btpanel/scripts/logs.py --server 自定义服务器名称 --service nginx --lines 200
到了Agent环境里,用户通常不必记住这些命令,只需要表达目标,例如:“巡检prod-01,重点看磁盘、证书和Nginx错误。”Skill会据此选择脚本和参数。
尝试第一次巡检:“巡检prod-01,重点看磁盘、证书和Nginx错误。”

如果IP白名单添加失败,Codex会查询真实的公网访问IP,然后回到宝塔面板的“面板设置→API接口“。
第一次巡检成功结果:

06
PART
安全边界:AI能执行,但不能替你承担责任
SAFETY BOUNDARIES
只要工具具备服务器写入能力,安全就不能作为文末一句轻描淡写的提醒。
第一,保护Token。 宝塔API Token代表面板操作权限。配置文件应限制访问范围,不进入代码仓库;面板API也应设置合理的访问白名单,不要把接口无差别暴露到公网。
第二,不要随意关闭SSL校验。--verify-ssl false是为自签名证书准备的兼容选项,不是遇到连接问题时的万能开关。能使用受信任证书时,应优先保持校验开启。
第三,读后再改,改前备份。 无论是Nginx配置、站点文件还是伪静态规则,先读取真实内容、明确差异、保留可恢复版本,再执行写入。
第四,危险操作必须确认。删除网站、删除数据库、停用线上站点、递归修改权限,都可能造成服务中断或数据损失。Agent应说明目标、范围和影响,再等待用户明确授权。
第五,敏感文件默认不碰。.env、数据库配置、SSL私钥、系统口令文件不应因为“排查方便”就被主动读取并回显到对话。
最理想的协作方式不是让AI获得无限权限,而是:
给它完成任务所需的最小能力,让每个高风险动作都可见、可确认、可追踪。
07
PART
适合谁,又不适合谁?
WHO IT IS FOR
如果你已经在使用宝塔面板,并且符合以下任一情况,这套Skill值得研究:
管理一台或多台个人网站、企业展示站、博客或轻量业务服务器; 经常在Codex、终端和宝塔面板之间切换; 希望用自然语言完成巡检、日志读取和证书检查; 主要维护PHP、WordPress、ThinkPHP、Laravel 等站点; 想把固定运维步骤沉淀为Agent可重复执行的流程。
但它也有清晰的边界。
它不是Prometheus、Zabbix这类持续采集与告警平台,不负责长时间指标存储和复杂可视化;它不是完整的DevOps 或 CI/CD系统,没有代码变更监听、流水线编排、灰度发布和自动回滚。
因此,最准确的定位是:它是一套面向宝塔面板的 Agent 运维工具箱。
对于个人站点和小团队,它可以减少重复切换,让Codex从“只负责改代码”向“协助完成部署相关操作和日常运维”再往前走一步;对于需要严格审批、审计、分权和发布治理的大型生产环境,它更适合作为辅助工具,而不是绕过现有运维体系。
///
END
安全老话题:AI可以接管操作,但不能接管责任
CLOSING THOUGHTS
btpanel-skills 最有意思的地方,不是又增加了多少条命令,而是拉通了AI编程开发和部署的最后一公里。
得益于这个Skill,Agent有机会以更安全的方式继续读取线上状态、执行范围明确的宝塔操作。
虽然这让开发和运维之间的切换路径更短,却不会让风险凭空消失。
真正值得采用的AI运维,不是“把最高权限交出去,然后期待它永远不犯错”,而是把能力拆小、把边界写清、把确认留给人。
最后唠叨一句,AI可以接管操作,但不能接管责任。
项目采用MIT许可证。本文依据2026年7月25日仓库公开内容整理,具体能力请以项目后续版本为准。
关注账号,避免错过更新。
夜雨聆风