当前位置: 首页 > news >正文

Kiro Hook 实战指南:保存文件自动 lint、commit 自动测试,6 个场景配置详解

Kiro 除了 Specs(规格驱动开发),还有一个实用功能叫 Hook——类似 Git Hook 的概念,但触发范围更广:文件保存、终端命令、Agent 动作都能触发自定义脚本。

说白了就是:定义"当X发生时,自动做Y"的规则。

今天用几个实际场景演示怎么配。

Hook 是什么

Hook 是 Kiro 的事件驱动自动化机制。你在 .kiro/hooks/ 目录下写配置文件,定义触发条件和执行动作。

.kiro/
├── hooks/
│   ├── on-save-lint.toml
│   ├── on-commit-test.toml
│   └── on-create-doc.toml
└── specs/└── ...

场景 1:保存 Python 文件时自动跑 Ruff

每次保存 .py 文件,自动格式化 + lint:

# .kiro/hooks/on-save-lint.toml
[trigger]
event = "file.save"
pattern = "**/*.py"[action]
type = "shell"
command = "ruff format {file} && ruff check --fix {file}"
on_failure = "notify"  # 失败时在编辑器底部提示,不阻塞

这样省了手动跑 ruff format 的步骤。{file} 是 Kiro 自动替换的变量,指向当前保存的文件路径。

场景 2:Commit 前自动跑单元测试

# .kiro/hooks/on-commit-test.toml
[trigger]
event = "git.pre-commit"[action]
type = "shell"
command = "pytest tests/unit/ -x --timeout=30"
on_failure = "block"  # 测试不过就阻止 commit[action.env]
PYTHONPATH = "src"

关键是 on_failure = "block" —— 测试红了就不让提交。和 husky + lint-staged 是一个思路,但 Kiro 原生支持,不需要额外装包。

场景 3:新建文件时自动生成文档骨架

# .kiro/hooks/on-create-doc.toml
[trigger]
event = "file.create"
pattern = "src/handlers/*.py"[action]
type = "agent"
prompt = """
为新建的 handler 文件 {file} 生成文档注释:
1. 模块级 docstring(说明这个 handler 做什么)
2. 每个公开函数的 docstring(参数、返回值、异常)
3. 如果有 AWS 服务调用,标注需要的 IAM 权限遵循 Google Python Style 的 docstring 格式。
"""

注意 type = "agent" —— 这个 hook 不是跑 shell 命令,而是让 Kiro Agent 执行一段 prompt。适合需要理解代码上下文的任务。

场景 4:CDK 部署前检查安全规则

# .kiro/hooks/on-deploy-check.toml
[trigger]
event = "terminal.command"
pattern = "cdk deploy*"[action]
type = "shell"
command = """
echo "Running security checks before deploy..."
cdk synth --quiet
cfn-nag-scan --input-path cdk.out/*.template.json
"""
on_failure = "block"[action.timeout]
seconds = 120

每次你在终端敲 cdk deploy,Kiro 先拦截,跑一遍 cfn-nag 安全扫描。有安全问题就阻止部署。

场景 5:API 文件变更时同步更新 OpenAPI Spec

# .kiro/hooks/on-api-change.toml
[trigger]
event = "file.save"
pattern = "src/routes/**/*.ts"[action]
type = "agent"
prompt = """
文件 {file} 被修改了。请检查其中的路由定义是否和 docs/openapi.yaml 一致。如果发现不一致:
1. 更新 openapi.yaml 中对应的路径定义
2. 保持 description、parameters、response schema 准确
3. 不要修改其他未变更的路径只更新有差异的部分,不要重写整个文件。
"""

场景 6:组合多个动作

# .kiro/hooks/on-pr-ready.toml
[trigger]
event = "git.push"
branch = "feature/*"[[action]]
type = "shell"
command = "pytest tests/ --cov=src --cov-report=term-missing"
on_failure = "notify"[[action]]
type = "shell"
command = "ruff check src/ --output-format=github"
on_failure = "notify"[[action]]
type = "agent"
prompt = """
检查最近的 git diff,生成一份简短的 PR description:
- 改了什么(一句话总结)
- 影响范围
- 需要 reviewer 关注的点输出为 Markdown 格式,保存到 .github/pr-description.md
"""

Push 到 feature 分支时,自动跑测试 + lint + 生成 PR 描述。三个动作串行执行。

Hook 变量

Kiro Hook 支持的内置变量:

变量 含义 可用事件
{file} 触发文件的完整路径 file.save, file.create
{filename} 文件名(不含路径) file.save, file.create
{dir} 文件所在目录 file.save, file.create
{branch} 当前 Git 分支 git.*
{commit_msg} Commit 消息 git.pre-commit, git.post-commit
{command} 触发的终端命令 terminal.command
{workspace} 项目根目录 所有事件

和 Git Hooks / Husky 的区别

维度 Git Hooks / Husky Kiro Hooks
触发范围 只有 Git 事件 文件/Git/终端/Agent 动作
配置方式 shell 脚本 TOML 声明式
AI 集成 type = "agent" 原生支持
跨平台 shell 兼容性问题 Kiro 统一处理
团队共享 .husky/ 目录 .kiro/hooks/ 目录(同样可 git track)
调试 echo 打印 Kiro 日志面板

实战建议

  1. 从 lint 开始 —— on-save-lint 是风险低、收益高的 hook
  2. Agent hook 要限制范围 —— prompt 里明确"只改 XXX,不动其他",防止 Agent 改太多
  3. timeout 要设 —— 特别是跑测试的 hook,别让它卡住你的工作流
  4. on_failure 分场景 —— lint 用 notify(不阻塞),测试用 block(必须过)
  5. 不要过度自动化 —— 如果一个 hook 经常让你手动跳过(--no-verify),说明它设计得不对

和 Specs 配合使用

Hook + Spec 的组合:

  • Spec 定义"做什么"
  • Hook 保证"做的过程中不出错"

比如 Spec 里定义了 API 格式规范,Hook 在每次文件保存时自动检查是否符合 Spec 中的约束。两者互补。

Kiro 下载:https://aws.amazon.com/cn/campaigns/kiro/
Kiro Hooks 文档:https://kiro.dev/docs/hooks/

http://www.gsyq.cn/news/1549808.html

相关文章:

  • 2026法考APP如何选择不踩坑?四大主流品牌全方位对比评测来了! - 信息热点
  • 2023年AI工程化落地实战:从RAG、小样本CV到可控生成的硬核经验
  • 2026年IP隔离浏览器推荐选型:静态动态双模式,适配不同运营需求 - 资讯纵览
  • 重庆美国留学培训哪家强?资质存证筛选正规中介 - 秋山寄远
  • AutoCAD字体自动管理终极指南:如何彻底告别“字体缺失“困扰
  • 温州全屋智能装修靠谱公司排行:实力品牌与场景适配 - 资讯纵览
  • 飞机备用电池是什么?飞机备用电池类型、功能及应用解析【浩博电池】 - 锂电池大全
  • 个人跨省寄快递怎么便宜?2026长途寄件最划算攻略 - 快递物流资讯
  • LEPA架构:解决遥感图像几何等变性的创新方法
  • 卖黄金如何守住最高价?2026 杭州反套路回收攻略,杜绝缺秤、压纯度、乱扣费 - 奢侈品回收评测
  • 合成数据实战指南:从合规生成到混合训练的工程化落地
  • 深入解析Motorola DSP来电显示库:从FSK原理到嵌入式系统集成实战
  • 称重不准、隐形扣费?盘点 2026 北京黄金回收避坑指南 - 奢侈品回收测评
  • 2026年杭州AI搜索优化源头厂商深维评测:五强争霸与决策避坑全指南 - 品牌报告
  • Microchip嵌入式开发实战:高效利用官方资源与工具链指南
  • 【2026年6月】网红餐车、电动小吃车、流动摆摊车 推荐指南 - 多才菠萝
  • 杭州靠谱宠物店合集,买宠前建议多对比 - 园友3800037
  • 高中生也能懂的神经网络实战课:从Excel手算到手写数字识别
  • 苏州买猫买狗去哪看?这家宠物店实测体验不错 - 园友3800037
  • 杭州想买宠物?这4家门店环境和服务都值得参考 - 园友3800037
  • 金价高位变现优选,2026郑州报价领先黄金回收权威排名 - 奢侈品回收测评
  • 航空动力电池:技术特点、应用领域及未来发展趋势 - 锂电池大全
  • 2026苏州留学机构深度测评,行业口碑硬核优选前三强 - 资讯纵览
  • Gemma 4端侧AI实战指南:Apache 2.0、离线多模态与MoE架构解析
  • 三分钟搭建QQ机器人:LuckyLilliaBot一站式解决方案终极指南
  • 豆包 快速 LeetCode 3287. 求出数组中最大序列值 C++实现
  • 2026豆包GEO公司选型评测:谁在为AI搜索流量造血? - 品牌报告
  • 温岭附近疏通下水道/同城口碑温岭通诚管道疏通推荐,2026年 温岭物品打捞/厕所疏通哪家专业 - 资讯速览
  • 0618晨间日记
  • E9 微搜密码存放文件位置/内存文件