SuperAPI AI 工具集

heyeddi-local-first

部署与运维

查看项目

更新于 10-24 15:18

技能介绍

本地优先(Local first)

对加载 HeyEddi 技能的每个代理始终开启(Cursor、Claude、Codex、Cloud Run 或任何其他宿主)。在仓库中编辑代码和 Terraform。检查计划。不要改动线上系统。

这与 verify_setup --check 属于同一类门禁。脚本在遇到线上变更时以退出码 1 结束。不要运行该命令。

硬门禁

在任何 Terraform、OpenTofu、Pulumi、gcloud、GAM、Firebase、kubectl、Helm、aws、gsutil、bq 或 Google API 写入之前,运行:

python .agents/skills/heyeddi-local-first/scripts/classify_command.py --check --command "<the exact command>"

从本 hub 出发时,脚本路径为 skills/heyeddi-local-first/scripts/classify_command.py。

退出码与含义

0 且 "action": "allow"——运行它。仅限读取和本地配置。

0 且 "action": "plan"——运行它。然后向用户发出警告,说明该计划将创建、更改或销毁什么。停止。

1 且 "blocked": true——不要运行它。改为编辑文件。

计划命令是指 terraform plan、tofu plan、pulumi preview 或 ansible-playbook --check。

流程

  1. 在工作树中更改 Terraform、配置或应用代码。

  2. 对计划命令运行检查器。退出码 0 且 action 为 plan 表示可以运行该计划。

  3. 向用户发出警告。引用该计划将新增、更改或销毁的资源地址。

  4. 提交并审查该 diff。线上 apply 保留在项目的部署流水线(HeyEddi CI 使用 Cloud Build terraform-release)中,或由人类在终端中运行。

哪些情况会以退出码 1 结束

  • terraform / tofu 的 apply、destroy、import、refresh、state rm、workspace delete
  • gcloud 写入(delete、deploy、create、submit、IAM 变更)。list、describe、get、config 和 auth 保持允许。
  • GAM 写入,包括日历账户变更。gam info 和 gam print 保持允许。
  • firebase deploy、kubectl 写入、helm upgrade、aws 写入、gsutil rm、未使用 --dry_run 的 bq 查询
  • 对 Google API 的 curl -X POST、PUT、PATCH 或 DELETE
  • 在 bash -c、python -c、$(...)、或本地 .sh / .py 脚本中出现的相同命令
  • firebase emulators:start 属于本地操作,保持允许。

工具

脚本与用途:

  • classify_command.py --check:遇到线上变更时退出码 1。plan 会打印警告并以退出码 0 结束。

相关内容

  • @heyeddi always-on list
  • @engineering-excellence 用于代码更改门禁
  • HeyEddi CI 的 cloudbuild.yaml 中 terraform-release 步骤是经过审查的 apply 路径