korinfra/korinfra
GitHub: korinfra/korinfra
一款 AI 驱动的 AWS FinOps CLI 工具,将实时成本分析、安全扫描和 Terraform 自动修复整合在一条命令中。
Stars: 1 | Forks: 0
**你的 AWS 账单存在浪费。KorInfra 几分钟内即可找出。**
[](https://github.com/korinfra/korinfra/actions/workflows/ci.yml)
[](https://www.npmjs.com/package/korinfra)
[](https://www.npmjs.com/package/korinfra)
[](LICENSE)
[](https://nodejs.org)
所有命令
| 命令 | 作用 | |---|---| | `resources` | 浏览和过滤所有已扫描的资源 | | `changes` | 审计最近的 AWS API 活动 | | `history` | 浏览过往扫描,并对比差异 | | `tags` | 审计必填标签 — `suggest` 使用 AI | | `pricing` | 检查或刷新本地 AWS 价格缓存 | | `init` | 设置向导 — AWS 配置文件、AI 提供商、API 密钥 | | `doctor` | 验证凭证、配置、存储和 AI 提供商 | | `config` | 在运行时查看或编辑配置值 | | `serve` | 启动 MCP server — `stdio`(默认)或 `--http --port N` |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助手, AWS, DevSecOps, DPI, EC2, ECS, FinOps, GNU通用公共许可证, IaC, MCP, MCP服务器, MITM代理, Node.js, SQLite, Terraform, 上游代理, 云计算, 云账单管理, 云资源管理, 亚马逊云科技, 交互式TUI, 开源, 成本优化, 成本控制, 无服务器, 无线安全, 模块化设计, 自动化修复, 自动化攻击, 规则引擎, 资源扫描