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 +31 -4
- package/dist/package.json +1 -1
- package/dist/src/install.js +72 -37
- package/dist/src/install.js.map +1 -1
- package/dist/src/templates/platforms/claude/commands/debug.md +260 -0
- package/dist/src/templates/platforms/claude/commands/evaluate.md +177 -0
- package/dist/src/templates/platforms/claude/commands/hotfix.md +157 -0
- package/dist/src/templates/platforms/claude/commands/migrate.md +154 -0
- package/dist/src/templates/platforms/claude/commands/refactor.md +159 -0
- package/dist/src/templates/platforms/claude/commands/test-e2e.md +137 -0
- package/dist/src/templates/platforms/claude/commands/test-integration.md +125 -0
- package/dist/src/templates/platforms/claude/commands/test-perf.md +159 -0
- package/dist/src/templates/platforms/claude/commands/test-security.md +140 -0
- package/dist/src/templates/platforms/claude/commands/test-unit.md +116 -0
- package/dist/src/templates/platforms/claude/skills/debugging-deep/SKILL.md +269 -0
- package/dist/src/templates/platforms/claude/skills/perf-testing/SKILL.md +225 -0
- package/dist/src/templates/platforms/claude/skills/refactoring/SKILL.md +202 -0
- package/dist/src/templates/platforms/claude/skills/security-testing/SKILL.md +229 -0
- package/dist/src/templates/platforms/claude/skills/test-data-factory/SKILL.md +192 -0
- package/dist/web/index.html +59 -59
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Jarvis Agent Factory · 贾维斯智能体工厂
|
|
2
2
|
|
|
3
3
|
[](./LICENSE)
|
|
4
|
-
[](https://github.com/Wjl1224734792/Jarvis-Agent-Factory/releases)
|
|
5
5
|
[](https://www.npmjs.com/package/jarvis-agent-factory)
|
|
6
6
|
[](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.
|
|
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 |
|
|
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
package/dist/src/install.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
150
|
+
hookMerged++;
|
|
129
151
|
}
|
|
130
152
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
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;
|
|
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
|
-
//
|
|
259
|
-
|
|
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 {
|
package/dist/src/install.js.map
CHANGED
|
@@ -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 污染日志/性能)
|