Kiro Powers 实战:代码一改,AI 自动跑 Lint、补测试、更新文档
写完代码 → 手动跑 eslint → 手动跑测试 → 手动更新 README。这套流程每天重复几十次,每次都觉得"应该有人帮我干这些"。
Kiro Powers 就是那个"帮你干这些"的功能。你设定好规则,之后每次代码变更,AI 自动执行对应的任务——检查代码规范、跑单元测试、更新相关文档。不用你记着做,也不用等 CI 跑完再回来看。
Powers 是什么
一句话:事件驱动的 AI 自动化任务。
你定义触发条件(文件变更、保存、创建新文件等),配上要执行的动作(跑命令、AI 分析、生成内容),Kiro 在后台自动帮你执行。
和 Git Hooks 的区别:Git Hooks 在 commit/push 时触发,而 Powers 在你编辑过程中实时触发。你改了一个文件,还没 commit,Powers 就已经跑完了。
配置方式
在项目的 .kiro/powers/ 目录下创建配置文件:
# .kiro/powers/lint-on-save.yaml
name: Auto Lint
trigger:
event: file_save
pattern: "src/**/*.{ts,tsx}"
action:
type: command
command: "npx eslint --fix {{file}}"
autoApply: true
这个 Power 的意思是:当你保存 src/ 下的任何 TypeScript 文件时,自动跑 eslint 并修复可修复的问题。
再来一个稍微复杂的:
# .kiro/powers/test-on-change.yaml
name: Auto Test
trigger:
event: file_save
pattern: "src/**/*.ts"
exclude: "**/*.test.ts"
action:
type: command
command: "npx vitest run --reporter=verbose {{file.replace('.ts', '.test.ts')}}"
onFailure:
type: ai
prompt: "测试失败了,分析错误原因并建议修复方案"
这个 Power:文件保存 → 跑对应的测试文件 → 如果测试挂了,AI 自动分析原因并给修复建议。
实用 Powers 配置清单
整理了我日常用的几个 Powers:
1. 保存时自动格式化 + Lint
name: Format & Lint
trigger:
event: file_save
pattern: "src/**/*.{ts,tsx,js,jsx}"
action:
type: sequence
steps:
- command: "npx prettier --write {{file}}"
- command: "npx eslint --fix {{file}}"
2. 新建文件时自动生成测试骨架
name: Generate Test Skeleton
trigger:
event: file_create
pattern: "src/**/*.ts"
exclude: "**/*.test.ts"
action:
type: ai
prompt: |
为 {{file}} 生成对应的测试文件 {{file.replace('.ts', '.test.ts')}}。
要求:
- 使用 vitest
- 为每个导出函数生成至少 2 个测试用例
- 包含正常路径和边界情况
- 使用 describe/it 结构
3. 接口变更时自动更新 API 文档
name: Update API Docs
trigger:
event: file_save
pattern: "src/routes/**/*.ts"
action:
type: ai
prompt: |
文件 {{file}} 有变更。检查 docs/api.md 是否需要更新:
- 新增了接口?补充文档
- 参数变了?更新参数说明
- 返回值变了?更新响应示例
只在确实有变更时才修改文档,没变不动。
4. 依赖更新时检查兼容性
name: Dependency Check
trigger:
event: file_save
pattern: "package.json"
action:
type: ai
prompt: |
package.json 有变更。对比前后差异:
- 有没有 major 版本升级?如果有,列出可能的 breaking changes
- 有没有新增依赖和现有依赖功能重复?
- 有没有已知安全漏洞的版本?
5. 提交前自动检查敏感信息
name: Secret Scanner
trigger:
event: file_save
pattern: "**/*"
exclude: "node_modules/**"
action:
type: ai
prompt: |
扫描 {{file}} 是否包含敏感信息:
- API Key / Secret / Token
- 硬编码的密码
- 内部 IP 地址
- 私钥内容
如果发现,高亮标注并建议使用环境变量替代。
Powers vs Hooks 的区别
之前文章写过 Kiro Agent Hooks,这俩容易混:
| Powers | Hooks | |
|---|---|---|
| 触发时机 | 编辑过程中(保存、创建文件等) | Agent 执行过程中(plan/apply/complete) |
| 执行者 | Kiro 后台自动 | Kiro Agent |
| 适合场景 | 重复性自动化(lint、测试、格式化) | Agent 工作流约束(审查、规范检查) |
| 需要 AI? | 可选(command 或 ai) | 通常需要 |
简单说:Powers 管你的日常编辑流程,Hooks 管 AI Agent 的工作流程。两者可以叠加使用。
性能考虑
Powers 跑在后台,如果配不好会拖慢编辑体验。几个注意点:
1. 控制触发频率
trigger:
event: file_save
debounce: 2000 # 2秒内多次保存只触发一次
2. 缩小文件匹配范围
别写 pattern: "**/*"(除非你真的需要全量扫描)。越精确的 pattern 越好。
3. 轻量命令优先
能用 eslint 单文件模式就别跑全项目扫描。{{file}} 变量指向当前变更的文件。
4. AI 类型的 Power 有 token 消耗
每次触发 AI 分析都会消耗 token。高频保存的文件(比如你正在反复调试的组件)建议用 command 类型或加 debounce。
团队共享
.kiro/powers/ 目录提交到 Git,团队成员 clone 下来自动生效。这意味着:
- 新人入职不用配置 IDE 插件,Powers 自动运行
- 全团队统一代码规范(不是靠约定,是靠自动化)
- 有人改了规范,更新 Powers 配置,下次 pull 自动生效
比在 README 里写"请安装以下 VS Code 插件"靠谱得多。
和 CI/CD 的关系
Powers 不是替代 CI/CD 的。定位不同:
- Powers:开发时即时反馈(秒级),帮你在 commit 前就发现问题
- CI/CD:提交后的完整验证(分钟级),确保代码在所有环境下正确
理想情况是 Powers 帮你在本地就拦住 80% 的问题,CI 只处理剩下 20% 的集成和环境问题。推到 CI 才发现 lint 不过、测试挂了——这种等待是不必要的。
小结
Powers 的核心价值:把你记不住的、重复做的、觉得烦的事情自动化掉。
配置一次,之后每次保存文件就自动跑。Lint 结果不用等、测试结果不用等、文档更新不用记。编码体验从"写完代码→做一堆杂事"变成"只管写代码→AI 处理其余"。
Kiro Powers 文档:https://kiro.dev/docs/powers/
Kiro 由亚马逊云科技提供支持。Powers 在 IDE 和 CLI 版本中均可使用。

浙公网安备 33010602011771号