
Kiro Steering 文件详解与 JAR 包自动反编译实战一、Steering 文件是什么1.1 概念Steering 文件是 Kiro 中的一种上下文指令机制用于向 AI 助手提供额外的指令、背景知识和工作规范。它们本质上是 Markdown 文件放在.kiro/steering/目录下Kiro 在对话时会将这些文件的内容加载到上下文中从而影响 AI 的行为。可以类比为给 AI 的工作手册项目级的规范文档可复用的操作指南1.2 核心作用用途举例编码规范Java 命名规范、注释要求、代码风格项目知识架构说明、技术选型背景、依赖关系操作流程构建步骤、部署流程、测试方法环境信息Maven 仓库路径、服务器地址、工具配置行为约束“修改代码前先跑测试”、“不要自动删除文件”1.3 存放位置项目根目录/ ├── .kiro/ │ └── steering/ ← steering 文件目录 │ ├── coding-standards.md ← 编码规范 │ ├── project-info.md ← 项目信息 │ └── jar-decompile-analysis.md ← 自定义操作流程也可以放在用户级目录~/.kiro/steering/下对所有项目生效。1.4 三种加载模式通过文件头部的 front-matterYAML 格式控制加载时机模式一始终加载默认--- inclusion: auto --- # 编码规范 所有 Java 代码必须遵循以下规范...不需要用户主动引用每次对话都会自动加载到上下文中。适合编码规范、项目基础信息等始终需要的内容。模式二手动加载--- inclusion: manual --- # JAR 包反编译流程 当需要分析某个 jar 包时...需要用户在聊天中通过#文件名如#jar-decompile-analysis主动引用才加载。适合特定场景才需要的操作指南。模式三按文件匹配加载--- inclusion: fileMatch fileMatchPattern: *.xml --- # MyBatis XML 编写规范 所有 Mapper XML 文件必须...当 Kiro 读取到符合 pattern 的文件时自动加载。适合特定文件类型的规范。注博客https://blog.csdn.net/badao_liumang_qizhi二、Steering 文件的编写规范2.1 文件结构--- inclusion: auto | manual | fileMatch fileMatchPattern: glob pattern # fileMatch 模式时必填 --- # 标题 ## 正文内容 可以包含 - 规则说明 - 操作步骤 - 代码示例 - 文件引用 ## 引用其他文件 通过 #[[file:相对路径]] 语法引用项目中的文件 #[[file:pom.xml]] #[[file:src/main/resources/application.yml]]2.2 编写原则原则说明具体可执行写明确的步骤和命令而不是模糊的描述包含环境信息路径、版本号、工具名等写死在文件中适度长度太长会占用上下文空间影响对话质量结构清晰使用标题、列表、代码块组织内容定期维护环境变更时同步更新 steering 文件三、实战JAR 包自动反编译 Steering 文件3.1 完整 Steering 文件内容steering 文件已保存在.kiro/steering/jar-decompile-analysis.md--- inclusion: manual --- # JAR 包反编译与流程梳理 ## 环境信息 - Maven 本地仓库地址D:\SoftWare\Maven\repository - 反编译工具javapJDK自带 - 工作目录项目工作区 ## 当用户要求梳理某个 JAR 包的实现流程时执行以下步骤 ### 步骤1定位 JAR 包 根据用户提供的 Maven 坐标groupId:artifactId:version在本地仓库中定位 jar 文件。 路径规则D:\SoftWare\Maven\repository\{groupId路径}\{artifactId}\{version}\{artifactId}-{version}.jar 例如 - 坐标 org.aaa.lib:org-aaa-lib-binlog:2.1.3 - 路径 D:\SoftWare\Maven\repository\org\aaa\lib\org-aaa-lib-binlog\2.1.3\org-aaa-lib-binlog-2.1.3.jar 如果用户未提供完整坐标可以从项目的 pom.xml 中查找。 ### 步骤2解压 JAR 包 使用命令将 jar 解压到临时目录 powershell $jarPath D:\SoftWare\Maven\repository\{groupId路径}\{artifactId}\{version}\{artifactId}-{version}.jar $extractDir $env:TEMP\jar-decompile\{artifactId}-{version} Remove-Item -Recurse -Force $extractDir -ErrorAction SilentlyContinue New-Item -ItemType Directory -Path $extractDir -Force | Out-Null Copy-Item $jarPath $extractDir\temp.zip Expand-Archive -Path $extractDir\temp.zip -DestinationPath $extractDir -Force Remove-Item $extractDir\temp.zip步骤3查看包结构列出解压后的目录结构了解包的整体组织Get-ChildItem-Recurse-Path$extractDir-Filter*.class|Select-ObjectFullName步骤4反编译关键类使用javap -p反编译 .class 文件查看类的成员和方法签名javap-p$extractDir\{包路径}\{ClassName}.class如需查看更详细的字节码方法体逻辑使用javap -p -c。步骤5查看配置文件检查META-INF/spring.factories、META-INF/MANIFEST.MF等配置了解自动配置入口。步骤6梳理流程基于反编译结果梳理自动配置入口spring.factories核心接口和抽象类定义扩展点启动初始化流程运行时数据流转路径设计模式和关键设计决策注意事项.class 文件是二进制的不能直接用文件读取工具打开必须用 javap 反编译javap 需要传入 .class 文件的完整路径如果需要完整的源码级反编译包含方法体逻辑可以使用javap -p -c或建议用户使用 IDE 的反编译功能3.2 使用方式在聊天中输入#jar-decompile-analysis 帮我梳理 org-aaa-lib-kafka 的实现流程或者直接说梳理下 org.mgt.lib:org-mgt-lib-kafka:3.0.13 这个 jar 包的实现如果 steering 是inclusion: auto模式我会自动识别并执行流程3.3 执行效果演示当你触发这个流程后我会自动执行你梳理下 org-mgt-lib-binlog 的实现流程我的自动操作从 pom.xml 找到坐标org.mgt.lib:jsh-mgt-lib-binlog:2.1.3定位文件D:\SoftWare\Maven\repository\org\mgt\lib\org-mgt-lib-binlog\2.1.3\org-mgt-lib-binlog-2.1.3.jar复制为 .zip → 解压到 %TEMP%\jar-decompile\org-mgt-lib-binlog-2.1.3列出包结构 → 识别关键类javap 反编译核心类 → 获取类成员和方法签名读取 META-INF/spring.factories → 确定入口综合梳理输出完整的实现流程四、其他常用 Steering 文件示例4.1 编码规范auto 模式--- inclusion: auto --- # Java 编码规范 ## 命名规范 1. 类名使用大驼峰命名法PascalCase 2. 方法名和变量名使用小驼峰命名法camelCase 3. 常量使用全大写加下划线如 MAX_SIZE 4. 数据库相关字段使用下划线命名法snake_case 5. 没有使用拼音命名 6. 代码注释使用中文 7. DTO/VO/Entity 等类后缀符合项目约定Dto/Vo/Entity 8. Service 接口和实现类命名符合约定XxxService / XxxServiceImpl 9. 方法命名前缀合理查询用 get/find/query/list创建用 create/add/save更新用 update/modify删除用 delete/remove ## 代码风格 - 使用 Lombok 简化 getter/setter - 统一使用 Resource 而非 Autowired - 日志使用 Slf4j 的 Slf4j 注解4.2 构建与测试流程manual 模式--- inclusion: manual --- # 构建与测试 ## 本地构建 powershell mvn clean package -DskipTests运行单元测试mvn test-pl aaa-cloud-service-xxx本地启动需要先配置 hosts 文件和数据库连接参考 application-local.yml### 4.3 MyBatis XML 规范fileMatch 模式 markdown --- inclusion: fileMatch fileMatchPattern: **/*Mapper.xml --- # MyBatis Mapper XML 规范 ## SQL 编写规范 1. 使用 if 标签做动态条件不在 Java 中拼接 SQL 2. 分页查询使用 PageHelper 或 LIMIT OFFSET 3. 批量操作使用 foreach 标签 4. 字段比较使用 lt; 和 而非 和 5. 字符串判空使用 ! null and ! 双重判断 ## 命名规范 - select 语句 id 使用 select/get/find/query 前缀 - insert 语句 id 使用 insert/add/save 前缀 - update 语句 id 使用 update/modify 前缀 - delete 语句 id 使用 delete/remove 前缀五、Steering 文件 vs Hooks vs Skills机制作用触发方式适用场景Steering提供背景知识和规范自动/手动/文件匹配 加载到上下文编码规范、环境信息、操作流程Hooks自动执行操作事件触发文件保存、工具调用等代码检查、自动格式化、构建验证Skills可复用的能力模块手动激活复杂的多步骤技能组合Steering 是告诉 AI 怎么做Hooks 是让 AI 自动做Skills 是打包一套能力。六、最佳实践6.1 Steering 文件组织建议.kiro/steering/ ├── coding-standards.md # [auto] 编码规范每次对话都生效 ├── project-architecture.md # [auto] 项目架构说明 ├── build-and-deploy.md # [manual] 构建部署流程按需引用 ├── jar-decompile-analysis.md # [manual] JAR反编译流程按需引用 ├── mybatis-guide.md # [fileMatch: **/*Mapper.xml] Mapper规范 └── api-design-guide.md # [fileMatch: **/controller/**] API设计规范6.2 使用建议建议原因auto 模式的文件保持精简每次对话都会加载太长浪费上下文空间环境相关信息集中管理换机器/换环境时只改一个文件频繁使用的流程做成 auto省去每次手动引用的麻烦大型指南文件设为 manual只在需要时加载节省空间团队共享通过 Gitsteering 文件跟随项目团队成员自动获取