korinfra/korinfra

GitHub: korinfra/korinfra

一款 AI 驱动的 AWS FinOps CLI 工具,将实时成本分析、安全扫描和 Terraform 自动修复整合在一条命令中。

Stars: 1 | Forks: 0

KorInfra **你的 AWS 账单存在浪费。KorInfra 几分钟内即可找出。** [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/c04a3696e9023842.svg)](https://github.com/korinfra/korinfra/actions/workflows/ci.yml) [![npm version](https://img.shields.io/npm/v/korinfra.svg?color=cb3837)](https://www.npmjs.com/package/korinfra) [![npm downloads](https://img.shields.io/npm/dm/korinfra.svg)](https://www.npmjs.com/package/korinfra) [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE) [![Node](https://img.shields.io/badge/node-%3E%3D22-brightgreen)](https://nodejs.org)
``` npm install -g korinfra korinfra # interactive TUI — menu-driven, keyboard-driven korinfra init # first-time setup: AWS profile + AI key (60 seconds) korinfra scan # full cost + security scan ``` ## 功能特性 - **无需 AI 密钥。** 66 条成本规则和 46 条安全规则完全在本地运行 — 无 API 调用,花费 $0。添加 Claude API 密钥即可解锁自然语言解释、自由格式的 `/` 聊天和 Terraform 补丁生成。 - **感知 Terraform。** 4 轮匹配器(ARN → ID → 名称标签 → 模糊匹配)将每个实时 AWS 资源链接到其 `.tf` 定义。`korinfra fix` 会编辑正确的文件并开启一个 GitHub PR — 无需手动查找。 - **数据保留在本地。** 所有内容均存储在本地 SQLite 数据库中。唯一向外发送的数据是经过脱敏处理的发现结果,发送至您的 AI 提供商。凭证、ARN、IP 和电子邮件地址会被自动清除。 - **兼容 CI/CD。** `korinfra scan --json --fail-on critical` 遇到严重发现时将以退出码 1 退出。在 CI 中自动检测 — 在无头模式下零 AI 成本。 - **MCP server。** `korinfra mcp` 在 Claude Code 或 Cursor 中注册一个服务器。询问您的编辑器*"哪些 EC2 实例处于空闲状态?"* — KorInfra 将运行实时分析并内联返回结果。 ## 可检测内容 涵盖 EC2、RDS、EBS、S3、Lambda、ECS、ELB、ElastiCache、DynamoDB 和 NAT Gateway 的 **66 条成本规则** — 以及针对您的 Terraform 配置的 **46 条安全规则**。 | 规则 | 发现内容 | 通常可节省 | |---|---|---| | EC2-001 | CPU 利用率连续 7 天以上低于 5% 的实例 | $50–400/月 | | EC2-003 | m4/c4/r4 系列 — 更快的当前一代实例更便宜 | $20–200/月 | | RDS-007 | 开发/预发布环境开启了 Multi-AZ — 禁用可减半成本 | $100–3000/月 | | EBS-001 | 仍在计费的未挂载卷 | $5–50/月(每个) | | EBS-003 | gp2 → gp3 迁移 — 便宜 20%,性能相同 | $10–100/月 | | LAM-001 | 零调用的 Lambda | < $5/月 | | S3-004 | 存储桶未启用服务端加密(SSE-S3 是免费的) | — | | RDS-005 | 可公开访问的 RDS 实例 | — | 此外:成本异常检测(z-score)和 30 天趋势预测。[完整规则列表 →](docs/rules.md) ## 命令 | 命令 | 作用 | |---|---| | *(无参数)* | 交互式 TUI — 菜单驱动,键盘操作 | | `scan` | 完整的成本 + 安全扫描 | | `fix` | AI 读取 Terraform,生成补丁,开启 GitHub PR *(需要 AI)* | | `security` | 46 条 Terraform 安全规则 — `--dir ` | | `costs` | Cost Explorer 明细 — `--days N`,`--group-by service\|region\|tag` | | `recommend` | 查看已保存的建议 — `--refresh` 重新运行分析 | | `report` | 导出为 JSON、CSV 或包含内联 SVG 图表的 HTML | | `mcp` | 将 MCP server 安装到 Claude Code 或 Cursor |
所有命令 | 命令 | 作用 | |---|---| | `resources` | 浏览和过滤所有已扫描的资源 | | `changes` | 审计最近的 AWS API 活动 | | `history` | 浏览过往扫描,并对比差异 | | `tags` | 审计必填标签 — `suggest` 使用 AI | | `pricing` | 检查或刷新本地 AWS 价格缓存 | | `init` | 设置向导 — AWS 配置文件、AI 提供商、API 密钥 | | `doctor` | 验证凭证、配置、存储和 AI 提供商 | | `config` | 在运行时查看或编辑配置值 | | `serve` | 启动 MCP server — `stdio`(默认)或 `--http --port N` |
在主菜单中按 `/` 即可向您的 AI 助手询问任何有关基础设施的问题。 ## 应用修复 运行 `korinfra fix`,选择一个建议,AI agent 将: 1. 读取您的 Terraform 文件以定位资源 2. 生成一个最小化、有针对性的补丁 3. 运行 `terraform validate` 以验证更改 4. 在应用之前准确展示将要更改的内容 5. 可选创建一个 GitHub PR 在写入任何内容之前,每项更改都会展示以供审查。不会发起任何 AWS API 调用。回滚方式就是还原文件。 ## 交互式 TUI 运行不带参数的 `korinfra` 以启动完整的交互式菜单 — 使用 Ink 6 + React 19 构建,与 Claude Code 和 Gemini CLI 采用相同的技术栈。 | 按键 | 动作 | |---|---| | | 导航 | | Enter | 深入查看建议 | | Esc | 返回 | | / | 自由格式的 AI 提问 | | f | 生成 Terraform 修复 | | p | 导出报告 | 扫描完成后,后续面板将保持打开状态,以便您在同一会话中提问。 ## CI/CD ``` korinfra scan --json | jq '.summary' korinfra security --json --dir ./terraform --fail-on critical # exits 1 on critical CI=true korinfra scan --json > scan.json ``` [完整参考 + GitHub Actions 示例 →](docs/usage.md) ## KorInfra 与其他替代方案对比 | | KorInfra | AWS Trusted Advisor | Infracost | Checkov | |---|---|---|---|---| | AI 推理 — 不仅是规则 | ✓ | — | — | — | | 成本优化 — 实时基础设施 | 66 条规则 | 有限 | 仅限定价 | — | | 安全扫描 | 46 条规则 | ✓ | — | 1000+ 条规则 | | 成本异常检测 | ✓ | — | — | — | | 面向 AI 编辑器的 MCP server | ✓ | — | — | — | | 自然语言问答 | ✓ | — | — | — | | 数据保留在本地 | ✓ | — | 部分 | ✓ | | 生成 Terraform 修复 + PRs | ✓ | — | — | — | ## 参考
AWS 权限 — 最小只读 IAM 策略 ``` { "Version": "2012-10-17", "Statement": [ { "Sid": "korinfraReadOnly", "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeVolumes", "ec2:DescribeSnapshots", "ec2:DescribeAddresses", "ec2:DescribeNatGateways", "rds:DescribeDBInstances", "s3:ListAllMyBuckets", "s3:GetBucketLocation", "s3:GetBucketVersioning", "s3:GetBucketEncryption", "s3:GetBucketLifecycleConfiguration", "s3:ListBucketIntelligentTieringConfigurations", "s3:GetBucketTagging", "lambda:ListFunctions", "tag:GetResources", "ecs:ListClusters", "ecs:ListServices", "ecs:DescribeServices", "ecs:DescribeClusters", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeTargetHealth", "elasticloadbalancing:DescribeTags", "elasticache:DescribeCacheClusters", "elasticache:ListTagsForResource", "dynamodb:ListTables", "dynamodb:DescribeTable", "dynamodb:ListTagsOfResource", "cloudwatch:GetMetricStatistics", "cloudwatch:GetMetricData", "ce:GetCostAndUsage", "sts:GetCallerIdentity", "pricing:GetProducts" ], "Resource": "*" } ] } ``` KorInfra 绝不会修改 AWS 资源。`fix` 仅编辑本地 Terraform 文件。
配置 `korinfra init` 会自动创建配置。如需自定义: ``` # .korinfra/config.yaml aws: default_profile: production default_region: us-east-1 ai: provider: claude # "none" for rules-only mode model: claude-haiku-4-5-20251001 # or claude-sonnet-4-6 for deeper analysis scan: lookback_days: 30 idle_cpu_threshold: 5 required_tags: [Environment, Team, Project] ``` [完整参考 →](docs/configuration.md)
隐私与脱敏 | 级别 | 脱敏内容 | |---|---| | `minimal` | AWS 访问密钥、API 密钥、GitHub 令牌、JWTs、PEM 密钥 | | **`moderate`**(默认) | + ARN 账户 ID、公有 IP、电子邮件地址 | | `strict` | + 私有 IP、外部域名 | 无遥测数据。仅限本地 SQLite。MCP HTTP server 绑定至 localhost。
架构 依次分为三层: 1. **收集** — AWS SDK v3 并行拉取 9 个服务的实时状态。CloudWatch 补充利用率指标;Cost Explorer 补充支出数据。 2. **分析** — 66 条成本 + 46 条安全规则在本地运行 — 无 AI,无网络。4 轮 Terraform 匹配器将资源与 `.tf` 文件进行比对。Z-score 异常检测标记支出激增。 3. **输出** — 数据经脱敏处理后,由 AI agent 生成摘要并生成修复。输出至 TUI、文件导出(JSON/CSV/HTML)或 MCP 客户端。 TypeScript 6 · Ink 6 + React 19 · Claude Agent SDK · AWS SDK v3 · better-sqlite3 · Zod 4 [完整架构 →](docs/architecture.md)
## 常见问题解答 **我需要 AI 密钥吗?** 不需要 — 所有 112 条规则均在本地运行。添加密钥可解锁 `/` 聊天、解释说明和 `fix` 功能。 **它会修改 AWS 资源吗?** 绝不会。对 AWS 为只读操作。`fix` 仅编辑本地 Terraform 文件。 **我需要 Terraform 吗?** 不需要。当发现 `.tf` 文件时,Terraform 功能会自动激活。 **我的数据会被发送给 AI 吗?** 只有经过脱敏处理的发现结果 — 账户 ID、ARN、IP 和电子邮件会事先被清除。 **支持多个 AWS 账户吗?** 暂不支持。v0.1.0 中为单账户;多账户支持已在计划中。 **运行成本是多少?** 约 $0.02/次扫描(Cost Explorer API)+ 约 $0.01 AI。仅规则模式:$0.00。[费用明细 →](docs/running-costs.md) ## 许可证 Apache 2.0 — 详见 [LICENSE](LICENSE)。
标签:AI助手, AWS, DevSecOps, DPI, EC2, ECS, FinOps, GNU通用公共许可证, IaC, MCP, MCP服务器, MITM代理, Node.js, SQLite, Terraform, 上游代理, 云计算, 云账单管理, 云资源管理, 亚马逊云科技, 交互式TUI, 开源, 成本优化, 成本控制, 无服务器, 无线安全, 模块化设计, 自动化修复, 自动化攻击, 规则引擎, 资源扫描