用自然语言驱动 AI 管理你的 Linux 服务器
一套 OpenAI 兼容协议接入 7 家云端大模型与本地 Ollama
22 个内置工具:命令执行 · 主机管理 · SFTP 传输 · 多主机编排 · 虚拟机管理 · 监测告警
CLI 与 Web 双形态 · 高危操作人工确认 · 全程审计留痕
2026 年 9 月
目 录
一、项目概述
1.1 这是一个什么项目
「AI SSH 运维 Agent」是一个运行在本机的智能运维工具。它把大语言模型(LLM)与 SSH 协议直接连接起来:AI 像一名坐在终端前的运维工程师,登录服务器、执行命令、观察输出、判断结果,再决定下一步动作,循环往复,直到任务完成。使用者全程只需要用自然语言描述目标——例如「看看这台机器磁盘和内存使用情况,有超过 80% 的告诉我」——剩下的探查、执行与汇总,全部由 AI 自主完成。
对这个项目,可以用三句话概括它的定位:
- 它不是聊天机器人。AI 给出的不是文字建议,而是直接落实为服务器上的真实操作;
- 它不是自动化脚本。不需要预先编写 playbook、shell 脚本或定时任务,一句中文就是一张「工单」;
- 它不是黑箱。每一条命令执行前可见、可确认、可拦截,全程留有完整审计日志,随时可以回查「AI 到底做了什么」。
1.2 它解决什么问题
日常 Linux 运维中有大量「小而碎」的工作:查看资源占用、翻日志定位报错、检查服务状态、对比多台机器的配置差异……这些事不需要高深知识,却依赖熟练的命令记忆和反复的复制粘贴。对同时维护多套环境(K8s 集群、数据库、中间件、虚拟化平台)的使用者来说,在十几个 SSH 窗口之间来回切换的成本尤其高。
这个项目重新划分了「想」与「做」的分工:人负责提出目标、把握风险边界;AI 负责回忆命令语法、组合命令、阅读输出、判断异常并迭代排查。原本要切换多个窗口、敲十几条命令的一次排障,在这里通常一句话就能收尾。
1.3 一次典型的工作过程
你@web-server(deepseek/deepseek-v4-flash) > 看看这台机器磁盘和内存使用情况,
有超过 80% 的告诉我
┌─ $ 执行 @web-server ──────────────┐
│ df -h │
└───────────────────────────────────┘
┌─ # 结果 exit 0 · 0.3s ────────────┐
│ Filesystem Size Used Avail │
│ /dev/sda1 50G 20G 30G │
└───────────────────────────────────┘
…(AI 继续执行 free -h 等命令后汇总回答)
AI 收到目标后,自主决定先执行 df -h 查看磁盘,读到输出后再执行 free -h 查看内存,最后把两份结果汇总成一句结论回答。整个过程里,使用者只说了一句话;每一步执行了什么命令、返回了什么结果,都实时展示在界面上。

1.4 项目基本信息
| 条目 | 说明 |
| 交付形态 | 本地 Python 工具,CLI 与 Web GUI 双入口 |
| 交互语言 | 中文自然语言 |
| 控制通道 | SSH(paramiko 实现,支持密码与密钥认证) |
| 模型接入 | OpenAI 兼容协议:7 家云端厂商 + 本地 Ollama |
| 内置工具 | 22 个(命令、主机、SFTP、多主机、知识库、虚拟机、角色探测等) |
| Web 地址 | http://127.0.0.1:8300(仅绑定本机回环地址) |
| 运行环境 | Python 3.10+,Windows / Linux 均可 |
| 质量保障 | 覆盖五个层次的 200 余项自动化测试全部通过 |
二、设计理念与特性总览
2.1 四条设计原则
配置驱动,随加随用。不为每家模型厂商写适配代码——一套 OpenAI 兼容协议加 providers.yml 配置文件通吃;不为每台服务器改程序——hosts.yml 主机清单声明式管理。接入一家新厂商、纳管一台新机器,都只是「加一段配置」的事。
人机分工,安全优先。AI 有操作权,但没有不受约束的决定权:低风险命令自动执行保证操作流畅,高风险操作强制人工确认兜底安全。
一切留痕,可审计。命令、输出、对话全部落盘到会话日志目录,任何时候都能还原 AI 的完整操作轨迹。
本机优先,收敛攻击面。Web 服务只绑定 127.0.0.1,定位单用户本地工具,不做多用户与公网暴露,从架构上避免让运维提效工具自己变成新的安全风险点。
2.2 特性总览
| 能力 | 说明 |
| 多厂商模型接入 | DeepSeek、通义千问、Kimi、GLM、豆包、OpenAI、SiliconFlow 七家云端,外加本地 Ollama 免 Key 接入 |
| 双形态界面 | CLI REPL 与浏览器 Web GUI,共享同一份配置与同一套核心 |
| SSH 主机管理 | hosts.yml 清单声明式维护,支持密码与密钥认证,AI 可对话式增删改主机 |
| 高危命令拦截 | 内置规则加自定义正则,rm 类命令按参数级解析,命中必须人工确认 |
| SFTP 文件传输 | 上传下载一句话完成,敏感目录与超大文件需确认 |
| 多主机并行编排 | 一条指令多台并发执行,结果按主机聚合汇报,失败自动隔离 |
| 本地知识库 | AI 可读写 knowledge/ 目录:读取参考资料、沉淀经验结论 |
| 持续监测告警 | 30 秒周期采集资源与服务状态,横幅加声音告警,角色感知探针按需挂载 |
| 虚拟机管理 | VMware Workstation(本机 vmrun)与 KVM(经 SSH 执行 virsh)双栈生命周期管理 |
| 多模态视觉 | 监控截图、报错图、拓扑图直接发给 AI 理解 |
| 全程审计 | 会话日志完整落盘,操作轨迹可精确还原 |
三、多厂商大模型接入
3.1 一套协议通吃多家厂商
不同厂商 API 的差异被收敛到配置层:所有提供商统一走 OpenAI 兼容协议,接入一家新厂商只需要在 providers.yml 里写清接口地址、密钥的环境变量名与可用模型列表,不需要写任何适配代码。密钥本身保存在项目根目录的 .env 文件中,配置文件里只出现环境变量名,不出现真实密钥。
3.2 云端大模型
内置模板覆盖七家云端厂商,配置好对应密钥即可直接使用:
| 提供商 | 代表模型(以模板与官网为准) | 特点 |
| DeepSeek | deepseek-v4-flash / deepseek-v4-pro | 性价比高,工具调用稳定,常作默认主力 |
| 通义千问 | qwen 系列 | 阿里云百炼平台,型号丰富 |
| Kimi | kimi-k2.6 / kimi-k3 等 | 月之暗面,长文本见长 |
| GLM 智谱 | glm-5 / glm-4.7-flash | flash 档免费,适合零成本试用 |
| 豆包 | doubao-seed 系列 | 火山方舟接入 |
| OpenAI | gpt 系列 | 国际主流基线 |
| SiliconFlow | 多厂商聚合型号 | 一个 Key 用多家模型 |
3.3 本地 Ollama:免 Key、离线可用
除了云端厂商,项目为本地 Ollama 做了原生适配:提供商标记 keyless 之后无需任何 API Key,程序直接连接本机 11434 端口。这意味着敏感环境的数据不出本机、无外网时依然可用。Web 界面切到 Ollama 后,模型下拉框会自动列出本机已安装的全部模型(包括自定义标签的模型),也可以在自定义输入框直接填模型名切换;CLI 下用 /models 拉取实时列表、用 /model 切换任意模型名。
3.4 运行中随时切换
模型与提供商都可以在会话进行中热切换:CLI 用 /provider、/model 斜杠命令,Web 在左侧栏点击切换。切换后对话上下文保留,可以接着当前话题继续。需要说明的是,各厂商对工具调用(tool calling)的实现存在细微差异,遇到个别模型兼容性问题时,切换到主力模型即可。
四、双形态交互界面
4.1 CLI REPL:终端里的智能运维
CLI 是项目的第一形态,通过 python -m ai_agent 启动(Windows 下双击 run.bat)。界面用 rich 渲染:AI 执行的每条命令显示为命令卡片,结果带退出码与耗时,高危命令以醒目样式提示确认。常用斜杠命令如下:
| 命令 | 作用 |
| /help | 查看帮助 |
| /host [名称] | 查看或切换 SSH 主机 |
| /provider [名称] | 查看或切换 AI 提供商 |
| /model [名称] | 切换模型(不限于配置列表内的型号) |
| /models | 从厂商 API 拉取实时模型列表 |
| /history | 查看本会话执行过的全部命令 |
| /img [路径…] | 挂载本地图片供 AI 查看;/img clear 清空 |
| /clear | 清空对话上下文(高危放行状态一并重置) |
| /exit | 退出 |
Ctrl+C 可随时中断当前任务,上下文保留,可以继续对话修正方向。
4.2 Web GUI:浏览器里的运维工作台
Web 形态通过 python -m ai_agent.webapp 启动(或双击 run_web.bat),默认地址 http://127.0.0.1:8300 并自动打开浏览器。主要界面能力:
- 左侧栏选择 AI 提供商与模型,未配置密钥的厂商点击「填 Key」弹窗即可写入本机配置;
- 主机管理面板:点击主机即连接切换,「+ 添加」填入 IP、端口、用户、密码即可纳管新主机,与 CLI 共享同一份清单;
- 聊天流:命令高亮、输出折叠面板(出错自动展开)、AI 回答 Markdown 渲染;
- 高危确认弹窗:命中规则时选择「确认执行 / 跳过 / 本次会话全放行」,180 秒不响应自动按跳过处理;
- 文件传输卡片:上传下载的大小、耗时、速率独立成卡;
- 多主机表格:并行任务按主机聚合展示状态、耗时与输出摘要;
- 任务进行中可点「停止」中断;「清空对话」重置上下文;刷新页面自动重放当前会话,不怕误关浏览器。
4.3 两套界面,同一个内核
Web 不是 CLI 的复制品。项目通过钩子注入机制让 Web 后端完全复用 CLI 的 Agent 核心循环——确认交互、命令回调、取消控制都以回调形式注入,CLI 自身行为零改动。前端则是零构建方案:一个 HTML 页面加原生 JavaScript 与本地化的 Markdown 渲染库,没有 npm、没有打包工具,拿到代码就能跑。
五、AI 工具箱:22 个内置工具
5.1 工具全景
AI 能做什么,取决于它手里有哪些工具。项目目前内置 22 个工具,按用途分为七类,通过统一的 schema 描述注册给大模型,由 AI 根据对话目标自主决定调用哪个、传什么参数:
| 类别 | 工具 | 用途 |
| 命令执行 | run_command | 在当前主机执行单条命令 |
| 主机管理 | list_hosts / switch_host / add_host / remove_host / rename_host | 查询与切换主机,对话式增删改清单 |
| 多主机编排 | run_command_on_hosts | 线程池并行在多台主机执行同一命令 |
| 文件传输 | upload_file / download_file | SFTP 上传与下载 |
| 本地知识库 | list_local_dir / read_local_file / write_local_file | 列出、读取参考资料,写入沉淀结论 |
| VMware 虚拟机 | list_vms / vm_control / vm_snapshot / vm_clone / register_vm_by_ip | 本机 VMware Workstation 虚拟机生命周期管理 |
| KVM 虚拟机 | kvm_list / kvm_control / kvm_snapshot / kvm_clone | 经 SSH 在 KVM 宿主机上用 virsh 管理虚机 |
| 角色探测 | scan_roles | 探测主机角色,为值守监测挂载对应探针 |
5.2 主机清单的对话式维护
维护服务器清单这件事本身也可以交给 AI:
- add_host:把 IP、用户名、密码念给 AI,它就把主机登记进清单并立即可连;密码不写进 YAML 清单,而是存入 .env 环境变量文件;
- remove_host:删除主机属破坏性操作,必须经人工确认;默认保留其密码变量(防止误删多台主机共享的密码),只有显式要求清理时才连带删除;
- rename_host:改名并自动同步值守监测清单,保证监测配置与主机清单始终一致。
增删改全部即时生效,不需要重启程序。
5.3 本地知识库:让 AI 带着资料干活
项目根目录下的 knowledge/ 目录是 AI 的「资料架」:把产品文档、环境说明、拓扑描述放进去,AI 在需要时会自主检索阅读;排障得出的结论,也可以让 AI 直接写成文档沉淀进去。安全边界清晰:读取支持行区间、拦截 .env 等敏感文件与越权路径;写入时新建文件直接落盘,覆盖已有文件或写到敏感路径则需人工确认。

5.4 虚拟机生命周期管理
VMware Workstation(本机操作)。AI 通过 vmrun 管理本机虚拟机的启动、停止、挂起、快照与克隆。只认配置文件白名单里登记过的虚拟机,清单外一律拒绝,防止 AI 凭猜测乱碰;克隆出的新虚拟机自动登记入册。另有按 IP 反查登记:给出一个运行中虚拟机的 IP,AI 自动定位并把它的路径登记进白名单。
KVM(经 SSH 远程操作)。对已连接的 KVM 宿主机,AI 通过 virsh 管理虚机:列出、启停、快照、克隆。停止分优雅关机与强制销毁两档;克隆使用 virt-clone 自动复制磁盘并定义新虚机。
共同的安全设计。查看类只读操作直接执行;启停、快照、克隆等影响性操作逐项人工确认;快照与克隆属于重 IO 操作,强制逐台串行执行——这是从真实硬件教训固化的规则(低性能磁盘上并发建快照会打满 IO 导致整机卡死);vmrun 对运行中虚拟机建快照时命令可能「假挂起」,程序通过检查虚拟机的 .vmsd 状态文件判定快照是否真正建成,不误报失败。
六、SFTP 传输与多主机并行编排
6.1 SFTP 文件传输
upload_file 与 download_file 让 AI 直接搬运文件:日志回传、配置下发、安装包上传,一句话完成。传输结果以独立卡片展示大小、耗时与速率。安全边界有三条:
- 上传目标命中 /etc、/boot、/usr、/bin 等 13 个系统敏感目录时,需人工确认;
- 单文件超过 50MB 时,需人工确认;
- 上传要求远程父目录已存在(AI 通常会先创建目录)——这是刻意设计,防止误建整棵目录树。
下载不改动服务器,无需确认。
6.2 多主机并行编排
run_command_on_hosts 是批量场景的核心:一次工具调用内部以线程池并发(最多 8 路),在多台主机上同时执行同一条命令。
- 目标主机支持显式列表,也支持「all」一键圈定全部主机;
- 尚未连接的主机自动惰性建连,不影响当前会话的焦点主机;
- 某台主机连接失败会被隔离登记,其余主机照常执行,结果里单独汇报失败原因;
- 每台主机的输出独立截断保留头尾,多台聚合也不会撑爆模型上下文;
- 高危命令一次确认覆盖全部目标主机,拒绝则全部跳过,不会出现「批了三台漏问五台」的混乱。
执行结果按主机聚合成表格汇报:状态、耗时、输出摘要一目了然。典型场景如「帮我看下所有机器的内核版本」「这几台 Web 的 nginx 都还活着吗」。
七、持续监测与告警值守
7.1 一键值守
Web 侧边栏提供「一键值守」按钮:启动后,后台监测引擎自动纳管主机清单里的全部机器,以 30 秒为周期采集 CPU、内存、磁盘使用率与关键服务状态。监测与 AI 对话完全解耦——AI 正忙于执行任务时,监测照常运转。值守默认关闭,由人工一键启动,避免程序一启动就对全部主机发起轮询。
7.2 告警体验
指标超过阈值或服务宕机时:页面顶部弹出告警横幅并发出三连急音提示;右侧常驻面板累积展示所有未恢复的异常,可手动关闭单条;异常恢复后自动变绿并从面板移除。

7.3 稳定性设计
- 事件去抖:只在「正常转异常」「异常转恢复」两个状态翻转点推送事件,首次轮询的正常状态静默记录为基线,避免启动瞬间告警刷屏;
- 连接降级:主机连不上时自动暂停对该机的告警,防止网络抖动引发告警风暴;恢复后自动续测;
- 阈值灵活:支持全局默认阈值与单机覆盖,不同重要等级的机器可以用不同标准。
7.4 角色感知探针
不同角色的主机,该盯的东西不一样:Web 机关心 nginx,数据库机关心 mysqld,K8s 控制面关心节点与核心组件状态,Ceph 节点关心集群健康。项目提供角色探测能力(scan_roles 工具):AI 自主登录主机探测其角色,按角色自动挂载对应的监测探针,保证每台机器只挂真正有意义的检查项。探测结果先以候选形式给出,人工确认后生效;对误判的角色可以单独剔除,不做一刀切。


八、多模态视觉:让 AI 看懂运维现场
8.1 能力描述
运维现场有大量信息以图片形式存在:监控大盘截图、报错弹窗、网络拓扑图、日志截图。过去要把图里的内容打成文字再问。现在可以直接把本地图片发给 AI——它看图理解内容,再结合服务器实际状态给出判断。
8.2 双端传图
- CLI:先用 /img 挂载本地图片(支持一次多张、含空格的路径加引号),再输入问题一起发送;/img 查看已挂载,/img clear 清空;
- Web:点击输入框旁的附件按钮多选上传,缩略预览确认后随问题发送。
图片随消息进入对话上下文,后面的轮次仍可参考。支持 png、jpg、jpeg、gif、webp、bmp 格式,单张不超过 5MB,超限或格式不符会得到明确的中文提示。
8.3 模型要求
图片识别只有视觉(vision)模型支持。在配置中为支持视觉的提供商标记 vision 后,界面会以「视觉」标签标注;把图片发给不支持视觉的模型时,厂商会直接返回错误,换视觉模型即可。
九、安全机制
AI 拥有服务器的执行能力,项目的所有安全设计都围绕一个问题展开:如何让 AI 放手干活,又不让它闯祸。
9.1 高危命令识别
内置高危规则覆盖:递归强制删除、格式化磁盘、dd 写盘、关机重启、下载管道执行、chmod -R 777、覆盖系统目录文件、写入裸设备、清空 crontab、清空 iptables 等。识别 rm 这类命令时不靠简单正则:-rf、-fr、-r -f、--recursive --force 组合多变,项目用专门的参数解析器拆解旗标与目标路径,显著降低漏判与误判。
9.2 人工确认交互
命中规则的命令一律拦截,交给人处置,可选:执行一次、跳过、编辑命令后执行、本次会话放行。Web 端为确认弹窗,180 秒不响应自动按跳过处理——宁可不做,不可误做。多主机并行执行时,一次确认即覆盖全部目标主机。

9.3 自定义规则
除内置规则外,可在 config/dangerous.yml 中用正则追加自定义规则(该文件默认不入版本库):
patterns:
- name: 清空历史
regex: \bhistory\s+-c\b
9.4 凭据管理
API Key 与主机密码只存 .env(已被版本管理排除);YAML 配置中只出现环境变量名,不出现真实凭据。主机密码缺失时,在连接当口交互式询问输入且不回显,不强制落盘。SFTP 与本地知识库另有各自的敏感文件拦截。
9.5 AI 行为约束
系统提示词给 AI 立了强规矩:先查看后变更、不编造命令输出。工具调用链最多 25 轮(可配置提高)自动停止,防止单任务无限循环。AI 走非交互式通道执行命令,vim、sudo 密码这类交互程序天然无法挂起等待——超时机制兜底。
9.6 全程审计
每条命令、每份输出、每轮对话完整落盘 sessions/ 目录。出了问题,时间线可以精确还原。
十、系统架构与实现
10.1 模块结构
项目为纯 Python 实现,核心模块职责如下:
| 模块 | 职责 |
| main.py | CLI 入口、REPL 交互循环、斜杠命令 |
| agent.py | Agent 核心循环(工具调用循环) |
| llm.py | OpenAI 兼容客户端:多厂商接入与重试 |
| ssh.py | paramiko 连接管理、命令执行(超时硬控制) |
| tools.py | 22 个工具的 schema 描述与分发 |
| safety.py | 高危命令检测与确认交互(确认方式可注入) |
| config.py | .env / providers.yml / hosts.yml / vmware.yml 等配置加载 |
| monitor.py | 值守监测引擎:周期采集、阈值判断、事件去抖 |
| vmw.py | vmrun 封装(编码、超时、快照串行锁、挂起检测) |
| kvm.py | virsh / virt-clone 封装(经 SSH 管理 KVM 虚机) |
| images.py | 多模态图片加载(格式白名单、大小校验) |
| ui.py | rich 终端渲染与会话日志 |
| webapp.py | Web 后端(FastAPI REST + WebSocket,仅绑定本机) |
| web/ | 前端静态页(HTML + 原生 JS + 本地化 Markdown 渲染,零构建) |
10.2 Agent 核心循环
Agent 循环采用函数调用(function calling)的串行保守实现:一轮对话中 AI 决定调用工具,程序执行后把结果交回,AI 再决定下一步,最多 25 轮自动收束。串行换来的是对各家厂商工具调用实现的最大兼容。模型返回的助手消息会经过手动序列化,剔除厂商私有字段(如思考内容),避免历史消息污染上下文。
10.3 钩子注入:CLI 与 Web 复用同一核心
Web 后端不是 CLI 的分支拷贝。安全确认、工具回调、模型调用、SSH 通道四个环节都支持钩子注入:CLI 注入终端交互,Web 注入弹窗回执与事件推送,核心循环代码只有一份。这保证了任何能力在两个形态下行为一致,也保证修一处、两端生效。
10.4 Web 事件协议
Web 采用「REST 管配置、WebSocket 跑事件」的分工:REST 接口负责提供商、模型、主机、密钥管理与连接控制;聊天走 WebSocket 事件流——用户消息、AI 回答、命令开始与结束、思考状态、高危确认请求、文件传输进度等事件实时推送。Agent 运行在独立工作线程,通过事件循环桥接把事件推向前端;高危确认使用短 ID 配合事件对象实现请求-回执唤醒,180 秒超时兜底。页面刷新时通过历史重放事件恢复当前会话。
10.5 上下文管理
长会话的上下文膨胀由两层机制控制:单条命令输出超长时截断;历史消息超过阈值时裁剪,裁剪始终保留全部用户消息,任务目标不会丢。达到工具调用轮数上限时任务暂停并回显最近目标,继续对话即可断点续做。相关参数可在 config/agent.yml 中调整(不建该文件则用内置默认值):
max_rounds: 50 # 单次任务最大工具调用轮数(默认 25,长任务建议 40~60)
max_messages: 60 # 触发上下文裁剪的消息条数(默认 45)
keep_recent: 45 # 裁剪后保留的最近消息条数(默认 30)
十一、质量保障:五层测试体系
11.1 分层测试
功能迭代靠分层测试守住底线,各层各司其职,合计 200 余项测试全部通过:
| 层次 | 运行方式 | 验证重点 |
| 离线冒烟层 | mock 模型与 SSH | 工具 schema、安全拦截规则、各模块纯逻辑,秒级跑完 |
| 真实端到端层 | 真实大模型 + 真实 SSH | AI 自主巡检、高危拦截的接受与拒绝双路径、自主切换主机 |
| 能力真实层 | 真实大模型 + 真实 SSH | SFTP 往返 md5 一致、敏感目录上传拦截、超大文件确认、并行执行耗时、不可达主机隔离 |
| Web 接口层 | REST + WebSocket 全链路 | 接口语义、事件流配对、脚本化假模型驱动的完整对话 |
| 真实通道层 | 浏览器同款 WS 通道 | 真实模型自主选用文件传输、多主机等工具并正确汇总 |
11.2 面向不确定性的断言设计
真实大模型的命令组合不可预测——同一个目标,两次执行的具体命令可能不同。测试因此遵循一条原则:断言最终效果(例如远程目录确实已被删除),而不是断言具体命令串或退出码。此外,所有「生成文件后校验字节」的断言一律二进制读写,规避 Windows 文本模式换行符转换带来的假失败。
十二、安装部署与上手
12.1 环境要求
Python 3.10 及以上;Windows 与 Linux 均可运行;Web 界面使用现代浏览器访问。除 Python 依赖外无其他强制组件——本地 Ollama、VMware Workstation 属于可选能力的按需前提。
12.2 三步上手
# 1. 安装依赖
pip install -r requirements.txt
# 2. 在项目根目录 .env 中配置任一家 AI 的密钥(首次运行自动生成配置模板)
# 3. 启动
python -m ai_agent # CLI 形态
python -m ai_agent.webapp # Web 形态
12.3 配置文件
首次运行会自动从模板生成 config/providers.yml 与 config/hosts.yml。AI 密钥写在项目根目录 .env 中,任配一家即可运行:
DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxxxxx
# DASHSCOPE_API_KEY=sk-xxxxxxxxxxxxxxxx # 通义千问
# MOONSHOT_API_KEY=sk-xxxxxxxxxxxxxxxx # Kimi
# ZHIPU_API_KEY=xxxxxxxxxxxxxxxx # 智谱 GLM
# ARK_API_KEY=xxxxxxxxxxxxxxxx # 豆包 / 火山方舟
# OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
# SILICONFLOW_API_KEY=sk-xxxxxxxxxxxxxxxx
# HOST_PW_WEB=xxxxxxxxxxxxxxxx # 主机密码,按主机名命名变量
主机清单写在 config/hosts.yml,支持密码与密钥两种认证方式:
default: web-server
hosts:
web-server:
host: 192.168.1.10
port: 22
user: root
auth:
method: password
password_env: HOST_PW_WEB # 密码存放在 .env 对应变量中
note: 前端 Web 服务器
# 密钥认证示例
# db-server:
# host: 192.168.1.20
# user: ops
# auth:
# method: key
# key_file: ~/.ssh/id_ed25519
AI 提供商配置示意(完整字段以仓库内 providers.example.yml 模板为准):
deepseek:
base_url: https://api.deepseek.com/v1
api_key_env: DEEPSEEK_API_KEY
models: [deepseek-v4-flash, deepseek-v4-pro]
ollama:
base_url: http://localhost:11434/v1
keyless: true # 本地 Ollama 免 Key
models: [qwen2.5:7b]
12.4 启动与运行
python -m ai_agent # 默认主机 + 默认 AI
python -m ai_agent --host db-server --provider glm # 指定主机与 AI
python -m ai_agent --list-hosts # 查看主机清单
python -m ai_agent --list-providers # 查看提供商与密钥状态
python -m ai_agent.webapp # 启动 Web 并自动开浏览器
python -m ai_agent.webapp --port 8400 --no-browser # 指定端口 / 不自动开浏览器
Windows 下双击 run.bat(CLI)或 run_web.bat(Web)即可。
12.5 已知边界
如实说明当前边界,便于判断适用性:
- 需要交互式输入的命令(sudo 密码、vim 等)不适合交给 AI——非交互通道会挂起至超时;
- 各厂商工具调用实现存在差异,个别模型需要换用主力模型;
- 思考型模型响应较慢属正常现象;
- SFTP 上传要求远程父目录已存在(AI 通常会先创建目录);
- VMware 操作仅对本机且白名单内的虚拟机有效;
- 本地小参数模型(3B/7B 档)工具调用能力偏弱,重要任务建议使用云端主力模型;
- 定位为单用户本地工具,Web 仅绑定本机回环地址,适合个人实验环境与内网服务器管理,不适合直接暴露为多人共用平台。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/qq_28608175/article/details/166600665






