关于 tilt
tilt 是一项帮助开发者检查和操作 Tilt 部署资源的技能,重点在于先识别错误,并区分构建状态与容器健康状态。
主要功能
- 01优先筛查资源错误
- 02查看待处理与进行中状态
- 03检查 Docker Compose 健康状态
- 04查看日志并触发更新
- 05启动、停止和等待资源就绪
适用场景
- 01定位 Tilt 资源的构建错误
- 02排查 Docker Compose 健康检查失败
- 03监控部署并查看资源状态
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alleneubank/ claude-code --skill tilt安装后在 Claude Code 中输入/tilt确认已加载。
附带文件CLI_REFERENCE.mdTILTFILE_API.md
详细介绍
Tilt
首先:检查错误
在调查问题或验证部署之前,先检查资源健康状态。首先单独检查 错误,再检查待处理/进行中状态——否则,真正的故障会淹没在 20 多行待处理项中:
# 1. Errors only — surface the buildHistory[0].error so you see WHY, not just THAT
tilt get uiresources -o json | jq -r '.items[] | select(.status.runtimeStatus == "error" or .status.updateStatus == "error") | "\(.metadata.name): runtime=\(.status.runtimeStatus) update=\(.status.updateStatus)\n reason: \((.status.buildHistory[0].error // "(no buildHistory error; check tilt logs)") | gsub("\n"; " ") | .[0:240])"'
# 2. In-progress and pending — informational; an in-progress build may flip to error any moment
tilt get uiresources -o json | jq -r '.items[] | select(.status.updateStatus == "in_progress" or .status.updateStatus == "pending" or .status.runtimeStatus == "pending") | "\(.metadata.name): runtime=\(.status.runtimeStatus) update=\(.status.updateStatus)"'
# 3. Docker-compose container health — MISSED by the error filter above.
# An `Up (unhealthy)` compose container keeps runtimeStatus=ok/update=ok, so
# queries 1-2 never flag it; the red UI badge comes from healthStatus here.
tilt get uiresources -o json | jq -r '.items[] | select(.status.composeResourceInfo.healthStatus == "unhealthy") | "\(.metadata.name): compose healthStatus=unhealthy (HEALTHCHECK failing — service may still be up)"'
# 4. Quick status overview
tilt get uiresources -o json | jq '[.items[].status.updateStatus] | group_by(.) | map({status: .[0], count: length})'
如果检查时某项资源处于 in_progress 状态,请重新轮询,然后再判断它是否健康——它可能直接转为 error,并在 buildHistory[0].error 中填入错误信息。updateStatus 字段只反映当前构建尝试;即使 updateStatus 为 none 或 not_applicable,最近一次错误也始终位于 buildHistory[0].error 中。
Docker-compose 资源存在盲点。 它们的 runtimeStatus/updateStatus 只反映构建/启动状态,不反映容器的 docker HEALTHCHECK——因此,探针失败的容器(docker ps → Up (unhealthy))会显示为 runtimeStatus=ok,从而绕过查询 1–2,但 Tilt UI 仍会将其标记为红色。权威信号是 .status.composeResourceInfo.healthStatus(healthy/unhealthy/服务未配置健康检查时为空),查询 3 可以捕获这些资源。此类资源的 k8sResourceInfo 也为 null(spec.type == "docker-compose");要查明探针失败的原因,请改用 docker:docker inspect <compose-project>-<svc> --format '{{json .State.Health}}' 可以读取探针最近一次的退出代码和输出。一个常见原因是健康检查脚本调用了镜像中未包含的 CLI(例如在精简镜像中移除了 curl/grpcurl)——服务本身正常,出问题的是探针。
非默认端口
Tilt 使用非默认端口运行时,添加 --port:
tilt get uiresources --port 37035
tilt logs <resource> --port 37035
资源状态
# All resources with status
tilt get uiresources -o json | jq '.items[] | {name: .metadata.name, runtime: .status.runtimeStatus, update: .status.updateStatus}'
# Single resource detail
tilt get uiresource/<name> -o json
# Wait for ready
tilt wait --for=condition=Ready uiresource/<name> --timeout=120s
状态值:
- RuntimeStatus:
ok、error、pending、none、not_applicable - UpdateStatus:
ok、error、pending、in_progress、none、not_applicable
日志
tilt logs <resource>
tilt logs <resource> --since 5m
tilt logs <resource> --tail 100
tilt logs --json # JSON Lines output
触发和生命周期
tilt trigger <resource> # Force update
tilt up # Start
tilt down # Stop and clean up
运行 tilt up
遵循 zmx 技能的模式——检查是否存在已有会话,根据 git 根目录推导名称,并使用 zmx run(而非 attach):
PROJECT=$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" || basename "$PWD")
SESSION="${PROJECT}-tilt"
if zmx list --short 2>/dev/null | grep -q "^${SESSION}$"; then
echo "Tilt session already exists: $SESSION"
else
zmx run "$SESSION" 'tilt up'
echo "Started tilt in zmx session: $SESSION"
fi
重要:代码变更时切勿重启
Tilt 会自动实时重新加载。对于以下情况,切勿建议重启 tilt up:
- Tiltfile 编辑
- 源代码变更
- Kubernetes 清单更新
仅在以下情况重启:Tilt 版本升级、端口/主机变更、崩溃、集群上下文切换。
参考资料
- TILTFILE_API.md - Tiltfile 编写
- CLI_REFERENCE.md - 完整 CLI 和 JSON 模式
- https://docs.tilt.dev/