Skip to main content

Vigil ☉ —— 运维 Agent Harness

Vigil

省排查时间,决策交给人。 AI 做认知劳动(发现 / 定位 / 方案 / 证据打包),人做决策劳动(批准 / 否决 / 改方案)。

License: MIT Python PyPI

Vigil 是一个面向运维场景的 AI agent harness:让 agent 在真实服务器环境里干活时, 既「记得住整个平台」,又「动得安全」。Vigil 完全 fork 自 Hermes Agent(MIT License), 保留其成熟的 agent 内核(终端、工具调用、会话、记忆、插件),独立演进出面向 生产运维的完整能力:拓扑事实层、runbook 程序层、权限矩阵、受控执行器、契约编译。


目录


为什么需要 Vigil

很多小团队没有专职运维:服务器是开发顺手管的,CMDB 不存在,故障手册不存在, 半夜出事靠回忆。Vigil 给这类团队三样最缺的东西:

  • 记忆 —— 平台的户口本和关系图(拓扑表),agent 不会「换了会话就失忆」
  • 经验 —— 出过的故障沉淀成可执行的 runbook,下次不再从头查
  • 护栏 —— 权限矩阵硬性拦截危险命令,手滑删生产这件事从「靠自觉」变成「靠机制」

如果你有专职 SRE、完整 CMDB 和工单系统——Vigil 对你可能是锦上添花; 如果你一个人扛着几台服务器——Vigil 就是给你做的。

Vigil 的边界(2026-08-24 定):AI 自动做认知劳动,但决策交给人—— 有 runbook 的例行操作走预审 SOP(批准后执行),没有 runbook 的异常情况通知人介入。 Vigil 不做全自动修复——AI 代替运维决策还不是现在的正确形态。

核心特性

层 载体 职责
事实层 平台拓扑表(topo_query / topo_update / topo-discover) 长记忆地记住平台:实体、环境、依赖、归属。topo-discover 自动发现(SSH 扫 docker/k8s/helm/端口 + 硬件探针)生成,任何运维动作前先确认目标身份与环境;跨环境操作默认拒绝
程序层 runbook(runbook_load / runbook_create / 执行器) 唯一允许的「怎么动」:事故处理按 runbook 匹配流程执行;部署按 checklist 阶段门推进;跑通的处置流程可沉淀为结构化 YAML,越用越厚。支持嵌套编排(runbook 调 runbook)、范围继承、回滚联动、变量显式传值
受控执行器 23 动作命令生成 + 脚本资产库 执行引擎统一生成命令(restart/backup/rollback/scale…),变量替换 + target 解析 + 矩阵审批门 + expect 声明式验证 + on_failure 回滚。长任务 SSE 进度流主动播报,同名/同目标并发锁防重复执行
权限矩阵 操作矩阵(matrix.yaml + vigil matrix) 动作 × 环境 → 执行 / 审批 / 拒绝 三态裁决,无 deny(deny 诱发 LLM 绕行)。矩阵是唯一裁决者,覆盖 CLI/Web/定时/LLM 全部路径;高危动作覆盖缺口有仪表盘
契约编译 YAML 契约 → LLM 生成薄包装(vigil contract compile) 给 LLM 加工具不写代码:写一份 YAML 契约(参数/返回/测试),编译管线在沙箱里自测、过内容审批后注册成工具。凭据纪律:契约参数拒绝密码/密钥类参数
审计层 运行轨迹(vigil trajectory / Web 审计页) append-only 事件级日志:谁在什么时间执行了什么命令、结果如何;可查询、可回放、可裁剪——运维审计合规的底账
监控 健康探测 + PromQL 查询 + 告警快照 + 告警人工处置 + 告警→runbook 处置建议(Web 监控页 / 告警页) 拓扑实体健康探测(并发 + 缓存,不依赖 Prometheus 也能用),PromQL 兼容查询 + Alertmanager 告警汇总,连接配置可在 UI 里改了直接测;告警快照可逐条确认 / 清除(状态落本地库,不写回快照——采集层再报到也不会复活);活跃告警自动匹配处置 SOP——建议给人,人批准后走受控执行链;自动派发(无人值守)的处置记录可在告警页回看(哪个 runbook、哪几步、结果与耗时逐条留痕)
用量透明 token 用量面板 + 价格三级来源 当前会话/今天/30 天 token 与费用实时可见,价格手动覆盖 > 在线拉取 > 内置兜底,零网络依赖底线

和「人工 CMDB + RAG 文档」有什么不同

传统做法(包括不少 AI 运维产品)是:让 AI 读文档(RAG)来理解平台。 Vigil 的路线相反:让 AI 填表单来沉淀平台事实。

Vigil(表单哲学) 人工 CMDB + RAG
平台事实怎么进系统 agent 填表单,代码生成 YAML;LLM 永不直接写 YAML 语法 人手动录 CMDB;AI 靠读文档猜
沉淀成本 跑通一次 = 表单里点几下,成本≈0 写文档/录条目,成本高,容易欠账
事实可信度 拓扑表 + 校验器兜底(「默认 LLM 是傻子」),结构化可校验 文档靠人维护,过期了 AI 也不知道
未知判断 结构化表单约束 → 校验器拒绝,不会瞎编 RAG 召回不到就自由发挥

核心差异一句话:Vigil 信结构(可校验的执行规格),RAG 路线信模型(prompt 引导不可校验)。

工作原理

               ┌─────────────────────────────────────┐
               │        Vigil 会话(每个 session)      │
               │                                     │
  启动时注入 ───▶  TOPO 段(拓扑表第一层)              │
               │        │                           │
  用户指令 ────▶  topo_query 确认目标身份/环境 ──▶ 权限矩阵
               │        │                    (动作×env 裁决)
               │   runbook_load 匹配处置流程          │
               │        │                    execute / approve / deny
               │   执行器(23 动作 / 嵌套 runbook)   │
               │        │                           │
  执行后 ─────▶  topo_update 更新事实 + 审计戳        │
               │        │                           │
               │   经验沉淀:runbook / 契约自动成长    │
               └─────────────────────────────────────┘

两条铁律贯穿始终:

  • 先确认,再动手:任何运维操作前先查拓扑确认目标;命令的目标是谁,就用谁的 环境来裁决(test 会话操作 prod 节点?矩阵直接拦)
  • 默认 fail-closed:不确定就拒绝。权限矩阵默认启用;矩阵未初始化时非 prod 惰性放行、prod 仍门控——宁可拦错,不可放过

基于使用历史的权限自进化(v0.1,命令级)

操作矩阵之外,Vigil 会把你反复批准的只读命令沉淀成命令级白名单(原创机制: 不是 skills 式的任务经验,而是命令级权限自学习)——同一命令被批准 3 次后,下次 同形态直接执行不再弹审批;从"枚举规则补不完"转向"规则表兜底 + 使用历史补漏"。 管理入口:vigil approvals list(全量查看,种子与自进化分开标注)/ forget <模板>(撤销,回到弹审批)/ export(一键导出备份);数据文件 ~/.vigil/approval_memory.yaml(默认不存在 = 空白名单 + 内置只读种子表兜底)。

三条红线(焊死,不放松):

  • 只看用户信号,不看执行成功:沉淀只来自"用户批准"事件。执行成功不算数; 被用户拒过一次的命令 → banned,永不自动沉淀(解禁只能 forget 显式操作)
  • 沉淀模板不是原始串:lscpu -e / sudo lscpu 归一为 lscpu,cat /etc/hosts 归一为 cat;带动态参数(URL/IP/值 flag/操作数/管道/链式)与 rm/dd/mkfs/重定向/tee/shred/-rf 形态永不进白名单
  • 可查看 / 可撤销 / 可审计:每条沉淀记录模板、沉淀时间与来源任务,一条命令 撤销,沉淀/撤销/导出全部记轨迹

安全边界:只作用于矩阵 approve/unknown→approve 档——{approve: required} 强制人工门、prod 变更硬门、矩阵缺失 deny、高危目标解析 deny 永不被白名单跳过; tirith/危险命令等无条件层每条命令执行前照跑。内置只读种子表(lscpu/free/cat/ls/ df/ps/... 共 18 个,冷启动起点,默认 active)顺带修复了"裸只读命令在 prod 弹 审批"的漏配;lsblk 这类未登记只读命令仍先弹审批、批准 3 次后自进化。v0.1 的 "以后不用问"opt-in 在 CLI 审批面提供(web/gateway 审批不喂自进化信号,保守)。

告警处置闭环(batch87):告警 → SOP 建议 → 人确认执行

活跃告警进来自动匹配最可能的 runbook(Alertmanager 触发词精确命中 > 模糊评分, 复用 runbook_load 同款评分器):返回处置建议(runbook/置信度/匹配依据/次优 SOP), 每条标注 matched_by(trigger/fuzzy)与命中关键词——透明,防误导。定位是建议 闭环,不是全自动修复——AI 做发现/定位/建议,人做批准/否决:执行永远走既有 runbook 执行链(操作矩阵逐动作裁决 + 审批门 + 审计),匹配器零直通通道。

入口:alert_triage(agent 工具,一次调用拿"活跃告警全景 + 建议",描述里写明 "仅供建议、执行需用户确认后调 runbook_execute");Web 监控页告警行「建议处置」 (有匹配 → runbook 名 + 置信徽标 + 查看/确认执行;无匹配 → 灰字提示);CLI vigil alerts(列表,--json 机器可读)。每次 triage 调用落一条轻量审计 runtime/alert_triage.jsonl(vigil alerts history 回看)——dogfood 调触发词 与匹配阈值的数据来源。runbook 的 triggers 字段(含 v0.2 结构化 {alertname, severity} 精确匹配)是命中依据;本闭环只做匹配建议、不改变既有 执行/裁决语义(矩阵/审批门/高危门照旧)。

快速开始

30 秒安装(Linux / macOS,自动建 venv + 预装 tirith 安全扫描器):

curl -fsSL https://raw.githubusercontent.com/juneauwang/vigil-agent-harness/v1.0/install.sh | bash

国内网络若 GitHub 下载 tirith 失败:脚本会提示,Vigil 本体照常可用(首次扫描自动重试补装),或开 VPN 后重跑脚本(幂等)。

或手动装(已有 Python 3.11+ 环境):

pip install vigil-agent-harness

前置:Python 3.11+(3.12 推荐)

# 1. 安装(生成 vigil 命令入口)
pip install vigil-agent-harness

# 2. 直接进入 Vigil——ops 能力默认加载(topology / runbooks / 权限矩阵),
#    全新安装的 default profile 自带 ops 配置与样例拓扑,无需任何初始化
vigil

# 3. 配置模型(如 DeepSeek)——在 ~/.vigil/config.yaml 添加 model 段,
#    并在同目录 .env 放 API key

如需手动重建样例 profile,可用 vigil ops-init(可选——老用户/自托管 显式重建或迁移仍可用,首装已不需要)。

首次进入后,让 Vigil 摸清你的平台:自动发现拓扑——把每台机器的 IP 和 SSH 凭据告诉它,它会 SSH 进去扫 docker / k8s / systemd 服务 / 端口,生成实体 清单供你确认后落盘:

vigil topo-discover          # 引导式:填 IP + 凭据 → 扫描 → 人工确认 → 写入 topology.yaml

也可以手动编辑拓扑表(topology.yaml + entities/,高级用法)。然后让它干 第一件真活:「检查拓扑里哪些实体 last_verified 过期了」。

Web 控制台

v0.1.15 起带 Web 控制台(vigil dashboard,默认 http://127.0.0.1:9119):

  • 对话页(/chat):浏览器里和 Vigil 对话,流式回复、工具调用折叠展示、 多会话并行互不干扰;输入框多行自适应(Enter 发送 / Shift+Enter 换行,中文输入法 组词中不误发);支持直接上传图片(截图丢给模型看图,走原生多模态,不经过 OCR 预描述);token 用量面板实时显示当前会话/累计费用
  • 拓扑图(/topology):可交互拓扑图(缩放/平移/点击节点看详情抽屉), 状态着色 + 活性显示;力导向布局
  • 监控页(/monitoring):服务健康表格 + 告警列表 + 趋势 sparkline, 监控连接配置可直接在页面上改并测试连通性
  • 告警页(/incidents):告警快照列表(按 alertname|instance 去重保留最新), 逐条确认 / 清除(清除两步确认);处置状态落本地库,清掉的告警不会因为采集层 再次上报而复活,只有恢复后复发(startsAt 变化)才重新提醒;页内还可回看 自动派发的执行记录(无人值守触发了哪个 runbook、执行了哪几步、结果与耗时)
  • 审批全局弹窗:agent 请求审批时任何页面弹出决策框(批准/拒绝/忽略), 顶栏铃铛角标实时;Web 上批准 = 与 CLI 同一个审批流,prod 变更确认门照样拦
  • Runbook 页:执行入口 + 实时进度面板(SSE 流式)+ 历史记录 + 并发锁标识 + 高危动作覆盖率区块
  • 其余页面:状态 / 审计 / 矩阵等可视化
vigil dashboard        # 启动控制台,浏览器打开 http://127.0.0.1:9119

从源码安装(开发者 / 自托管)

想改代码、跑测试、自定义 fork 时用这条路。一键脚本 setup-vigil.sh (clone → 装依赖 → 初始化):

# 方式 A:已 clone 仓库,在仓库根目录直接跑
git clone https://github.com/juneauwang/vigil-agent-harness.git
cd vigil-agent-harness
./setup-vigil.sh

# 方式 B:未 clone,远程一键(自动 clone 到 ~/.vigil/vigil-agent-harness)
bash <(curl -fsSL https://raw.githubusercontent.com/juneauwang/vigil-agent-harness/main/setup-vigil.sh)

脚本会创建 .venv、安装依赖、把 vigil 软链到 ~/.local/bin,并询问是否 执行 vigil ops-init。也可以手动装:

python3 -m venv .venv && .venv/bin/pip install -e .
.venv/bin/vigil ops-init          # 或 .venv/bin/python scripts/ops_init.py(同入口)
.venv/bin/vigil -p ops

Windows 用户:原生 Windows 支持安装脚本 scripts/install.ps1(PowerShell 一键装依赖并把 vigil 加入 PATH)。WSL2 内可直接用上面的 Linux 路径。

一次会话长什么样

启动 vigil -p ops 后,控制台头部长这样(真实输出):

╭──────────────────── Vigil v1.0.0 (2026.8.24) ────────────────╮
│                PROFILE     ops                                │
│       /\_/\    ENV         [test]                             │
│      ( ◉.◉ )   GATES       matrix ON · 动作×env               │
│       > ^ <                → execute / approve / deny         │
│                TOPOLOGY    20 entities                        │
│                RUNBOOKS    6 loaded                           │
│ deepseek-v4-flash          HOME  ~/.vigil/profiles/ops        │
│ /home/your-name                                              │
│ Session: 20260824_171603   ◈ topo_query · runbook_load        │
│                                · permission matrix · /help    │
╰───────────────────────────────────────────────────────────────╯

Welcome to Vigil — topology loaded, runbooks ready, permission gates armed.

你:帮我排查 node2 的 sshd 为什么连不上
Vigil:先确认目标身份 → topo_query node2 → runbook_load 匹配
       "ssh-idle-hang" → 诊断(sshd -T / 保活配置)→ 修复 → 验证

左边是模型/工作目录/会话锚点,右边是运维能力实时状态——在哪个环境、 权限门开没开、记住了多少实体、有哪些 runbook,一眼可见。

安全模型

层 机制 说明
L1 toolset 裁剪 会话按角色加载最小工具集,减少攻击面
L2 静态规则硬 gate 危险命令模式(rm -rf / drop table / delete namespace)直接拦截,0 token
L3 目标级权限矩阵 动作目标(拓扑实体)的 env 决定裁决:prod 的高危动作硬拒/审批;矩阵无 deny,未知动作默认放行但记审计(deny 诱发 LLM 绕行)
L4 部署 checklist 生产部署强制走 runbook 阶段门:前置核对 → 发布 → 真实验证 → 回滚预案
凭据纪律 凭据注入链 密码/密钥只走拓扑 credentials + askpass 注入,不进命令串/argv/日志;契约参数拒绝凭据类参数

常见问题

国内镜像装不到? 新发布的包,国内镜像(阿里云/清华/中科大)同步有延迟(几小时到一天),装不到先换 pypi.org 直连:

pip install vigil-agent-harness -i https://pypi.org/simple/
# 或:主包走 pypi.org,依赖走国内镜像(更快)
pip install vigil-agent-harness \
  --index-url https://pypi.org/simple/ \
  --extra-index-url https://mirrors.aliyun.com/pypi/simple/

报 "from versions: none"? Vigil 要求 Python >= 3.11 且 < 3.14。Python 版本过低时,pip 会报 Could not find a version that satisfies the requirement ... (from versions: none)—— 这是版本门槛,不是网络问题。先查 python3 --version,装 Python 3.11+ 再试。 推荐用 uv 一步到位:

curl -LsSf https://astral.sh/uv/install.sh | sh
uv venv --python 3.12 .venv && source .venv/bin/activate
pip install vigil-agent-harness -i https://pypi.org/simple/

数据目录 Vigil 的数据目录为 ~/.vigil(可用 VIGIL_HOME 覆盖)。

Roadmap

  • 拓扑表(事实层)+ topo_query / topo_update / topo-discover(v0.4 分层:clusters/services/hardware/entities + 词表层)
  • runbook 程序层 + 嵌套编排(第 24 动作:runbook 调 runbook,范围继承/回滚联动/环状防护)
  • 操作矩阵(动作×环境三态裁决,无 deny)+ vigil matrix CLI/UI
  • 受控执行器(23 动作命令生成 + 脚本资产库 + 调度器 + 并发锁 + 进度流)
  • YAPL 契约编译(vigil contract compile:YAML 契约 → LLM 生成薄包装 → 沙箱自测 → 审批注册)
  • 监控页(健康探测 / PromQL / 告警)
  • 告警人工处置(告警页逐条确认 / 清除,状态落本地库,采集层零改动)
  • token 用量面板(价格三级来源,零网络兜底)
  • Web 控制台(对话/拓扑/监控/runbook/审批/审计)
  • 运行轨迹审计(append-only 事件日志 + 查询/回放/裁剪)
  • 反馈闭环(runbook_create:跑通的任务沉淀为结构化 runbook)
  • 同步 adapter(terraform.tfstate / k8s API——vigil topo-sync + SSH kubectl 发现)
  • 周期性拓扑发现(topo-sync 漂移报告 + cron 周期重扫,opt-in 默认关)

License

MIT。Vigil 是 Hermes Agent 的独立 fork,版权声明见 LICENSE。

Release files for vigil-agent-harness 1.0.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vigil-agent-harness 1.0.7
File Size Uploaded
vigil_agent_harness-1.0.7.tar.gz 10.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for vigil-agent-harness 1.0.7
File Interpreter ABI Platform
vigil_agent_harness-1.0.7-py3-none-any.whl Python 3 none any Details

Total release size: 21.2 MB

Release files / vigil_agent_harness-1.0.7.tar.gz

Download URL vigil_agent_harness-1.0.7.tar.gz
Size 10.5 MB
Tags Source
SHA-256 checksum
How to use checksums
ebfe034c0f8982779bd2e0d455bd2afa815145c6e58faec6ce45a703ec63a56a
BLAKE2b-256 checksum
How to use checksums
951c9a3eb71e730664cfcb478dfa54683cf0d47462f9d6dd18cbb304f879ccb4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / vigil_agent_harness-1.0.7-py3-none-any.whl

Download URL vigil_agent_harness-1.0.7-py3-none-any.whl
Size 10.7 MB
Tags Python 3
SHA-256 checksum
How to use checksums
daa2dad6df30e9d5141188057cf858c6958a27982f440db41fed41cff40f4942
BLAKE2b-256 checksum
How to use checksums
ccad4311fc563d552624580c2150b934ececdd3b5df2381fefd7d2e7285e74ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

1.0.7 This release

2 release files

0.1.17

2 release files

0.1.16

2 release files

0.1.15

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page