feihong-code 0.2.3 → 0.6.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.
- package/.github/FUNDING.yml +4 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +37 -37
- package/.github/ISSUE_TEMPLATE/config.yml +14 -14
- package/.github/ISSUE_TEMPLATE/feature_request.md +28 -28
- package/.github/PULL_REQUEST_TEMPLATE.md +46 -46
- package/.github/SECURITY.md +67 -67
- package/.github/dependabot.yml +16 -0
- package/.github/workflows/ci.yml +1 -1
- package/AGENT-GUIDE.md +382 -237
- package/CHANGELOG.md +392 -0
- package/CODE_OF_CONDUCT.md +56 -56
- package/CONTRIBUTING.md +68 -68
- package/LICENSE +22 -22
- package/README.md +586 -522
- package/README.self-evolve.md +274 -0
- package/dist/agent/code-review.js +2 -0
- package/dist/agent/code-review.js.map +1 -1
- package/dist/agent/code-writer.js +74 -18
- package/dist/agent/code-writer.js.map +1 -1
- package/dist/agent/context-compactor.js +13 -4
- package/dist/agent/context-compactor.js.map +1 -1
- package/dist/agent/experience.js +319 -84
- package/dist/agent/experience.js.map +1 -1
- package/dist/agent/orchestrator.js +233 -71
- package/dist/agent/orchestrator.js.map +1 -1
- package/dist/agent/planner.js +30 -7
- package/dist/agent/planner.js.map +1 -1
- package/dist/agent/prompts.js +9 -0
- package/dist/agent/prompts.js.map +1 -1
- package/dist/agent/quality-gate.js +10 -4
- package/dist/agent/quality-gate.js.map +1 -1
- package/dist/agent/repo-context.js +181 -0
- package/dist/agent/repo-context.js.map +1 -0
- package/dist/agent/repo-reader.js +92 -99
- package/dist/agent/repo-reader.js.map +1 -1
- package/dist/agent/self-heal.js +80 -60
- package/dist/agent/self-heal.js.map +1 -1
- package/dist/agent/self-improver.js +65 -61
- package/dist/agent/self-improver.js.map +1 -1
- package/dist/agent/subagent-summary.js +31 -0
- package/dist/agent/subagent-summary.js.map +1 -0
- package/dist/agent/subagent.js +52 -2
- package/dist/agent/subagent.js.map +1 -1
- package/dist/agent/symbol-index.js +160 -0
- package/dist/agent/symbol-index.js.map +1 -0
- package/dist/agent/team.js +193 -0
- package/dist/agent/team.js.map +1 -0
- package/dist/cli/commands.js +124 -143
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/index.js +113 -106
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/repl.js +82 -7
- package/dist/cli/repl.js.map +1 -1
- package/dist/cli/run.js +600 -95
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/tui.js +145 -0
- package/dist/cli/tui.js.map +1 -0
- package/dist/cli/version.js +1 -1
- package/dist/enterprise/audit.js +145 -23
- package/dist/enterprise/audit.js.map +1 -1
- package/dist/enterprise/index.js +14 -11
- package/dist/enterprise/index.js.map +1 -1
- package/dist/enterprise/policy.js +22 -10
- package/dist/enterprise/policy.js.map +1 -1
- package/dist/harness/executor.js +127 -0
- package/dist/harness/executor.js.map +1 -0
- package/dist/harness/harness.js +87 -0
- package/dist/harness/harness.js.map +1 -0
- package/dist/harness/index.js +31 -0
- package/dist/harness/index.js.map +1 -0
- package/dist/harness/loader.js +138 -0
- package/dist/harness/loader.js.map +1 -0
- package/dist/harness/reporter.js +34 -0
- package/dist/harness/reporter.js.map +1 -0
- package/dist/harness/types.js +10 -0
- package/dist/harness/types.js.map +1 -0
- package/dist/harness/verifier.js +48 -0
- package/dist/harness/verifier.js.map +1 -0
- package/dist/hello.js +14 -0
- package/dist/hello.js.map +1 -0
- package/dist/memory/auto-summarize.js +208 -0
- package/dist/memory/auto-summarize.js.map +1 -0
- package/dist/memory/index.js +228 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/models/model-router.js +100 -27
- package/dist/models/model-router.js.map +1 -1
- package/dist/models/model.dto.js +25 -3
- package/dist/models/model.dto.js.map +1 -1
- package/dist/models/providers/ollama.provider.js +12 -0
- package/dist/models/providers/ollama.provider.js.map +1 -1
- package/dist/models/providers/openai-compatible.provider.js +14 -1
- package/dist/models/providers/openai-compatible.provider.js.map +1 -1
- package/dist/plugins/plugin-loader.js +179 -0
- package/dist/plugins/plugin-loader.js.map +1 -0
- package/dist/runtime/event-log.js.map +1 -1
- package/dist/runtime/hooks.js +80 -0
- package/dist/runtime/hooks.js.map +1 -0
- package/dist/self-evolve/hook.js +60 -0
- package/dist/self-evolve/hook.js.map +1 -0
- package/dist/self-evolve/hook.ts +80 -0
- package/dist/self-evolve/manager.d.ts +8 -0
- package/dist/self-evolve/manager.js +401 -0
- package/dist/shared/config.js +35 -3
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/errors.js +6 -2
- package/dist/shared/errors.js.map +1 -1
- package/dist/shared/i18n.js +535 -0
- package/dist/shared/i18n.js.map +1 -0
- package/dist/shared/secure-store.js +117 -0
- package/dist/shared/secure-store.js.map +1 -0
- package/dist/skills/grill.js +2 -1
- package/dist/skills/grill.js.map +1 -1
- package/dist/skills/self-heal.js +73 -0
- package/dist/skills/self-heal.js.map +1 -0
- package/dist/skills/skill-loader.js +131 -0
- package/dist/skills/skill-loader.js.map +1 -0
- package/dist/skills/skill-market.js +195 -0
- package/dist/skills/skill-market.js.map +1 -0
- package/dist/tools/analysis/code-analyzer.js +45 -18
- package/dist/tools/analysis/code-analyzer.js.map +1 -1
- package/dist/tools/index.js +5 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/mcp/index.js +84 -0
- package/dist/tools/mcp/index.js.map +1 -0
- package/dist/tools/mcp/mcp-client.js +194 -0
- package/dist/tools/mcp/mcp-client.js.map +1 -0
- package/dist/tools/sandbox.js +126 -0
- package/dist/tools/sandbox.js.map +1 -0
- package/dist/tools/shell/exec.js +72 -3
- package/dist/tools/shell/exec.js.map +1 -1
- package/dist/tools/shell/run-shell.tool.js +37 -7
- package/dist/tools/shell/run-shell.tool.js.map +1 -1
- package/dist/tools/skills/load-skill.tool.js +36 -0
- package/dist/tools/skills/load-skill.tool.js.map +1 -0
- package/dist/tools/tool.interface.js.map +1 -1
- package/dist/tools/tool.registry.js +69 -1
- package/dist/tools/tool.registry.js.map +1 -1
- package/dist/tools/web/web.tool.js +139 -0
- package/dist/tools/web/web.tool.js.map +1 -0
- package/dist/web/auth.js +178 -3
- package/dist/web/auth.js.map +1 -1
- package/dist/web/channels.js +171 -0
- package/dist/web/channels.js.map +1 -0
- package/dist/web/public/css/style.css +1546 -0
- package/dist/web/public/index.html +804 -37
- package/dist/web/public/js/api.js +309 -0
- package/dist/web/public/js/app.js +1472 -0
- package/dist/web/public/js/ui.js +832 -0
- package/dist/web/public/js/utils.js +170 -0
- package/dist/web/server.js +937 -11
- package/dist/web/server.js.map +1 -1
- package/dist/web/task-queue.js +470 -0
- package/dist/web/task-queue.js.map +1 -0
- package/dist/web/web-config.js +143 -0
- package/dist/web/web-config.js.map +1 -0
- package/docs/App/344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +299 -0
- package/docs/App/346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +554 -0
- package/docs/Deployment_Guide_EN.md +288 -0
- package/docs/SELF-EVOLVE-GUIDE.md +313 -0
- package/docs/Technical_Manual_EN.md +216 -0
- package/docs/User_Manual_EN.md +314 -0
- package/docs/error-codes.md +198 -0
- package/docs/screenshots/cli-demo.png +0 -0
- package/docs/screenshots/feature-comparison.png +0 -0
- package/docs/screenshots/web-console.png +0 -0
- package/docs/self-evolve-implementation.md +165 -0
- package/docs/self-evolve.md +166 -0
- package/docs//344/272/247/345/223/201/345/274/200/345/217/221/346/226/207/346/241/243.md +614 -614
- package/docs//344/274/201/344/270/232/351/203/250/347/275/262/344/270/216/345/220/210/350/247/204.md +267 -267
- package/docs//344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +318 -358
- package/docs//345/270/270/350/247/201/351/227/256/351/242/230/344/270/216/346/225/205/351/232/234/346/216/222/346/237/245.md +130 -130
- package/docs//346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +216 -303
- package/docs//346/236/266/346/236/204/344/270/216API.md +238 -238
- package/docs//347/224/250/346/210/267/346/211/213/345/206/214.md +196 -196
- package/docs//351/203/250/347/275/262/346/214/207/345/215/227.md +165 -165
- package/docs//351/203/250/347/275/262/350/257/264/346/230/216/344/271/246.md +288 -0
- package/docs//351/205/215/347/275/256/345/217/202/350/200/203.md +127 -127
- 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
- package/package.json +108 -109
- package/tool-schema.json +117 -46
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pathMatches = pathMatches;
|
|
4
|
+
exports.readRepoInstructions = readRepoInstructions;
|
|
5
|
+
exports.findInstructionFile = findInstructionFile;
|
|
6
|
+
exports.buildRepoInstructionsPrompt = buildRepoInstructionsPrompt;
|
|
7
|
+
exports.scopedInstructionsFor = scopedInstructionsFor;
|
|
8
|
+
/**
|
|
9
|
+
* 飞虹 Code (Muse Code 参照复刻)
|
|
10
|
+
* 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
|
|
11
|
+
*
|
|
12
|
+
* P0-4/P2-3 仓库指令上下文:
|
|
13
|
+
* - P0-4:自动发现并注入仓库级 AGENTS.md(对齐 Codex 的 AGENTS.md 优先机制)
|
|
14
|
+
* - P2-3:支持 `paths` frontmatter 的路径级规则(对齐 Claude Code `.claude/rules/`
|
|
15
|
+
* 与 Gemini JIT 发现)——无 paths 的全局指令常驻 system prompt;带 paths 的
|
|
16
|
+
* 规则只在工具操作相关文件时按需注入,省 token。
|
|
17
|
+
*
|
|
18
|
+
* 发现规则(与 Codex 一致):从 cwd 开始逐级向上查找 AGENTS.md,
|
|
19
|
+
* 取最近一层命中;未找到返回空串(不抛错,保持离线/无指令场景无感)。
|
|
20
|
+
* 支持 AGENTS.md / CLAUDE.md / .atomcode.md 作为兼容别名。
|
|
21
|
+
*/
|
|
22
|
+
const fs_1 = require("fs");
|
|
23
|
+
const path_1 = require("path");
|
|
24
|
+
/** 候选指令文件名(AGENTS.md 优先,别名兜底) */
|
|
25
|
+
const INSTRUCTION_FILES = ['AGENTS.md', 'CLAUDE.md', '.atomcode.md'];
|
|
26
|
+
/** 从 cwd 向上逐级查找仓库根(存在 .git 的目录视为根;找不到则到文件系统根) */
|
|
27
|
+
function findRepoRoot(cwd) {
|
|
28
|
+
let dir = (0, path_1.resolve)(cwd);
|
|
29
|
+
for (;;) {
|
|
30
|
+
if ((0, fs_1.existsSync)((0, path_1.join)(dir, '.git')))
|
|
31
|
+
return dir;
|
|
32
|
+
const parent = (0, path_1.dirname)(dir);
|
|
33
|
+
if (parent === dir)
|
|
34
|
+
return dir; // 已到文件系统根
|
|
35
|
+
dir = parent;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/** 解析 AGENTS.md frontmatter(--- 块内的 key: value 与数组) */
|
|
39
|
+
function parseFrontmatter(text) {
|
|
40
|
+
if (!text.startsWith('---'))
|
|
41
|
+
return { paths: [], rest: text };
|
|
42
|
+
const end = text.indexOf('\n---');
|
|
43
|
+
if (end < 0)
|
|
44
|
+
return { paths: [], rest: text };
|
|
45
|
+
const fm = text.slice(3, end);
|
|
46
|
+
const rest = text.slice(end + 4).trim();
|
|
47
|
+
const paths = [];
|
|
48
|
+
// 支持 paths: ["src/**", "tests/**"] 或 paths: src/ 单值
|
|
49
|
+
const m = /^\s*paths\s*:\s*(.+)$/m.exec(fm);
|
|
50
|
+
if (m) {
|
|
51
|
+
const raw = m[1].trim();
|
|
52
|
+
if (raw.startsWith('[')) {
|
|
53
|
+
for (const item of raw.matchAll(/"([^"]+)"|'([^']+)'/g)) {
|
|
54
|
+
paths.push(item[1] ?? item[2]);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
paths.push(raw.replace(/^["']|["']$/g, ''));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return { paths, rest };
|
|
62
|
+
}
|
|
63
|
+
/** glob → 正则:** 任意深度、* 单层通配,其余元字符转义(顺序敏感:先处理 * 再转义) */
|
|
64
|
+
function globToRegex(p) {
|
|
65
|
+
let out = '^';
|
|
66
|
+
for (let i = 0; i < p.length; i++) {
|
|
67
|
+
const c = p[i];
|
|
68
|
+
if (c === '*') {
|
|
69
|
+
if (p[i + 1] === '*') {
|
|
70
|
+
out += '.*';
|
|
71
|
+
i++;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
out += '[^/]*';
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else if ('\\^$.|?+()[]{}'.includes(c)) {
|
|
78
|
+
out += '\\' + c;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
out += c;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return out + '$';
|
|
85
|
+
}
|
|
86
|
+
/** 路径模式匹配:支持尾部 /(目录前缀)、**(任意深度)、*(单层通配)与精确匹配 */
|
|
87
|
+
function pathMatches(pattern, filePath) {
|
|
88
|
+
const p = pattern.replace(/\\/g, '/').replace(/\/+$/, '');
|
|
89
|
+
const f = filePath.replace(/\\/g, '/');
|
|
90
|
+
if (!p)
|
|
91
|
+
return false;
|
|
92
|
+
// 目录模式(尾部斜杠):前缀匹配(含边界)
|
|
93
|
+
if (pattern.endsWith('/') || pattern.endsWith('\\')) {
|
|
94
|
+
return f === p || f.startsWith(p + '/');
|
|
95
|
+
}
|
|
96
|
+
// 含通配符:转换为正则
|
|
97
|
+
if (p.includes('*')) {
|
|
98
|
+
try {
|
|
99
|
+
return new RegExp(globToRegex(p)).test(f);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// 精确匹配
|
|
106
|
+
return f === p;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* 读取仓库指令(cwd → 仓库根,取最近一层命中文件),解析为全局 + 路径级规则。
|
|
110
|
+
* 无指令返回空结构;内容总上限 8KB 防撑爆上下文。
|
|
111
|
+
*/
|
|
112
|
+
function readRepoInstructions(cwd) {
|
|
113
|
+
const start = (0, path_1.resolve)(cwd);
|
|
114
|
+
const root = findRepoRoot(start);
|
|
115
|
+
let dir = start;
|
|
116
|
+
for (;;) {
|
|
117
|
+
for (const name of INSTRUCTION_FILES) {
|
|
118
|
+
const file = (0, path_1.join)(dir, name);
|
|
119
|
+
if ((0, fs_1.existsSync)(file)) {
|
|
120
|
+
try {
|
|
121
|
+
const text = (0, fs_1.readFileSync)(file, 'utf8').trim();
|
|
122
|
+
const { paths, rest } = parseFrontmatter(text);
|
|
123
|
+
const scoped = [];
|
|
124
|
+
const global = paths.length > 0 ? '' : rest;
|
|
125
|
+
if (paths.length > 0 && rest) {
|
|
126
|
+
scoped.push({ paths, content: rest.slice(0, 4096) });
|
|
127
|
+
}
|
|
128
|
+
return { global: global.slice(0, 8192), scoped };
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
/* 读取失败跳过该文件 */
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (dir === root)
|
|
136
|
+
break;
|
|
137
|
+
const parent = (0, path_1.dirname)(dir);
|
|
138
|
+
if (parent === dir)
|
|
139
|
+
break; // 防御:文件系统根
|
|
140
|
+
dir = parent;
|
|
141
|
+
}
|
|
142
|
+
return { global: '', scoped: [] };
|
|
143
|
+
}
|
|
144
|
+
/** 已发现的指令文件路径(doctor / 诊断用;无则 null) */
|
|
145
|
+
function findInstructionFile(cwd) {
|
|
146
|
+
const start = (0, path_1.resolve)(cwd);
|
|
147
|
+
const root = findRepoRoot(start);
|
|
148
|
+
let dir = start;
|
|
149
|
+
for (;;) {
|
|
150
|
+
for (const name of INSTRUCTION_FILES) {
|
|
151
|
+
const file = (0, path_1.join)(dir, name);
|
|
152
|
+
if ((0, fs_1.existsSync)(file))
|
|
153
|
+
return file;
|
|
154
|
+
}
|
|
155
|
+
if (dir === root)
|
|
156
|
+
break;
|
|
157
|
+
const parent = (0, path_1.dirname)(dir);
|
|
158
|
+
if (parent === dir)
|
|
159
|
+
break;
|
|
160
|
+
dir = parent;
|
|
161
|
+
}
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
/** 生成注入 system prompt 的全局指令片段(无指令返回空串) */
|
|
165
|
+
function buildRepoInstructionsPrompt(cwd) {
|
|
166
|
+
const { global } = readRepoInstructions(cwd);
|
|
167
|
+
if (!global)
|
|
168
|
+
return '';
|
|
169
|
+
const file = findInstructionFile(cwd);
|
|
170
|
+
return `\n\n=== 仓库指令(AGENTS.md,来源: ${file ?? '?'})===\n${global}\n=== 仓库指令结束 ===`;
|
|
171
|
+
}
|
|
172
|
+
/** 查询命中某文件路径的路径级规则(JIT 注入用,未命中返回空串) */
|
|
173
|
+
function scopedInstructionsFor(cwd, filePath) {
|
|
174
|
+
const { scoped } = readRepoInstructions(cwd);
|
|
175
|
+
const hits = scoped.filter((r) => r.paths.some((p) => pathMatches(p, filePath)));
|
|
176
|
+
if (hits.length === 0)
|
|
177
|
+
return '';
|
|
178
|
+
const content = hits.map((r) => r.content).join('\n\n').slice(0, 4096);
|
|
179
|
+
return `\n\n=== 路径级规则(匹配 ${filePath})===\n${content}\n=== 规则结束 ===`;
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=repo-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-context.js","sourceRoot":"","sources":["../../src/agent/repo-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -133,104 +133,8 @@ function langFromExt(ext) {
|
|
|
133
133
|
};
|
|
134
134
|
return map[ext.toLowerCase()] || (ext ? ext.slice(1) : 'other');
|
|
135
135
|
}
|
|
136
|
-
/**
|
|
137
|
-
function
|
|
138
|
-
const maxFiles = opts.maxFiles ?? 2000;
|
|
139
|
-
const treeDepth = opts.treeDepth ?? 3;
|
|
140
|
-
const maxContextLength = opts.maxContextLength ?? 6000;
|
|
141
|
-
const maxPreviewBytes = opts.maxPreviewBytes ?? 64 * 1024;
|
|
142
|
-
const ignores = parseGitignore(root);
|
|
143
|
-
const files = [];
|
|
144
|
-
const languages = {};
|
|
145
|
-
let totalBytes = 0;
|
|
146
|
-
let truncated = false;
|
|
147
|
-
// BFS 遍历,带深度限制与忽略
|
|
148
|
-
const walk = (dir, depth) => {
|
|
149
|
-
if (files.length >= maxFiles) {
|
|
150
|
-
truncated = true;
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
let entries;
|
|
154
|
-
try {
|
|
155
|
-
entries = (0, fs_1.readdirSync)(dir);
|
|
156
|
-
}
|
|
157
|
-
catch {
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
for (const name of entries) {
|
|
161
|
-
if (files.length >= maxFiles) {
|
|
162
|
-
truncated = true;
|
|
163
|
-
break;
|
|
164
|
-
}
|
|
165
|
-
const abs = (0, path_1.join)(dir, name);
|
|
166
|
-
let st;
|
|
167
|
-
try {
|
|
168
|
-
st = (0, fs_1.statSync)(abs);
|
|
169
|
-
}
|
|
170
|
-
catch {
|
|
171
|
-
continue;
|
|
172
|
-
}
|
|
173
|
-
const rel = (0, path_1.relative)(root, abs);
|
|
174
|
-
if (DEFAULT_IGNORES.includes(name) || matchesIgnore(rel, ignores))
|
|
175
|
-
continue;
|
|
176
|
-
if (st.isDirectory()) {
|
|
177
|
-
walk(abs, depth + 1);
|
|
178
|
-
}
|
|
179
|
-
else if (st.isFile()) {
|
|
180
|
-
const ext = (0, path_1.extname)(name).toLowerCase();
|
|
181
|
-
const isSource = SOURCE_EXTS.has(ext);
|
|
182
|
-
const entry = {
|
|
183
|
-
path: rel,
|
|
184
|
-
abs,
|
|
185
|
-
size: st.size,
|
|
186
|
-
ext,
|
|
187
|
-
isSource,
|
|
188
|
-
isTest: isTestFile(rel),
|
|
189
|
-
};
|
|
190
|
-
files.push(entry);
|
|
191
|
-
totalBytes += st.size;
|
|
192
|
-
if (isSource) {
|
|
193
|
-
const lang = langFromExt(ext);
|
|
194
|
-
languages[lang] = (languages[lang] ?? 0) + 1;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
};
|
|
199
|
-
walk(root, 0);
|
|
200
|
-
// 关键文件识别
|
|
201
|
-
const keyFiles = [];
|
|
202
|
-
const candidates = [
|
|
203
|
-
'package.json',
|
|
204
|
-
'pyproject.toml',
|
|
205
|
-
'go.mod',
|
|
206
|
-
'Cargo.toml',
|
|
207
|
-
'pom.xml',
|
|
208
|
-
'build.gradle',
|
|
209
|
-
'requirements.txt',
|
|
210
|
-
'README.md',
|
|
211
|
-
'README.rst',
|
|
212
|
-
'README',
|
|
213
|
-
'tsconfig.json',
|
|
214
|
-
'vite.config.ts',
|
|
215
|
-
'webpack.config.js',
|
|
216
|
-
'jest.config.js',
|
|
217
|
-
'vitest.config.ts',
|
|
218
|
-
'Dockerfile',
|
|
219
|
-
'.github/workflows',
|
|
220
|
-
];
|
|
221
|
-
for (const c of candidates) {
|
|
222
|
-
if ((0, fs_1.existsSync)((0, path_1.join)(root, c)))
|
|
223
|
-
keyFiles.push(c);
|
|
224
|
-
}
|
|
225
|
-
// 入口文件(index/main/bin)
|
|
226
|
-
for (const f of files) {
|
|
227
|
-
const b = (0, path_1.basename)(f.path);
|
|
228
|
-
if (/^(index|main|app|server|cli)\.(ts|tsx|js|jsx|mjs|go|py|rs|java)$/.test(b)) {
|
|
229
|
-
if (!keyFiles.includes(f.path))
|
|
230
|
-
keyFiles.push(f.path);
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
// 测试 / 构建命令探测
|
|
136
|
+
/** 探测测试 / 构建命令(package.json 优先,Python/Go/Rust 兜底) */
|
|
137
|
+
function detectTestBuild(root) {
|
|
234
138
|
let testCommand;
|
|
235
139
|
let testFramework;
|
|
236
140
|
let buildCommand;
|
|
@@ -267,7 +171,6 @@ function readRepository(root, opts = {}) {
|
|
|
267
171
|
/* 忽略损坏的 package.json */
|
|
268
172
|
}
|
|
269
173
|
}
|
|
270
|
-
// Python / Go / Rust 兜底
|
|
271
174
|
if (!testCommand) {
|
|
272
175
|
if ((0, fs_1.existsSync)((0, path_1.join)(root, 'pyproject.toml')) || (0, fs_1.existsSync)((0, path_1.join)(root, 'pytest.ini'))) {
|
|
273
176
|
testFramework = 'pytest';
|
|
@@ -282,6 +185,96 @@ function readRepository(root, opts = {}) {
|
|
|
282
185
|
testCommand = 'cargo test';
|
|
283
186
|
}
|
|
284
187
|
}
|
|
188
|
+
return { testCommand, testFramework, buildCommand, hasPackageJson };
|
|
189
|
+
}
|
|
190
|
+
/** BFS 遍历仓库(带文件数限流与忽略规则),结果写入 WalkState */
|
|
191
|
+
function walkRepository(dir, root, maxFiles, ignores, state) {
|
|
192
|
+
if (state.files.length >= maxFiles) {
|
|
193
|
+
state.truncated = true;
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
let entries;
|
|
197
|
+
try {
|
|
198
|
+
entries = (0, fs_1.readdirSync)(dir);
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
for (const name of entries) {
|
|
204
|
+
if (state.files.length >= maxFiles) {
|
|
205
|
+
state.truncated = true;
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
208
|
+
const abs = (0, path_1.join)(dir, name);
|
|
209
|
+
let st;
|
|
210
|
+
try {
|
|
211
|
+
st = (0, fs_1.statSync)(abs);
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
const rel = (0, path_1.relative)(root, abs);
|
|
217
|
+
if (DEFAULT_IGNORES.includes(name) || matchesIgnore(rel, ignores))
|
|
218
|
+
continue;
|
|
219
|
+
if (st.isDirectory()) {
|
|
220
|
+
walkRepository(abs, root, maxFiles, ignores, state);
|
|
221
|
+
}
|
|
222
|
+
else if (st.isFile()) {
|
|
223
|
+
const ext = (0, path_1.extname)(name).toLowerCase();
|
|
224
|
+
const isSource = SOURCE_EXTS.has(ext);
|
|
225
|
+
state.files.push({ path: rel, abs, size: st.size, ext, isSource, isTest: isTestFile(rel) });
|
|
226
|
+
state.totalBytes += st.size;
|
|
227
|
+
if (isSource) {
|
|
228
|
+
const lang = langFromExt(ext);
|
|
229
|
+
state.languages[lang] = (state.languages[lang] ?? 0) + 1;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
/** 读取整个代码仓库,产出结构化快照 */
|
|
235
|
+
function readRepository(root, opts = {}) {
|
|
236
|
+
const maxFiles = opts.maxFiles ?? 2000;
|
|
237
|
+
const treeDepth = opts.treeDepth ?? 3;
|
|
238
|
+
const maxContextLength = opts.maxContextLength ?? 6000;
|
|
239
|
+
const maxPreviewBytes = opts.maxPreviewBytes ?? 64 * 1024;
|
|
240
|
+
const ignores = parseGitignore(root);
|
|
241
|
+
const state = { files: [], languages: {}, totalBytes: 0, truncated: false };
|
|
242
|
+
walkRepository(root, root, maxFiles, ignores, state);
|
|
243
|
+
const { files, languages, totalBytes, truncated } = state;
|
|
244
|
+
// 关键文件识别
|
|
245
|
+
const keyFiles = [];
|
|
246
|
+
const candidates = [
|
|
247
|
+
'package.json',
|
|
248
|
+
'pyproject.toml',
|
|
249
|
+
'go.mod',
|
|
250
|
+
'Cargo.toml',
|
|
251
|
+
'pom.xml',
|
|
252
|
+
'build.gradle',
|
|
253
|
+
'requirements.txt',
|
|
254
|
+
'README.md',
|
|
255
|
+
'README.rst',
|
|
256
|
+
'README',
|
|
257
|
+
'tsconfig.json',
|
|
258
|
+
'vite.config.ts',
|
|
259
|
+
'webpack.config.js',
|
|
260
|
+
'jest.config.js',
|
|
261
|
+
'vitest.config.ts',
|
|
262
|
+
'Dockerfile',
|
|
263
|
+
'.github/workflows',
|
|
264
|
+
];
|
|
265
|
+
for (const c of candidates) {
|
|
266
|
+
if ((0, fs_1.existsSync)((0, path_1.join)(root, c)))
|
|
267
|
+
keyFiles.push(c);
|
|
268
|
+
}
|
|
269
|
+
// 入口文件(index/main/bin)
|
|
270
|
+
for (const f of files) {
|
|
271
|
+
const b = (0, path_1.basename)(f.path);
|
|
272
|
+
if (/^(index|main|app|server|cli)\.(ts|tsx|js|jsx|mjs|go|py|rs|java)$/.test(b)) {
|
|
273
|
+
if (!keyFiles.includes(f.path))
|
|
274
|
+
keyFiles.push(f.path);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
const { testCommand, testFramework, buildCommand, hasPackageJson } = detectTestBuild(root);
|
|
285
278
|
const tree = buildTree(root, files, treeDepth);
|
|
286
279
|
const contextString = buildContextString({
|
|
287
280
|
root,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo-reader.js","sourceRoot":"","sources":["../../src/agent/repo-reader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"repo-reader.js","sourceRoot":"","sources":["../../src/agent/repo-reader.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/self-heal.js
CHANGED
|
@@ -7,79 +7,99 @@ exports.countConsecutiveErrors = countConsecutiveErrors;
|
|
|
7
7
|
exports.buildReflectContext = buildReflectContext;
|
|
8
8
|
exports.logRecoveryAttempt = logRecoveryAttempt;
|
|
9
9
|
const logger_1 = require("../shared/logger");
|
|
10
|
-
/**
|
|
10
|
+
/** 错误分类规则表(顺序即优先级,命中即返回) */
|
|
11
|
+
const ERROR_RULES = [
|
|
12
|
+
{
|
|
13
|
+
category: 'compile-error',
|
|
14
|
+
keywords: ['error ts', 'typescript error', 'cannot find module', 'syntax error', '编译', 'tsc'],
|
|
15
|
+
fixHint: '检查 TypeScript 类型错误、缺失依赖或路径拼写错误。尝试运行 npm run build 查看完整错误信息。',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
category: 'runtime-error',
|
|
19
|
+
keywords: ['undefined is not', 'cannot read property', 'referenceerror', 'typeerror', '未定义', 'is not a function'],
|
|
20
|
+
fixHint: '检查变量是否已定义、函数调用是否正确、空值处理是否完善。',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
category: 'path-traversal',
|
|
24
|
+
keywords: ['path traversal', 'outside workspace', 'safe-path', 'forbidden', '路径', '穿越'],
|
|
25
|
+
fixHint: '文件路径包含非法字符或试图访问工作区外部。使用相对路径,避免 ../ 穿越。',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
category: 'timeout',
|
|
29
|
+
keywords: ['timeout', 'timed out', 'ETIMEDOUT', '超时'],
|
|
30
|
+
fixHint: '命令执行超时。检查是否存在死循环或需要长时间运行的进程。',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
category: 'permission-denied',
|
|
34
|
+
keywords: ['permission denied', 'eacces', 'eperm', '权限', '拒绝'],
|
|
35
|
+
fixHint: '文件权限不足或路径不存在。检查文件权限和目录结构。',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
category: 'file-not-found',
|
|
39
|
+
keywords: ['enoent', 'no such file', '读取失败', '文件不存在', 'not found', 'eisdir', '不存在'],
|
|
40
|
+
fixHint: '目标文件或目录不存在。先用 list_dir 勘察当前目录结构,确认正确路径后再操作;不要反复尝试同一不存在的路径。',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
category: 'build-error',
|
|
44
|
+
keywords: ['missing script', 'npm error', 'build failed', '编译失败', '构建失败', 'exit code 1', 'command failed'],
|
|
45
|
+
fixHint: '构建命令执行失败。检查 package.json 是否存在对应 script、工作目录是否正确、依赖是否已安装。先用 list_dir 确认目录结构,再决定用什么构建命令。',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
category: 'command-not-found',
|
|
49
|
+
keywords: ['command not found', 'not recognized', 'is not recognized', '找不到命令', '命令不存在', 'enoent command'],
|
|
50
|
+
fixHint: '命令不存在或未安装。检查命令拼写是否正确、是否需要先安装依赖、是否在正确的工作目录下执行。',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
category: 'invalid-args',
|
|
54
|
+
keywords: ['参数校验失败', '参数警告', 'unknown tool', '未知工具', 'invalid argument', 'unexpected argument'],
|
|
55
|
+
fixHint: '工具参数错误。检查是否把 A 工具的参数传给了 B 工具,每个工具只接受自己文档中定义的参数。先确认工具名称,再传对应参数。',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
category: 'model-error',
|
|
59
|
+
keywords: ['api error', 'rate limit', '429', '500', '模型', '限流'],
|
|
60
|
+
fixHint: '模型 API 错误。检查 API 密钥、速率限制或网络连通性。',
|
|
61
|
+
},
|
|
62
|
+
];
|
|
63
|
+
/** 错误分类器:根据工具返回结果判断错误类型(规则表驱动,中英双语识别)。
|
|
64
|
+
* 未命中任何规则时返回 'unknown' 兜底分类,确保 orchestrator 的重试上限与自愈逻辑不会被绕过。 */
|
|
11
65
|
function classifyError(output, error) {
|
|
12
66
|
const text = (error || output).toLowerCase();
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
message: error || output,
|
|
18
|
-
fixHint: '检查 TypeScript 类型错误、缺失依赖或路径拼写错误。尝试运行 npm run build 查看完整错误信息。',
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
// 运行时错误
|
|
22
|
-
if (text.includes('undefined is not') || text.includes('cannot read property') || text.includes('referenceerror') || text.includes('typeerror')) {
|
|
23
|
-
return {
|
|
24
|
-
category: 'runtime-error',
|
|
25
|
-
message: error || output,
|
|
26
|
-
fixHint: '检查变量是否已定义、函数调用是否正确、空值处理是否完善。',
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
// 路径穿越
|
|
30
|
-
if (text.includes('path traversal') || text.includes('outside workspace') || text.includes('safe-path') || text.includes('forbidden')) {
|
|
31
|
-
return {
|
|
32
|
-
category: 'path-traversal',
|
|
33
|
-
message: error || output,
|
|
34
|
-
fixHint: '文件路径包含非法字符或试图访问工作区外部。使用相对路径,避免 ../ 穿越。',
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
// 超时
|
|
38
|
-
if (text.includes('timeout') || text.includes('timed out') || text.includes('ETIMEDOUT')) {
|
|
39
|
-
return {
|
|
40
|
-
category: 'timeout',
|
|
41
|
-
message: error || output,
|
|
42
|
-
fixHint: '命令执行超时。检查是否存在死循环或需要长时间运行的进程。',
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
// 权限拒绝
|
|
46
|
-
if (text.includes('permission denied') || text.includes('eacces') || text.includes('epERM')) {
|
|
47
|
-
return {
|
|
48
|
-
category: 'permission-denied',
|
|
49
|
-
message: error || output,
|
|
50
|
-
fixHint: '文件权限不足或路径不存在。检查文件权限和目录结构。',
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
// 模型错误
|
|
54
|
-
if (text.includes('api error') || text.includes('rate limit') || text.includes('429') || text.includes('500')) {
|
|
55
|
-
return {
|
|
56
|
-
category: 'model-error',
|
|
57
|
-
message: error || output,
|
|
58
|
-
fixHint: '模型 API 错误。检查 API 密钥、速率限制或网络连通性。',
|
|
59
|
-
};
|
|
67
|
+
for (const rule of ERROR_RULES) {
|
|
68
|
+
if (rule.keywords.some((kw) => text.includes(kw))) {
|
|
69
|
+
return { category: rule.category, message: error || output, fixHint: rule.fixHint };
|
|
70
|
+
}
|
|
60
71
|
}
|
|
61
|
-
return
|
|
72
|
+
return {
|
|
73
|
+
category: 'unknown',
|
|
74
|
+
message: error || output,
|
|
75
|
+
fixHint: '未识别的错误类型。请仔细阅读错误信息,调整执行策略,避免重复相同操作。',
|
|
76
|
+
};
|
|
62
77
|
}
|
|
63
|
-
/**
|
|
64
|
-
|
|
65
|
-
|
|
78
|
+
/** 生成反思提示词,指导模型基于错误进行修复。
|
|
79
|
+
* 包含具体工具名、参数、错误详情,避免笼统的"请反思"导致模型重复同样错误。 */
|
|
80
|
+
function generateReflectPrompt(errorAnalysis, _goal, lastToolCall) {
|
|
81
|
+
const toolInfo = lastToolCall
|
|
82
|
+
? `\n**出错工具**: ${lastToolCall.name}\n**传入参数**: ${JSON.stringify(lastToolCall.args)}\n`
|
|
83
|
+
: '';
|
|
84
|
+
return `⚠️ 上一轮工具执行失败,请仔细反思并修正策略:
|
|
66
85
|
|
|
67
86
|
**错误类型**: ${errorAnalysis.category}
|
|
68
|
-
**错误详情**: ${errorAnalysis.message}
|
|
87
|
+
**错误详情**: ${errorAnalysis.message}${toolInfo}
|
|
69
88
|
**修复建议**: ${errorAnalysis.fixHint}
|
|
70
89
|
|
|
71
|
-
|
|
72
|
-
1.
|
|
73
|
-
2.
|
|
74
|
-
3.
|
|
75
|
-
4.
|
|
90
|
+
请严格遵守以下规则:
|
|
91
|
+
1. 不要再用相同参数重复调用同一个失败的工具——这会继续失败
|
|
92
|
+
2. 检查工具名称是否正确、参数是否属于该工具(每个工具只接受自己文档中定义的参数)
|
|
93
|
+
3. 如有必要,先用 list_dir 勘察目录结构,或用 read_file 确认文件存在
|
|
94
|
+
4. 如果某个工具连续失败,换一种方式或换一个工具实现目标
|
|
95
|
+
5. 修正后再调用工具,不要盲目重试
|
|
76
96
|
`;
|
|
77
97
|
}
|
|
78
98
|
/** 将反思消息注入对话上下文 */
|
|
79
|
-
function injectReflection(messages, errorAnalysis, goal) {
|
|
99
|
+
function injectReflection(messages, errorAnalysis, goal, lastToolCall) {
|
|
80
100
|
const reflectMsg = {
|
|
81
101
|
role: 'user',
|
|
82
|
-
content: generateReflectPrompt(errorAnalysis, goal),
|
|
102
|
+
content: generateReflectPrompt(errorAnalysis, goal, lastToolCall),
|
|
83
103
|
};
|
|
84
104
|
return [...messages, reflectMsg];
|
|
85
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-heal.js","sourceRoot":"","sources":["../../src/agent/self-heal.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"self-heal.js","sourceRoot":"","sources":["../../src/agent/self-heal.ts"],"names":[],"mappings":"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"}
|