feihong-code 0.5.1 → 0.6.1

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 (74) hide show
  1. package/CHANGELOG.md +486 -405
  2. package/README.md +59 -0
  3. package/dist/agent/code-writer.js +6 -3
  4. package/dist/agent/code-writer.js.map +1 -1
  5. package/dist/agent/experience.js +105 -70
  6. package/dist/agent/experience.js.map +1 -1
  7. package/dist/agent/orchestrator.js +103 -21
  8. package/dist/agent/orchestrator.js.map +1 -1
  9. package/dist/agent/parallel-orchestrator.js +6 -3
  10. package/dist/agent/parallel-orchestrator.js.map +1 -1
  11. package/dist/agent/planner.js +30 -7
  12. package/dist/agent/planner.js.map +1 -1
  13. package/dist/agent/prompts.js +27 -8
  14. package/dist/agent/prompts.js.map +1 -1
  15. package/dist/agent/self-heal.js +43 -13
  16. package/dist/agent/self-heal.js.map +1 -1
  17. package/dist/cli/repl.js +10 -9
  18. package/dist/cli/repl.js.map +1 -1
  19. package/dist/cli/run.js +39 -37
  20. package/dist/cli/run.js.map +1 -1
  21. package/dist/cli/version.js +1 -1
  22. package/dist/enterprise/audit.js +70 -11
  23. package/dist/enterprise/audit.js.map +1 -1
  24. package/dist/models/model-router.js +83 -23
  25. package/dist/models/model-router.js.map +1 -1
  26. package/dist/models/model.dto.js +25 -3
  27. package/dist/models/model.dto.js.map +1 -1
  28. package/dist/models/providers/ollama.provider.js +12 -0
  29. package/dist/models/providers/ollama.provider.js.map +1 -1
  30. package/dist/models/providers/openai-compatible.provider.js +14 -1
  31. package/dist/models/providers/openai-compatible.provider.js.map +1 -1
  32. package/dist/self-evolve/hook.js +2 -2
  33. package/dist/self-evolve/hook.js.map +1 -1
  34. package/dist/self-evolve/hook.ts +80 -0
  35. package/dist/self-evolve/manager.d.ts +8 -0
  36. package/dist/self-evolve/manager.js +401 -0
  37. package/dist/shared/concurrency.js +80 -0
  38. package/dist/shared/concurrency.js.map +1 -0
  39. package/dist/shared/errors.js +6 -2
  40. package/dist/shared/errors.js.map +1 -1
  41. package/dist/shared/secure-store.js +117 -0
  42. package/dist/shared/secure-store.js.map +1 -0
  43. package/dist/tools/mcp/mcp-client.js +35 -13
  44. package/dist/tools/mcp/mcp-client.js.map +1 -1
  45. package/dist/tools/shell/exec.js +47 -3
  46. package/dist/tools/shell/exec.js.map +1 -1
  47. package/dist/tools/shell/run-shell.tool.js +33 -6
  48. package/dist/tools/shell/run-shell.tool.js.map +1 -1
  49. package/dist/tools/tool.registry.js +32 -0
  50. package/dist/tools/tool.registry.js.map +1 -1
  51. package/dist/web/auth.js +143 -7
  52. package/dist/web/auth.js.map +1 -1
  53. package/dist/web/public/css/style.css +1546 -0
  54. package/dist/web/public/index.html +806 -3253
  55. package/dist/web/public/js/api.js +309 -0
  56. package/dist/web/public/js/app.js +1483 -0
  57. package/dist/web/public/js/ui.js +764 -0
  58. package/dist/web/public/js/utils.js +214 -0
  59. package/dist/web/server.js +224 -77
  60. package/dist/web/server.js.map +1 -1
  61. package/dist/web/task-queue.js +140 -14
  62. package/dist/web/task-queue.js.map +1 -1
  63. package/docs/App/344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +299 -0
  64. package/docs/App/346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +554 -0
  65. package/docs/SELF-EVOLVE-GUIDE.md +313 -0
  66. package/docs/error-codes.md +198 -0
  67. package/docs/screenshots/cli-demo.png +0 -0
  68. package/docs/screenshots/feature-comparison.png +0 -0
  69. package/docs/screenshots/web-console.png +0 -0
  70. package/docs//351/241/265/351/235/242/345/212/237/350/203/275/345/244/215/347/233/230/344/270/216/345/206/222/347/203/237/346/265/213/350/257/225/346/212/245/345/221/212.html +117 -0
  71. package/package.json +9 -15
  72. package/tool-schema.json +198 -127
  73. package/dist/web/public/index.html.tmp +0 -3117
  74. package/dist/web/public/index_new.html +0 -3196
package/README.md CHANGED
@@ -1,5 +1,58 @@
1
1
  > **English / 英文文档**:[README_EN.md](README_EN.md) · [FAQ (English)](FAQ_EN.md)
2
2
 
3
+ <!-- Schema.org JSON-LD for GEO optimization -->
4
+ <script type="application/ld+json">
5
+ {
6
+ "@context": "https://schema.org",
7
+ "@type": "SoftwareSourceCode",
8
+ "name": "飞虹 Code (fhcode)",
9
+ "description": "终端 AI 编程智能体,对标 Meta Muse Code。多模型路由、企业级 RBAC/审计/多租户、全自动 SWE Agent、离线私有化。支持 DeepSeek/通义/Ollama/OpenAI 兼容网关。",
10
+ "url": "https://github.com/wch887292/feihong-code",
11
+ "license": "https://opensource.org/licenses/MIT",
12
+ "programmingLanguage": {
13
+ "@type": "ProgrammingLanguage",
14
+ "name": "TypeScript"
15
+ },
16
+ "operatingSystem": "Cross-platform (Windows, Linux, macOS)",
17
+ "softwareVersion": "0.6.0",
18
+ "dateCreated": "2026-08-12",
19
+ "datePublished": "2026-08-22",
20
+ "author": {
21
+ "@type": "Organization",
22
+ "name": "晋江市飞虹智科技企业管理有限公司",
23
+ "url": "https://www.klai.top"
24
+ },
25
+ "developer": {
26
+ "@type": "Organization",
27
+ "name": "飞扬企源研发中心",
28
+ "url": "https://www.klai.top"
29
+ },
30
+ "keywords": [
31
+ "AI Agent", "SWE Agent", "CLI", "多模型路由", "DeepSeek", "Ollama",
32
+ "企业级权限", "RBAC", "审计链", "多租户", "自我进化", "自愈循环",
33
+ "代码生成", "typescript", "nodejs", "open source"
34
+ ],
35
+ "sameAs": [
36
+ "https://www.npmjs.com/package/feihong-code",
37
+ "https://www.klai.top/opensource.html"
38
+ ],
39
+ "featureList": [
40
+ "M0-M9.1 全功能里程碑",
41
+ "多模型路由 (DeepSeek/通义/Ollama/OpenAI)",
42
+ "企业级 RBAC 权限矩阵",
43
+ "防篡改审计哈希链",
44
+ "多租户物理隔离",
45
+ "配额成本熔断",
46
+ "自我进化与自愈循环",
47
+ "上下文智能压缩",
48
+ "多子代理并行 (git worktree)",
49
+ "Web 管理控制台 (BETA)",
50
+ "全自动 SWE Agent",
51
+ "离线私有化部署"
52
+ ]
53
+ }
54
+ </script>
55
+
3
56
  # 飞虹 Code(fhcode)
4
57
 
5
58
  > **终端 AI 编程智能体** · 对标 Meta Muse Code · 全功能 M0→M9.1 完成 · 企业级 RBAC/审计/SWE Agent
@@ -93,6 +146,12 @@ export FH_ROLE=developer
93
146
 
94
147
  > 最适合:**数据不出内网**、需要**企业权限审计**、希望**混合调度多家大模型**的团队与个人开发者。
95
148
 
149
+ ### 📸 产品截图
150
+
151
+ | CLI 终端 | Web 控制台 | 功能对比 |
152
+ |---------|-----------|---------|
153
+ | ![CLI Demo](docs/screenshots/cli-demo.png) | ![Web Console](docs/screenshots/web-console.png) | ![Feature Comparison](docs/screenshots/feature-comparison.png) |
154
+
96
155
  ## 二、核心特性
97
156
 
98
157
  ### 🔥 主要亮点
@@ -71,7 +71,8 @@ class CodeWriter {
71
71
  }
72
72
  code = result.content;
73
73
  if (template === 'api-route') {
74
- filename = params.path.replace(/^\//, '').replace(/\//g, '-') + '.ts';
74
+ // Windows 文件名不含 ':',将路径段中非法字符替换为 '-'
75
+ filename = params.path.replace(/^\//, '').replace(/[^a-zA-Z0-9-]/g, '-').replace(/-+/g, '-').replace(/-$/, '') + '.ts';
75
76
  }
76
77
  else if (template === 'model') {
77
78
  filename = params.name + '.ts';
@@ -258,9 +259,11 @@ class CodeWriter {
258
259
  */
259
260
  issueToSafeFix(issue) {
260
261
  if (/硬编码|密码|密钥|secret|token|api[_-]?key/i.test(issue.message)) {
262
+ // 匹配变量名含敏感关键词(password/secret/token/apiKey)且赋值为字符串字面量的模式
263
+ // 例如:const dbPassword = "password-abc-123"; 或 const apiKey = 'sk-123';
261
264
  return {
262
- pattern: /(['"`])[^'"`]*(?:password|secret|(?:api[_-]?)?key|token)[^'"`]*\1/gi,
263
- replacement: 'process.env.FH_SECRET',
265
+ pattern: /(\w*[Pp]assword\w*|\w*[Ss]ecret\w*|\w*[Tt]oken\w*|\w*[Aa][Pp][Ii]?\w*[Kk]ey\w*)\s*=\s*(['"`])([^'"`]+)\2/gi,
266
+ replacement: '$1 = process.env.FH_SECRET',
264
267
  };
265
268
  }
266
269
  if (/sql/i.test(issue.message)) {
@@ -1 +1 @@
1
- {"version":3,"file":"code-writer.js","sourceRoot":"","sources":["../../src/agent/code-writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"code-writer.js","sourceRoot":"","sources":["../../src/agent/code-writer.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,27 @@ const fs_1 = require("fs");
26
26
  const path_1 = require("path");
27
27
  const logger_1 = require("../shared/logger");
28
28
  const self_heal_1 = require("./self-heal");
29
+ /**
30
+ * 文件级 Promise 锁:防止两个 run 同时完成时 upsertExperience 互相覆盖。
31
+ * 同一 experiences.jsonl 路径的写入串行化,不同路径互不阻塞。
32
+ */
33
+ const fileLocks = new Map();
34
+ async function withFileLock(filePath, fn) {
35
+ const prev = fileLocks.get(filePath) ?? Promise.resolve();
36
+ let release;
37
+ const next = new Promise((resolve) => { release = resolve; });
38
+ fileLocks.set(filePath, prev.then(() => next, () => next));
39
+ try {
40
+ await prev;
41
+ return await fn();
42
+ }
43
+ finally {
44
+ release();
45
+ // 锁队列空时清理 Map 条目,避免内存泄漏
46
+ if (fileLocks.get(filePath) === next)
47
+ fileLocks.delete(filePath);
48
+ }
49
+ }
29
50
  /** 稳定短哈希(用于经验去重 id) */
30
51
  function shortHash(s) {
31
52
  let h = 5381;
@@ -98,18 +119,27 @@ const EXTRACTORS = [
98
119
  ];
99
120
  function extractExperience(messages, runId) {
100
121
  const experiences = [];
122
+ // 通过 toolCallId 精确关联工具调用与结果,替代脆弱的顺序匹配
123
+ const toolCallMap = new Map();
101
124
  const toolCalls = [];
102
- // 提取工具调用序列及成败
103
125
  for (const msg of messages) {
104
126
  if (msg.role === 'assistant' && msg.toolCalls) {
105
127
  for (const tc of msg.toolCalls) {
106
- toolCalls.push({ name: tc.name, args: tc.arguments, success: true });
128
+ const entry = { name: tc.name, args: tc.arguments, success: true };
129
+ toolCalls.push(entry);
130
+ if (tc.id)
131
+ toolCallMap.set(tc.id, entry);
107
132
  }
108
133
  }
109
134
  if (msg.role === 'tool') {
110
- const lastCall = toolCalls[toolCalls.length - 1];
111
- if (lastCall && (msg.content || '').startsWith('错误:')) {
112
- lastCall.success = false;
135
+ // 优先通过 toolCallId 精确匹配;无 id 时回退到最后一个调用(兼容旧数据)
136
+ const matched = msg.toolCallId ? toolCallMap.get(msg.toolCallId) : toolCalls[toolCalls.length - 1];
137
+ if (matched) {
138
+ const content = msg.content || '';
139
+ // 工具失败标记:内容以"错误:"开头,或包含 exit code 非 0
140
+ if (content.startsWith('错误:') || /exit code [1-9]/.test(content)) {
141
+ matched.success = false;
142
+ }
113
143
  }
114
144
  }
115
145
  }
@@ -148,50 +178,53 @@ async function saveExperience(experienceDir, experience) {
148
178
  */
149
179
  async function upsertExperience(experienceDir, experience) {
150
180
  const file = (0, path_1.join)(experienceDir, 'experiences.jsonl');
151
- if (!(0, fs_1.existsSync)(file)) {
152
- await saveExperience(experienceDir, experience);
153
- return;
154
- }
155
- try {
156
- const content = await (0, promises_1.readFile)(file, 'utf8');
157
- const lines = content.split('\n').filter(Boolean);
158
- let merged = false;
159
- const out = [];
160
- for (const line of lines) {
161
- try {
162
- const e = JSON.parse(line);
163
- if (e.id === experience.id) {
164
- const prev = e.metadata.sessionCount;
165
- const mergedExp = {
166
- ...e,
167
- content: experience.content.length >= e.content.length ? experience.content : e.content,
168
- metadata: {
169
- sessionCount: prev + 1,
170
- successRate: (e.metadata.successRate * prev + experience.metadata.successRate) / (prev + 1),
171
- tags: [...new Set([...e.metadata.tags, ...experience.metadata.tags])],
172
- createdAt: e.metadata.createdAt,
173
- lastUsedAt: new Date().toISOString(),
174
- },
175
- };
176
- out.push(JSON.stringify(mergedExp));
177
- merged = true;
181
+ // 文件锁:防止并发 run 同时读写导致互相覆盖
182
+ await withFileLock(file, async () => {
183
+ if (!(0, fs_1.existsSync)(file)) {
184
+ await saveExperience(experienceDir, experience);
185
+ return;
186
+ }
187
+ try {
188
+ const content = await (0, promises_1.readFile)(file, 'utf8');
189
+ const lines = content.split('\n').filter(Boolean);
190
+ let merged = false;
191
+ const out = [];
192
+ for (const line of lines) {
193
+ try {
194
+ const e = JSON.parse(line);
195
+ if (e.id === experience.id) {
196
+ const prev = e.metadata.sessionCount;
197
+ const mergedExp = {
198
+ ...e,
199
+ content: experience.content.length >= e.content.length ? experience.content : e.content,
200
+ metadata: {
201
+ sessionCount: prev + 1,
202
+ successRate: (e.metadata.successRate * prev + experience.metadata.successRate) / (prev + 1),
203
+ tags: [...new Set([...e.metadata.tags, ...experience.metadata.tags])],
204
+ createdAt: e.metadata.createdAt,
205
+ lastUsedAt: new Date().toISOString(),
206
+ },
207
+ };
208
+ out.push(JSON.stringify(mergedExp));
209
+ merged = true;
210
+ }
211
+ else {
212
+ out.push(line);
213
+ }
178
214
  }
179
- else {
215
+ catch {
180
216
  out.push(line);
181
217
  }
182
218
  }
183
- catch {
184
- out.push(line);
185
- }
219
+ if (!merged)
220
+ out.push(JSON.stringify(experience));
221
+ await (0, promises_1.writeFile)(file, out.join('\n') + '\n', 'utf8');
222
+ logger_1.logger.info('experience upserted', { id: experience.id, merged, type: experience.type });
186
223
  }
187
- if (!merged)
188
- out.push(JSON.stringify(experience));
189
- await (0, promises_1.writeFile)(file, out.join('\n') + '\n', 'utf8');
190
- logger_1.logger.info('experience upserted', { id: experience.id, merged, type: experience.type });
191
- }
192
- catch {
193
- await saveExperience(experienceDir, experience);
194
- }
224
+ catch {
225
+ await saveExperience(experienceDir, experience);
226
+ }
227
+ });
195
228
  }
196
229
  /** 关键词分词的轻量实现(用于检索打分) */
197
230
  function tokenize(s) {
@@ -282,33 +315,35 @@ async function updateExperienceUsage(experienceDir, experienceId) {
282
315
  const file = (0, path_1.join)(experienceDir, 'experiences.jsonl');
283
316
  if (!(0, fs_1.existsSync)(file))
284
317
  return;
285
- try {
286
- const content = await (0, promises_1.readFile)(file, 'utf8');
287
- const lines = content.split('\n').filter(Boolean);
288
- const updatedLines = lines.map((line) => {
289
- try {
290
- const exp = JSON.parse(line);
291
- if (exp.id === experienceId) {
292
- return JSON.stringify({
293
- ...exp,
294
- metadata: {
295
- ...exp.metadata,
296
- sessionCount: exp.metadata.sessionCount + 1,
297
- lastUsedAt: new Date().toISOString(),
298
- },
299
- });
318
+ await withFileLock(file, async () => {
319
+ try {
320
+ const content = await (0, promises_1.readFile)(file, 'utf8');
321
+ const lines = content.split('\n').filter(Boolean);
322
+ const updatedLines = lines.map((line) => {
323
+ try {
324
+ const exp = JSON.parse(line);
325
+ if (exp.id === experienceId) {
326
+ return JSON.stringify({
327
+ ...exp,
328
+ metadata: {
329
+ ...exp.metadata,
330
+ sessionCount: exp.metadata.sessionCount + 1,
331
+ lastUsedAt: new Date().toISOString(),
332
+ },
333
+ });
334
+ }
335
+ return line;
300
336
  }
301
- return line;
302
- }
303
- catch {
304
- return line;
305
- }
306
- });
307
- await (0, promises_1.writeFile)(file, updatedLines.join('\n') + '\n', 'utf8');
308
- }
309
- catch {
310
- // 静默失败
311
- }
337
+ catch {
338
+ return line;
339
+ }
340
+ });
341
+ await (0, promises_1.writeFile)(file, updatedLines.join('\n') + '\n', 'utf8');
342
+ }
343
+ catch {
344
+ // 静默失败
345
+ }
346
+ });
312
347
  }
313
348
  /**
314
349
  * extractFixPattern:从「自愈成功」的会话中提取可复用修复经验。
@@ -1 +1 @@
1
- {"version":3,"file":"experience.js","sourceRoot":"","sources":["../../src/agent/experience.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"experience.js","sourceRoot":"","sources":["../../src/agent/experience.ts"],"names":[],"mappings":"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"}
@@ -14,11 +14,15 @@ class Orchestrator {
14
14
  constructor(deps) {
15
15
  this.deps = deps;
16
16
  }
17
+ /** 成功工具调用结果缓存:key = toolName + JSON.stringify(args),防止模型重复调用相同工具 */
18
+ toolResultCache = new Map();
17
19
  async run(goal, resume) {
18
20
  const { router, tools, eventLog, session, cwd, security, approve, persist, guard, maxRetryErrors = 3, contextCompactEvery, experienceDir, } = this.deps;
19
- const maxIter = this.deps.maxIterations ?? 25;
21
+ const maxIter = this.deps.maxIterations ?? 50;
20
22
  const maxCost = this.deps.maxCostUsd ?? 0;
21
23
  const compactThreshold = (0, context_compactor_1.getCompactionThreshold)({ compactEvery: contextCompactEvery });
24
+ // 每次 run 重置工具结果缓存
25
+ this.toolResultCache.clear();
22
26
  let messages;
23
27
  let loadedExperiences = [];
24
28
  let baselineIterations = 0;
@@ -77,8 +81,58 @@ class Orchestrator {
77
81
  if (!resume)
78
82
  await emitCheckpoint('running');
79
83
  for (; calls < maxIter; calls++) {
84
+ // P9:任务停止——检查外部中断信号,触发即终止编排循环
85
+ if (this.deps.signal?.aborted) {
86
+ await emitCheckpoint('crashed');
87
+ return {
88
+ ok: false,
89
+ finalAnswer: '任务已被用户中断',
90
+ iterations: baselineIterations + calls,
91
+ costUsd: cost,
92
+ logFile: '',
93
+ runId: session.snapshot().runId,
94
+ selfHealed,
95
+ };
96
+ }
80
97
  const startTime = Date.now();
81
- const resp = await router.chat({ messages, tools: tools.definitions(), temperature: 0, timeoutMs: 180000 }, this.deps.tags ?? ['code-gen']);
98
+ // P9:模型调用失败轮询重试(应对 429 限流 / 瞬时网络抖动),最多 maxModelRetries 次,指数退避
99
+ let resp;
100
+ let lastChatErr;
101
+ const maxModelRetries = this.deps.maxModelRetries ?? 3;
102
+ for (let attempt = 0; attempt <= maxModelRetries; attempt++) {
103
+ // 重试前再次检查中断信号
104
+ if (this.deps.signal?.aborted) {
105
+ await emitCheckpoint('crashed');
106
+ return {
107
+ ok: false,
108
+ finalAnswer: '任务已被用户中断',
109
+ iterations: baselineIterations + calls,
110
+ costUsd: cost,
111
+ logFile: '',
112
+ runId: session.snapshot().runId,
113
+ selfHealed,
114
+ };
115
+ }
116
+ try {
117
+ resp = await router.chat({ messages, tools: tools.definitions(), temperature: 0, timeoutMs: 180000, signal: this.deps.signal }, this.deps.tags ?? ['code-gen']);
118
+ break; // 成功,跳出重试
119
+ }
120
+ catch (e) {
121
+ lastChatErr = e;
122
+ logger_1.logger.warn('model call failed, will retry', {
123
+ attempt: attempt + 1,
124
+ maxRetries: maxModelRetries,
125
+ error: e instanceof Error ? e.message : String(e),
126
+ });
127
+ if (attempt < maxModelRetries) {
128
+ // 指数退避:1s, 2s, 4s...
129
+ await new Promise((r) => setTimeout(r, 1000 * Math.pow(2, attempt)));
130
+ }
131
+ }
132
+ }
133
+ if (!resp) {
134
+ throw lastChatErr instanceof Error ? lastChatErr : new Error('模型调用失败');
135
+ }
82
136
  const latency = Date.now() - startTime;
83
137
  cost += resp.costUsd;
84
138
  const msg = resp.message;
@@ -159,9 +213,12 @@ class Orchestrator {
159
213
  }
160
214
  }
161
215
  if (baselineIterations + calls >= maxIter && !finalAnswer) {
162
- finalAnswer = '已达到最大迭代次数,任务可能未完全完成,请检查工作区与日志。';
163
- await eventLog.append('error', { reason: 'max-iterations-reached' });
164
- logger_1.logger.warn('orchestrator reached max iterations', { runId: session.runId });
216
+ const hint = touchedFiles.length > 0
217
+ ? `可在对话区继续发送"继续"二字,让任务以 resume 方式接着跑(已生成/修改的文件位于工作区)。`
218
+ : `可点击「继续」按钮让任务接着执行,或在对话区细化任务目标重新提交。`;
219
+ finalAnswer = `已达到最大迭代次数 ${maxIter} 轮,任务可能未完全完成。${hint}`;
220
+ await eventLog.append('error', { reason: 'max-iterations-reached', maxIter, touchedFiles });
221
+ logger_1.logger.warn('orchestrator reached max iterations', { runId: session.runId, maxIter });
165
222
  }
166
223
  // M6: 提取经验并以 upsert 强化写入(同一模式多次验证会累积权重,而非无限追加)
167
224
  let experiencesExtracted = 0;
@@ -237,19 +294,35 @@ class Orchestrator {
237
294
  }
238
295
  await ctx.eventLog.append('tool.call', { name: tc.name, args: tc.arguments });
239
296
  this.deps.onEvent?.({ type: 'tool.call', name: tc.name, args: tc.arguments });
240
- const result = await ctx.tools.execute(tc.name, tc.arguments, {
241
- runId: ctx.session.runId,
242
- cwd: ctx.cwd,
243
- security: ctx.security,
244
- approve: ctx.approve,
245
- guard: ctx.guard,
246
- });
247
- await ctx.eventLog.append('tool.result', {
248
- name: tc.name,
249
- ok: result.ok,
250
- output: result.output.slice(0, 500),
251
- });
252
- this.deps.onEvent?.({ type: 'tool.result', name: tc.name, ok: result.ok, output: result.output.slice(0, 500) });
297
+ // 去重检测:相同工具+相同参数如果之前已成功,直接返回缓存结果并警告模型不要重复调用
298
+ const cacheKey = tc.name + '::' + JSON.stringify(tc.arguments ?? {});
299
+ const cached = this.toolResultCache.get(cacheKey);
300
+ let result;
301
+ if (cached && cached.ok) {
302
+ const warning = `[重复调用警告] 工具 ${tc.name} 用相同参数之前已成功执行过,以下是缓存的结果。请不要重复调用相同工具,直接利用已有信息推进任务。\n`;
303
+ result = { ok: true, output: warning + cached.output };
304
+ await ctx.eventLog.append('tool.result', { name: tc.name, ok: true, output: result.output.slice(0, 500) });
305
+ this.deps.onEvent?.({ type: 'tool.result', name: tc.name, ok: true, output: result.output.slice(0, 500) });
306
+ }
307
+ else {
308
+ result = await ctx.tools.execute(tc.name, tc.arguments, {
309
+ runId: ctx.session.runId,
310
+ cwd: ctx.cwd,
311
+ security: ctx.security,
312
+ approve: ctx.approve,
313
+ guard: ctx.guard,
314
+ });
315
+ // 成功结果写入缓存(失败的不缓存,允许模型重试修复)
316
+ if (result.ok) {
317
+ this.toolResultCache.set(cacheKey, { ok: result.ok, output: result.output, error: result.error });
318
+ }
319
+ await ctx.eventLog.append('tool.result', {
320
+ name: tc.name,
321
+ ok: result.ok,
322
+ output: result.output.slice(0, 500),
323
+ });
324
+ this.deps.onEvent?.({ type: 'tool.result', name: tc.name, ok: result.ok, output: result.output.slice(0, 500) });
325
+ }
253
326
  const content = result.ok ? result.output : `错误: ${result.error}`;
254
327
  const toolMsg = { role: 'tool', content, toolCallId: tc.id };
255
328
  messages.push(toolMsg);
@@ -267,9 +340,18 @@ class Orchestrator {
267
340
  return { signal: 'none', messages, consecutiveErrors: input.consecutiveErrors, selfHealed: false, finalAnswer: '' };
268
341
  }
269
342
  const lastToolMsg = messages[messages.length - 1];
343
+ // classifyError 现在对未匹配错误返回 'unknown' 兜底,永不返回 null,
344
+ // 确保达到 maxRetryErrors 时 failed 分支一定能 break,不会被绕过。
270
345
  const errorAnalysis = (0, self_heal_1.classifyError)(lastToolMsg.content || '', '');
271
- if (!errorAnalysis) {
272
- return { signal: 'none', messages, consecutiveErrors: input.consecutiveErrors, selfHealed: false, finalAnswer: '' };
346
+ // 从消息历史中提取最后一次工具调用(工具名+参数),用于生成更精准的反思提示
347
+ let lastToolCall;
348
+ for (let i = messages.length - 2; i >= 0; i--) {
349
+ const m = messages[i];
350
+ if (m.role === 'assistant' && m.toolCalls && m.toolCalls.length > 0) {
351
+ const tc = m.toolCalls[m.toolCalls.length - 1];
352
+ lastToolCall = { name: tc.name, args: tc.arguments ?? {} };
353
+ break;
354
+ }
273
355
  }
274
356
  input.errorHistory.push(errorAnalysis);
275
357
  await (0, self_heal_1.logRecoveryAttempt)(input.eventLog, input.iteration, errorAnalysis, false);
@@ -281,7 +363,7 @@ class Orchestrator {
281
363
  return { signal: 'break', messages, consecutiveErrors, selfHealed: false, finalAnswer };
282
364
  }
283
365
  const selfHealed = true;
284
- const newMessages = (0, self_heal_1.injectReflection)(messages, errorAnalysis, input.goal);
366
+ const newMessages = (0, self_heal_1.injectReflection)(messages, errorAnalysis, input.goal, lastToolCall);
285
367
  await input.eventLog.append('self-heal', { category: errorAnalysis.category, iteration: input.iteration });
286
368
  this.deps.onEvent?.({ type: 'self-heal', category: errorAnalysis.category, iteration: input.iteration });
287
369
  logger_1.logger.info('self-heal: injected reflection', { iteration: input.iteration, category: errorAnalysis.category });