AI Agent
后台位置: System › Settings › AI provider (
/settings/ai) —— 模块开关与提供商;System › Admin › License & updates (/license) —— 模块开关。前台位置: AI Agent (/ai/agent) 及页面/chat/agent,或聊天内的 Agent 模式。
功能说明
AI Agent连接到客户自己的Linux虚拟机并通过SSH执行自然语言描述的任务:“检查系统健康状况”、“安装Docker”、“查找最近的错误”、“释放磁盘空间”。它会显示其提议的每个命令及输出。只读命令可以自动运行;任何会更改服务器的操作都需要客户点击Run。
前提条件
| 项目 | 要求 |
|---|---|
| AI模块与提供商 | 开启AI模块并配置可用的AI provider。Agent还需要一个支持工具调用的模型。 |
openssh-client面板服务器上 | Agent使用面板自身的ssh程序 (/usr/bin/ssh) 运行命令。安装程序会安装openssh-client;请通过ssh -V检查。否则Agent会报告“ssh client is not installed on the panel server”。 |
| 无独立的SSH网关 | 默认安装中会使用内置 SSH,不需要 ssh-proxyWeb 终端。只有在启用了可选的 web SSH 功能(feature_ssh_web)并安装了 ssh-proxy 服务时,Agent 才会转而通过 ssh-proxy 进行。 |
| 网络 | 面板服务器必须能够通过SSH端口(默认22)访问虚拟机的IP。请检查面板与客户机网络之间的防火墙和安全组。 |
| VM | 客户所有、运行中、未锁定、运行Linux(拒绝Windows虚拟机),且具有公共或可达的IP地址。 |
| SSH凭据 | 由NexCMP存储的虚拟机登录用户名和密码(在创建虚拟机或重置密码时保存,已加密),或者安装的面板操作密钥。如果两者都不存在,Agent会提示无法登录。 |
准备基础设施
检查面板服务器上的SSH客户端:
bashssh -V sudo apt-get install -y openssh-client # only if missing检查面板服务器是否可以向客户虚拟机建立SSH连接:
bashnc -vz 198.51.100.10 22将地址替换为测试虚拟机的IP。如果失败,请先修复路由或防火墙。
确保客户机允许NexCMP存储的用户通过密码登录(某些云镜像默认禁用),或者在客户机上安装面板的操作密钥。
在NexCMP中连接
- 完成AI provider配置:开启模块、保存提供商、Test connection显示绿色。
- 后台无需配置其他内容。模块开关会使客户门户中显示AI Agent入口。
- 作为客户:打开AI Agent,选择一台运行中的服务器并点击Choose server。该页面首先使用固定的无害命令探测SSH(不调用AI),并显示SSH connected或失败原因。
- 输入任务或选择一个快速入门(检查系统健康状况、安装 Docker、安装 Nginx、查找近期错误、安全检查、释放磁盘空间)。
命令运行方式
来源:面板服务器,带有系统
ssh客户端,每次一条非交互式命令。目标始终是数据库中的虚拟机 IP,绝不使用请求中的 IP;且仅能访问所有者自己正在运行且未被锁定的虚拟机。**认证:**存储的密码通过进程环境中的一次性
SSH_ASKPASS助手传递——不会写入磁盘或放入命令行。主机密钥不进行固定(虚拟机会使用新密钥重新安装)。每个命令的输出限制为 200 KB,并且每个命令都有时间限制(60 秒)。**Agent 循环:**AI 提出命令并读取输出;一个轮次最多经过 10 步后结束。
模式:
模式 行为 Confirm 每条命令都需等待 Run。 Auto 只有通过严格只读白名单的命令才会自行运行(例如 df -h、ps、journalctl)。其他任何内容,以及解析器无法确切分析的内容(变量、命令替换、重定向到文件),均需等待 Run。**风险标签:**会覆盖或删除文件、写入磁盘、更改账户或 SSH Keys、向外部服务器发送数据、打开原始网络连接、运行混淆代码、下载并运行脚本、关机或重启机器,或者访问其他服务器的命令,即使在 Auto 模式下也始终会显示 Needs confirmation。
**不受信任的输出:**命令输出会作为不受信任的数据显示给模型;其中的指令不会被执行。
验证
- 选择一个正在运行的测试虚拟机。页面显示 SSH connected。
- 询问“检查 CPU、内存和磁盘”。在 Auto 模式下,只读命令将运行,并且回答会进行总结。
- 询问“安装 Nginx”。安装命令会与 Run 和 Skip 一起出现;在您按下 Run 之前,不会运行任何内容。
- 顶部的计数器显示今日已使用的 AI 调用次数(例如
3/300)。
限制与注意事项
- **每日限制:**每个客户每天(UTC)限 300 次 AI 调用;于 00:00 UTC 重置。额度用尽后,Agent 会回答“Daily AI quota reached”。
- **并发:**每个客户同时最多运行 2 个 Agent;一个会话一次运行一个轮次。
- **会话:**每个会话最多 100 条消息,每条消息 4,000 个字符。一个会话属于一个虚拟机;如果虚拟机被删除或转移,旧会话将变为只读。
- **虚拟机已被锁定、已停止或为 Windows 系统:**虚拟机显示为 Locked、Stopped、Windows 或 No address,无法被选择。
- **模拟登录:**管理员模拟客户登录时无法使用 Agent 的凭据功能(参见 Log in as a customer)。
- **责任:**Agent 可能会犯错。门户会提示客户在运行命令前进行审查。请在您的条款中告知客户,他们需对批准执行的命令负责。
- 关闭AI模块会移除Agent条目,且路由将返回404
module_disabled。
故障排查
| 症状 | 原因 | 解决办法 |
|---|---|---|
| “面板服务器未安装ssh client (apt install openssh-client)” | 没有 ssh 二进制文件 | sudo apt-get install -y openssh-client. |
“Agent登录失败” / ssh: no saved credentials for this VM | 没有存储的密码且没有操作密钥 | 在门户中重置虚拟机密码以便重新保存,或安装操作密钥。 |
| “服务器未及时响应” | 防火墙、SSH 未监听、虚拟机繁忙 | 从面板服务器测试 nc -vz <ip> 22;在虚拟机中启动 sshd。 |
| “无法在此服务器上连接 SSH” | 路由或安全组 | 允许面板服务器通过端口 22 访问虚拟机。 |
| “虚拟机未运行” / “禁止访问” | 虚拟机已停止、锁定、删除或不属于该客户 | 启动、解锁虚拟机或选择其他虚拟机。 |
| “不可用:N(已停止、已锁定或 Windows)” | 如上所述的原因 | 虚拟机必须为 Linux 系统且处于运行状态。 |
| “SSH 网关暂时不可用” | Web SSH 功能已启用,但 ssh-proxy 已宕机 | 启动 ssh-proxy,或关闭 Web SSH 功能以使用内置 SSH。 |
| “AI 响应过慢(超过 90 秒)” | 提供商响应缓慢 | 使用更快的模型或降低 Reasoning effort。 |
| “已达到每日 AI 配额” | 已使用 300 次调用 | 等待至 00:00 UTC。 |
| “此会话仍在运行” | 另一个轮次正在进行中 | 请等待或按 Stop。 |