ai-engineering-init 1.10.0 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/.claude/agents/code-scanner.md +145 -0
  2. package/.claude/{skills/openspec-apply-change/SKILL.md → commands/opsx-apply.md} +1 -19
  3. package/.claude/{skills/openspec-archive-change/SKILL.md → commands/opsx-archive.md} +1 -18
  4. package/.claude/{skills/openspec-bulk-archive-change/SKILL.md → commands/opsx-bulk-archive.md} +1 -18
  5. package/.claude/{skills/openspec-continue-change/SKILL.md → commands/opsx-continue.md} +1 -18
  6. package/.claude/{skills/openspec-explore/SKILL.md → commands/opsx-explore.md} +1 -19
  7. package/.claude/{skills/openspec-ff-change/SKILL.md → commands/opsx-ff.md} +1 -18
  8. package/.claude/{skills/openspec-new-change/SKILL.md → commands/opsx-new.md} +1 -18
  9. package/.claude/{skills/openspec-onboard/SKILL.md → commands/opsx-onboard.md} +1 -18
  10. package/.claude/{skills/openspec-sync-specs/SKILL.md → commands/opsx-sync.md} +1 -18
  11. package/.claude/{skills/openspec-verify-change/SKILL.md → commands/opsx-verify.md} +1 -18
  12. package/.claude/hooks/skill-forced-eval.js +2 -10
  13. package/.claude/skills/analyze-requirements/SKILL.md +112 -0
  14. package/.claude/skills/fix-bug/SKILL.md +212 -0
  15. package/.claude/skills/loki-log-query/SKILL.md +4 -4
  16. package/.claude/skills/yunxiao-task-management/SKILL.md +170 -258
  17. package/.claude/skills/yunxiao-task-management/templates//346/217/220/346/265/213/345/215/225/346/250/241/346/235/277.html +17 -0
  18. package/.codex/skills/analyze-requirements/SKILL.md +112 -0
  19. package/.codex/skills/dev/SKILL.md +131 -476
  20. package/.codex/skills/fix-bug/SKILL.md +212 -0
  21. package/.codex/skills/loki-log-query/SKILL.md +4 -4
  22. package/.codex/skills/next/SKILL.md +42 -186
  23. package/.codex/skills/progress/SKILL.md +76 -147
  24. package/.codex/skills/yunxiao-task-management/SKILL.md +170 -258
  25. package/.codex/skills/yunxiao-task-management/templates//346/217/220/346/265/213/345/215/225/346/250/241/346/235/277.html +17 -0
  26. package/.cursor/agents/code-scanner.md +145 -0
  27. package/.cursor/hooks/cursor-skill-eval.js +10 -0
  28. package/.cursor/rules/skill-activation.mdc +7 -0
  29. package/.cursor/skills/analyze-requirements/SKILL.md +112 -0
  30. package/.cursor/skills/fix-bug/SKILL.md +212 -0
  31. package/.cursor/skills/loki-log-query/SKILL.md +4 -4
  32. package/.cursor/skills/yunxiao-task-management/SKILL.md +170 -258
  33. package/.cursor/skills/yunxiao-task-management/templates//346/217/220/346/265/213/345/215/225/346/250/241/346/235/277.html +17 -0
  34. package/AGENTS.md +44 -21
  35. package/README.md +1 -1
  36. package/package.json +1 -1
  37. package/src/platform-map.json +40 -0
  38. package/src/skills/analyze-requirements/SKILL.md +112 -0
  39. package/src/skills/fix-bug/SKILL.md +212 -0
  40. package/src/skills/loki-log-query/SKILL.md +4 -4
  41. package/src/skills/yunxiao-task-management/SKILL.md +170 -258
  42. package/src/skills/yunxiao-task-management/templates//346/217/220/346/265/213/345/215/225/346/250/241/346/235/277.html +17 -0
package/AGENTS.md CHANGED
@@ -83,6 +83,8 @@
83
83
  | `brainstorm` | 头脑风暴、创意、方案设计 |
84
84
  | `task-tracker` | 任务跟踪、进度管理 |
85
85
  | `test-development` | 测试、单元测试 |
86
+ | `analyze-requirements` | 需求分析全流程编排(原型图/云效任务 → 开发任务清单) |
87
+ | `fix-bug` | 修复 Bug 全流程编排(排查+修复+提交) |
86
88
  | `bug-detective` | Bug 排查、报错、异常 |
87
89
  | `performance-doctor` | 性能优化、慢查询、缓存 |
88
90
  | `add-skill` | 添加技能、创建技能文档 |
@@ -112,6 +114,7 @@
112
114
 
113
115
  | Agent | 模型 | 职责 | 触发场景 |
114
116
  |-------|------|------|---------|
117
+ | `code-scanner` | haiku | 代码库扫描 + 文件定位 + 代码片段收集 | 任务开始前的代码探索、模块结构了解、相似实现查找 |
115
118
  | `loki-runner` | haiku | Loki 日志查询 + 格式化 | Bug 排查、线上问题、traceId 追踪 |
116
119
  | `mysql-runner` | haiku | MySQL 只读查询 + 格式化 | 数据排查、验证数据状态 |
117
120
  | `task-fetcher` | haiku | 云效任务获取 + 整理 | 需求同步、任务查询 |
@@ -139,35 +142,55 @@
139
142
  ### 协作流程示例
140
143
 
141
144
  ```
142
- 需求分析流程:
143
- Opus 主会话 → 启动 requirements-analyzer(Opus)
144
- └─ 内部并行调用 Haiku
145
- ├─ image-reader(Haiku) → 原型图结构数据
146
- └─ task-fetcher(Haiku) → 云效任务信息
147
- └─ 汇总分析 → 输出需求分析报告 + 开发任务清单
145
+ 功能开发流程:
146
+ Opus 主会话 → 启动 Haiku 层扫描
147
+ └─ code-scanner(Haiku) → 代码扫描报告(文件清单、关键片段、依赖关系)
148
148
 
149
- 按任务清单开发
150
- Opus 主会话 → /dev 或 /crud 编写代码
149
+ 基于扫描结果决策
150
+ Opus 主会话 → /dev 或 /crud 编写代码(不再自己做初始扫描)
151
151
 
152
152
  ▼ 代码完成
153
153
  Opus 主会话 → 启动审查
154
154
  └─ code-reviewer(Sonnet+Codex) → 审查报告
155
155
 
156
- Bug 修复流程:
157
- Opus 主会话 → 并行启动 Haiku 层
158
- ├─ loki-runner(Haiku) → 日志数据
159
- └─ mysql-runner(Haiku) 数据库数据
160
-
161
- 汇总数据
162
- Opus 主会话 启动 Sonnet
163
- └─ bug-analyzer(Sonnet+Codex) → 根因分析
164
-
165
- 分析报告
166
- Opus 主会话 → 编写修复代码
167
-
168
- 代码完成
156
+ 需求分析流程(analyze-requirements 技能编排):
157
+ Opus 主会话 → 复杂度判断
158
+
159
+ ├─ 简单需求 直接分析输出任务清单 → 推荐 /crud 或 /dev
160
+
161
+ └─ 复杂需求 → 启动 requirements-analyzer(Opus)
162
+ └─ 按信息量并行调用 Haiku
163
+ ├─ image-reader(Haiku) × N张 原型图结构(有截图时)
164
+ ├─ task-fetcher(Haiku) → 云效任务信息(有任务号时)
165
+ └─ 汇总分析 → 输出需求分析报告 + 开发任务清单
166
+
167
+ ▼ 按任务清单开发
168
+ Opus 主会话 → code-scanner(Haiku) 扫描 → /dev 编写代码
169
+
170
+ ▼ 代码完成
169
171
  Opus 主会话 → 启动审查
170
172
  └─ code-reviewer(Sonnet+Codex) → 审查报告
173
+
174
+ Bug 修复流程(fix-bug 技能编排):
175
+ Opus 主会话 → 复杂度判断
176
+
177
+ ├─ 简单 Bug → 直接读代码修复 → git-workflow 提交
178
+
179
+ └─ 复杂 Bug → 按信息量并行启动 Agent
180
+ ├─ bug-analyzer(Sonnet+Codex) → 根因分析(必启动)
181
+ ├─ loki-runner(Haiku) → 日志数据(有 traceId 时)
182
+ ├─ mysql-runner(Haiku) → 数据库数据(有 DB 信息时)
183
+ └─ code-scanner(Haiku) → 相关代码结构(需要时)
184
+
185
+ ▼ 汇总 Agent 结果
186
+ Opus 主会话 → 确认修复方案 → 编写修复代码
187
+
188
+ ▼ 代码完成
189
+ Opus 主会话 → 启动审查
190
+ └─ code-reviewer(Sonnet+Codex) → 审查报告
191
+
192
+ ▼ 审查通过
193
+ git-workflow 提交(必须通过技能,禁止直接 git commit)
171
194
  ```
172
195
 
173
196
  ---
package/README.md CHANGED
@@ -55,7 +55,7 @@ npx ai-engineering-init --tool claude
55
55
 
56
56
  **更多命令**:`/crud`(生成增删改查)、`/progress`(项目进度)、`/sync`(代码状态同步)
57
57
 
58
- > **包含内容**:88 个 Skills 技能 + 10 个快捷命令 + 自动化 Hooks。详见 [参考文档](./docs/reference.md)。
58
+ > **包含内容**:80 个 Skills 技能 + 20 个快捷命令 + 9 个多模型分层 Agent + 自动化 Hooks。详见 [参考文档](./docs/reference.md)。
59
59
 
60
60
  ## 初始化后使用
61
61
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-engineering-init",
3
- "version": "1.10.0",
3
+ "version": "1.12.0",
4
4
  "description": "AI 工程化配置初始化工具 — 一键为 Claude Code、OpenAI Codex 等 AI 工具初始化 Skills 和项目规范",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -55,6 +55,46 @@
55
55
  "skill-creator": {
56
56
  "platforms": ["codex", "cursor"],
57
57
  "note": "技能创建元技能,Claude 平台有内置 add-skill,仅分发到 Codex 和 Cursor"
58
+ },
59
+ "openspec-new-change": {
60
+ "platforms": ["codex", "cursor"],
61
+ "note": "OpenSpec 变更,Claude 平台转为 /opsx-new 命令"
62
+ },
63
+ "openspec-ff-change": {
64
+ "platforms": ["codex", "cursor"],
65
+ "note": "OpenSpec 快进,Claude 平台转为 /opsx-ff 命令"
66
+ },
67
+ "openspec-apply-change": {
68
+ "platforms": ["codex", "cursor"],
69
+ "note": "OpenSpec 实现,Claude 平台转为 /opsx-apply 命令"
70
+ },
71
+ "openspec-continue-change": {
72
+ "platforms": ["codex", "cursor"],
73
+ "note": "OpenSpec 继续,Claude 平台转为 /opsx-continue 命令"
74
+ },
75
+ "openspec-archive-change": {
76
+ "platforms": ["codex", "cursor"],
77
+ "note": "OpenSpec 归档,Claude 平台转为 /opsx-archive 命令"
78
+ },
79
+ "openspec-bulk-archive-change": {
80
+ "platforms": ["codex", "cursor"],
81
+ "note": "OpenSpec 批量归档,Claude 平台转为 /opsx-bulk-archive 命令"
82
+ },
83
+ "openspec-explore": {
84
+ "platforms": ["codex", "cursor"],
85
+ "note": "OpenSpec 探索,Claude 平台转为 /opsx-explore 命令"
86
+ },
87
+ "openspec-onboard": {
88
+ "platforms": ["codex", "cursor"],
89
+ "note": "OpenSpec 新手引导,Claude 平台转为 /opsx-onboard 命令"
90
+ },
91
+ "openspec-sync-specs": {
92
+ "platforms": ["codex", "cursor"],
93
+ "note": "OpenSpec 同步,Claude 平台转为 /opsx-sync 命令"
94
+ },
95
+ "openspec-verify-change": {
96
+ "platforms": ["codex", "cursor"],
97
+ "note": "OpenSpec 验证,Claude 平台转为 /opsx-verify 命令"
58
98
  }
59
99
  }
60
100
  }
@@ -0,0 +1,112 @@
1
+ ---
2
+ name: analyze-requirements
3
+ description: |
4
+ 需求分析全流程编排。根据输入类型自动调度 Agent 获取数据,输出结构化需求报告和开发任务清单。
5
+
6
+ 触发场景:
7
+ - 收到 Axure 原型截图需要分析需求
8
+ - 需要将产品需求转化为开发任务
9
+ - 云效任务需要拆解为开发步骤
10
+ - 需求评审前需要结构化分析
11
+
12
+ 触发词:分析需求、需求分析、原型分析、需求拆解、分析原型图
13
+ ---
14
+
15
+ # 需求分析全流程
16
+
17
+ ## 核心原则
18
+
19
+ **先判断复杂度,简单需求直接分析,复杂需求走 Agent 编排。分析完成后推荐开发流程。**
20
+
21
+ ## 步骤 0:复杂度判断(必须先做)
22
+
23
+ ```
24
+ 用户提供需求线索
25
+
26
+ ├─ 简单需求? ──→ 快速路径(直接分析输出任务清单)
27
+ │ - 纯文字描述,功能明确
28
+ │ - 单表 CRUD,无需看原型图
29
+ │ - 用户已给出完整字段列表
30
+
31
+ └─ 复杂需求? ──→ Agent 路径(启动 requirements-analyzer)
32
+ - 提供了 Axure 原型截图
33
+ - 提供了云效任务编号
34
+ - 多页面/多模块联动
35
+ - 业务流程复杂,需要状态流转设计
36
+ ```
37
+
38
+ ## 快速路径(简单需求)
39
+
40
+ ```
41
+ 理解需求 → 设计表结构 → 列出接口清单 → 输出任务清单 → 推荐 /crud 或 /dev
42
+ ```
43
+
44
+ 不启动 Agent,直接在主对话中完成。输出格式参考下方"输出规范"。
45
+
46
+ ## Agent 路径(复杂需求)
47
+
48
+ ```
49
+ 步骤 1:收集信息(从用户消息中提取)
50
+ - Axure 原型截图路径
51
+ - 云效任务编号
52
+ - 需求描述文字
53
+ - 关联模块信息
54
+
55
+ 步骤 2:启动 requirements-analyzer Agent
56
+ └── requirements-analyzer(Opus) 内部自动编排:
57
+ ├── image-reader(Haiku) × N张 → 提取原型图结构(有截图时)
58
+ ├── task-fetcher(Haiku) → 获取云效任务详情(有任务号时)
59
+ └── 汇总分析 → 输出需求报告 + 任务清单
60
+
61
+ 步骤 3:Opus 主会话接收报告 → 推荐开发流程
62
+ ```
63
+
64
+ ## Agent 启动规则
65
+
66
+ ### 按信息量决定启动方式
67
+
68
+ | 用户提供的信息 | 启动方式 |
69
+ |---------------|---------|
70
+ | 只有文字描述 | 快速路径(不启动 Agent) |
71
+ | 文字 + 原型截图 | requirements-analyzer → 内部调 image-reader |
72
+ | 文字 + 云效任务号 | requirements-analyzer → 内部调 task-fetcher |
73
+ | 原型截图 + 云效任务号 | requirements-analyzer → 内部并行调 image-reader + task-fetcher |
74
+
75
+ ### 启动示例
76
+
77
+ ```
78
+ # 有原型截图
79
+ Agent(subagent_type="requirements-analyzer",
80
+ prompt="分析以下 Axure 原型截图,输出需求分析报告和开发任务清单:
81
+ 截图路径:/path/to/image1.png, /path/to/image2.png
82
+ 需求描述:xxx")
83
+
84
+ # 有云效任务
85
+ Agent(subagent_type="requirements-analyzer",
86
+ prompt="获取云效任务 SARW-456 的详情,结合以下需求描述分析:xxx")
87
+ ```
88
+
89
+ ## 输出规范
90
+
91
+ 无论走快速路径还是 Agent 路径,最终输出必须包含:
92
+
93
+ 1. **业务概述** — 一段话描述需求
94
+ 2. **数据库设计** — 建表 SQL(遵循项目规范)
95
+ 3. **接口清单** — 路由 + 方法 + 说明
96
+ 4. **开发任务拆解** — 按依赖排序的任务列表
97
+ 5. **推荐开发流程** — 根据复杂度推荐
98
+
99
+ ### 复杂度 → 开发流程推荐
100
+
101
+ | 复杂度 | 推荐流程 |
102
+ |--------|---------|
103
+ | 轻量(单表 CRUD) | `/crud` 生成 + `/dev` 补充 |
104
+ | 中等(2-3 表联动) | `/dev` 按任务逐步开发 |
105
+ | 复杂(多模块协作) | OpenSpec `/opsx:new` → `/opsx:ff` → `/opsx:apply` |
106
+
107
+ ## 注意
108
+
109
+ - 简单需求不要过度编排,直接分析就行
110
+ - 与 `bug-detective` / `fix-bug` 的区别:本技能面向**新功能开发前的需求分析**,不涉及 Bug 排查
111
+ - 数据库设计必须遵循项目规范(雪花 ID、审计字段、del_flag=2 正常)
112
+ - 如果需求信息不完整,主动列出需要确认的点,而不是猜测
@@ -0,0 +1,212 @@
1
+ ---
2
+ name: fix-bug
3
+ description: |
4
+ Bug 修复全流程编排。两阶段 Agent 排查 + 报告确认 + git-workflow 提交。
5
+
6
+ 触发场景:
7
+ - 修复 Bug(含日志/traceId/数据库信息)
8
+ - 线上问题排查与修复
9
+ - 报表数据不正确需排查修复
10
+ - 接口返回异常需定位修复
11
+
12
+ 触发词:修复bug、fix bug、修复、排查修复、线上修复、bug修复
13
+ ---
14
+
15
+ # Bug 修复全流程
16
+
17
+ ## 核心原则
18
+
19
+ **先判断复杂度,简单 Bug 直接修,复杂 Bug 走两阶段 Agent 排查。搞清原因后先出报告,用户确认后再修复代码。**
20
+
21
+ ## 步骤 0:复杂度判断(必须先做)
22
+
23
+ ```
24
+ 用户提供 Bug 线索
25
+
26
+ ├─ 简单 Bug? ──→ 快速路径
27
+ │ - 明显的代码错误(NPE、空判断遗漏、拼写错误)
28
+ │ - 用户已明确指出问题和修改方案
29
+ │ - 单文件改动,逻辑清晰
30
+ │ - 不需要查数据库/日志验证
31
+
32
+ └─ 复杂 Bug? ──→ Agent 路径(两阶段排查)
33
+ - 需要查日志确认线上行为(提供了 traceId)
34
+ - 需要查数据库验证数据正确性(提供了 DB 信息)
35
+ - 问题根因不明确,需要多维度分析
36
+ - 涉及多模块/多表关联的数据问题
37
+ ```
38
+
39
+ ## 快速路径(简单 Bug)
40
+
41
+ ```
42
+ 读代码 → 定位问题 → 输出排查报告 → 用户确认 → 修复 → git-workflow 提交
43
+ ```
44
+
45
+ 不启动 Agent,直接在主对话中完成。即使是简单 Bug,也先说明问题原因和修复方案,等用户确认再动手。
46
+
47
+ ## Agent 路径(复杂 Bug)
48
+
49
+ ```
50
+ 步骤 1:收集信息(从用户消息中提取)
51
+ - traceId / 错误日志
52
+ - 数据库环境(host/port/库名)
53
+ - Loki 日志环境
54
+ - Bug 描述 / 期望行为
55
+
56
+ 步骤 2(阶段一):并行启动 Agent
57
+ ├── bug-analyzer: 读代码分析根因
58
+ ├── loki-runner: 查 Loki 日志(有 traceId 时)
59
+ └── mysql-runner: 查数据库验证数据(有 DB 信息时)
60
+
61
+ 步骤 3(阶段二):日志驱动二次查询
62
+ 从 loki-runner 结果中提取:
63
+ ├── 表名(INSERT/UPDATE/DELETE/FROM/JOIN 后面的表名)
64
+ ├── 数据 ID(id=xxx、orderId=xxx 等)
65
+ ├── 租户 ID(tenantId、MERCHANT-ID 请求头)
66
+ └── SQL 语句片段
67
+ 如果提取到有效的表名+ID → 自动启动 mysql-runner 二次查询
68
+
69
+ 步骤 4:汇总所有结果 → 输出排查报告(见下方模板)
70
+
71
+ 步骤 5:⏸️ 等待用户确认修复方案
72
+
73
+ 步骤 6:用户确认后 → 修复代码
74
+
75
+ 步骤 7:走 git-workflow 提交
76
+ ```
77
+
78
+ ## 排查报告模板(必须输出)
79
+
80
+ 无论简单还是复杂 Bug,修复代码前**必须先输出报告**:
81
+
82
+ ```markdown
83
+ ## 🔍 Bug 排查报告
84
+
85
+ ### 问题描述
86
+ {用户报告的现象}
87
+
88
+ ### 根因分析
89
+ {代码层面的根本原因,指出具体文件和行号}
90
+
91
+ ### 数据验证(如有)
92
+ {从日志/数据库中发现的关键数据,证实根因}
93
+
94
+ ### 修复方案
95
+ - 修改文件:`xxx.java` 第 N 行
96
+ - 修改内容:{具体改动描述}
97
+ - 影响范围:{改动是否影响其他功能}
98
+
99
+ ### 风险评估
100
+ - 低/中/高
101
+ - {风险说明}
102
+
103
+ ---
104
+ 确认修复请回复"修",需要调整方案请说明。
105
+ ```
106
+
107
+ **⚠️ 禁止跳过报告直接修改代码。必须等用户明确确认后才能开始修复。**
108
+
109
+ ## 阶段二:日志驱动二次查询
110
+
111
+ 当阶段一的 loki-runner 返回日志后,主会话检查日志内容:
112
+
113
+ ```
114
+ loki-runner 返回日志
115
+
116
+ ├─ 日志中包含 SQL/表名/数据ID?
117
+ │ │
118
+ │ ├─ 阶段一已启动 mysql-runner?
119
+ │ │ → 检查是否需要追加查询(不同的表或ID)
120
+ │ │ → 需要则启动新的 mysql-runner 查询
121
+ │ │
122
+ │ └─ 阶段一未启动 mysql-runner?
123
+ │ → 从日志提取表名+ID+租户ID
124
+ │ → 自动启动 mysql-runner 二次查询
125
+
126
+ └─ 日志中无数据库相关信息?
127
+ → 跳过,直接汇总现有结果
128
+ ```
129
+
130
+ ### 日志中常见的可提取信息
131
+
132
+ | 日志模式 | 提取内容 | 查询方式 |
133
+ |---------|---------|---------|
134
+ | `INSERT INTO order_info` | 表名 order_info | `SELECT * FROM order_info WHERE id = ?` |
135
+ | `UPDATE account SET balance=` | 表名 account | `SELECT * FROM account WHERE id = ?` |
136
+ | `orderId=123456` | 数据 ID | 按 ID 查对应表 |
137
+ | `MERCHANT-ID: 100` | 租户 ID | 切换到对应租户库查询 |
138
+ | `Duplicate entry 'xxx'` | 唯一键冲突 | 查重复数据 |
139
+ | `Data truncation` | 字段溢出 | 查表结构 `DESC table_name` |
140
+
141
+ ## Agent 启动规则
142
+
143
+ ### 阶段一:必须并行(单条消息多个 Agent tool call)
144
+
145
+ ```
146
+ # 正确:一条消息同时启动
147
+ Agent(bug-analyzer, "分析 xxx 代码的 bug...")
148
+ Agent(loki-runner, "查询 traceId xxx 的日志...")
149
+ Agent(mysql-runner, "查询 xxx 数据库验证...")
150
+
151
+ # 错误:串行启动(等一个完再启动下一个)
152
+ ```
153
+
154
+ ### 阶段二:按需启动(阶段一结果返回后)
155
+
156
+ ```
157
+ # 从 loki-runner 结果中发现了表名和数据ID
158
+ Agent(mysql-runner, "根据日志发现涉及 order_info 表,查询 id=xxx 的数据...")
159
+ ```
160
+
161
+ ### 各 Agent 职责
162
+
163
+ | Agent | subagent_type | 职责 | 输入 |
164
+ |-------|---------------|------|------|
165
+ | 代码分析 | `bug-analyzer` | 读代码、分析根因、给修复方案 | Bug 描述 + 相关文件路径 |
166
+ | 数据库验证 | `mysql-runner` | 查数据验证业务逻辑 | DB 连接信息 + 验证 SQL |
167
+ | 日志查询 | `loki-runner` | 查 Loki 日志看线上行为 | Loki 环境 + traceId |
168
+
169
+ ### Agent 信息来源
170
+
171
+ **配置文件优先**,不存在时自动创建模板并提示用户填写:
172
+
173
+ | 配置 | 文件路径 |
174
+ |------|---------|
175
+ | MySQL | `.claude/mysql-config.json` |
176
+ | Loki | `.claude/skills/loki-log-query/environments.json` |
177
+
178
+ **配置获取流程**:
179
+ ```
180
+ 需要连 MySQL/Loki?
181
+
182
+ ├─ 配置文件存在且有有效凭证? → 直接使用
183
+
184
+ ├─ 配置文件存在但是占位符? → 提示用户填写敏感信息,等用户确认后继续
185
+
186
+ └─ 配置文件不存在? → 创建模板文件(占位符) → 提示用户填写 → 等确认后继续
187
+ ```
188
+
189
+ **敏感信息由用户手动填写,禁止 AI 将对话中的密码/token 写入配置文件。**
190
+
191
+ ### 按信息量决定启动哪些 Agent
192
+
193
+ | 用户提供的信息 | 阶段一启动 | 阶段二(日志驱动) |
194
+ |---------------|-----------|-----------------|
195
+ | 只有 Bug 描述 | bug-analyzer | — |
196
+ | Bug 描述 + traceId | bug-analyzer + loki-runner | 日志中有表名/ID → mysql-runner |
197
+ | Bug 描述 + DB 信息 | bug-analyzer + mysql-runner | — |
198
+ | Bug 描述 + traceId + DB 信息 | 全部 | 日志中有新表/ID → mysql-runner 追加查询 |
199
+
200
+ ## 提交规则
201
+
202
+ 修复完成后,**必须调用 `Skill(git-workflow)` 再执行 git 操作**。
203
+
204
+ 禁止:
205
+ - 直接 `git commit && git push` 跳过技能
206
+ - 在 Agent 内部执行 git 操作
207
+
208
+ ## 注意
209
+
210
+ - 简单 Bug 不要过度编排,直接修就行(但仍需先报告再修复)
211
+ - 如果用户没提供 DB/Loki 信息但 Bug 涉及数据问题,主动询问
212
+ - 与 `bug-detective` 技能的区别:`bug-detective` 是排查指南,`fix-bug` 是全流程编排(包含排查+修复+提交)
@@ -140,7 +140,7 @@ print('Token updated for monitor-dev')
140
140
  ```bash
141
141
  TRACE_ID="a53dd0b0cc62bf4a79a63e77444f6f3f"
142
142
  END=$(date +%s)000000000
143
- START=$(( $(date +%s) - 86400 ))000000000
143
+ START=$(( $(date +%s) - 21600 ))000000000 # 最近6小时
144
144
 
145
145
  curl -s "${API}/query_range" \
146
146
  -H "Authorization: Bearer ${TOKEN}" \
@@ -172,7 +172,7 @@ else:
172
172
  ```bash
173
173
  API_PATH="/security/summary/order/mealtime/classify/page"
174
174
  END=$(date +%s)000000000
175
- START=$(( $(date +%s) - 3600 ))000000000 # 最近1小时
175
+ START=$(( $(date +%s) - 21600 ))000000000 # 最近6小时
176
176
 
177
177
  curl -s "${API}/query_range" \
178
178
  -H "Authorization: Bearer ${TOKEN}" \
@@ -221,7 +221,7 @@ if len(all_lines) > 30:
221
221
  ```bash
222
222
  KEYWORD="LeException"
223
223
  END=$(date +%s)000000000
224
- START=$(( $(date +%s) - 3600 ))000000000
224
+ START=$(( $(date +%s) - 21600 ))000000000 # 最近6小时
225
225
 
226
226
  curl -s "${API}/query_range" \
227
227
  -H "Authorization: Bearer ${TOKEN}" \
@@ -269,7 +269,7 @@ curl -s "${API}/query_range" \
269
269
  # Step 1: 找 traceId
270
270
  API_PATH="/api/v2/web/order/list"
271
271
  END=$(date +%s)000000000
272
- START=$(( $(date +%s) - 3600 ))000000000
272
+ START=$(( $(date +%s) - 21600 ))000000000 # 最近6小时
273
273
 
274
274
  TRACE_IDS=$(curl -s "${API}/query_range" \
275
275
  -H "Authorization: Bearer ${TOKEN}" \