name: tilt description: 通过CLI和Tiltfile编写管理Tilt开发环境。使用Tilt或Tiltfiles时必须使用。
Tilt开发环境
自动重载行为
Tilt会主动进行实时重载。永远不要建议重启tilt up或手动刷新资源——在几乎所有情况下,Tilt都会自动处理。
什么会自动重载
| 变更类型 | 发生什么 | 你的操作 |
|---|---|---|
| Tiltfile编辑 | Tilt在保存时重新评估整个Tiltfile | 只需保存文件 |
带有live_update的源代码 |
文件同步到容器而无需重建 | 只需保存文件 |
没有live_update的源代码 |
自动触发完整镜像重建 | 只需保存文件 |
| Kubernetes清单 | 资源自动重新应用 | 只需保存文件 |
| 带有HMR的前端 | 浏览器通过热模块替换更新 | 只需保存文件 |
| 带有监视工具的后端 | 通过nodemon/air/watchexec重启进程 | 只需保存文件 |
何时确实需要重启
仅在以下情况下需要重启tilt up:
- Tilt版本升级
- 更改Tilt的端口或主机设置
- 从Tilt崩溃中恢复
- Kubernetes上下文更改(切换集群)
验证更新已应用
不要重启,而是验证更新是否已传播:
# 保存后检查资源状态
tilt get uiresource/<名称> -o json | jq '.status.updateStatus'
# 监视更新完成
tilt wait --for=condition=Ready uiresource/<名称> --timeout=60s
# 检查最近的日志以确认重载
tilt logs <资源> --since 1m
tilt logs <资源> --since 5m | rg -i "reload|restart|updated|synced"
运行tilt up
始终在tmux会话中使用send-keys运行tilt up。 这确保:
- Tilt在Claude Code会话重载后仍然存活
- Shell初始化运行(PATH、direnv等)
SESSION=$(basename $(git rev-parse --show-toplevel 2>/dev/null) || basename $PWD)
# 在tmux中启动tilt(幂等,send-keys用于正确的shell初始化)
if ! tmux has-session -t "$SESSION" 2>/dev/null; then
tmux new-session -d -s "$SESSION" -n tilt
tmux send-keys -t "$SESSION:tilt" 'tilt up' Enter
echo "已在tmux会话中启动tilt: $SESSION"
elif ! tmux list-windows -t "$SESSION" -F '#{window_name}' | grep -q "^tilt$"; then
tmux new-window -t "$SESSION" -n tilt
tmux send-keys -t "$SESSION:tilt" 'tilt up' Enter
echo "已将会话添加到窗口: $SESSION"
else
echo "Tilt已在会话中运行: $SESSION"
fi
检查tilt输出:
SESSION=$(basename $(git rev-parse --show-toplevel 2>/dev/null) || basename $PWD)
tmux capture-pane -p -t "$SESSION:tilt" -S -50
停止tilt:
SESSION=$(basename $(git rev-parse --show-toplevel 2>/dev/null) || basename $PWD)
tmux send-keys -t "$SESSION:tilt" C-c
永远不要在前台直接运行tilt up或使用run_in_background。始终使用tmux。
指令
- 使用
tilt get uiresources -o json以编程方式查询资源状态 - 使用
tilt get uiresource/<名称> -o json获取详细的单个资源状态 - 使用带有
--since、--tail、--json标志的tilt logs进行日志检索 - 使用
tilt trigger <资源>在自动重载未触发时强制更新 - 使用
tilt wait阻塞直到资源达到就绪状态 - 对于Tiltfile编写,请参阅@TILTFILE_API.md
- 对于完整的CLI参考和JSON解析模式,请参阅@CLI_REFERENCE.md
快速参考
检查资源状态
tilt get uiresources -o json | jq '.items[] | {name: .metadata.name, runtime: .status.runtimeStatus, update: .status.updateStatus}'
等待资源就绪
tilt wait --for=condition=Ready uiresource/<名称> --timeout=120s
获取资源日志
tilt logs <资源> # 当前日志
tilt logs <资源> --since 5m # 最近5分钟的日志
tilt logs <资源> --tail 100 # 最后100行
tilt logs --json # JSON行输出
触发更新
tilt trigger <资源>
生命周期命令
tilt up # 启动Tilt
tilt down # 停止并清理
tilt ci # CI/批处理模式
资源状态值
- RuntimeStatus:
unknown,none,pending,ok,error,not_applicable - UpdateStatus:
none,pending,in_progress,ok,error,not_applicable
参考
- Tilt文档: https://docs.tilt.dev/
- CLI参考: https://docs.tilt.dev/cli/tilt.html
- Tiltfile API: https://docs.tilt.dev/api.html
- 扩展: https://github.com/tilt-dev/tilt-extensions