jarvis-agent-factory 3.45.0 → 3.45.2

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.
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Jarvis Agent Factory · 贾维斯智能体工厂
2
2
 
3
3
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](./LICENSE)
4
- [![Version](https://img.shields.io/badge/version-v3.45.0-green)](https://github.com/Wjl1224734792/Jarvis-Agent-Factory/releases)
4
+ [![Version](https://img.shields.io/badge/version-v3.45.2-green)](https://github.com/Wjl1224734792/Jarvis-Agent-Factory/releases)
5
5
  [![npm](https://img.shields.io/npm/v/jarvis-agent-factory)](https://www.npmjs.com/package/jarvis-agent-factory)
6
6
  [![Visual Primitives MCP](https://img.shields.io/badge/DeepSeek-Visual%20Primitives%20MCP-purple)](https://github.com/Wjl1224734792/visual-primitives-mcp)
7
7
  <br>💡 **纯文本模型(如 DeepSeek)主力用户** → 搭配 [Visual Primitives MCP](https://github.com/Wjl1224734792/visual-primitives-mcp) 获得视觉理解能力
@@ -9,7 +9,7 @@
9
9
 
10
10
  AI 编程助手配置集 + MCP 编排引擎。从想法到交付的完整软件开发流水线,<br>**仅支持 Claude Code**。
11
11
 
12
- > **v3.43.0** — Dashboard 简化:文档阅读器替代 X6 画布 · Agent 事件去重 · Gate 耗时修复 · 多平台适配初始化
12
+ > **v3.45.1** — 10 个新指令(测试体系化 + 重构安全网 + 热修复 + 迁移 + 评估 + 调试)· 5 条新流水线类型 · 智能 MCP 合并安装
13
13
 
14
14
  ## 快速开始
15
15
 
@@ -38,7 +38,7 @@ jarvis web # 启动 Web 面板(按需)
38
38
  | **MCP 编排引擎** | FSM 硬约束 Gate A→B→C→C1→C1.5→C2→D→E,跳过/回退被拒绝 |
39
39
  | **零手动启动** | MCP stdio 自动拉起引擎,Claude Code 开箱即用 |
40
40
  | **轻量编排** | `/jarvis-lite` 按任务类型智能映射 Gate 入口,跳过无关闸门 |
41
- | **多流水线类型** | full / frontend / backend / lite 四种模式,按需选择 |
41
+ | **多流水线类型** | full / frontend / backend / lite / refactor / hotfix / migrate / evaluate / debug 九种模式,按需选择 |
42
42
  | **会话隔离** | 每个编辑窗口独立流水线状态,互不干扰 |
43
43
  | **会话管理** | 会话命名(MCP session_set_name)· 归档/删除 · 置顶 · 指令标签(/jarvis 等) |
44
44
  | **Web 面板** | Hash 路由(#/dashboard #/archive #/agents)· SSE 实时推送 · 产物文档阅读器 · Gate Timeline · Agent 配置页 |
@@ -46,6 +46,7 @@ jarvis web # 启动 Web 面板(按需)
46
46
  | **Agent 配置** | Web 面板修改模型/思考等级 → 自动同步回 `.md` 源文件 |
47
47
  | **浏览器测试** | 文档驱动工作流:test-doc-writer → test-executor → fix-retest 闭环 |
48
48
  | **智能安装** | Hash 对比只覆盖变更文件,用户自定义自动保留 |
49
+ | **智能 MCP 合并** | `jarvis upgrade` / `jarvis init` 增量合并 MCP 配置,不覆盖用户自定义服务 |
49
50
  | **Hook/Plugin** | Claude Code hooks + MCP 全覆盖 |
50
51
  | **平台扩展** | `platform_info` MCP 工具 + `/api/platforms` REST 端点 |
51
52
  | **零原生依赖** | Node 22.5+ 内置 `node:sqlite`,安装秒级完成 |
@@ -149,6 +150,10 @@ GITHUB_TOKEN=xxx # GitHub 个人访问令牌(sync-github-releases 需要
149
150
  | 文档/配置 | Gate C | README、CI 配置等 |
150
151
  | 小功能添加 | Gate A | 从需求澄清开始 |
151
152
  | 重构/优化 | Gate C | 代码重构、性能优化 |
153
+ | 热修复 | Gate H0 | 紧急故障恢复 |
154
+ | 框架迁移 | Gate M1 | 框架版本升级、依赖替换 |
155
+ | 技术评估 | Gate E0 | 技术选型、方案对比 |
156
+ | 调试诊断 | Gate D0 | 异常排查、根因定位 |
152
157
 
153
158
  用法:在 Claude Code 中输入 `/jarvis-lite` 即可启动。
154
159
 
@@ -273,13 +278,25 @@ test-doc-writer → test-executor → fix-retest
273
278
  | 算法专家 | `/algorithm-expert` |
274
279
  | 前端架构 | `/frontend-architect` |
275
280
  | 后端架构 | `/backend-architect` |
281
+ | **测试** | |
282
+ | 单元测试 | `/test-unit` |
283
+ | 集成测试 | `/test-integration` |
284
+ | 端到端测试 | `/test-e2e` |
285
+ | 性能测试 | `/test-perf` |
286
+ | 安全测试 | `/test-security` |
287
+ | **工程** | |
288
+ | 重构安全网 | `/refactor` |
289
+ | 紧急热修复 | `/hotfix` |
290
+ | 框架迁移 | `/migrate` |
291
+ | 技术评估 | `/evaluate` |
292
+ | 调试诊断 | `/debug` |
276
293
 
277
294
  ## 统计
278
295
 
279
296
  | | Claude Code |
280
297
  |---|:--:|
281
298
  | Agents | 88 |
282
- | Commands | 16 |
299
+ | Commands | 26 |
283
300
  | Skills | 29 |
284
301
  | 钩子 | settings.json |
285
302
  | MCP | `.mcp.json` |
@@ -337,6 +354,16 @@ test-doc-writer → test-executor → fix-retest
337
354
  | **架构/专家** | `/frontend-architect` | [frontend-architect.md](docs/flows/frontend-architect.md) | 问题收集→spawn架构师→呈现输出 |
338
355
  | | `/backend-architect` | [backend-architect.md](docs/flows/backend-architect.md) | 问题收集→spawn架构师→呈现输出 |
339
356
  | | `/algorithm-expert` | [algorithm-expert.md](docs/flows/algorithm-expert.md) | 问题收集→spawn算法专家→呈现输出 |
357
+ | **测试体系** | `/test-unit` | [test-unit.md](docs/flows/test-unit.md) | 检测框架→分析代码→生成(Red)→运行(Green)→重构 |
358
+ | | `/test-integration` | [test-integration.md](docs/flows/test-integration.md) | 识别契约→启动环境→生成→运行→清理 |
359
+ | | `/test-e2e` | [test-e2e.md](docs/flows/test-e2e.md) | 用户故事→选工具→编写→运行→报告 |
360
+ | | `/test-perf` | [test-perf.md](docs/flows/test-perf.md) | 定义目标→选择工具→建立基线→负载测试→定位瓶颈 |
361
+ | | `/test-security` | [test-security.md](docs/flows/test-security.md) | 确认授权→爬取→主动扫描→修复→报告 |
362
+ | **工程** | `/refactor` | [refactor.md](docs/flows/refactor.md) | R1边界→R2基线→R3重构→R4漂移检测→R5报告 (5门) |
363
+ | | `/hotfix` | [hotfix.md](docs/flows/hotfix.md) | H0声明→H1修复→H2验证→H3审计 (4门) |
364
+ | | `/migrate` | [migrate.md](docs/flows/migrate.md) | M1规则→M2迁移→M3编译→M4 Lint (4门) |
365
+ | | `/evaluate` | [evaluate.md](docs/flows/evaluate.md) | E0标准→E1原型→E2指标→E3报告 (4门) |
366
+ | | `/debug` | [debug.md](docs/flows/debug.md) | D0收集→D1复现→D2调试→D3诊断→D4报告 (5门) |
340
367
 
341
368
  > 所有流程图使用 `flowchart TD` 统一风格。读取 `docs/flows/` 目录下的 `.md` 文件可在支持 Mermaid 的 Markdown 渲染器中查看。
342
369
 
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jarvis-agent-factory",
3
- "version": "3.45.0",
3
+ "version": "3.45.2",
4
4
  "description": "Jarvis Agent Factory CLI — Claude Code 多智能体 AI 编程助手配置安装器 | Multi-agent AI coding assistant config installer for Claude Code",
5
5
  "keywords": [
6
6
  "jarvis",
@@ -114,27 +114,55 @@ function installHooks(platform, target, isGlobal) {
114
114
  }
115
115
  catch { }
116
116
  }
117
+ const snapshot = JSON.stringify(existing); // 变更前快照
118
+ // 合并 permissions.allow —— 从模板读取,与现有列表去重合并(只新增不删除)
119
+ const tmplSettingsPath = resolve(TEMPLATES_DIR, 'platforms', 'claude', 'settings.json');
120
+ let permAdded = 0;
121
+ if (existsSync(tmplSettingsPath)) {
122
+ try {
123
+ const tmplSettings = JSON.parse(readFileSync(tmplSettingsPath, 'utf-8'));
124
+ if (tmplSettings.permissions?.allow && Array.isArray(tmplSettings.permissions.allow)) {
125
+ if (!existing.permissions)
126
+ existing.permissions = {};
127
+ if (!existing.permissions.allow)
128
+ existing.permissions.allow = [];
129
+ const existingSet = new Set(existing.permissions.allow);
130
+ for (const entry of tmplSettings.permissions.allow) {
131
+ if (!existingSet.has(entry)) {
132
+ existing.permissions.allow.push(entry);
133
+ permAdded++;
134
+ }
135
+ }
136
+ }
137
+ }
138
+ catch { /* 模板解析失败不影响主流程 */ }
139
+ }
140
+ // 合并 hooks —— 保留用户自定义,补充系统必需的
141
+ let hookMerged = 0;
117
142
  if (!existing.hooks) {
118
143
  existing.hooks = hookJson;
119
- writeFileSync(file, JSON.stringify(existing, null, 2));
120
- console.log(' 🔗 hooks → .claude/settings.json');
144
+ hookMerged = Object.keys(hookJson).length;
121
145
  }
122
146
  else {
123
- // 已有 hooks:合并缺失项(保留用户自定义,补充系统必需的)
124
- let merged = false;
125
147
  for (const [key, val] of Object.entries(hookJson)) {
126
148
  if (!existing.hooks[key]) {
127
149
  existing.hooks[key] = val;
128
- merged = true;
150
+ hookMerged++;
129
151
  }
130
152
  }
131
- if (merged) {
132
- writeFileSync(file, JSON.stringify(existing, null, 2));
133
- console.log(' 🔗 hooks → .claude/settings.json (merged new keys)');
134
- }
135
- else {
136
- console.log(' ~ hooks already configured');
137
- }
153
+ }
154
+ // 单次写入:只有当实际有变更时才写文件
155
+ if (JSON.stringify(existing) !== snapshot) {
156
+ writeFileSync(file, JSON.stringify(existing, null, 2));
157
+ const parts = [];
158
+ if (permAdded > 0)
159
+ parts.push(`${permAdded} permissions`);
160
+ if (hookMerged > 0)
161
+ parts.push(`${hookMerged} hooks keys`);
162
+ console.log(` 🔗 ${parts.join(' + ')} → .claude/settings.json`);
163
+ }
164
+ else {
165
+ console.log(' ~ hooks & permissions already configured');
138
166
  }
139
167
  }
140
168
  if (platform === 'opencode') {
@@ -209,7 +237,7 @@ function installMcp(platform, target, force) {
209
237
  writeMcpJson(dest, content, force, t.file);
210
238
  }
211
239
  else {
212
- // Claude JSON: .mcp.json at project root — 使用共享模块
240
+ // Claude JSON: .mcp.json at project root — 深度合并所有 MCP server
213
241
  const dest = target ? resolve(target, t.file) : mcpGlobalDest(platform);
214
242
  const projectRoot = dirname(dest);
215
243
  if (!existsSync(projectRoot))
@@ -219,21 +247,23 @@ function installMcp(platform, target, force) {
219
247
  const existingConfig = readMcpConfig(projectRoot);
220
248
  if (existingConfig && !force) {
221
249
  const eKey = existingConfig.mcpServers ? 'mcpServers' : 'mcp';
222
- // 检查 jarvis-engine 是否已存在
223
- const existingServers = eKey === 'mcpServers'
224
- ? existingConfig.mcpServers
225
- : existingConfig[eKey];
226
- if (existingServers && existingServers['jarvis-engine']) {
250
+ const existingServers = existingConfig[eKey] || {};
251
+ // 深度合并:已有 server 保留用户配置,缺失的从模板添加,用户自定义的绝不删除
252
+ let added = 0;
253
+ for (const [serverName, serverConfig] of Object.entries(nJson[nKey] || {})) {
254
+ if (!existingServers[serverName]) {
255
+ existingServers[serverName] = serverConfig;
256
+ added++;
257
+ }
258
+ }
259
+ if (added > 0) {
260
+ existingConfig[eKey] = existingServers;
261
+ writeMcpConfig(projectRoot, existingConfig);
262
+ console.log(` ~ ${t.file.padEnd(22)} merged ${added} new MCP server(s)`);
263
+ }
264
+ else {
227
265
  console.log(` ~ ${t.file.padEnd(22)} already configured`);
228
- return;
229
266
  }
230
- // 合并:添加 jarvis-engine 到现有配置
231
- const merged = { ...existingConfig };
232
- if (!merged[eKey])
233
- merged[eKey] = {};
234
- merged[eKey]['jarvis-engine'] = nJson[nKey]['jarvis-engine'];
235
- writeMcpConfig(projectRoot, merged);
236
- console.log(` ~ ${t.file.padEnd(22)} merged jarvis-engine`);
237
267
  }
238
268
  else {
239
269
  // 新安装、force 覆盖、或原有文件 JSON 无效
@@ -242,30 +272,35 @@ function installMcp(platform, target, force) {
242
272
  }
243
273
  }
244
274
  }
245
- /** Write JSON MCP config; skip if exists and !force */
275
+ /** Write JSON MCP config; deep merge add missing servers, keep existing user configs */
246
276
  function writeMcpJson(dest, content, force, label) {
247
277
  const dir = dirname(dest);
248
278
  if (!existsSync(dir))
249
279
  mkdirSync(dir, { recursive: true });
250
280
  if (existsSync(dest) && !force) {
251
- // Check if content is different
252
281
  const existing = readFileSync(dest, 'utf-8');
253
282
  try {
254
283
  const eJson = JSON.parse(existing);
255
284
  const nJson = JSON.parse(content);
256
285
  const eKey = eJson.mcpServers ? 'mcpServers' : 'mcp';
257
286
  const nKey = nJson.mcpServers ? 'mcpServers' : 'mcp';
258
- // Check if jarvis-engine already exists in existing config
259
- if (eJson[eKey] && eJson[eKey]['jarvis-engine']) {
287
+ // 深度合并:逐个 server 检查,缺失则添加,已有则保留用户配置,用户自定义的绝不删除
288
+ const existingServers = eJson[eKey] || {};
289
+ let added = 0;
290
+ for (const [serverName, serverConfig] of Object.entries(nJson[nKey] || {})) {
291
+ if (!existingServers[serverName]) {
292
+ existingServers[serverName] = serverConfig;
293
+ added++;
294
+ }
295
+ }
296
+ if (added > 0) {
297
+ eJson[eKey] = existingServers;
298
+ writeFileSync(dest, JSON.stringify(eJson, null, 2) + '\n');
299
+ console.log(` ~ ${label.padEnd(22)} merged ${added} new MCP server(s)`);
300
+ }
301
+ else {
260
302
  console.log(` ~ ${label.padEnd(22)} already configured`);
261
- return;
262
303
  }
263
- // Merge: add jarvis-engine to existing
264
- if (!eJson[eKey])
265
- eJson[eKey] = {};
266
- eJson[eKey]['jarvis-engine'] = nJson[nKey]['jarvis-engine'];
267
- writeFileSync(dest, JSON.stringify(eJson, null, 2) + '\n');
268
- console.log(` ~ ${label.padEnd(22)} merged jarvis-engine`);
269
304
  return;
270
305
  }
271
306
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,260 @@
1
+ ---
2
+ name: debug
3
+ description: 调试诊断指令——D0收集信息→D1复现用例→D2调试会话→D3交互诊断→D4输出报告,5Gate诊断流程
4
+ model: deepseek-v4-pro
5
+ argument-hint: [异常描述或Bug报告]
6
+ allowed-tools: Read, Glob, Grep, Bash, Write, Edit, Skill
7
+ ---
8
+
9
+ # 调试诊断
10
+
11
+ 立即执行以下初始化步骤:
12
+
13
+ ## 步骤 0:加载技能 + 注册引擎
14
+ ```
15
+ Skill("behavioral-guidelines")
16
+ Skill("debugging-and-error-recovery")
17
+ ```
18
+
19
+ **引擎会话注册**(硬约束——引擎确保调试操作按 Gate 权限执行):
20
+ - `mcp__jarvis-engine__session_join({ platform: "claude", pipeline_type: "debug", task_name: "调试: <异常简述>" })`
21
+ - 每个 Gate 开始前调用 `mcp__jarvis-engine__pipeline_guide()` 获取当前 Gate 允许的操作
22
+ - D2/D3 阶段写调试代码前 `gate_check({ operation: "write_code" })`
23
+
24
+ 代码注释语言:遵从 `behavioral-guidelines` 准则 5(注释语言约定)。
25
+
26
+ ---
27
+
28
+ ## D0:收集异常信息
29
+
30
+ **Gate 检查条件**:异常描述已记录,日志/堆栈/环境信息已收集
31
+
32
+ ### 步骤
33
+ 1. 记录异常基本信息:
34
+ ```
35
+ ## 异常信息
36
+ - 异常类型:TypeError / RangeError / Panic / Segmentation Fault
37
+ - 异常消息:完整错误消息
38
+ - 发生时间:YYYY-MM-DD HH:MM
39
+ - 频率:必现 / 间歇性 / 偶发
40
+ ```
41
+
42
+ 2. 收集堆栈追踪:
43
+ ```
44
+ Error: Cannot read property 'name' of undefined
45
+ at UserService.getProfile (src/services/user.ts:42:18)
46
+ at UserController.profile (src/controllers/user.ts:15:10)
47
+ at Layer.handle (node_modules/express/...)
48
+ ```
49
+
50
+ 3. 收集日志证据:
51
+ ```bash
52
+ # 应用日志
53
+ tail -n 200 logs/app.log | grep -A 5 -B 5 "ERROR"
54
+
55
+ # 系统日志
56
+ journalctl -u myapp -n 100 --no-pager
57
+ ```
58
+
59
+ 4. 收集环境信息:
60
+ | 项目 | 值 |
61
+ |------|-----|
62
+ | Node.js 版本 | `node -v` |
63
+ | 操作系统 | `uname -a` |
64
+ | 依赖版本 | `npm ls <package>` |
65
+ | 数据库版本 | `psql --version` |
66
+ | 最近部署 | `git log --oneline -5` |
67
+
68
+ 5. 输出 `docs/debug/YYYY-MM-DD-error-collection.md`
69
+
70
+ **引擎推进**:`mcp__jarvis-engine__advance_gate({ gate: "D1" })`
71
+
72
+ ---
73
+
74
+ ## D1:生成最小复现用例
75
+
76
+ **Gate 检查条件**:最小复现用例已生成,可稳定复现异常
77
+
78
+ ### 步骤
79
+ 1. 从 D0 收集的信息出发,构建最小复现脚本:
80
+ ```javascript
81
+ // reproduce.js — 最小复现用例
82
+ const { getUser } = require('./src/services/user');
83
+
84
+ // Arrange: 构造触发异常的条件
85
+ const db = { users: { findById: () => null } }; // 模拟返回 null
86
+
87
+ // Act: 执行故障路径
88
+ try {
89
+ const result = getUser('non-existent-id', db);
90
+ console.log('UNEXPECTED: succeeded', result);
91
+ } catch (err) {
92
+ // Assert: 确认异常被触发
93
+ console.log('EXPECTED: exception thrown', err.message);
94
+ }
95
+ ```
96
+
97
+ 2. 验证复现稳定性:
98
+ - 连续运行 5 次,确认每次都能复现
99
+ - 如果无法 100% 复现 → 增加日志探针等待下次出现
100
+
101
+ 3. **复现成功标准**:
102
+ - 异常类型与 D0 一致
103
+ - 堆栈路径与 D0 匹配
104
+ - 触发条件明确可控
105
+
106
+ **引擎推进**:`mcp__jarvis-engine__advance_gate({ gate: "D2" })`
107
+
108
+ ---
109
+
110
+ ## D2:启动调试会话
111
+
112
+ **Gate 检查条件**:调试会话已启动,断点/日志已插入关键路径
113
+
114
+ ### 步骤
115
+ 1. 根据运行环境选择调试方式:
116
+
117
+ **Node.js 调试:**
118
+ ```bash
119
+ node --inspect-brk reproduce.js
120
+ # Chrome DevTools: chrome://inspect
121
+ ```
122
+
123
+ **VS Code 调试(launch.json):**
124
+ ```json
125
+ {
126
+ "type": "node",
127
+ "request": "launch",
128
+ "name": "Debug Reproduce",
129
+ "program": "${workspaceFolder}/reproduce.js",
130
+ "stopOnEntry": true
131
+ }
132
+ ```
133
+
134
+ **日志探针(无法使用调试器时):**
135
+ ```javascript
136
+ // 在关键路径插入临时日志
137
+ function getUser(id, db) {
138
+ console.log(`[DEBUG] getUser id=${id} db.users=${!!db.users}`);
139
+ const user = db.users.findById(id);
140
+ console.log(`[DEBUG] getUser result=${JSON.stringify(user)}`);
141
+ if (!user) throw new Error('...'); // 故障点
142
+ return user.profile; // D0 异常点
143
+ }
144
+ ```
145
+
146
+ 2. 在关键路径设置断点:
147
+ - 异常抛出点
148
+ - 数据转换点(输入 → 处理 → 输出)
149
+ - 条件分支入口
150
+
151
+ **引擎推进**:`mcp__jarvis-engine__advance_gate({ gate: "D3" })`
152
+
153
+ ---
154
+
155
+ ## D3:交互式诊断
156
+
157
+ **Gate 检查条件**:交互式诊断完成,根因已定位
158
+
159
+ ### 诊断方法
160
+
161
+ #### 方法 1:变量追踪
162
+ 在断点处检查:
163
+ - 变量值是否符合预期
164
+ - 类型是否正确(typeof / instanceof)
165
+ - 对象属性是否存在
166
+ - 异步状态是否已完成
167
+
168
+ #### 方法 2:调用链回溯
169
+ 从异常点向上回溯:
170
+ - 谁调用了这个函数?参数从哪来?
171
+ - 参数在传递过程中是否被修改?
172
+ - 中间件/拦截器是否改变了上下文?
173
+
174
+ #### 方法 3:二分排除(多变更时)
175
+ ```
176
+ 1. 找到"最后一次正常"和"第一次异常"的提交
177
+ 2. 取中间点,测试是否异常
178
+ 3. 如果异常 → 问题在前半段
179
+ 4. 如果正常 → 问题在后半段
180
+ 5. 重复直到定位到具体提交和文件
181
+ ```
182
+
183
+ #### 方法 4:状态差异分析
184
+ 对比正常路径和异常路径的状态差异:
185
+ | 状态变量 | 正常路径值 | 异常路径值 |
186
+ |---------|-----------|-----------|
187
+ | db.users | { findById: fn } | undefined |
188
+ | id | 'valid-id' | 'non-existent' |
189
+ | user | { profile: ... } | null |
190
+
191
+ ### 诊断结论模板
192
+ ```
193
+ ## 根因诊断
194
+ - 故障文件:src/services/user.ts:42
195
+ - 根因类型:空引用 / 类型错误 / 竞态条件 / 配置缺失
196
+ - 直接原因:db.users 在模块热重载后变为 undefined
197
+ - 触发条件:当 <具体条件> 时,<异常路径> 被执行
198
+ - 影响范围:所有调用 getUser() 的请求
199
+ ```
200
+
201
+ **引擎推进**:`mcp__jarvis-engine__advance_gate({ gate: "D4" })`
202
+
203
+ ---
204
+
205
+ ## D4:输出诊断报告
206
+
207
+ **Gate 检查条件**:诊断报告已产出,含根因分析+修复方案+预防建议
208
+
209
+ ### 步骤
210
+ 输出 `docs/debug/YYYY-MM-DD-debug-report.md`:
211
+ ```markdown
212
+ # 调试诊断报告
213
+ ## 异常概述
214
+ - 异常类型、消息、发生时间
215
+
216
+ ## D0 证据收集
217
+ - 堆栈追踪
218
+ - 日志摘录
219
+ - 环境信息
220
+
221
+ ## D1 复现用例
222
+ - 最小复现脚本(code block)
223
+ - 复现率:100% / 80%
224
+
225
+ ## D2 调试会话
226
+ - 调试方式:VS Code / Chrome DevTools / 日志探针
227
+ - 断点位置列表
228
+
229
+ ## D3 根因分析
230
+ - 故障文件:行号
231
+ - 根因类型
232
+ - 直接原因
233
+ - 触发条件
234
+ - 影响范围
235
+
236
+ ## 修复方案
237
+ - 具体修改方案
238
+ - 修复验证方式
239
+ - 回归测试建议
240
+
241
+ ## 预防建议
242
+ - [ ] 添加类型校验防止空引用
243
+ - [ ] 添加单元测试覆盖此边界
244
+ - [ ] 添加错误监控告警
245
+ ```
246
+
247
+ ## 清理
248
+ - 删除临时日志输出(如果有)
249
+ - 删除复现脚本(或保留为回归测试)
250
+ - 确认无遗留调试代码
251
+
252
+ ---
253
+
254
+ ## 红线
255
+ - D0 证据不全就开始假设根因(没有证据的诊断 = 猜测)
256
+ - 直接改代码碰运气("试试这样行不行"——先诊断再修复)
257
+ - 使用 `console.log` 代替结构化调试(临时日志容易遗漏,用断点更精确)
258
+ - 诊断过程中修改无关代码(调试是调查,不是修复)
259
+ - 不记录诊断过程(下次类似问题又要从头查)
260
+ - 不清除调试代码(残留的 console.log 污染日志/性能)