根本原因🧭
  
Kubernetes事件的AI原生SRE。
RootCause是一个本地优先的MCP服务器,它将自然语言请求转化为证据支持的事件分析、Kubernetes诊断和更安全的操作。
RootCause内置Go作为单个二进制文件,使用您现有的kubeconfig标识针对低摩擦本地工作流进行了优化。
______________________________________________________________________
🚀 快速开始 | 🌐 客户端设置 | 🛠️ 工具 | 🧩 技能 | 🔒 安全 | ⚙️ 配置 | 🏗️ 建筑 | 🤝 贡献
______________________________________________________________________
为什么根本原因💡
RootCause是为SRE/操作员工作流程构建的,在这些工作流程中,速度很重要,但不安全的自动化是不可接受的。
- 🚀 停止上下文切换:从一个MCP服务器调查事件、推出风险、Helm/Terraform/AWS信号和补救措施。
- 🧠 人工智能驱动的诊断:证据优先分析,包括RCA、时间表和以行动为导向的下一步检查。
- 💸 内置成本优化:将资源使用、工作负载最佳实践检查、Terraform计划分析和云上下文相结合,以做出优化决策。
- 🔒 企业级护栏:角色/命名空间策略执行、编校、只读模式、破坏性工具控制和变异预检。
- ⚡ 零学习曲线:提出自然语言操作问题,并使用提供的常见SRE流程提示模板。
- 🌐 通用兼容性:可与Claude、Cursor、Copilot、Codex等兼容MCP的客户端配合使用。
- 🏭 生产级工作流程:单Go二进制、kubeconfig原生认证、确定性结构化输出和广泛的测试覆盖率。
为什么团队选择它
| 需要 | 根本原因答案 |
|---|---|
| “发生了什么变化,为什么会破裂?” | rootcause.incident_bundle, rootcause.change_timeline, rootcause.rca_generate |
| “现在重新启动或推出是否安全?” | k8s.restart_safety_check, k8s.best_practice, k8s.safe_mutation_preflight |
| “我的平台生态系统健康吗?” | k8s.*_detect + k8s.diagnose_* ArgoCD/Flux/证书管理器/Kyverno/看门人/Cilium |
| “我可以标准化SRE响应吗?” | 提示模板+共享呈现/证据管道的结构化输出 |
你能做什么?
用自然语言询问你的AI助手:
- “为什么这次部署在推出后失败了?”
- “现在重新启动此工作负载安全吗?”
- “为什么ArgoCD应用程序不同步?”
- “Flux在这个集群中是否健康?”
- “为什么证书无法续订?”
- “在贴片/应用之前,这种突变安全吗?”
RootCause保持其深度优先模式:证据优先诊断、根本原因分析和补救流程,而不是原始工具蔓延。
高级用户可以将这些提示映射到此README中的具体工具(Complete Feature Set, Toolchains,以及 Tools 部分)。
用例
事件响应
- 通过以下方式构建端到端的事件证据
rootcause.incident_bundle - 通过以下方式生成可能的原因
rootcause.rca_generate - 导出时间线和尸检工件以供后续跟进
突变前的安全操作
- 评估推出/重启风险
k8s.restart_safety_check和k8s.best_practice - 跑
k8s.safe_mutation_preflight在应用/修补/删除/缩放操作之前
生态系统特定健康检查
- ArgoCD:检测安装并诊断同步/健康漂移
- Flux:检测控制器并诊断协调故障
- cert manager/Kyverno/Gatekeeper/Cilium:检测足迹并诊断控制平面或策略问题
功能亮点
| 区域 | 根本原因能力 |
|---|---|
| 事故分析 | rootcause.incident_bundle, rootcause.rca_generate, rootcause.change_timeline, rootcause.postmortem_export, rootcause.capabilities |
| Kubernetes弹性 | k8s.restart_safety_check, k8s.best_practice, k8s.safe_mutation_preflight |
| 生态系统诊断 | ArgoCD/Flux/cert manager/Kyverno/Gatekeeper/Cilium via *_detect 和 diagnose_* 工具 |
| 部署安全 | k8s变异操作前的自动预飞行 |
| Helm操作 | 图表搜索/列表/获取、发布差异、回滚顾问、模板应用/卸载流程 |
| 地形分析 | 模块/提供者搜索+ terraform.debug_plan 用于影响/风险分析 |
| 服务网格和扩展 | 使用共享证据模型的Linkerd/Istoi/Karpenter诊断 |
完整功能集
| 类别 | 代表性能力 |
|---|---|
Kubernetes核心(k8s.*) | CRUD、日志/事件、基于图形的调试流程、重启安全、最佳实践评分、突变预检 |
| 生态系统诊断 | ArgoCD、Flux、证书管理器、Kyverno、看门人、Cilium via *_detect 和 diagnose_* |
事故情报(rootcause.*) | 事件包编排、时间线导出、RCA生成、补救行动手册、事后导出 |
Helm操作(helm.*) | 图表注册表搜索/列表/获取、发布状态/差异、回滚顾问、安装/升级/卸载、模板应用/卸载 |
地形分析(terraform.*) | 模块/提供者/资源/数据源发现+计划调试 |
服务网格(istio.*, linkerd.*) | 代理/配置/状态诊断、策略/路由可见性、网格资源健康状况 |
集群自动缩放(karpenter.*) | 配置、节点池/节点类、中断和调度诊断 |
云环境(aws.*)用于跨层事件分析的IAM、VPC、EC2、EKS、ECR、STS、KMS诊断 | |
| 安全和控制 | 只读模式、破坏性门控、明确确认、在变异K8s操作之前进行自动飞行前检查 |
代理技能
使用中的内置技能库,使用Kubernetes和RootCause专业知识扩展您的AI编码代理 skills/.
技能元数据经过模式版本控制,并嵌入到CLI中 internal/skills/catalog/manifest.json.
快速安装
# Copy all skills to Claude
cp -r skills/claude/* ~/.claude/skills/
# Or install a specific skill
cp -r skills/claude/k8s-helm ~/.claude/skills/将技能同步到项目代理目录中
# List supported agent targets
rootcause sync-skills --list-agents
# Sync skills for one agent into project-local defaults
rootcause sync-skills --agent claude --project-dir .
# Example: GitHub Copilot project files
rootcause sync-skills --agent copilot --project-dir .
# UX helpers
rootcause sync-skills --all-agents --dry-run
rootcause sync-skills --agent claude --skill k8s-incident --skill rootcause-rca
rootcause sync-skills --list-skills使用的代理目录默认值 sync-skills:
| 代理 | 格式 | 项目目录 |
|---|---|---|
| 克劳德代码 | SKILL.md | .claude/skills/ |
| 光标 | .mdc | .cursor/skills/ |
| 食品法典委员会 | SKILL.md | .codex/skills/ |
| Gemini CLI | SKILL.md | .gemini/skills/ |
| OpenCode | SKILL.md | .opencode/skills/ |
| GitHub副本 | Markdown | .github/skills/ |
| 风帆冲浪 | Markdown | .windsurf/skills/ |
| 德文 | Markdown | .devin/skills/ |
| 助手 | SKILL.md | .aider/skills/ |
| 源代码图科迪 | SKILL.md | .cody/skills/ |
| 亚马逊Q | SKILL.md | .amazonq/skills/ |
可用技能(21)
目前包括20种技能。
| 类别 | 技能 |
|---|---|
| 事件响应 | k8s-incident, rootcause-rca |
| 核心和运营 | k8s-core, k8s-operations |
| 诊断和调试 | k8s-diagnostics, k8s-troubleshoot |
| 部署和交付 | k8s-deploy, k8s-helm, k8s-rollouts |
GitOps。 k8s-gitops | |
| 网络和网格 | k8s-networking, k8s-service-mesh, k8s-cilium |
| 安全和政策 | k8s-security, k8s-policy, k8s-gatekeeper, k8s-certs |
| 成本和规模 | k8s-cost, k8s-autoscaling |
| 存储 | k8s-storage |
| 浏览器自动化 | k8s-browser |
支持的代理包括Claude、Cursor、Codex、Gemini CLI、GitHub Copilot、Goose、Windsurf、Roo、Amp等。
技能包括一致的触发器、工作流程步骤、工具参考、故障排除说明和输出合同。
看 skills/README.md 获取完整文档和 skills/CATALOG.md 用于自动生成目录输出。
MCP资源
将Kubernetes数据作为可浏览资源访问:
| 资源URI | 描述 |
|---|---|
kubeconfig://contexts | 列出所有可用的kubeconfig上下文 |
kubeconfig://current-context | 获取当前活动上下文 |
namespace://current | 获取当前命名空间 |
namespace://list | 列出所有命名空间 |
cluster://info | 获取群集连接信息 |
cluster://nodes | 获取详细的节点信息 |
cluster://version | 获取Kubernetes版本 |
cluster://api-resources | 列出可用的API资源 |
manifest://deployments/{namespace}/{name} | 获取部署YAML |
manifest://services/{namespace}/{name} | 获取服务YAML |
manifest://pods/{namespace}/{name} | 获取pod YAML |
manifest://configmaps/{namespace}/{name} | 获取ConfigMap YAML |
manifest://secrets/{namespace}/{name} | 获取秘密YAML(数据掩码) |
manifest://ingresses/{namespace}/{name} | 获取ingress YAML |
MCP提示
Kubernetes和平台操作的预构建工作流提示:
| 提示 | 描述 |
|---|---|
troubleshoot_workload | Pod/部署的全面故障排除指南 |
deploy_application | 分步部署工作流程 |
security_audit | 安全扫描和RBAC分析工作流程 |
cost_optimization | 资源优化和成本分析工作流程 |
disaster_recovery | 备份和恢复计划工作流程 |
debug_networking | 服务和连接的网络调试 |
scale_application | HPA/VPA最佳实践扩展指南 |
upgrade_cluster | Kubernetes集群升级规划 |
sre_incident_commander | 基于严重性的SRE事件协调工作流程 |
istio_mesh_diagnose | 诊断Istio控制平面和流量策略问题 |
linkerd_mesh_diagnose | 诊断Linkerd控制平面、代理和策略运行状况 |
helm_release_recovery | 使用回滚策略恢复失败的Helm安装/升级 |
terraform_drift_triage | 调查地形漂移并制定安全计划 |
aws_eks_operational_check | EKS健康、节点组和IAM集成诊断 |
karpenter_capacity_debug | 调试Karpenter配置和调度问题 |
还支持自定义提示替代。解决顺序:
MCP_PROMPTS_FILEROOTCAUSE_PROMPTS_FILE[prompts].file在config.toml- 默认文件:
~/.rootcause/prompts.toml,~/.config/rootcause/prompts.toml,./rootcause-prompts.toml
自定义提示文件示例:
[[prompt]]
name = "security_audit"
title = "Custom Security Audit"
description = "Org-specific security policy checks"
template = "Run custom security audit for {{namespace|all namespaces}} with CIS and policy controls"
[[prompt.arguments]]
name = "namespace"
description = "Target namespace"
required = false自定义提示会用相同的内容覆盖内置程序 name.
核心能力
- 🤖 强大的工具目录 -Kubernetes、生态系统诊断、事件工作流、Helm、Terraform、服务网格和AWS上下文。
- 🎯 快速驱动的工作流程 -用于事故和可靠性分析的可重复runbook模板。
- 📊 MCP资源支持 -kubeconfig、命名空间、集群和清单访问的可读资源URI。
- 🔐 安全第一 -无损模式、策略执行、秘密屏蔽和突变飞行前检查。
- 🏥 高级诊断 -以根本原因为导向的输出,包括证据和建议的下一步行动。
- 🎡 强大的Helm+地形覆盖 -在一台服务器中进行图表生命周期和计划/调试分析。
- 🔧 CLI首次操作 -单个二进制文件、本地kubeconfig使用和工具集级控件。
入门指南
1) 运行根本原因
go run . --config config.toml2) 连接您的MCP客户端
使用stdio传输并将MCP客户端指向 rootcause 命令。
3) 尝试高信号提示
- “为命名空间付款生成事件包,并总结可能的根本原因。”
- “对部署支付api进行最佳实践检查,并列出关键发现。”
- “在执行此应用操作之前,运行安全的突变预检。”
快速开始🚀
- 运行服务器:
go run . --config config.example.toml- 使用现有的kubeconfig(默认)或指向一个:
- 用途
KUBECONFIG如果设置,否则~/.kube/config. - 覆盖
--kubeconfig和--context.
- 使用stdio连接您的MCP客户端。
RootCause是为当地发展而建立的。此版本中不需要API密钥。
默认情况下,工作流程是安全的:首先以只读方式进行诊断,然后在执行任何写入操作之前运行mutation preflight。
______________________________________________________________________
安装
自制:
brew install yindia/homebrew-yindia/rootcause卷曲安装:
curl -fsSL https://raw.githubusercontent.com/yindia/rootcause/refs/heads/main/install.sh | sh去安装:
go install .或者构建一个本地二进制文件:
go build -o rootcause .支持的操作系统:macOS、Linux和Windows。
Windows构建示例:
go build -o rootcause.exe .码头工人
# Build local image
docker build -t rootcause:local .
# Run stdio mode (default)
docker run --rm -it rootcause:local
# Run HTTP transport
docker run --rm -p 8000:8000 rootcause:local --transport http --host 0.0.0.0 --port 8000 --path /mcpCI映像发布是通过GitHub Actions在中配置的 .github/workflows/docker.yml 并推送到GHCR(ghcr.io//rootcause)on main 并释放标签。
______________________________________________________________________
用法
使用配置文件运行:
rootcause --config config.toml启用工具链的子集:
rootcause --toolsets k8s,istio启用只读模式:
rootcause --read-only将技能同步到特定于代理的项目目录中:
rootcause sync-skills --agent claude --project-dir .______________________________________________________________________
MCP客户端设置🌐
所有MCP客户端都使用相同的核心价值观:
command:rootcauseargs:通常--config /path/to/config.tomlenv:可选KUBECONFIG
通用模板
{
"mcpServers": {
"rootcause": {
"command": "rootcause",
"args": ["--config", "/Users/you/.config/rootcause/config.toml"],
"env": { "KUBECONFIG": "/Users/you/.kube/config" }
}
}
}所有支持的AI助手
克劳德桌面版
文件: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"rootcause": {
"command": "rootcause",
"args": ["--config", "/Users/you/.config/rootcause/config.toml"],
"env": { "KUBECONFIG": "/Users/you/.kube/config" }
}
}
}克劳德代码
文件: ~/.config/claude-code/mcp.json
{
"mcpServers": {
"rootcause": {
"command": "rootcause",
"args": ["--config", "/Users/you/.config/rootcause/config.toml"],
"env": { "KUBECONFIG": "/Users/you/.kube/config" }
}
}
}光标
文件: ~/.cursor/mcp.json
{
"mcpServers": {
"rootcause": {
"command": "rootcause",
"args": ["--config", "/Users/you/.config/rootcause/config.toml"],
"env": { "KUBECONFIG": "/Users/you/.kube/config" }
}
}
}GitHub副本(VS代码)
文件:VS代码 settings.json (启用MCP的构建)
{
"mcp.servers": {
"rootcause": {
"command": "rootcause",
"args": ["--config", "/Users/you/.config/rootcause/config.toml"],
"env": { "KUBECONFIG": "/Users/you/.kube/config" }
}
}
}OpenAI Codex/Codex CLI
格式可能因版本而异。等效的TOML条目:
[mcp.servers.rootcause]
command = "rootcause"
args = ["--config", "/Users/you/.config/rootcause/config.toml"]
env = { KUBECONFIG = "/Users/you/.kube/config" }鹅
文件: ~/.config/goose/config.yaml
extensions:
rootcause:
command: rootcause
args:
- --config
- /Users/you/.config/rootcause/config.tomlGemini CLI
文件: ~/.gemini/settings.json
{
"mcpServers": {
"rootcause": {
"command": "rootcause",
"args": ["--config", "/Users/you/.config/rootcause/config.toml"],
"env": { "KUBECONFIG": "/Users/you/.kube/config" }
}
}
}Roo代码/Kilo代码
文件: ~/.config/roo-code/mcp.json 或 ~/.config/kilo-code/mcp.json
{
"mcpServers": {
"rootcause": {
"command": "rootcause",
"args": ["--config", "/Users/you/.config/rootcause/config.toml"],
"env": { "KUBECONFIG": "/Users/you/.kube/config" }
}
}
}帆板运动
文件: ~/.config/windsurf/mcp.json
{
"mcpServers": {
"rootcause": {
"command": "rootcause",
"args": ["--config", "/Users/you/.config/rootcause/config.toml"],
"env": { "KUBECONFIG": "/Users/you/.kube/config" }
}
}
}其他MCP兼容客户端
使用通用模板并将密钥映射到客户端的模式。
MCP客户端兼容性
与MCP兼容的AI助手无缝协作:
| 客户端 | 状态 | 客户端 | 状态 |
|---|---|---|---|
| 克劳德桌面 | ✅ 本地 | 克劳德代码 | ✅ 原住民 |
| 光标 | ✅ 原生 | 风帆 | ✅ 原住民 |
| GitHub副本 | ✅ 原生 | OpenAI Codex | ✅ 原住民 |
| Gemini CLI | ✅ 原住民 | 鹅 | ✅ 原住民 |
| Roo代码 | ✅ 本地 | 基洛代码 | ✅ 原住民 |
| amp | ✅ 兼容 | 带来 | ✅ 兼容的 |
| OpenCode | ✅ 兼容 | Kiro命令行界面 | ✅ 兼容 |
| 反重力 | ✅ 兼容 | Clawdbot | ✅ 兼容 |
| Droid(工厂) | ✅ 兼容 | 任何MCP客户端 | ✅ 兼容 |
验证设置(所有提供程序)
- 编辑MCP配置后重新启动客户端。
- 问:“列出RootCause工具”。
- 问:“跑
k8s.argocd_detect". - 如果缺少工具,请进行验证
rootcause路径,--toolsets,以及KUBECONFIG.
建议的第一个提示(RootCause上下文)
- “运行命名空间付款的事件包并总结根本原因。”
- “在推出之前检查部署支付api重启安全性。”
- “诊断命名空间ArgoCD中的ArgoCD运行状况。”
- “在突变之前,先进行补丁操作。”
MCP客户端示例(stdio)
rootcause --config config.toml指示MCP客户端运行上述命令并使用stdio传输。
______________________________________________________________________
操作员流程示例🧪
事件RCA流程
- “为命名空间付款创建事件包”
- “根据最新事件包生成RCA”
- “出口验尸稿”
此流程背后的工具:
rootcause.incident_bundlerootcause.rca_generaterootcause.postmortem_export
安全的部署流程
- “运行部署支付api的重启安全检查”
- “运行支付api的最佳实践检查”
- “运行突变预检以重新启动卷展”
此流程背后的工具:
k8s.restart_safety_checkk8s.best_practicek8s.safe_mutation_preflight
生态系统诊断流程
- “检测此群集中的通量”
- “诊断命名空间通量系统中的通量协调健康状况”
- “总结首要问题和下一步行动”
此流程背后的工具:
k8s.flux_detectk8s.diagnose_flux
______________________________________________________________________
工具链
默认启用:
| 工具链 | 主要目的 | 典型要求 |
|---|---|---|
k8s | 核心Kubernetes操作和诊断 | Kubernetesneneneba API访问 |
linkerd | Linkerd健康和策略诊断 | Linkerd控制平面 |
karpenter | 节点配置和扩展诊断 | Karpenter控制器 |
istio | 服务网格配置和代理诊断 | Istio控制平面 |
helm | 图表注册表/发布工作流和差异 | Helm 3和集群访问 |
aws | EKS/EC2/VPC/IAM/ECR/KMS/STS诊断 | AWS凭据 |
terraform | 注册表和计划影响分析 | Terraform工作流 |
rootcause | 事件包、RCA、时间线、事后导出 | Kubernetes访问 |
browser (可选) | 通过代理浏览器实现浏览器自动化 | MCP_BROWSER_ENABLED=true +代理浏览器安装 |
当控制平面不存在时,可选工具链返回“未检测到”。可以通过插件SDK注册其他工具链;看见 PLUGINS.md.
仅启用您需要的功能:
rootcause --toolsets k8s,helm,rootcause可选:浏览器自动化(26个工具)
通过以下方式自动化基于web的Kubernetes操作 代理浏览器 整合。
快速设置:
# Install agent-browser
npm install -g agent-browser
agent-browser install
# Enable browser tools
export MCP_BROWSER_ENABLED=true
rootcause您可以做什么:
- 🌐 通过Ingress URL测试部署的应用程序
- 📸 屏幕截图Grafana、ArgoCD或任何K8s仪表板
- ☁️ 自动化云控制台操作(EKS、GKE、AKS)
- 🏥 健康检查web应用程序
- 📄 将监控仪表板导出为PDF
- 🔐 使用持久会话测试身份验证流
26种可用工具: browser_open, browser_screenshot, browser_click, browser_fill, browser_test_ingress, browser_screenshot_grafana, browser_health_check还有19个。
完整列表: browser_open, browser_screenshot, browser_click, browser_fill, browser_test_ingress, browser_screenshot_grafana, browser_health_check, browser_snapshot, browser_get_text, browser_get_html, browser_evaluate, browser_pdf, browser_wait_for, browser_wait_for_url, browser_press, browser_select, browser_check, browser_uncheck, browser_hover, browser_type, browser_upload, browser_drag, browser_new_tab, browser_switch_tab, browser_close_tab, browser_close.
高级功能:
- 云提供商:浏览器基础、浏览器使用
- 持久浏览器配置文件
- 远程CDP连接
- 会话管理
______________________________________________________________________
工具
常见调试流程的提示模板位于 prompts/prompt.md.
核心Kubernetes(k8s.* +kubectl样式别名)
- CRUD+发现:
k8s.get,k8s.list,k8s.describe,k8s.create,k8s.apply,k8s.patch,k8s.delete,k8s.api_resources,k8s.crds - 操作+可观察性:
k8s.logs,k8s.events,k8s.context,k8s.explain_resource,k8s.ping,k8s.events_timeline - 工作量操作和安全:
k8s.scale,k8s.rollout,k8s.restart_safety_check,k8s.best_practice,k8s.safe_mutation_preflight - 生态系统检测:
k8s.argocd_detect,k8s.flux_detect,k8s.cert_manager_detect,k8s.kyverno_detect,k8s.gatekeeper_detect,k8s.cilium_detect - 生态系统诊断:
k8s.diagnose_argocd,k8s.diagnose_flux,k8s.diagnose_cert_manager,k8s.diagnose_kyverno,k8s.diagnose_gatekeeper,k8s.diagnose_cilium - 调试:
k8s.overview,k8s.crashloop_debug,k8s.scheduling_debug,k8s.hpa_debug,k8s.vpa_debug,k8s.storage_debug,k8s.config_debug,k8s.permission_debug,k8s.network_debug,k8s.private_link_debug,k8s.debug_flow - 维护+拓扑:
k8s.cleanup_pods,k8s.node_management,k8s.graph,k8s.resource_usage
Linkerd(linkerd.*)
linkerd.health,linkerd.proxy_status,linkerd.identity_issues,linkerd.policy_debug,linkerd.cr_status,linkerd.virtualservice_status,linkerd.destinationrule_status,linkerd.gateway_status,linkerd.httproute_status
Istio(istio.*)
istio.health,istio.proxy_status,istio.config_summary,istio.service_mesh_hosts,istio.discover_namespaces,istio.pods_by_service,istio.external_dependency_checkistio.proxy_clusters,istio.proxy_listeners,istio.proxy_routes,istio.proxy_endpoints,istio.proxy_bootstrap,istio.proxy_config_dumpistio.cr_status,istio.virtualservice_status,istio.destinationrule_status,istio.gateway_status,istio.httproute_status
卡彭特(karpenter.*)
karpenter.status,karpenter.node_provisioning_debug,karpenter.nodepool_debug,karpenter.nodeclass_debug,karpenter.interruption_debug
赫尔姆(helm.*)
- 回购/注册:
helm.repo_add,helm.repo_list,helm.repo_update,helm.list_charts,helm.get_chart,helm.search_charts - 发布操作:
helm.list,helm.status,helm.diff_release,helm.rollback_advisor,helm.install,helm.upgrade,helm.uninstall,helm.template_apply,helm.template_uninstall
AWS IAM(aws.iam.*)
aws.iam.list_roles,aws.iam.get_role,aws.iam.get_instance_profile,aws.iam.update_role,aws.iam.delete_roleaws.iam.list_policies,aws.iam.get_policy,aws.iam.update_policy,aws.iam.delete_policy
AWS VPC(aws.vpc.*)
aws.vpc.list_vpcs,aws.vpc.get_vpc,aws.vpc.list_subnets,aws.vpc.get_subnet,aws.vpc.list_route_tables,aws.vpc.get_route_tableaws.vpc.list_nat_gateways,aws.vpc.get_nat_gateway,aws.vpc.list_security_groups,aws.vpc.get_security_groupaws.vpc.list_network_acls,aws.vpc.get_network_acl,aws.vpc.list_internet_gateways,aws.vpc.get_internet_gatewayaws.vpc.list_vpc_endpoints,aws.vpc.get_vpc_endpoint,aws.vpc.list_network_interfaces,aws.vpc.get_network_interfaceaws.vpc.list_resolver_endpoints,aws.vpc.get_resolver_endpoint,aws.vpc.list_resolver_rules,aws.vpc.get_resolver_rule
AWS EC2(aws.ec2.*)
aws.ec2.list_instances,aws.ec2.get_instance,aws.ec2.list_auto_scaling_groups,aws.ec2.get_auto_scaling_group,aws.ec2.list_load_balancers,aws.ec2.get_load_balanceraws.ec2.list_target_groups,aws.ec2.get_target_group,aws.ec2.list_listeners,aws.ec2.get_listener,aws.ec2.get_target_healthaws.ec2.list_listener_rules,aws.ec2.get_listener_rule,aws.ec2.list_auto_scaling_policies,aws.ec2.get_auto_scaling_policy,aws.ec2.list_scaling_activities,aws.ec2.get_scaling_activityaws.ec2.list_launch_templates,aws.ec2.get_launch_template,aws.ec2.list_launch_configurations,aws.ec2.get_launch_configurationaws.ec2.get_instance_iam,aws.ec2.get_security_group_rules,aws.ec2.list_spot_instance_requests,aws.ec2.get_spot_instance_requestaws.ec2.list_capacity_reservations,aws.ec2.get_capacity_reservation,aws.ec2.list_volumes,aws.ec2.get_volume,aws.ec2.list_snapshots,aws.ec2.get_snapshot,aws.ec2.list_volume_attachmentsaws.ec2.list_placement_groups,aws.ec2.get_placement_group,aws.ec2.list_instance_status,aws.ec2.get_instance_status
AWS-EKSaws.eks.*)
aws.eks.list_clusters,aws.eks.get_cluster,aws.eks.list_nodegroups,aws.eks.get_nodegroup,aws.eks.list_addons,aws.eks.get_addonaws.eks.list_fargate_profiles,aws.eks.get_fargate_profile,aws.eks.list_identity_provider_configs,aws.eks.get_identity_provider_configaws.eks.list_updates,aws.eks.get_update,aws.eks.list_nodes,aws.eks.debug
AWS ECR(aws.ecr.*)
aws.ecr.list_repositories,aws.ecr.describe_repository,aws.ecr.list_images,aws.ecr.describe_images,aws.ecr.describe_registry,aws.ecr.get_authorization_token
AWS-STS(aws.sts.*)
aws.sts.get_caller_identity,aws.sts.assume_role
AWS公里(aws.kms.*)
aws.kms.list_keys,aws.kms.list_aliases,aws.kms.describe_key,aws.kms.get_key_policy
地形(terraform.*)
terraform.debug_planterraform.list_modules,terraform.get_module,terraform.list_module_versions,terraform.search_modulesterraform.list_providers,terraform.get_provider,terraform.list_provider_versions,terraform.get_provider_package,terraform.search_providersterraform.list_resources,terraform.get_resource,terraform.search_resourcesterraform.list_data_sources,terraform.get_data_source,terraform.search_data_sources
根本原因(rootcause.*)
rootcause.incident_bundle,rootcause.change_timeline,rootcause.rca_generate,rootcause.remediation_playbook,rootcause.postmortem_export,rootcause.capabilities
浏览器(browser_*,可选)
browser_open,browser_screenshot,browser_click,browser_fill,browser_test_ingress,browser_screenshot_grafana,browser_health_checkbrowser_snapshot,browser_get_text,browser_get_html,browser_evaluate,browser_pdf,browser_wait_for,browser_wait_for_urlbrowser_press,browser_select,browser_check,browser_uncheck,browser_hover,browser_type,browser_upload,browser_dragbrowser_new_tab,browser_switch_tab,browser_close_tab,browser_close
Kubectl风格别名
kubectl_get,kubectl_list,kubectl_describe,kubectl_create,kubectl_apply,kubectl_delete,kubectl_logs,kubectl_patch,kubectl_scale,kubectl_rollout,kubectl_context,kubectl_generic,kubectl_top,explain_resource,list_api_resources,ping
______________________________________________________________________
安全模式
--read-only:从发现中删除appl/patch/delete/exec工具。--disable-destructive:删除删除和有风险的写入工具,除非已分配(创建/缩放/卷展仍然可用)。- 修改工具记录在本自述文件中
Complete Feature Set和Safety Modes.
默认安全策略:
- 如果用户没有明确请求变异操作,则将该请求视为只读诊断。
- 在分析过程中不要隐式运行变异工具。
- 对于调查优先的工作流程,最好在中运行RootCause
--read-only模式。 - K8s变异工具
create/apply/patch/delete/scale/rollout/cleanup_pods/node_management运行自动k8s.safe_mutation_preflight执行前检查。
安全工作流程建议:
- 运行只读诊断(
k8s.*_debug,k8s.*_detect,k8s.diagnose_*,rootcause.incident_bundle) - 跑
k8s.safe_mutation_preflight用于预期突变 - 仅在飞行前通过后执行突变
confirm=true
______________________________________________________________________
配置和标志
rootcause --config config.example.toml --toolsets k8s,linkerd,istio,karpenter,helm,aws旗帜
--kubeconfig--context--toolsets(逗号分隔)--config--read-only--disable-destructive--transport(stdio|http|sse)--host(适用于HTTP/SSE)--port(适用于HTTP/SSE)--path(适用于HTTP/SSE)--log-level
如果 --config 未设置,RootCause将使用 ROOTCAUSE_CONFIG 环境变量(如果存在)。
______________________________________________________________________
AWS凭据
AWS IAM工具使用标准的AWS凭据链和区域解析。集 AWS_REGION 或 AWS_DEFAULT_REGION (默认为 us-east-1),可选地选择一个配置文件 AWS_PROFILE 或 AWS_DEFAULT_PROFILE,并使用任何正常的凭据源(环境变量、共享配置/凭据文件、SSO或实例元数据)。
______________________________________________________________________
Kubeconfig分辨率
如果 --kubeconfig 未设置,RootCause遵循标准的Kubernetes加载规则:它使用 KUBECONFIG 如果存在,否则默认为 ~/.kube/config.
身份验证和授权仅在此版本中使用您的kubeconfig标识。
______________________________________________________________________
故障排除
未找到kubeconfig
- 验证
KUBECONFIG或~/.kube/config - 显式覆盖
--kubeconfig /path/to/config
MCP客户端中不可见的工具
- 确认服务器正在运行,客户端指向
rootcause - 使用以下工具检查所选工具集
--toolsets - 如果使用
--read-only,变异工具将被设计隐藏
未检测到生态系统工具返回
- 这通常意味着生态系统控制平面未安装在集群中
- 跑
k8s._detect首先,然后k8s.diagnose_
飞行前阻断突变
- 跑
k8s.safe_mutation_preflight明确并检查未通过的检查 - 修复策略/命名空间/资源问题,然后重试
confirm=true
______________________________________________________________________
建筑一瞥
AI Client
-> MCP stdio server
-> Tool registry (k8s/linkerd/istio/karpenter/helm/aws/terraform/rootcause)
-> Shared internals (kube clients, evidence, policy, rendering, redaction)
-> Target APIs (Kubernetes + cloud providers)为什么这很重要:
- 跨工具集的一致证据格式
- 可重复使用的诊断,而不是重复的逻辑
- 通过集中策略和飞行前检查实现更安全的操作
______________________________________________________________________
架构概述
RootCause围绕共享的Kubernetes管道和重用它的工具集进行组织。
- 共享客户端(类型化、动态、发现、RESTMapper)在
internal/kube并注入所有工具组。 - 常见的安全措施
internal/policy(命名空间与集群实施和工具分配表)以及internal/redact(标记/秘密编辑)。 internal/evidence收集所有工具集使用的事件、所有者链、端点和pod状态摘要。internal/render强制执行一致的分析输出格式(根本原因、证据、下一步检查、检查的资源),并提供共享的描述助手。- 工具集在下面
toolsets/并注册命名空间工具(k8s.*,linkerd.*,karpenter.*,istio.*,helm.*,aws.iam.*,aws.vpc.*)通过共享的MCP注册表。
MCP服务器使用MCP Go SDK在stdio上运行,专为本地kubeconfig使用而设计。可选的集群内部署故意超出了阶段1的范围。
配置重新加载
发送SIGHUP以重新加载配置并重建工具注册表。 在Windows上,SIGHUP不受支持;重新启动进程以重新加载配置。
______________________________________________________________________
MCP传输
RootCause支持MCP stdio (默认), http (流式HTTP),以及 sse.
示例:
# stdio
rootcause --config config.toml --transport stdio
# HTTP (streamable)
rootcause --config config.toml --transport http --host 127.0.0.1 --port 8000 --path /mcp
# SSE
rootcause --config config.toml --transport sse --host 127.0.0.1 --port 8000 --path /mcp今天的设计重点:
- 人工智能辅助SRE工作流程的一流本地可靠性
- 用于事件审查的确定性、可审计的输出
- 安全的变异门,而不是默认的宽写行为
______________________________________________________________________
未来云就绪
AWS IAM支持现已可用。该工具集系统旨在添加更深层次的云集成(EKS/EC2/VPC/GCP/Azure),而无需更改核心MCP或共享Kubernetes库。
______________________________________________________________________
贡献指南🤝
我们欢迎代码、文档、测试和操作反馈。
贡献方式
- 🐛 报告具有可重复步骤和预期行为的错误
- 💡 提出具有具体操作员场景的功能
- 🧪 改进安全、政策和生态系统诊断的测试
- 🧩 通过共享SDK和内部库添加或改进工具集
贡献者工作流程
- 分叉并创建特征分支
- 通过测试实施重点变更
- 运行本地验证:
go test ./...- 更新文档(
README.md,prompts/prompt.md)如果行为改变 - 使用问题陈述、方法和验证说明打开PR
开发参考
- 出资规则:
CONTRIBUTING.md - 插件SDK和外部工具集:
PLUGINS.md - 配置示例:
config.toml - MCP评估线束:
eval/README.md
PR质量检查表
- \[\]行为符合用户/操作员的期望
- \[\]保留安全模型(
read-only破坏性浇口、飞行前) - \[\]为新行为添加/更新了测试
- \[\]检查工具/文档的一致性(
README.md)
