Endpoint-AIops 是一个社区维护的开源项目,采用 MIT 许可证,与任何终端管理厂商无关联、未获其背书或赞助。它面向托管终端设备群(瘦客户端、VDI 终端及其他集中管理的设备),提供受治理的 AI 运维能力,内置治理框架:统一审计日志、令牌/失控预算守卫、撤销令牌记录以及描述性风险分级。工具厂商中立,通过可配置方言与终端管理服务器的 REST API(Bearer 认证)通信,除 httpx 和 MCP SDK 外无其他依赖。测试套件基于模拟数据,终端管理 REST 路径尚未在真实管理服务器上演练,详见 docs/VERIFICATION.md。
用途
该工具服务于托管终端运维,提供读写操作并完整记录。它自身不决定某次写入是否被允许,该判断由智能体或所连接账户的权限决定。若为其提供只读角色的管理控制台账户或 API 令牌,写入操作将在服务器端失败。因此它没有只读开关、策略文件或审批门限可配置。工具保证的唯一一点是:没有任何操作是静默的——无论通过 MCP 还是 CLI,每次调用都会在 ~/.endpoint-aiops/audit.db 中留下审计记录,可逆写入仍会捕获变更前状态并在存在反向操作时记录。
主要能力
登录风暴分析:在“早上 9 点所有人同时登录”事件期间,检测滑动窗口内的并发登录突发,并排序拖慢登录与启动时间的终端和用户。每个标记都附带具体数字,而非黑箱结论。
补丁/配置漂移:发现与终端群偏离的终端(补丁级别过旧、代理版本异常、操作系统构建或配置配置文件不一致)。若未声明基线,则按终端群多数派推导基线,因此在尚无黄金镜像时也能工作。
CLI 提供了 init、overview、endpoint list/get/assign-profile/reboot、session list/storm、drift report/patch、secret set/list/rm/migrate/rotate-password、doctor、mcp 等命令。MCP 服务器(endpoint-aiops mcp 或 endpoint-aiops-mcp)包含 13 个工具(10 个读、3 个写),每个都包裹在捆绑的 @governed_tool 治理层中。
能力矩阵(13 个 MCP 工具):分析类工具(login_storm_analysis、drift_report、patch_status、patch_compliance、endpoint_health_score)可接受注入记录进行纯离线分析;endpoint_health_score 与 patch_compliance 仅支持注入,其余也可从配置目标实时拉取。
使用方式
可作为 Claude Code 插件安装,一次安装同时获得技能与 MCP 服务器,MCP 服务器通过 uv 获取并固定到插件声明的包版本,以便审计记录可追溯到写入代码。也可作为 OpenClaw 插件安装,同一捆绑包发布在 ClawHub,安装后需重启 OpenClaw 网关以加载插件,MCP 服务器通过 uv 获取并固定到具体版本,因此 uvx 需在 PATH 中。
也可作为 CLI 或独立 MCP 服务器运行(stdio)。凭据配置通过 endpoint-aiops init 完成,管理服务器 API 密钥存储在加密存储 ~/.endpoint-aiops/secrets.enc(Fernet + scrypt)中,绝不以明文落盘。解锁方式:通过 ENDPOINT_AIOPS_MASTER_PASSWORD(MCP/CI)或交互式提示(CLI)。注意:导出的变量可被该 shell 启动的每个进程读取并记录在 shell 历史中,在共享或长期主机上建议使用交互式提示,或从密钥管理器为单条命令注入。
治理与安全
每次操作(MCP 与 CLI)都经过捆绑的 @governed_tool 治理层。它记录,但不授权。审计:每次调用(参数、结果、状态、时长、风险层级以及操作员提供的审批人/理由)记录到 ~/.endpoint-aiops/audit.db,可通过 ENDPOINT_AIOPS_HOME 重定位。CLI 写入与 MCP 相同的行,没有未经审计的入口点。失控守卫是安全后备而非授权门限:在紧密循环中重复调用同一操作会触发断路器,防止智能体卡住后无限消耗调用/时间;可通过 ENDPOINT_RUNAWAY_MAX=0 禁用,可选硬上限通过 ENDPOINT_MAX_TOOL_CALLS / ENDPOINT_MAX_TOOL_SECONDS。撤销记录:可逆写入基于获取的变更前状态记录反向描述符。风险层级:审计行上的描述性标签,源自 risk_level,不构成门限。每个工具声明 risk_level,并通过测试与文档中的 [READ]/[WRITE] 标签保持一致,该层级作为描述性级别带入审计行。
可逆性:endpoint_assign_profile(高风险)捕获先前配置文件并记录反向的“重新分配先前配置文件”撤销描述符。endpoint_reboot(中等风险)捕获先前在线状态用于审计记录,但声明无撤销(重启没有安全的逆操作)。安全:状态变更的 CLI 操作(endpoint assign-profile、endpoint reboot)需要双重确认并支持 --dry-run。
数据约定:缺失不等于空。管理服务器未报告的字段返回 null,绝不为 "",键始终存在,因此缺失的补丁级别不会被误认为空白。被截断的列表会自我声明:{"items": [...], "returned": N, "limit": L, "truncated": bool},truncated 是实测而非推断。伴随总数(driftedCount、behindCount、nonCompliantCount、stormCount 及健康摘要)始终是完整未截断的数字。
方言(Dialects)
方言是管理服务器的 API 形态:资源路径、响应字段名、传输默认值(端口和 API 基础路径)以及认证方式。在 config.yaml 中按目标设置;endpoint-aiops init 会询问并打印配置了哪种。通用默认不是 IGEL 配置:IGEL 在 8443 端口以 /umsapi/v3 提供 IMI,目标若保留通用形态会在首次探测时 404。服务器确实没有某资源时,方言会明确说明而非猜测 URL:IMI 不暴露登录/启动会话资源,因此对 igel-ums 目标调用 session_list 和 login_storm_analysis 会返回命名缺失资源的教学性错误,而非调用虚构路径。方言也选择认证方案:IMI 拒绝通用方言发送的静态 Bearer 令牌,因此通过 HTTP Basic 在 POST /umsapi/v3/login 登录并携带返回的 JSESSIONID cookie(每连接一次,之后缓存)。由于方案来自方言,凭据失败与方言错误会不同报告:401 会指明所呈现的方案,并在服务器发送 WWW-Authenticate 挑战时指明实际需要的方案。针对 IGEL 的特别提示:权限不足的 UMS 账户会收到空列表而非 403。endpoint-aiops doctor 将认证与可达性探测分开,并在成功登录返回无终端时警告,因为“无设备”与“无权查看设备”否则无法区分。测试套件基于模拟数据,本包中没有任何方言在真实管理服务器上演练过,因此不声称支持任何特定产品(包括 IGEL)。generic 是占位形态,不是厂商 API。igel-ums 是有文档但未验证的方言,其路径和字段别名根据 IGEL 发布的 IMI 文档建模,认证方案在 IMI 手册中有记录并与三个独立的真实 IMI 客户端行为一致,但均未针对设备运行过,因为 IGEL UMS 无免费版,无法在维护者硬件上验证。两个方言在 docs/VERIFICATION.md 中记录为 UNKNOWN-pending-live。
适用场景
适用于瘦客户端、VDI 终端等集中管理设备群的运维场景,尤其是在登录风暴事件期间定位性能瓶颈、发现终端补丁与配置漂移,并在需要审计、可逆与风险分级的安全治理下执行受管控的读写操作。
限制
该工具不决定写入是否被允许;无只读开关、策略文件或审批门限。测试基于模拟,未在真实管理服务器上验证。不建议支持任何特定厂商产品。缺失字段返回 null。被截断列表有明确信封。社区维护,MIT 许可。如需较小/本地模型,参见 agent-guardrails.md。缺少能力或服务器方言时,欢迎提交 issue 或 PR。