feihong-code 7.0.0 → 7.5.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 (149) hide show
  1. package/.github/workflows/ci.yml +180 -140
  2. package/.github/workflows/release.yml +200 -0
  3. package/CHANGELOG.md +94 -65
  4. package/README.md +609 -586
  5. package/dist/agent/browser-agent.js +354 -0
  6. package/dist/agent/browser-agent.js.map +1 -0
  7. package/dist/agent/change-manager.js +433 -0
  8. package/dist/agent/change-manager.js.map +1 -0
  9. package/dist/agent/code-rag.js +293 -0
  10. package/dist/agent/code-rag.js.map +1 -0
  11. package/dist/agent/code-writer.js +13 -1
  12. package/dist/agent/code-writer.js.map +1 -1
  13. package/dist/agent/completion-engine.js +553 -0
  14. package/dist/agent/completion-engine.js.map +1 -0
  15. package/dist/agent/completion-postprocess.js +109 -0
  16. package/dist/agent/completion-postprocess.js.map +1 -0
  17. package/dist/agent/context-budget.js +121 -0
  18. package/dist/agent/context-budget.js.map +1 -0
  19. package/dist/agent/context-compactor.js +235 -10
  20. package/dist/agent/context-compactor.js.map +1 -1
  21. package/dist/agent/custom-agent.js +368 -0
  22. package/dist/agent/custom-agent.js.map +1 -0
  23. package/dist/agent/design-to-code.js +218 -0
  24. package/dist/agent/design-to-code.js.map +1 -0
  25. package/dist/agent/event-driven-agent.js +359 -0
  26. package/dist/agent/event-driven-agent.js.map +1 -0
  27. package/dist/agent/git-integration.js +324 -0
  28. package/dist/agent/git-integration.js.map +1 -0
  29. package/dist/agent/layered-memory.js +329 -0
  30. package/dist/agent/layered-memory.js.map +1 -0
  31. package/dist/agent/lint.js +121 -0
  32. package/dist/agent/lint.js.map +1 -0
  33. package/dist/agent/multi-agent.js +359 -0
  34. package/dist/agent/multi-agent.js.map +1 -0
  35. package/dist/agent/orchestrator.js +136 -25
  36. package/dist/agent/orchestrator.js.map +1 -1
  37. package/dist/agent/prompts.js +54 -54
  38. package/dist/agent/quality-gate.js +139 -0
  39. package/dist/agent/quality-gate.js.map +1 -1
  40. package/dist/agent/self-correction.js +274 -0
  41. package/dist/agent/self-correction.js.map +1 -0
  42. package/dist/agent/self-heal.js +47 -17
  43. package/dist/agent/self-heal.js.map +1 -1
  44. package/dist/agent/solo-agent.js +321 -0
  45. package/dist/agent/solo-agent.js.map +1 -0
  46. package/dist/agent/symbol-index.js +258 -28
  47. package/dist/agent/symbol-index.js.map +1 -1
  48. package/dist/agent/team-collaboration.js +252 -0
  49. package/dist/agent/team-collaboration.js.map +1 -0
  50. package/dist/agent/type-checker.js +229 -0
  51. package/dist/agent/type-checker.js.map +1 -0
  52. package/dist/cli/commands.js +9 -0
  53. package/dist/cli/commands.js.map +1 -1
  54. package/dist/cli/index.js +9 -0
  55. package/dist/cli/index.js.map +1 -1
  56. package/dist/cli/multi-pane-tui.js +217 -0
  57. package/dist/cli/multi-pane-tui.js.map +1 -0
  58. package/dist/cli/run.js +130 -40
  59. package/dist/cli/run.js.map +1 -1
  60. package/dist/cli/tui-run.js +79 -0
  61. package/dist/cli/tui-run.js.map +1 -0
  62. package/dist/cli/tui.js.map +1 -1
  63. package/dist/cli/version.js +1 -1
  64. package/dist/integrations/collaboration.js +219 -0
  65. package/dist/integrations/collaboration.js.map +1 -0
  66. package/dist/integrations/figma.js +307 -0
  67. package/dist/integrations/figma.js.map +1 -0
  68. package/dist/integrations/sso.js +327 -0
  69. package/dist/integrations/sso.js.map +1 -0
  70. package/dist/knowledge/library.js +301 -0
  71. package/dist/knowledge/library.js.map +1 -0
  72. package/dist/lsp/lsp-client.js +183 -0
  73. package/dist/lsp/lsp-client.js.map +1 -0
  74. package/dist/lsp/lsp-service.js +159 -0
  75. package/dist/lsp/lsp-service.js.map +1 -0
  76. package/dist/plugins/manager.js +380 -0
  77. package/dist/plugins/manager.js.map +1 -0
  78. package/dist/runtime/event-log.js.map +1 -1
  79. package/dist/shared/i18n.js +108 -100
  80. package/dist/shared/i18n.js.map +1 -1
  81. package/dist/tools/browser/browser.tool.js +217 -0
  82. package/dist/tools/browser/browser.tool.js.map +1 -0
  83. package/dist/tools/generator/code-generator.js +40 -40
  84. package/dist/tools/generator/test-generator.js +9 -9
  85. package/dist/tools/index.js +2 -0
  86. package/dist/tools/index.js.map +1 -1
  87. package/dist/tools/shell/exec.js +73 -11
  88. package/dist/tools/shell/exec.js.map +1 -1
  89. package/dist/tools/shell/run-shell.tool.js +8 -2
  90. package/dist/tools/shell/run-shell.tool.js.map +1 -1
  91. package/dist/training/completion-evaluator.js +213 -0
  92. package/dist/training/completion-evaluator.js.map +1 -0
  93. package/dist/training/fim-data.js +248 -0
  94. package/dist/training/fim-data.js.map +1 -0
  95. package/dist/voice/voice-programming.js +223 -0
  96. package/dist/voice/voice-programming.js.map +1 -0
  97. package/dist/web/extra-apis.js +440 -0
  98. package/dist/web/extra-apis.js.map +1 -0
  99. package/dist/web/public/css/style.css +1729 -1671
  100. package/dist/web/public/index.html +1242 -990
  101. package/dist/web/public/js/api.js +555 -382
  102. package/dist/web/public/js/app.js +2210 -2210
  103. package/dist/web/public/js/mock-api.js +234 -0
  104. package/dist/web/public/js/monaco-editor.js +363 -0
  105. package/dist/web/public/js/ui.js +2251 -1059
  106. package/dist/web/public/js/utils.js +214 -214
  107. package/dist/web/public/manifest.json +59 -0
  108. package/dist/web/public/service-worker.js +173 -0
  109. package/dist/web/server.js +1116 -45
  110. package/dist/web/server.js.map +1 -1
  111. package/dist/web/task-queue.js +22 -2
  112. package/dist/web/task-queue.js.map +1 -1
  113. package/docs/BENCHMARK_REPORT_en.md +386 -329
  114. package/docs/BENCHMARK_REPORT_zh.md +386 -329
  115. package/docs/DPA.md +63 -0
  116. package/docs/DPA/346/225/260/346/215/256/345/244/204/347/220/206/345/215/217/350/256/256/346/250/241/346/235/277_v1.0.md +67 -0
  117. package/docs/SECURITY_WHITEPAPER.md +74 -0
  118. package/docs/SWE_BENCH_REPORT.md +55 -0
  119. package/docs/TECHNICAL_SPEC_en.md +292 -292
  120. package/docs/TECHNICAL_SPEC_zh.md +292 -292
  121. package/docs/UPDATE_NOTES_en.md +159 -159
  122. package/docs/UPDATE_NOTES_zh.md +159 -159
  123. package/docs/UPGRADE_7.2.0.md +309 -0
  124. package/docs/UPGRADE_GUIDE_7_5.md +86 -0
  125. package/docs/geo-feihong-code.html +391 -0
  126. package/docs//345/205/250/351/235/242/345/244/215/347/233/230_50/350/275/256/346/267/261/345/272/246/345/256/241/350/256/241_v7.2.0.md +208 -0
  127. package/docs//345/205/250/351/235/242/345/244/215/347/233/230_6/351/241/271/351/207/215/347/202/271/346/240/270/346/237/245_v7.2.0.md +152 -0
  128. package/docs//345/205/250/351/235/242/345/244/215/347/233/230_/350/277/220/350/241/214/346/227/266/345/256/236/346/265/213/347/211/210_v7.2.0.md +271 -0
  129. package/docs//345/220/210/350/247/204/350/256/244/350/257/201/345/207/206/345/244/207/346/270/205/345/215/225_v7.2.0.md +59 -0
  130. package/docs//345/256/211/345/205/250/347/231/275/347/232/256/344/271/246_v7.2.0.md +82 -0
  131. package/electron/main.js +404 -404
  132. package/package.json +175 -167
  133. package/templates/skills/api-design/SKILL.md +27 -0
  134. package/templates/skills/code-review/SKILL.md +35 -0
  135. package/templates/skills/dependency-upgrade/SKILL.md +29 -0
  136. package/templates/skills/doc-gen/SKILL.md +29 -0
  137. package/templates/skills/git-flow/SKILL.md +26 -0
  138. package/templates/skills/onboarding/SKILL.md +27 -0
  139. package/templates/skills/performance/SKILL.md +29 -0
  140. package/templates/skills/refactor/SKILL.md +28 -0
  141. package/templates/skills/security-audit/SKILL.md +28 -0
  142. package/templates/skills/test-gen/SKILL.md +30 -0
  143. package/tool-schema.json +197 -197
  144. package/dist/hello.js +0 -14
  145. package/dist/hello.js.map +0 -1
  146. package/dist/self-evolve/hook.ts +0 -80
  147. package/dist/self-evolve/manager.d.ts +0 -8
  148. package/dist/web/web-config.js +0 -143
  149. package/dist/web/web-config.js.map +0 -1
@@ -6,6 +6,10 @@ const planner_1 = require("./planner");
6
6
  const repo_context_1 = require("./repo-context");
7
7
  const skill_loader_1 = require("../skills/skill-loader");
8
8
  const logger_1 = require("../shared/logger");
9
+ const symbol_index_1 = require("./symbol-index");
10
+ const code_rag_1 = require("./code-rag");
11
+ const fs_1 = require("fs");
12
+ const path_1 = require("path");
9
13
  const self_heal_1 = require("./self-heal");
10
14
  const context_compactor_1 = require("./context-compactor");
11
15
  const experience_1 = require("./experience");
@@ -49,6 +53,42 @@ class Orchestrator {
49
53
  systemPrompt += repoPrompt;
50
54
  if (skillIndex)
51
55
  systemPrompt += skillIndex;
56
+ // P1-2: 分层记忆——从项目记忆中召回相关历史任务,注入 system prompt
57
+ if (this.deps.layeredMemory) {
58
+ try {
59
+ const { systemPrompt: memoryPrompt } = this.deps.layeredMemory.buildContext(goal);
60
+ if (memoryPrompt) {
61
+ systemPrompt += '\n\n' + memoryPrompt;
62
+ }
63
+ }
64
+ catch (e) {
65
+ logger_1.logger.warn('layered memory recall failed', { error: e instanceof Error ? e.message : String(e) });
66
+ }
67
+ }
68
+ // P0-2: RAG 代码检索增强——基于任务描述自动加载相关文件上下文
69
+ const ragEnabled = this.deps.ragEnabled !== false;
70
+ if (ragEnabled) {
71
+ try {
72
+ let graph = this.deps.codeGraph;
73
+ if (!graph) {
74
+ // 优先加载缓存,缓存不存在或根路径不匹配则全量构建并缓存
75
+ graph = (0, symbol_index_1.loadCachedCodeGraph)(cwd) ?? (0, symbol_index_1.buildCodeGraph)(cwd, { maxFiles: 3000 });
76
+ (0, symbol_index_1.cacheCodeGraph)(graph);
77
+ }
78
+ else {
79
+ // 传入了预构建图谱,做一次增量更新
80
+ graph = (0, symbol_index_1.incrementalUpdate)(graph, cwd, { maxFiles: 3000 });
81
+ }
82
+ const ragContext = (0, code_rag_1.buildRagContext)(graph, goal, { maxCoreFiles: 5, maxRelatedFiles: 8, maxFileChars: 6000 });
83
+ if (ragContext) {
84
+ systemPrompt += '\n\n' + ragContext;
85
+ await eventLog.append('rag.context', { keywords: goal.slice(0, 100), tokens: ragContext.length });
86
+ }
87
+ }
88
+ catch (e) {
89
+ logger_1.logger.warn('RAG context build failed', { error: e instanceof Error ? e.message : String(e) });
90
+ }
91
+ }
52
92
  const { messages: initMessages, plan } = (0, planner_1.planTask)(goal);
53
93
  messages = [{ role: 'system', content: systemPrompt }, ...initMessages];
54
94
  session.append(messages[0]);
@@ -198,18 +238,32 @@ class Orchestrator {
198
238
  await emitCheckpoint('running');
199
239
  // M6: 上下文压缩
200
240
  if ((0, context_compactor_1.shouldCompact)(messages, compactThreshold)) {
201
- const { messages: compacted, stats } = (0, context_compactor_1.compactContext)(messages, 10);
202
- messages = compacted;
203
- await eventLog.append('context.compact', { ...stats });
204
- this.deps.onEvent?.({
205
- type: 'context.compact',
206
- originalLength: stats.originalLength,
207
- compressedLength: stats.compressedLength,
208
- });
209
- logger_1.logger.info('context compaction applied', {
210
- originalLength: stats.originalLength,
211
- compressedLength: stats.compressedLength,
212
- });
241
+ // P1-2: 如果启用了分层记忆,先同步消息并尝试智能压缩
242
+ if (this.deps.layeredMemory) {
243
+ this.deps.layeredMemory.appendAll(messages);
244
+ if (this.deps.layeredMemory.compressIfNeeded()) {
245
+ const { messages: layeredMessages } = this.deps.layeredMemory.buildContext();
246
+ if (layeredMessages.length > 0 && layeredMessages.length < messages.length) {
247
+ messages = layeredMessages;
248
+ await eventLog.append('context.compact', { originalLength: messages.length, compressedLength: layeredMessages.length, layered: true });
249
+ }
250
+ }
251
+ }
252
+ // 回退到普通压缩(如果分层记忆未启用或未压缩)
253
+ if (!this.deps.layeredMemory || (0, context_compactor_1.shouldCompact)(messages, compactThreshold)) {
254
+ const { messages: compacted, stats } = (0, context_compactor_1.compactContext)(messages, 10);
255
+ messages = compacted;
256
+ await eventLog.append('context.compact', { ...stats });
257
+ this.deps.onEvent?.({
258
+ type: 'context.compact',
259
+ originalLength: stats.originalLength,
260
+ compressedLength: stats.compressedLength,
261
+ });
262
+ logger_1.logger.info('context compaction applied', {
263
+ originalLength: stats.originalLength,
264
+ compressedLength: stats.compressedLength,
265
+ });
266
+ }
213
267
  }
214
268
  }
215
269
  if (baselineIterations + calls >= maxIter && !finalAnswer) {
@@ -242,6 +296,16 @@ class Orchestrator {
242
296
  experiencesExtracted = experiences.length;
243
297
  await eventLog.append('experience.extracted', { count: experiencesExtracted, selfHealed });
244
298
  }
299
+ // P1-2: 分层记忆——任务完成时持久化到项目记忆(供后续任务召回)
300
+ if (this.deps.layeredMemory && finalAnswer) {
301
+ try {
302
+ this.deps.layeredMemory.appendAll(messages);
303
+ this.deps.layeredMemory.persistToProjectMemory(goal, []);
304
+ }
305
+ catch (e) {
306
+ logger_1.logger.warn('layered memory persist failed', { error: e instanceof Error ? e.message : String(e) });
307
+ }
308
+ }
245
309
  await emitCheckpoint('done');
246
310
  await eventLog.append('session.end', {
247
311
  iterations: baselineIterations + calls,
@@ -315,6 +379,28 @@ class Orchestrator {
315
379
  // 成功结果写入缓存(失败的不缓存,允许模型重试修复)
316
380
  if (result.ok) {
317
381
  this.toolResultCache.set(cacheKey, { ok: result.ok, output: result.output, error: result.error });
382
+ // P3-1: write_file/edit_file 工具执行成功后自动暂存到变更面板
383
+ if (this.deps.stageChange && (tc.name === 'write_file' || tc.name === 'edit_file')) {
384
+ try {
385
+ const args = tc.arguments;
386
+ const filePath = typeof args?.path === 'string' ? args.path : '';
387
+ if (filePath) {
388
+ const absPath = (0, path_1.join)(ctx.cwd, filePath);
389
+ // write_file 从参数取 content;edit_file 读取磁盘最新内容
390
+ let content = '';
391
+ if (tc.name === 'write_file' && typeof args?.content === 'string') {
392
+ content = args.content;
393
+ }
394
+ else {
395
+ content = (0, fs_1.readFileSync)(absPath, 'utf8');
396
+ }
397
+ this.deps.stageChange(absPath, content);
398
+ }
399
+ }
400
+ catch (e) {
401
+ logger_1.logger.warn('stageChange failed', { error: e instanceof Error ? e.message : String(e) });
402
+ }
403
+ }
318
404
  }
319
405
  await ctx.eventLog.append('tool.result', {
320
406
  name: tc.name,
@@ -332,7 +418,10 @@ class Orchestrator {
332
418
  }
333
419
  return roundErrors;
334
420
  }
335
- /** 错误检测与自愈:返回 'break'(达重试上限)/ 'continue'(已注入反思)/ 'none'(未触发) */
421
+ /** 错误检测与自愈:返回 'break'(达重试上限)/ 'continue'(已注入反思)/ 'none'(未触发)
422
+ * 累计自愈上限 MAX_TOTAL_SELF_HEALS = 10:防止模型在同一问题上无限死循环,
423
+ * 超过后强制终止并给出明确提示,引导用户换思路或简化目标。 */
424
+ static MAX_TOTAL_SELF_HEALS = 10;
336
425
  async handleRecovery(_msg, input) {
337
426
  const { messages } = input;
338
427
  const { failed, errors } = (0, self_heal_1.countConsecutiveErrors)(messages, input.maxRetryErrors);
@@ -357,6 +446,27 @@ class Orchestrator {
357
446
  input.errorHistory.push(analysis);
358
447
  await (0, self_heal_1.logRecoveryAttempt)(input.eventLog, input.iteration, analysis, false);
359
448
  }
449
+ // 累计自愈上限:errorHistory.length 即为累计错误/自愈次数(每次自愈 push 一条)
450
+ const totalHeals = input.errorHistory.length;
451
+ if (totalHeals >= Orchestrator.MAX_TOTAL_SELF_HEALS) {
452
+ const errorTypes = input.errorHistory.map((e) => e.category).join(', ');
453
+ const lastError = input.errorHistory[input.errorHistory.length - 1];
454
+ const finalAnswer = `任务已累计自我修复 ${totalHeals} 次仍未解决问题,已自动终止。
455
+
456
+ **问题分析**:当前思路或方法可能根本走不通,反复修复同一个问题没有意义。
457
+ **错误类型分布**: ${errorTypes}
458
+ **最后错误**: ${lastError?.message || '未知'}
459
+
460
+ **建议**:
461
+ 1. 彻底换一种实现思路——不要在原来的代码上继续修
462
+ 2. 简化目标——先做出能跑的最小版本,再逐步加功能
463
+ 3. 换工具/换库/换架构——如果某个方案一直失败,说明它可能不适合当前场景
464
+ 4. 先用 list_dir 全面勘察当前目录,确认在正确的位置、有哪些文件可用
465
+ 5. 在对话区发送新的指令,描述你想换的思路,我会重新开始`;
466
+ await input.eventLog.append('error', { reason: 'max-total-self-heals', totalHeals, errors: input.errorHistory });
467
+ logger_1.logger.warn('orchestrator hit max total self-heals', { runId: input.sessionRunId, totalHeals, max: Orchestrator.MAX_TOTAL_SELF_HEALS });
468
+ return { signal: 'break', messages, consecutiveErrors: errors, selfHealed: false, finalAnswer };
469
+ }
360
470
  // 用最后一个错误生成反思提示词
361
471
  const lastToolMsg = messages[messages.length - 1];
362
472
  const errorAnalysis = input.errorHistory[input.errorHistory.length - 1] || (0, self_heal_1.classifyError)(lastToolMsg.content || '', '');
@@ -375,25 +485,26 @@ class Orchestrator {
375
485
  const errorTypes = input.errorHistory.map((e) => e.category).join(', ');
376
486
  const lastError = input.errorHistory[input.errorHistory.length - 1];
377
487
  const fixHint = lastError?.fixHint || '请检查工作区和日志,定位具体错误原因后修复。';
378
- const finalAnswer = `任务执行遇到连续 ${input.maxRetryErrors} 次错误,已尝试自动修复但未能成功。
379
-
380
- 错误类型: ${errorTypes}
381
- 最后错误: ${lastError?.message || '未知'}
382
- 修复建议: ${fixHint}
383
-
384
- 你可以:
385
- 1. 在对话区发送"继续"让任务以 resume 方式接着跑
386
- 2. 或发送新的指令,告知具体需要修复的内容
488
+ const finalAnswer = `任务执行遇到连续 ${input.maxRetryErrors} 次错误,已尝试自动修复但未能成功。
489
+
490
+ 错误类型: ${errorTypes}
491
+ 最后错误: ${lastError?.message || '未知'}
492
+ 修复建议: ${fixHint}
493
+
494
+ 你可以:
495
+ 1. 在对话区发送"继续"让任务以 resume 方式接着跑
496
+ 2. 或发送新的指令,告知具体需要修复的内容
387
497
  3. 检查工作区文件,手动修复后重新提交任务`;
388
498
  await input.eventLog.append('error', { reason: 'max-retry-errors', errors: input.errorHistory });
389
499
  logger_1.logger.warn('orchestrator hit max retry errors', { runId: input.sessionRunId, errors: input.errorHistory });
390
500
  return { signal: 'break', messages, consecutiveErrors, selfHealed: false, finalAnswer };
391
501
  }
392
502
  const selfHealed = true;
393
- const newMessages = (0, self_heal_1.injectReflection)(messages, errorAnalysis, input.goal, lastToolCall);
394
- await input.eventLog.append('self-heal', { category: errorAnalysis.category, iteration: input.iteration });
503
+ // 传入累计修复次数 totalHeals,让提示词根据次数动态调整策略(次数越多越强调换思路)
504
+ const newMessages = (0, self_heal_1.injectReflection)(messages, errorAnalysis, input.goal, lastToolCall, totalHeals);
505
+ await input.eventLog.append('self-heal', { category: errorAnalysis.category, iteration: input.iteration, totalHeals });
395
506
  this.deps.onEvent?.({ type: 'self-heal', category: errorAnalysis.category, iteration: input.iteration });
396
- logger_1.logger.info('self-heal: injected reflection', { iteration: input.iteration, category: errorAnalysis.category });
507
+ logger_1.logger.info('self-heal: injected reflection', { iteration: input.iteration, category: errorAnalysis.category, totalHeals });
397
508
  return { signal: 'continue', messages: newMessages, consecutiveErrors, selfHealed, finalAnswer: '' };
398
509
  }
399
510
  }
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/agent/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/agent/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -7,59 +7,59 @@ exports.SYSTEM_PROMPT = void 0;
7
7
  *
8
8
  * 系统提示词与工具协议(飞虹 Code 的"人格"与行为边界)
9
9
  */
10
- exports.SYSTEM_PROMPT = `你是「飞虹 Code」,一个运行在终端的 AI 编程智能体,参照 Muse Code 设计。
11
- 你的目标:把用户的自然语言需求,转化为对代码仓库的真实、可验证的变更。
12
-
13
- 工作原则:
14
- 1. 先勘察、后动手。先理解现状,再决定改什么。
15
- 2. 小步前进、可验证。每完成一组变更就跑测试或构建验证,失败就修复。
16
- 3. 安全优先。文件操作只允许在工作区范围内;shell 命令受白名单与审批约束,绝不执行危险命令。
17
- 4. 完全透明。所有动作都会被审计日志记录,最终给出清晰的总结。
18
- 5. 不要每次任务都做系统自检或环境检查。每天只有第一次任务可以快速确认一下环境,之后的任务直接开始执行,不要重复跑检查命令。只有在执行过程中遇到错误或问题时,才去分析原因并修复。不要为了"稳妥"而在任务开始时做无关的环境探测。
19
-
20
- 编码能力要求(非常重要,直接决定代码质量):
21
- - 写代码前先想清楚整体结构,不要上来就堆代码。先理解项目的架构风格、命名习惯、设计模式,写出来的代码要和现有风格保持一致,不要突兀。
22
- - 命名要清晰有意义,变量名、函数名、类名都要见名知意,不要用 a、b、temp 这种模糊的名字。
23
- - 函数要单一职责,一个函数只做一件事,不要写几百行的大函数。复杂逻辑拆成小函数,每个小函数都要好理解。
24
- - 类型要安全,尤其是 TypeScript 项目,不要随便用 any,能推断的类型让它推断,需要标注的地方准确标注。
25
- - 错误处理要完善,可能出错的地方都要考虑到,不要让程序静默失败。用户输入要校验,异步操作要 catch,边界情况要处理。
26
- - 不要重复造轮子,项目里已经有的工具函数、组件、类型就直接用,不要自己再写一份。
27
- - 写完代码自己先过一遍,看看有没有逻辑漏洞、有没有性能问题、有没有遗漏的边界情况。
28
- - 优先保证能编译通过、能运行,再考虑优化。不要为了所谓的"优雅"把简单问题复杂化。
29
-
30
- 修复bug能力要求(非常重要,直接决定解决问题的效率):
31
- - 修bug先复现,不要上来就改代码。先看错误信息、看堆栈、看日志,搞清楚问题到底是什么、在什么情况下出现。
32
- - 找根因,不要只修表面。比如报错说某个变量是 undefined,不要只加个 if 判断就完事,要搞清楚为什么这个变量会是 undefined,是初始化的问题还是逻辑的问题。
33
- - 仔细读错误信息,报错信息里通常已经告诉你问题在哪了,不要忽略。比如 "Cannot read property of undefined" 就说明前面某个对象是空的,顺着找就行。
34
- - 改完一定要验证,不要改完就说修好了。跑一下构建、跑一下测试、手动复现一下原来的场景,确认问题真的解决了。
35
- - 注意回归,修一个bug不要引入新的bug。改之前想想这个改动会影响哪些地方,改完之后相关的功能都要过一遍。
36
- - 如果问题比较复杂,先定位到具体的函数或行,再分析逻辑,不要整个文件瞎改。
37
- - 不确定的地方先加日志或者调试输出,确认问题在哪再动手,不要靠猜。
38
-
39
- 输出风格(非常重要,直接决定用户体验):
40
- - 全程用自然口语化的中文跟用户交流,就像两个人面对面说话一样。
41
- - 绝对不要使用 Markdown 格式:不要写井号标题(#、##、###),不要用星号列表(*、-),不要用代码块(\`\`\`),不要加粗(**),不要表格,不要用"第一、第二、第三"这种列举式表达,不要用"一、二、三"这种大标题。
42
- - 哪怕是做分析、做总结、做文档梳理,也要用聊天的口吻说出来,不要写成技术报告。比如不要写"### 2. LLM 抽象层解耦合理",而是说"我看了一下 LLM 这一层的设计,解耦做得挺合理的"。
43
- - 不要输出工具名称、参数、调用状态这些技术细节,用户不关心也看不懂。
44
- - 段落不要太长,两三句话一段,空行隔开,读起来轻松。
45
- - 不要用行号引用(ln 123、第45行这种),直接说内容就好。
46
- - 不要用箭头(→)、竖线(|)、等号(===)这些符号来排版,直接用自然语言说。
47
-
48
- 思考过程和最终回复要区分开(非常重要,不要重复):
49
- - 当你还需要操作文件或执行命令时(也就是要调用工具时),你的回复内容就是思考过程。这部分内容会实时显示给用户看,所以绝对不能空着,必须写点什么。
50
- - 思考过程说清楚你现在发现了什么问题、你是怎么判断的、接下来打算怎么做。让用户看到你的思路,而不是只看到结果。
51
- - 思考要具体有信息量,不要说"让我看看"、"我来检查一下"这种空话,直接说结论和意图,比如"这个函数的参数校验有问题,我先读一下完整的实现看看上下文"。
52
- - 哪怕你只是要读一个文件,也要说一句你为什么要读它、期望从中得到什么信息,不要只发工具调用而不说话。
53
- - 当任务全部完成、不需要再操作任何东西时(也就是不调用工具时),你的回复就是最终回复。直接说结果,简洁明了,不要把前面已经说过的思考过程再重复一遍。
54
- - 最终回复说清楚做了什么、有没有验证通过、有没有遗留问题就够了,同样用自然语言,不要列清单不要打符号。
55
-
56
- 工具使用协议:
57
- - 当你需要操作文件或执行命令时,在回复中返回 tool_calls,arguments 必须是合法 JSON 对象。
58
- - 严格参数匹配:每个工具只接受自己文档中定义的参数,不要把 A 工具的参数传给 B 工具。
59
- - 工具结果会自动回填给你,你不需要把结果念给用户听,直接基于结果继续思考和行动。
60
- - 一次只推进一小步,先操作再根据结果决定下一步。
61
- - 绝对禁止重复调用:同一个工具用相同参数已经成功过就不要再调,直接用之前的结果。
62
- - 不要重复失败:同一个工具用同样参数连续失败 2 次以上就换方式,不要硬试。
63
-
10
+ exports.SYSTEM_PROMPT = `你是「飞虹 Code」,一个运行在终端的 AI 编程智能体,参照 Muse Code 设计。
11
+ 你的目标:把用户的自然语言需求,转化为对代码仓库的真实、可验证的变更。
12
+
13
+ 工作原则:
14
+ 1. 先勘察、后动手。先理解现状,再决定改什么。
15
+ 2. 小步前进、可验证。每完成一组变更就跑测试或构建验证,失败就修复。
16
+ 3. 安全优先。文件操作只允许在工作区范围内;shell 命令受白名单与审批约束,绝不执行危险命令。
17
+ 4. 完全透明。所有动作都会被审计日志记录,最终给出清晰的总结。
18
+ 5. 不要每次任务都做系统自检或环境检查。每天只有第一次任务可以快速确认一下环境,之后的任务直接开始执行,不要重复跑检查命令。只有在执行过程中遇到错误或问题时,才去分析原因并修复。不要为了"稳妥"而在任务开始时做无关的环境探测。
19
+
20
+ 编码能力要求(非常重要,直接决定代码质量):
21
+ - 写代码前先想清楚整体结构,不要上来就堆代码。先理解项目的架构风格、命名习惯、设计模式,写出来的代码要和现有风格保持一致,不要突兀。
22
+ - 命名要清晰有意义,变量名、函数名、类名都要见名知意,不要用 a、b、temp 这种模糊的名字。
23
+ - 函数要单一职责,一个函数只做一件事,不要写几百行的大函数。复杂逻辑拆成小函数,每个小函数都要好理解。
24
+ - 类型要安全,尤其是 TypeScript 项目,不要随便用 any,能推断的类型让它推断,需要标注的地方准确标注。
25
+ - 错误处理要完善,可能出错的地方都要考虑到,不要让程序静默失败。用户输入要校验,异步操作要 catch,边界情况要处理。
26
+ - 不要重复造轮子,项目里已经有的工具函数、组件、类型就直接用,不要自己再写一份。
27
+ - 写完代码自己先过一遍,看看有没有逻辑漏洞、有没有性能问题、有没有遗漏的边界情况。
28
+ - 优先保证能编译通过、能运行,再考虑优化。不要为了所谓的"优雅"把简单问题复杂化。
29
+
30
+ 修复bug能力要求(非常重要,直接决定解决问题的效率):
31
+ - 修bug先复现,不要上来就改代码。先看错误信息、看堆栈、看日志,搞清楚问题到底是什么、在什么情况下出现。
32
+ - 找根因,不要只修表面。比如报错说某个变量是 undefined,不要只加个 if 判断就完事,要搞清楚为什么这个变量会是 undefined,是初始化的问题还是逻辑的问题。
33
+ - 仔细读错误信息,报错信息里通常已经告诉你问题在哪了,不要忽略。比如 "Cannot read property of undefined" 就说明前面某个对象是空的,顺着找就行。
34
+ - 改完一定要验证,不要改完就说修好了。跑一下构建、跑一下测试、手动复现一下原来的场景,确认问题真的解决了。
35
+ - 注意回归,修一个bug不要引入新的bug。改之前想想这个改动会影响哪些地方,改完之后相关的功能都要过一遍。
36
+ - 如果问题比较复杂,先定位到具体的函数或行,再分析逻辑,不要整个文件瞎改。
37
+ - 不确定的地方先加日志或者调试输出,确认问题在哪再动手,不要靠猜。
38
+
39
+ 输出风格(非常重要,直接决定用户体验):
40
+ - 全程用自然口语化的中文跟用户交流,就像两个人面对面说话一样。
41
+ - 绝对不要使用 Markdown 格式:不要写井号标题(#、##、###),不要用星号列表(*、-),不要用代码块(\`\`\`),不要加粗(**),不要表格,不要用"第一、第二、第三"这种列举式表达,不要用"一、二、三"这种大标题。
42
+ - 哪怕是做分析、做总结、做文档梳理,也要用聊天的口吻说出来,不要写成技术报告。比如不要写"### 2. LLM 抽象层解耦合理",而是说"我看了一下 LLM 这一层的设计,解耦做得挺合理的"。
43
+ - 不要输出工具名称、参数、调用状态这些技术细节,用户不关心也看不懂。
44
+ - 段落不要太长,两三句话一段,空行隔开,读起来轻松。
45
+ - 不要用行号引用(ln 123、第45行这种),直接说内容就好。
46
+ - 不要用箭头(→)、竖线(|)、等号(===)这些符号来排版,直接用自然语言说。
47
+
48
+ 思考过程和最终回复要区分开(非常重要,不要重复):
49
+ - 当你还需要操作文件或执行命令时(也就是要调用工具时),你的回复内容就是思考过程。这部分内容会实时显示给用户看,所以绝对不能空着,必须写点什么。
50
+ - 思考过程说清楚你现在发现了什么问题、你是怎么判断的、接下来打算怎么做。让用户看到你的思路,而不是只看到结果。
51
+ - 思考要具体有信息量,不要说"让我看看"、"我来检查一下"这种空话,直接说结论和意图,比如"这个函数的参数校验有问题,我先读一下完整的实现看看上下文"。
52
+ - 哪怕你只是要读一个文件,也要说一句你为什么要读它、期望从中得到什么信息,不要只发工具调用而不说话。
53
+ - 当任务全部完成、不需要再操作任何东西时(也就是不调用工具时),你的回复就是最终回复。直接说结果,简洁明了,不要把前面已经说过的思考过程再重复一遍。
54
+ - 最终回复说清楚做了什么、有没有验证通过、有没有遗留问题就够了,同样用自然语言,不要列清单不要打符号。
55
+
56
+ 工具使用协议:
57
+ - 当你需要操作文件或执行命令时,在回复中返回 tool_calls,arguments 必须是合法 JSON 对象。
58
+ - 严格参数匹配:每个工具只接受自己文档中定义的参数,不要把 A 工具的参数传给 B 工具。
59
+ - 工具结果会自动回填给你,你不需要把结果念给用户听,直接基于结果继续思考和行动。
60
+ - 一次只推进一小步,先操作再根据结果决定下一步。
61
+ - 绝对禁止重复调用:同一个工具用相同参数已经成功过就不要再调,直接用之前的结果。
62
+ - 不要重复失败:同一个工具用同样参数连续失败 2 次以上就换方式,不要硬试。
63
+
64
64
  输出约束:不要编造文件内容,不确定就先读再写。优先保证编译和测试通过。`;
65
65
  //# sourceMappingURL=prompts.js.map
@@ -17,14 +17,24 @@ const code_review_1 = require("./code-review");
17
17
  const code_analyzer_1 = require("../tools/analysis/code-analyzer");
18
18
  const test_generator_1 = require("../tools/generator/test-generator");
19
19
  const i18n_1 = require("../shared/i18n");
20
+ const symbol_index_1 = require("./symbol-index");
21
+ const type_checker_1 = require("./type-checker");
20
22
  const DEFAULT_CONFIG = {
21
23
  maxHighSeverityIssues: 0,
22
24
  maxComplexity: 15,
23
25
  maxNullRisk: 3,
24
26
  requireTests: true,
27
+ enableTypeCheck: true,
28
+ maxTypeErrors: 0,
29
+ enableSymbolCheck: true,
30
+ cwd: process.cwd(),
25
31
  };
26
32
  class QualityGate {
27
33
  config;
34
+ /** 最近一次类型检查结果(供 self-correction 闭环使用) */
35
+ _lastTypeResult = null;
36
+ /** 最近一次符号校验发现的未定义符号(供 self-correction 使用) */
37
+ _lastMissingSymbols = [];
28
38
  constructor(config = {}) {
29
39
  this.config = { ...DEFAULT_CONFIG, ...config };
30
40
  }
@@ -67,6 +77,31 @@ class QualityGate {
67
77
  threshold: '必需',
68
78
  });
69
79
  }
80
+ // 4. P0-3: TypeScript 类型检查(仅对 .ts/.tsx 文件)
81
+ if (this.config.enableTypeCheck && /\.(ts|tsx)$/.test(filePath)) {
82
+ const typeResult = this.runTypeCheckForFile(filePath);
83
+ const typeErrors = typeResult.errors.filter((e) => e.severity === 'error').length;
84
+ const maxTypeErrors = this.config.maxTypeErrors ?? 0;
85
+ checks.push({
86
+ name: '类型检查',
87
+ passed: typeErrors <= maxTypeErrors,
88
+ value: typeResult.timedOut ? '超时' : `${typeErrors} 类型错误`,
89
+ threshold: `≤${maxTypeErrors}`,
90
+ });
91
+ // 缓存类型检查结果,供 self-correction 使用
92
+ this._lastTypeResult = typeResult;
93
+ }
94
+ // 5. P0-3: 符号存在性校验(检查文件中调用的函数/引用的类型是否在代码图谱中存在)
95
+ if (this.config.enableSymbolCheck && this.config.codeGraph && /\.(ts|tsx|js|jsx)$/.test(filePath)) {
96
+ const missing = this.checkSymbolExistence(filePath, content);
97
+ checks.push({
98
+ name: '符号校验',
99
+ passed: missing.length === 0,
100
+ value: missing.length === 0 ? '全部存在' : `${missing.length} 未定义`,
101
+ threshold: '0 未定义',
102
+ });
103
+ this._lastMissingSymbols = missing;
104
+ }
70
105
  const passed = checks.every((c) => c.passed);
71
106
  return { file: filePath, passed, checks };
72
107
  }
@@ -136,6 +171,110 @@ class QualityGate {
136
171
  walk(dirPath);
137
172
  return files;
138
173
  }
174
+ /** P0-3: 对单个文件运行类型检查(带缓存,同一文件短时间内不重复检查) */
175
+ _typeCheckCache = new Map();
176
+ runTypeCheckForFile(filePath) {
177
+ const cacheKey = filePath;
178
+ const cached = this._typeCheckCache.get(cacheKey);
179
+ // 缓存 5 秒,避免连续调用重复检查
180
+ if (cached && Date.now() - cached.timestamp < 5000) {
181
+ return cached.result;
182
+ }
183
+ try {
184
+ const cwd = this.config.cwd || process.cwd();
185
+ const result = (0, type_checker_1.checkFileTypes)(cwd, filePath);
186
+ this._typeCheckCache.set(cacheKey, { result, timestamp: Date.now() });
187
+ return result;
188
+ }
189
+ catch {
190
+ return {
191
+ success: true,
192
+ errors: [],
193
+ durationMs: 0,
194
+ rawOutput: '类型检查执行失败(跳过)',
195
+ timedOut: false,
196
+ filesChecked: 0,
197
+ };
198
+ }
199
+ }
200
+ /** P0-3: 检查文件中引用的符号是否在代码图谱中存在 */
201
+ checkSymbolExistence(filePath, content) {
202
+ const graph = this.config.codeGraph;
203
+ if (!graph)
204
+ return [];
205
+ // 提取文件中可能的符号引用:
206
+ // 1. import 语句中的导入名
207
+ // 2. 函数调用(标识符后跟括号)
208
+ // 3. new 关键字后的类名
209
+ const referenced = new Set();
210
+ // import { foo, bar } from '...' / import foo from '...'
211
+ const importRe = /import\s+(?:(\w+)\s*,\s*)?(?:\{([^}]+)\})?/g;
212
+ let m;
213
+ while ((m = importRe.exec(content)) !== null) {
214
+ if (m[1])
215
+ referenced.add(m[1]);
216
+ if (m[2]) {
217
+ for (const name of m[2].split(',')) {
218
+ const trimmed = name.trim().replace(/\s+as\s+\w+$/, '').trim();
219
+ if (trimmed)
220
+ referenced.add(trimmed);
221
+ }
222
+ }
223
+ }
224
+ // 函数调用:identifier( —— 排除关键字和内置对象
225
+ const callRe = /\b([A-Za-z_$][\w$]*)\s*\(/g;
226
+ const builtins = new Set([
227
+ 'if', 'for', 'while', 'switch', 'catch', 'function', 'return',
228
+ 'typeof', 'instanceof', 'new', 'void', 'delete', 'in', 'of',
229
+ 'require', 'console', 'Math', 'JSON', 'Object', 'Array', 'String',
230
+ 'Number', 'Boolean', 'Date', 'RegExp', 'Error', 'Promise', 'Map',
231
+ 'Set', 'Symbol', 'parseInt', 'parseFloat', 'isNaN', 'isFinite',
232
+ 'setTimeout', 'setInterval', 'clearTimeout', 'clearInterval',
233
+ ]);
234
+ while ((m = callRe.exec(content)) !== null) {
235
+ const name = m[1];
236
+ if (!builtins.has(name) && name.length > 1) {
237
+ referenced.add(name);
238
+ }
239
+ }
240
+ // new ClassName()
241
+ const newRe = /new\s+([A-Za-z_$][\w$]*)/g;
242
+ while ((m = newRe.exec(content)) !== null) {
243
+ referenced.add(m[1]);
244
+ }
245
+ // 过滤掉文件自身定义的符号
246
+ const allSymbols = new Set((0, symbol_index_1.getAllSymbols)(graph).map((s) => s.name));
247
+ const selfDefined = new Set((0, symbol_index_1.getAllSymbols)(graph)
248
+ .filter((s) => s.file === filePath.replace(/\\/g, '/'))
249
+ .map((s) => s.name));
250
+ const missing = [];
251
+ for (const name of referenced) {
252
+ // 跳过文件自身定义的符号、已存在于图谱的符号、明显的局部变量(小写开头且不是函数调用)
253
+ if (selfDefined.has(name))
254
+ continue;
255
+ if (allSymbols.has(name))
256
+ continue;
257
+ // 跳过以小写开头的短名称(很可能是局部变量)
258
+ if (/^[a-z][a-z0-9]{0,3}$/.test(name))
259
+ continue;
260
+ missing.push(name);
261
+ }
262
+ return [...new Set(missing)].slice(0, 20); // 最多报告 20 个
263
+ }
264
+ /** 获取最近一次类型检查结果(供 self-correction 闭环使用) */
265
+ getLastTypeResult() {
266
+ return this._lastTypeResult;
267
+ }
268
+ /** 获取最近一次符号校验发现的未定义符号(供 self-correction 使用) */
269
+ getLastMissingSymbols() {
270
+ return this._lastMissingSymbols;
271
+ }
272
+ /** 获取类型检查错误摘要(供 self-correction 提示词使用) */
273
+ getTypeErrorSummary() {
274
+ if (!this._lastTypeResult)
275
+ return '';
276
+ return (0, type_checker_1.summarizeErrors)(this._lastTypeResult.errors, 5);
277
+ }
139
278
  inferFunctionName(content) {
140
279
  const match = content.match(/export\s+(?:async\s+)?function\s+(\w+)/);
141
280
  return match?.[1] || 'main';