AI 值守
让 AI 自己排查故障和问题,在你的服务器上执行诊断并实施你允许的修复;每一步都有记录,每个有风险的步骤都留给你决定。
值守员是一个自己排查问题的 AI:它查看监控数据,在服务器上执行诊断,在知道原因并且你允许时实施修复,然后检查结果并写出结论。每一步都有记录。
值守默认关闭。需要先设置好 AI 分析。
开启
打开 AI 分析 → 值守,开启 值守(或者使用 AI 分析 → 总览 上的开关)。
选择 AI 操作权限。默认的 只允许诊断 让它排查问题,但把每个修复都留给你。
如果希望它执行你批准的修复,注册一把通行密钥,并让你的服务器信任它。
沙盒诊断和批准后执行的修复需要服务器上的被控为 1.1.0 或更新的版本。被控会自动更新到主控的版本;AI 分析 → 值守 会列出 AI 能做的事受限的服务器。
什么时候启动
| 触发 | 时机 |
|---|---|
| 故障 | 确认了服务器或监控项的故障 |
| 巡检 | 默认每 60 分钟一次(AI 分析 → 设置 → 巡检间隔)。先由程序检查,只有发现值得一看的情况时才唤醒 AI,所以平安无事的巡检不花任何费用。 |
| 漏洞 | 出现紧急漏洞。值守员检查这个软件是否在运行、能不能从外面访问,准备好升级命令,再决定要不要发邮件给你。 |
| 你的任务 | 你交给它一个任务 |
| 批准后检查 | 你批准的操作已经执行,AI 检查结果 |
交给它一个任务
在 AI 分析 → 总览 或 AI 分析 → 值守 的输入框里描述任务,例如“查一下商城为什么晚上很慢”,选择 全部服务器 或某一台服务器,然后点 开始(或者按 Ctrl / ⌘ + Enter;按 Enter 是换行)。页面自动刷新时,你正在输入的内容会保留。
任务可以比自动排查运行得更久:最多 60 次检查、30 分钟。
任务的结果显示在面板里,不会发邮件。AI 做完以后,你可以接着对话。
风险排查:像“检查这台服务器有哪些风险”这样的任务会覆盖补丁、暴露的端口、SSH、登录失败、账号和 sudo、计划任务、进程和连接、Web 服务器、证书以及系统加固。最后给出一份风险排查结论:按严重程度列出每个发现,附上证据、修复方法以及由谁来做(AI 已完成、在面板里批准,或者由你亲自执行)。
它能在服务器上做什么
AI 想执行的每样东西都要经过主控检查,发送之前再检查一次,到了服务器上还要由 root 助手再检查一次。各个级别从最安全到最危险:
| 级别 | 例子 | 处理方式 |
|---|---|---|
| 只读 | 固定的检查(服务状态和日志、失败的服务、系统错误、内核消息、磁盘空间、目录大小、大文件、内存、进程、监听端口、连接、Web 服务器配置测试、某个日志文件、可用更新、打开一个 URL、测试端口、SSH 设置、登录失败、防火墙规则、账号和 sudo、计划任务、证书、AppArmor / SELinux、内核安全设置、自动更新、容器和端口、打开的连接、DNS 查询、ping),以及 ls、cat、grep -r、tail、ps、ss、journalctl 或 systemctl status 这类单纯的只读命令 | 立即执行。读取文件内容的命令以普通用户身份运行,所以只有 root 能读的文件看不到。 |
| 沙盒 | 其他任何诊断:管道、循环、awk、sort、find … -exec grep、诊断脚本 | 审查员同意后在沙盒里执行。审查员拿不准时,等你决定。 |
| 低风险 | 启动、重启或重新加载普通服务;清理旧的 journal 日志或软件包缓存;轮转日志;清空巨大的日志文件 | 审查员同意后执行,或者等你批准,取决于这项设置。同一个服务每小时最多重启 3 次,自动修复每天最多 20 次。每台服务器自己也有限制:同一个修复每小时 3 次,24 小时内最多 20 次(它的 agent.conf 里的 ai_auto_per_day)。 |
| 需要批准 | 升级单个软件包、停止或禁用普通服务、结束进程 | 总是等你点 批准执行,并用通行密钥签名。之后被控在一小时内执行且只执行一次完全相同的操作。 |
| 高风险 | 重启服务器、安装全部更新、修改配置、任何涉及 SSH、网络、防火墙、VPN、Docker 或 3R Monitor 自身的操作、其他任何会改变系统的命令 | 系统永远不会执行。它会列出来由你亲自执行,并附上 AI 的理由和审查员的意见。 |
| 恶意 | rm -rf、mkfs、用 dd 写入磁盘、curl … | sh、fork 炸弹、反弹 shell、读取或搜索密码和密钥、清空防火墙、停止 SSH 或监控 | 无论怎么写(加 sudo、写完整路径、加引号、拆分参数)都会被拒绝:永远不会执行,连建议都不会给。任何批准都改变不了这一点。 |
升级软件包 升级的是真正安装的那些包:漏洞列出的是源码包(例如 perl 或 brotli),而服务器上装的是 perl-base 或 libbrotli1。升级前会先刷新软件包列表;什么都没改变的升级算作失败;升级后马上重新读取软件清单,所以修复了的漏洞几秒内就会消失。
沙盒
沙盒 级别的诊断:
- 以临时的普通用户运行,文件系统只读,没有任何特权;
- 最长运行 120 秒,内存最多 256 MB;
- 输出中的密码和密钥会被去掉。
沙盒只能连到服务器本身,以及你在 服务器 → 设置 → AI 沙盒可以连的网段 中为这台服务器允许的网段,并且不能超出 agent.conf 中的本地上限 sandbox_networks_max(默认是内网网段)。其他一切都由内核拦截;内核无法过滤的地方,沙盒完全没有网络。
并不是所有事情都只要审查员同意就够了:脚本只能使用一份固定的只读工具清单。其他工具,以及读取用户主目录或邮件,都需要管理员用通行密钥批准。
沙盒需要服务器上有 systemd 236 或更新的版本,以及 D-Bus。没有的话,只执行固定的检查。
AI 操作权限
在 AI 分析 → 设置 → AI 操作权限 中选择:
| 选项 | 含义 |
|---|---|
| 关闭:不在服务器上执行任何东西 | AI 只使用监控数据 |
| 只允许诊断 (默认) | 日志、状态、磁盘、进程、沙盒脚本……修复留给你 |
| 修复需要我批准 | 诊断自动执行;每个修复都等你批准 |
| 低风险修复自动执行 | 审查员同意后执行,有每小时和每天的上限。升级软件包、停止服务和结束进程总是等你批准。 |
不管选哪一项,AI 都永远不会执行高风险操作。每天自动修复次数(默认 20)限制自动执行的修复;超过之后,它们会等你批准。
每台服务器还会自己计数,这样就算主控被人控制了,也做不了更多:只经过审查员批准的修复,同一个每小时最多执行 3 次,24 小时内这类修复最多 20 次(agent.conf 里的 ai_auto_per_day)。超过以后服务器会拒绝,提示“这台服务器上的限制:……”。你自己批准的修复不受这个限制。
要排除某台服务器,在 服务器 → 设置 → AI 值守 中勾选 不允许 AI 在这台服务器上执行任何东西(包括只读诊断)。在服务器本身上,root 可以限制 root 助手接受哪些操作,被控无法改变这一点:
sudo 3rmonitor ai status # 面板的 AI 可以在这台服务器上执行什么
sudo 3rmonitor ai off # 什么都不执行
sudo 3rmonitor ai read # 只允许只读诊断和沙盒诊断
sudo 3rmonitor ai on # 也允许批准过的修复(默认)等你处理
需要你处理的操作列在 AI 分析 → 总览 和 AI 分析 → 值守 的 等你处理 下,也列在对应的处理记录里。每一项都显示它要执行什么、为什么、级别以及审查员的意见。
| 状态 | 你可以 |
|---|---|
| 等你批准 | 批准执行:你用通行密钥(指纹、面容或 PIN)确认,服务器在一小时内执行且只执行一次完全相同的操作。或者 拒绝。 |
| 需要你亲自执行 | 如果你同意,点 复制命令 自己执行,然后点 我已执行。或者点 忽略。 |
AI 做的封禁可以用 撤销 取消。
处理需要你的时候,AI 可以发邮件给你:处理结果,连同已经完成的修复、需要你处理的问题和等你批准的操作,放进合并的告警邮件。这算在 AI 每天的邮件封数里,所以也要看看面板里的 等你处理。
处理记录
AI 分析 → 值守 → 处理记录 列出每次处理:触发原因、执行了多少操作、有多少在等待或被拒绝,以及结果:
| 结果 | 含义 |
|---|---|
| 处理中… | 仍在运行。点 停止 结束它。 |
| 待命:等你批准 | 结论已经写好,有操作在等你批准 |
| 已修复 · 有改善 | 问题解决了,或者有所好转 |
| 需要你处理 | 有些事只有你能做 |
| 无需处理 | 没有问题,或者没有能做的事 |
| 失败 · 已停止 | 处理失败或被停止 |
打开一条处理记录,先看到结论,然后是 AI 做了什么:每次查询、命令和拒绝,以及它们的输出。
待命:AI 已经完成,但还有操作在等你批准时,它会马上写出结论。你批准了这些操作、它们执行完以后,AI 会回到同一条处理记录,检查结果,必要时继续处理,并更新结论(之前的结论保留在时间线里)。被拒绝或过期的操作只会在结论下方标注出来。
AI 会记住最近 30 天内同一台服务器或同一个问题的处理记录。
接着对话
你交给 AI 的任务,结论下面有一个 对话。接着问问题,或者告诉 AI 下一步做什么,点 发送(或按 Ctrl / ⌘ + Enter)。AI 带着这次处理的全部上下文(做过的检查和结果)回答,不用从头再来:
- 它可以像任务里一样查数据、在服务器上检查;修复照常经过同样的检查和批准;
- 回答显示在对话里,结论不变;
- AI 还在做的时候你发了消息,它做完手上的事以后再回答;最多可以有 5 条消息等着回答。
AI 最后一次回复后 24 小时内都可以接着对话;输入框下面写着到什么时候为止。以下情况对话会提前关闭,显示“这个对话已经关闭:……”:
| 显示的原因 | |
|---|---|
| 处理被停止了 | 你点了 停止,或者 停止所有 AI 操作。点 停止 时会先问你,因为停止以后不能再接着对话。 |
| 到了时间、步数或 token 上限 | 这个任务的检查次数、时间或 token 用完了 |
| 被拒绝的操作太多 | 审查员或规则拒绝的操作太多 |
| 模型出错了 | 模型返回了错误 |
| 对话太长,模型处理不了了 | 内容太多,模型读不下了 |
| 距离 AI 最后一次回复已经超过 24 小时 | |
| AI 工作时主控重启了 | |
| 这次处理是在支持接着对话之前做的 | 1.1.1 之前的任务 |
之后要继续,就交给 AI 一个新任务。AI 自己发起的处理(故障、巡检、漏洞)不能接着对话。步数、时间和 token 都有上限;如果模型出错,会改用默认模型再试。
封禁 IP
只有在访问日志里有证据并且审查员同意时,值守员才能自己封禁一个公网 IP:默认 1 小时,最长 7 天,每小时最多 10 个、每天最多 50 个,到期自动解除。任何地址段都需要通行密钥批准。
这些地址永远不会被封禁,有批准也不行:白名单里的地址和受保护的地址、管理员登录时用的 IP、你的服务器和主控。每次封禁都会记录证据和批准人。
全部停止
停止所有 AI 操作(在 AI 分析 → 总览 和 AI 分析 → 值守 上)会把 AI 操作权限设为 关闭,停止正在运行的处理,取消排队中和等待中的操作,并关闭所有对话。关闭 值守 则不再开始新的处理。
AI 能做的事受限的服务器
AI 分析 → 值守 列出 AI 不能做所有事的服务器:
| 显示 | 原因 | 怎么办 |
|---|---|---|
| 受限:“被控 x.y.z:更新到 1.1.0 或更新的版本……” | 旧版被控只执行旧的只读检查和低风险修复 | 升级主控;被控会自动跟着升级 |
| 受限:“这台服务器没有沙盒……” | 没有 systemd 236 或更新的版本,或者没有 D-Bus | 只执行固定的检查 |
| 什么都不执行 | 被控仍以 root 运行,或者它的 root 助手没有在运行 | 在服务器上执行 sudo 3rmonitor agent secure。见故障排查。 |
服务器详情页 系统 标签里的 被控 一行也会显示它的被控是怎么运行的。修复只会在信任主控签名钥匙的服务器上执行,你批准的修复还要求服务器信任你的通行密钥:见通行密钥。
安全机制
- 被控不以 root 运行。从 1.1.0 起,它以普通用户
3rmonitor-agent运行。AI 操作经过一个小小的 root 助手3rmonitor-helper:它自己从主控获取每个操作,用同样的规则再检查一遍,核对批准及其签名,然后才执行。 - 三道检查:在主控上检查,发送操作之前再检查一次,最后由服务器上的 root 助手再检查一次,它不相信主控给出的级别。
- 服务器自己的次数限制:root 助手统计只经过审查员批准的修复,同一个修复每小时超过 3 次、或者 24 小时内超过 20 次就拒绝。
- 审查员:另一个 AI,有自己独立的上下文,审查每个修复和每个沙盒诊断:是否必要、副作用、读取或修改了哪些文件、网络目标、离开服务器的数据、资源占用,以及试图绕过沙盒或拒绝的行为。来自日志、网页和命令输出的文字都只当作数据,永远不当作指令。多次被拒绝会让整个处理停止。
- 签名的批准:你的批准用通行密钥对具体的操作签名,主控也会对每个操作签名,所以连主控也不能独自批准、修改或添加任何东西。见通行密钥。
- 隐私:名称、IP 和域名以代号的形式发送给模型。