yuangs 5.60.0 → 5.64.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/dist/agent/DualAgentRuntime.d.ts +15 -1
- package/dist/agent/DualAgentRuntime.js +62 -37
- package/dist/agent/DualAgentRuntime.js.map +1 -1
- package/dist/agent/PlanCache.d.ts +207 -0
- package/dist/agent/PlanCache.js +468 -0
- package/dist/agent/PlanCache.js.map +1 -0
- package/dist/agent/governance/riskScoring.d.ts +118 -0
- package/dist/agent/governance/riskScoring.js +422 -0
- package/dist/agent/governance/riskScoring.js.map +1 -0
- package/dist/agent/governance.d.ts +26 -0
- package/dist/agent/governance.js +86 -5
- package/dist/agent/governance.js.map +1 -1
- package/dist/agent/llm.d.ts +1 -1
- package/dist/agent/relevance.d.ts +93 -0
- package/dist/agent/relevance.js +345 -1
- package/dist/agent/relevance.js.map +1 -1
- package/dist/agent/smartContextManager.d.ts +22 -1
- package/dist/agent/smartContextManager.js +108 -4
- package/dist/agent/smartContextManager.js.map +1 -1
- package/dist/agent/state.d.ts +3 -0
- package/dist/commands/contextStorage.d.ts +32 -0
- package/dist/commands/contextStorage.js +81 -0
- package/dist/commands/contextStorage.js.map +1 -1
- package/dist/core/modelRouter/AdaptiveWeights.d.ts +134 -0
- package/dist/core/modelRouter/AdaptiveWeights.js +300 -0
- package/dist/core/modelRouter/AdaptiveWeights.js.map +1 -0
- package/dist/core/modelRouter/ModelRouter.d.ts +45 -3
- package/dist/core/modelRouter/ModelRouter.js +138 -6
- package/dist/core/modelRouter/ModelRouter.js.map +1 -1
- package/dist/core/modelRouter/MultiMetricSupervisor.d.ts +99 -0
- package/dist/core/modelRouter/MultiMetricSupervisor.js +267 -0
- package/dist/core/modelRouter/MultiMetricSupervisor.js.map +1 -0
- package/dist/core/modelRouter/policies/DslPolicy.d.ts +16 -1
- package/dist/core/modelRouter/policies/DslPolicy.js +22 -1
- package/dist/core/modelRouter/policies/DslPolicy.js.map +1 -1
- package/dist/utils/renderer.d.ts +5 -0
- package/dist/utils/renderer.js +46 -1
- package/dist/utils/renderer.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 上下文项接口
|
|
3
|
+
* 用于表示单个上下文项,包含路径、内容、元数据等信息
|
|
4
|
+
*/
|
|
1
5
|
export interface ContextItem {
|
|
6
|
+
/** 文件路径或标识符 */
|
|
2
7
|
path: string;
|
|
8
|
+
/** 原始内容 */
|
|
3
9
|
content?: string;
|
|
10
|
+
/** 内容摘要 */
|
|
4
11
|
summary?: string;
|
|
12
|
+
/** 最后访问时间戳 */
|
|
13
|
+
lastUsedAt?: number;
|
|
14
|
+
/** 添加时间戳 */
|
|
15
|
+
addedAt?: number;
|
|
16
|
+
/** 访问次数计数 */
|
|
17
|
+
accessCount?: number;
|
|
18
|
+
/** 自定义衰减率(越大衰减越快) */
|
|
19
|
+
decayRate?: number;
|
|
20
|
+
/** 重要性分数 (0-1) */
|
|
21
|
+
importance?: number;
|
|
22
|
+
/** 唯一标识符 */
|
|
23
|
+
id?: string;
|
|
24
|
+
/** 上下文来源类型 */
|
|
25
|
+
source?: 'file' | 'directory' | 'memory' | 'antipattern';
|
|
26
|
+
/** 上下文状态 */
|
|
27
|
+
status?: 'active' | 'reference' | 'memory' | 'stale' | 'expired';
|
|
28
|
+
/** 是否置顶(置顶项目不会衰减) */
|
|
29
|
+
pinned?: boolean;
|
|
30
|
+
/** 标签列表 */
|
|
31
|
+
tags?: string[];
|
|
5
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* 重要性评分配置常量
|
|
35
|
+
* 用于 calculateImportance 函数
|
|
36
|
+
*/
|
|
37
|
+
export declare const IMPORTANCE_CONFIG: {
|
|
38
|
+
readonly BASE_SCORE: 0.5;
|
|
39
|
+
readonly CORE_PATH_BOOST: 0.2;
|
|
40
|
+
readonly SOURCE_PATH_BOOST: 0.1;
|
|
41
|
+
readonly TEST_FILE_PENALTY: 0.15;
|
|
42
|
+
readonly CONFIG_FILE_BOOST: 0.05;
|
|
43
|
+
readonly DOC_FILE_PENALTY: 0.1;
|
|
44
|
+
readonly MIN_CONTENT_LENGTH: 50;
|
|
45
|
+
readonly SHORT_CONTENT_PENALTY: 0.2;
|
|
46
|
+
readonly LONG_CONTENT_THRESHOLD: 1000;
|
|
47
|
+
readonly LONG_CONTENT_BOOST: 0.15;
|
|
48
|
+
readonly MEDIUM_CONTENT_THRESHOLD: 500;
|
|
49
|
+
readonly MEDIUM_CONTENT_BOOST: 0.1;
|
|
50
|
+
readonly HIGH_ACCESS_COUNT: 10;
|
|
51
|
+
readonly HIGH_ACCESS_BOOST: 0.15;
|
|
52
|
+
readonly MEDIUM_ACCESS_COUNT: 5;
|
|
53
|
+
readonly MEDIUM_ACCESS_BOOST: 0.1;
|
|
54
|
+
readonly LOW_ACCESS_COUNT: 2;
|
|
55
|
+
readonly LOW_ACCESS_BOOST: 0.05;
|
|
56
|
+
readonly STALE_STATUS_PENALTY: 0.2;
|
|
57
|
+
readonly PINNED_MIN_SCORE: 0.9;
|
|
58
|
+
readonly IMPORTANT_TAG_BOOST: 0.15;
|
|
59
|
+
readonly IMPORTANT_TAGS: string[];
|
|
60
|
+
readonly CORE_PATHS: readonly ["src/core", "lib/core", "kernel", "engine", "runtime"];
|
|
61
|
+
readonly SOURCE_PATHS: readonly ["src/", "lib/", "handlers/", "services/", "utils/"];
|
|
62
|
+
readonly MIN_SCORE: 0;
|
|
63
|
+
readonly MAX_SCORE: 1;
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* 时间衰减配置常量
|
|
67
|
+
* 用于 calculateRecencyScore 函数
|
|
68
|
+
*/
|
|
69
|
+
export declare const RECENCY_CONFIG: {
|
|
70
|
+
readonly DEFAULT_HALF_LIFE_DAYS: 30;
|
|
71
|
+
readonly FREQUENCY_BOOST_FACTOR: 0.1;
|
|
72
|
+
readonly MAX_FREQUENCY_BOOST_MULTIPLIER: 2;
|
|
73
|
+
readonly DEFAULT_DECAY_SCORE: 0.5;
|
|
74
|
+
readonly PINNED_SCORE: 1;
|
|
75
|
+
};
|
|
6
76
|
export interface RankedContextItem extends ContextItem {
|
|
7
77
|
relevance: number;
|
|
8
78
|
matchReasons: string[];
|
|
@@ -13,6 +83,29 @@ export interface RelevanceConfig {
|
|
|
13
83
|
extensionWeight: number;
|
|
14
84
|
recencyWeight: number;
|
|
15
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* 查询意图类型
|
|
88
|
+
* 不同意图会影响相关性计算的权重分配
|
|
89
|
+
*/
|
|
90
|
+
export type QueryIntent = 'debug' | 'refactor' | 'feature' | 'docs' | 'general';
|
|
91
|
+
/**
|
|
92
|
+
* 预定义的意图相关权重配置
|
|
93
|
+
*/
|
|
94
|
+
export declare const INTENT_WEIGHTS: Record<QueryIntent, Partial<RelevanceConfig>>;
|
|
95
|
+
/**
|
|
96
|
+
* 检测查询意图
|
|
97
|
+
* 基于查询中的关键词推断用户意图
|
|
98
|
+
*
|
|
99
|
+
* @param query 用户查询字符串
|
|
100
|
+
* @returns 检测到的意图类型
|
|
101
|
+
*/
|
|
102
|
+
export declare function detectQueryIntent(query: string): QueryIntent;
|
|
103
|
+
/**
|
|
104
|
+
* 计算上下文项的重要性分数
|
|
105
|
+
* 基于路径重要性、内容质量、访问频率等因素
|
|
106
|
+
* 返回值范围:0-1,1 表示最重要
|
|
107
|
+
*/
|
|
108
|
+
export declare function calculateImportance(item: ContextItem): number;
|
|
16
109
|
export declare function rankByRelevance(items: ContextItem[], query: string, config?: Partial<RelevanceConfig>): RankedContextItem[];
|
|
17
110
|
export declare function calculateTotalTokens(items: ContextItem[]): number;
|
|
18
111
|
export declare function filterContextByRelevance(items: ContextItem[], query: string, minRelevance?: number, config?: Partial<RelevanceConfig>): RankedContextItem[];
|
package/dist/agent/relevance.js
CHANGED
|
@@ -1,8 +1,109 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.INTENT_WEIGHTS = exports.RECENCY_CONFIG = exports.IMPORTANCE_CONFIG = void 0;
|
|
4
|
+
exports.detectQueryIntent = detectQueryIntent;
|
|
5
|
+
exports.calculateImportance = calculateImportance;
|
|
3
6
|
exports.rankByRelevance = rankByRelevance;
|
|
4
7
|
exports.calculateTotalTokens = calculateTotalTokens;
|
|
5
8
|
exports.filterContextByRelevance = filterContextByRelevance;
|
|
9
|
+
/**
|
|
10
|
+
* 重要性评分配置常量
|
|
11
|
+
* 用于 calculateImportance 函数
|
|
12
|
+
*/
|
|
13
|
+
exports.IMPORTANCE_CONFIG = {
|
|
14
|
+
// 基础分数
|
|
15
|
+
BASE_SCORE: 0.5,
|
|
16
|
+
// 路径重要性权重
|
|
17
|
+
CORE_PATH_BOOST: 0.2, // 核心目录加分
|
|
18
|
+
SOURCE_PATH_BOOST: 0.1, // 源码目录加分
|
|
19
|
+
TEST_FILE_PENALTY: 0.15, // 测试文件减分
|
|
20
|
+
CONFIG_FILE_BOOST: 0.05, // 配置文件加分
|
|
21
|
+
DOC_FILE_PENALTY: 0.1, // 文档文件减分
|
|
22
|
+
// 内容质量权重
|
|
23
|
+
MIN_CONTENT_LENGTH: 50, // 最小内容长度阈值
|
|
24
|
+
SHORT_CONTENT_PENALTY: 0.2, // 短内容减分
|
|
25
|
+
LONG_CONTENT_THRESHOLD: 1000, // 长内容阈值
|
|
26
|
+
LONG_CONTENT_BOOST: 0.15, // 长内容加分
|
|
27
|
+
MEDIUM_CONTENT_THRESHOLD: 500, // 中等内容阈值
|
|
28
|
+
MEDIUM_CONTENT_BOOST: 0.1, // 中等内容加分
|
|
29
|
+
// 访问频率权重
|
|
30
|
+
HIGH_ACCESS_COUNT: 10, // 高访问次数阈值
|
|
31
|
+
HIGH_ACCESS_BOOST: 0.15, // 高访问加分
|
|
32
|
+
MEDIUM_ACCESS_COUNT: 5, // 中访问次数阈值
|
|
33
|
+
MEDIUM_ACCESS_BOOST: 0.1, // 中访问加分
|
|
34
|
+
LOW_ACCESS_COUNT: 2, // 低访问次数阈值
|
|
35
|
+
LOW_ACCESS_BOOST: 0.05, // 低访问加分
|
|
36
|
+
// 状态权重
|
|
37
|
+
STALE_STATUS_PENALTY: 0.2, // 过期状态减分
|
|
38
|
+
// 特殊标记
|
|
39
|
+
PINNED_MIN_SCORE: 0.9, // 置顶项目最低分数
|
|
40
|
+
IMPORTANT_TAG_BOOST: 0.15, // 重要标签加分
|
|
41
|
+
// 重要标签列表
|
|
42
|
+
IMPORTANT_TAGS: ['critical', 'core', 'essential', 'important'],
|
|
43
|
+
// 核心目录列表
|
|
44
|
+
CORE_PATHS: ['src/core', 'lib/core', 'kernel', 'engine', 'runtime'],
|
|
45
|
+
// 源码目录列表
|
|
46
|
+
SOURCE_PATHS: ['src/', 'lib/', 'handlers/', 'services/', 'utils/'],
|
|
47
|
+
// 分数范围
|
|
48
|
+
MIN_SCORE: 0,
|
|
49
|
+
MAX_SCORE: 1,
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* 时间衰减配置常量
|
|
53
|
+
* 用于 calculateRecencyScore 函数
|
|
54
|
+
*/
|
|
55
|
+
exports.RECENCY_CONFIG = {
|
|
56
|
+
// 默认半衰期(天)
|
|
57
|
+
DEFAULT_HALF_LIFE_DAYS: 30,
|
|
58
|
+
// 访问频率加成因子
|
|
59
|
+
FREQUENCY_BOOST_FACTOR: 0.1,
|
|
60
|
+
// 最大频率加成倍数
|
|
61
|
+
MAX_FREQUENCY_BOOST_MULTIPLIER: 2,
|
|
62
|
+
// 默认时间衰减分数(无时间戳时)
|
|
63
|
+
DEFAULT_DECAY_SCORE: 0.5,
|
|
64
|
+
// 置顶项目分数
|
|
65
|
+
PINNED_SCORE: 1.0,
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* 预定义的意图相关权重配置
|
|
69
|
+
*/
|
|
70
|
+
exports.INTENT_WEIGHTS = {
|
|
71
|
+
// 调试时:关键词匹配最重要,路径次之
|
|
72
|
+
debug: {
|
|
73
|
+
keywordsWeight: 0.5,
|
|
74
|
+
pathWeight: 0.2,
|
|
75
|
+
extensionWeight: 0.15,
|
|
76
|
+
recencyWeight: 0.15
|
|
77
|
+
},
|
|
78
|
+
// 重构时:路径结构最重要,关键词次之
|
|
79
|
+
refactor: {
|
|
80
|
+
keywordsWeight: 0.2,
|
|
81
|
+
pathWeight: 0.5,
|
|
82
|
+
extensionWeight: 0.2,
|
|
83
|
+
recencyWeight: 0.1
|
|
84
|
+
},
|
|
85
|
+
// 新功能开发:均衡配置,略偏关键词
|
|
86
|
+
feature: {
|
|
87
|
+
keywordsWeight: 0.35,
|
|
88
|
+
pathWeight: 0.35,
|
|
89
|
+
extensionWeight: 0.2,
|
|
90
|
+
recencyWeight: 0.1
|
|
91
|
+
},
|
|
92
|
+
// 文档查询:路径和扩展名更重要
|
|
93
|
+
docs: {
|
|
94
|
+
keywordsWeight: 0.25,
|
|
95
|
+
pathWeight: 0.35,
|
|
96
|
+
extensionWeight: 0.3,
|
|
97
|
+
recencyWeight: 0.1
|
|
98
|
+
},
|
|
99
|
+
// 通用查询:默认权重
|
|
100
|
+
general: {
|
|
101
|
+
keywordsWeight: 0.4,
|
|
102
|
+
pathWeight: 0.3,
|
|
103
|
+
extensionWeight: 0.2,
|
|
104
|
+
recencyWeight: 0.1
|
|
105
|
+
}
|
|
106
|
+
};
|
|
6
107
|
const DEFAULT_CONFIG = {
|
|
7
108
|
keywordsWeight: 0.4,
|
|
8
109
|
pathWeight: 0.3,
|
|
@@ -28,6 +129,120 @@ function extractKeywords(query) {
|
|
|
28
129
|
}
|
|
29
130
|
return Array.from(keywords);
|
|
30
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* 意图检测配置
|
|
134
|
+
*
|
|
135
|
+
* 局限性说明:
|
|
136
|
+
* 1. 基于简单关键词匹配,对于复杂或模糊的查询可能误判
|
|
137
|
+
* 2. 不支持上下文感知,无法理解对话历史中的意图变化
|
|
138
|
+
* 3. 否定词检测仅基于简单模式,可能无法处理复杂否定结构
|
|
139
|
+
* 4. 对于未来改进方向,可以考虑使用 NLP 模型或机器学习分类器
|
|
140
|
+
*/
|
|
141
|
+
const INTENT_KEYWORDS = {
|
|
142
|
+
debug: [
|
|
143
|
+
{ keyword: 'debug', weight: 5 },
|
|
144
|
+
{ keyword: 'error', weight: 4 },
|
|
145
|
+
{ keyword: 'fix', weight: 3 },
|
|
146
|
+
{ keyword: 'bug', weight: 5 },
|
|
147
|
+
{ keyword: 'issue', weight: 4 },
|
|
148
|
+
{ keyword: 'crash', weight: 5 },
|
|
149
|
+
{ keyword: 'exception', weight: 4 },
|
|
150
|
+
{ keyword: 'fail', weight: 3 },
|
|
151
|
+
{ keyword: 'broken', weight: 4 },
|
|
152
|
+
{ keyword: '调试', weight: 5 },
|
|
153
|
+
{ keyword: '错误', weight: 4 },
|
|
154
|
+
{ keyword: '修复', weight: 3 },
|
|
155
|
+
{ keyword: '问题', weight: 3 },
|
|
156
|
+
{ keyword: '崩溃', weight: 5 },
|
|
157
|
+
],
|
|
158
|
+
refactor: [
|
|
159
|
+
{ keyword: 'refactor', weight: 5 },
|
|
160
|
+
{ keyword: 'restructure', weight: 4 },
|
|
161
|
+
{ keyword: 'reorganize', weight: 4 },
|
|
162
|
+
{ keyword: 'clean', weight: 3 },
|
|
163
|
+
{ keyword: 'optimize', weight: 4 },
|
|
164
|
+
{ keyword: '重构', weight: 5 },
|
|
165
|
+
{ keyword: '重组', weight: 4 },
|
|
166
|
+
{ keyword: '优化', weight: 4 },
|
|
167
|
+
{ keyword: '清理', weight: 3 },
|
|
168
|
+
],
|
|
169
|
+
feature: [
|
|
170
|
+
{ keyword: 'add', weight: 3 },
|
|
171
|
+
{ keyword: 'create', weight: 4 },
|
|
172
|
+
{ keyword: 'implement', weight: 5 },
|
|
173
|
+
{ keyword: 'build', weight: 4 },
|
|
174
|
+
{ keyword: 'new', weight: 3 },
|
|
175
|
+
{ keyword: 'feature', weight: 5 },
|
|
176
|
+
{ keyword: '添加', weight: 3 },
|
|
177
|
+
{ keyword: '创建', weight: 4 },
|
|
178
|
+
{ keyword: '实现', weight: 5 },
|
|
179
|
+
{ keyword: '构建', weight: 4 },
|
|
180
|
+
{ keyword: '开发', weight: 4 },
|
|
181
|
+
],
|
|
182
|
+
docs: [
|
|
183
|
+
{ keyword: 'doc', weight: 4 },
|
|
184
|
+
{ keyword: 'readme', weight: 5 },
|
|
185
|
+
{ keyword: 'explain', weight: 4 },
|
|
186
|
+
{ keyword: 'understand', weight: 4 },
|
|
187
|
+
{ keyword: 'what', weight: 2 },
|
|
188
|
+
{ keyword: 'how', weight: 3 },
|
|
189
|
+
{ keyword: '文档', weight: 4 },
|
|
190
|
+
{ keyword: '说明', weight: 4 },
|
|
191
|
+
{ keyword: '解释', weight: 4 },
|
|
192
|
+
{ keyword: '理解', weight: 4 },
|
|
193
|
+
],
|
|
194
|
+
general: []
|
|
195
|
+
};
|
|
196
|
+
/**
|
|
197
|
+
* 否定词模式列表
|
|
198
|
+
* 如果查询中包含这些模式与某个意图关键词的组合,则不识别为该意图
|
|
199
|
+
*/
|
|
200
|
+
const NEGATION_PATTERNS = [
|
|
201
|
+
'don\'t debug',
|
|
202
|
+
'dont debug',
|
|
203
|
+
'no debug',
|
|
204
|
+
'not debug',
|
|
205
|
+
'不要调试',
|
|
206
|
+
'别调试',
|
|
207
|
+
'no refactor',
|
|
208
|
+
'not refactor',
|
|
209
|
+
'not adding',
|
|
210
|
+
];
|
|
211
|
+
/**
|
|
212
|
+
* 检测查询意图
|
|
213
|
+
* 基于查询中的关键词推断用户意图
|
|
214
|
+
*
|
|
215
|
+
* @param query 用户查询字符串
|
|
216
|
+
* @returns 检测到的意图类型
|
|
217
|
+
*/
|
|
218
|
+
function detectQueryIntent(query) {
|
|
219
|
+
const queryLower = query.toLowerCase();
|
|
220
|
+
// 首先检查否定模式
|
|
221
|
+
for (const pattern of NEGATION_PATTERNS) {
|
|
222
|
+
if (queryLower.includes(pattern)) {
|
|
223
|
+
// 如果包含否定模式,返回 general
|
|
224
|
+
return 'general';
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
let maxScore = 0;
|
|
228
|
+
let detectedIntent = 'general';
|
|
229
|
+
// 计算每个意图的加权分数
|
|
230
|
+
for (const [intent, keywords] of Object.entries(INTENT_KEYWORDS)) {
|
|
231
|
+
if (keywords.length === 0)
|
|
232
|
+
continue;
|
|
233
|
+
let score = 0;
|
|
234
|
+
for (const { keyword, weight } of keywords) {
|
|
235
|
+
if (queryLower.includes(keyword)) {
|
|
236
|
+
score += weight;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
if (score > maxScore) {
|
|
240
|
+
maxScore = score;
|
|
241
|
+
detectedIntent = intent;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return detectedIntent;
|
|
245
|
+
}
|
|
31
246
|
function calculateKeywordMatchScore(content, summary, keywords) {
|
|
32
247
|
const textToMatch = (summary || content).toLowerCase();
|
|
33
248
|
let matches = 0;
|
|
@@ -73,8 +288,137 @@ function calculateExtensionScore(path, query) {
|
|
|
73
288
|
}
|
|
74
289
|
return 0;
|
|
75
290
|
}
|
|
291
|
+
/**
|
|
292
|
+
* 计算上下文项的重要性分数
|
|
293
|
+
* 基于路径重要性、内容质量、访问频率等因素
|
|
294
|
+
* 返回值范围:0-1,1 表示最重要
|
|
295
|
+
*/
|
|
296
|
+
function calculateImportance(item) {
|
|
297
|
+
const cfg = exports.IMPORTANCE_CONFIG;
|
|
298
|
+
let score = cfg.BASE_SCORE;
|
|
299
|
+
const path = item.path.toLowerCase();
|
|
300
|
+
// ===== 路径重要性分析 =====
|
|
301
|
+
// 核心目录加分 - 使用更精确的路径匹配
|
|
302
|
+
// 通过检查路径开头或包含 /边界/ 来避免误匹配
|
|
303
|
+
for (const corePath of cfg.CORE_PATHS) {
|
|
304
|
+
// 精确匹配:路径以核心目录开头,或包含 /核心目录/ 的模式
|
|
305
|
+
if (path.startsWith(corePath + '/') || path.includes('/' + corePath + '/')) {
|
|
306
|
+
score += cfg.CORE_PATH_BOOST;
|
|
307
|
+
break;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
// 重要源码目录加分 - 使用精确匹配
|
|
311
|
+
for (const sourcePath of cfg.SOURCE_PATHS) {
|
|
312
|
+
if (path.startsWith(sourcePath) || path.includes('/' + sourcePath)) {
|
|
313
|
+
score += cfg.SOURCE_PATH_BOOST;
|
|
314
|
+
break;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
// 测试文件减分 - 使用路径边界检查避免误匹配
|
|
318
|
+
// 正则解释:/(\/|^__) → 以 / 或 __ 开头,(tests?|spec) → test/tests/spec,(\/|$) → 以 / 或 结尾
|
|
319
|
+
// 匹配:/test/, /spec/, __tests__, src/test/, api_spec.ts 等
|
|
320
|
+
// 不匹配:my-test-utils/, testing/, spectator/ 等
|
|
321
|
+
if (/(\/|^__)(tests?|spec)(\/|$)/.test(path)) {
|
|
322
|
+
score -= cfg.TEST_FILE_PENALTY;
|
|
323
|
+
}
|
|
324
|
+
// 配置文件加分 - 使用更精确的路径匹配
|
|
325
|
+
// /\/config\// → 匹配 /config/ 目录(如 /config/database.ts)
|
|
326
|
+
// /\/configs?\// → 匹配 /config/ 或 /configs/ 目录
|
|
327
|
+
// /\.?config\.[a-z]+$/ → 匹配 .config.js 或 config.ts 等文件
|
|
328
|
+
// 匹配:/config/app.ts, tsconfig.json, vite.config.js 等
|
|
329
|
+
// 不匹配:my-config/, reconfigure.ts, deconfigurate/ 等
|
|
330
|
+
if (/\/config\//.test(path) || /\/configs?\//.test(path) ||
|
|
331
|
+
path.endsWith('.config.js') || path.endsWith('.config.json') ||
|
|
332
|
+
path.endsWith('.config.ts') || /\/\.?config\.[a-z]+$/.test(path)) {
|
|
333
|
+
score += cfg.CONFIG_FILE_BOOST;
|
|
334
|
+
}
|
|
335
|
+
else if (path.endsWith('.json') || path.endsWith('.yaml') || path.endsWith('.yml')) {
|
|
336
|
+
// JSON/YAML 文件也加分(但权重较低,因为不一定是配置文件)
|
|
337
|
+
score += cfg.CONFIG_FILE_BOOST * 0.5;
|
|
338
|
+
}
|
|
339
|
+
// 文档文件减分
|
|
340
|
+
// 匹配:README.md, /docs/api.md, docs/guide.md 等
|
|
341
|
+
if (path.endsWith('.md') || path.includes('/docs/') || path.startsWith('docs/')) {
|
|
342
|
+
score -= cfg.DOC_FILE_PENALTY;
|
|
343
|
+
}
|
|
344
|
+
// ===== 内容质量分析 =====
|
|
345
|
+
const contentLength = (item.content || item.summary || '').length;
|
|
346
|
+
// 内容太短可能是低价值
|
|
347
|
+
if (contentLength < cfg.MIN_CONTENT_LENGTH) {
|
|
348
|
+
score -= cfg.SHORT_CONTENT_PENALTY;
|
|
349
|
+
}
|
|
350
|
+
else if (contentLength > cfg.LONG_CONTENT_THRESHOLD) {
|
|
351
|
+
// 内容丰富加分
|
|
352
|
+
score += cfg.LONG_CONTENT_BOOST;
|
|
353
|
+
}
|
|
354
|
+
else if (contentLength > cfg.MEDIUM_CONTENT_THRESHOLD) {
|
|
355
|
+
score += cfg.MEDIUM_CONTENT_BOOST;
|
|
356
|
+
}
|
|
357
|
+
// ===== 访问频率分析 =====
|
|
358
|
+
const accessCount = item.accessCount || 1;
|
|
359
|
+
// 高频访问加分
|
|
360
|
+
if (accessCount > cfg.HIGH_ACCESS_COUNT) {
|
|
361
|
+
score += cfg.HIGH_ACCESS_BOOST;
|
|
362
|
+
}
|
|
363
|
+
else if (accessCount > cfg.MEDIUM_ACCESS_COUNT) {
|
|
364
|
+
score += cfg.MEDIUM_ACCESS_BOOST;
|
|
365
|
+
}
|
|
366
|
+
else if (accessCount > cfg.LOW_ACCESS_COUNT) {
|
|
367
|
+
score += cfg.LOW_ACCESS_BOOST;
|
|
368
|
+
}
|
|
369
|
+
// ===== 状态分析 =====
|
|
370
|
+
// stale 状态减分
|
|
371
|
+
if (item.status === 'stale' || item.status === 'expired') {
|
|
372
|
+
score -= cfg.STALE_STATUS_PENALTY;
|
|
373
|
+
}
|
|
374
|
+
// ===== 特殊标记 =====
|
|
375
|
+
// pinned 的项目高重要性
|
|
376
|
+
if (item.pinned) {
|
|
377
|
+
score = Math.max(score, cfg.PINNED_MIN_SCORE);
|
|
378
|
+
}
|
|
379
|
+
// 重要标签加分
|
|
380
|
+
if (item.tags) {
|
|
381
|
+
if (item.tags.some(tag => cfg.IMPORTANT_TAGS.includes(tag))) {
|
|
382
|
+
score += cfg.IMPORTANT_TAG_BOOST;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
// 确保分数在 0-1 范围内
|
|
386
|
+
return Math.max(cfg.MIN_SCORE, Math.min(cfg.MAX_SCORE, score));
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* 计算时间衰减分数
|
|
390
|
+
* 基于最后访问时间、添加时间和访问频率
|
|
391
|
+
* 使用指数衰减模型:score = e^(-days/halfLife)
|
|
392
|
+
*/
|
|
76
393
|
function calculateRecencyScore(item) {
|
|
77
|
-
|
|
394
|
+
const cfg = exports.RECENCY_CONFIG;
|
|
395
|
+
const now = Date.now();
|
|
396
|
+
// 如果没有时间戳,返回中等分数
|
|
397
|
+
if (!item.lastUsedAt && !item.addedAt) {
|
|
398
|
+
return cfg.DEFAULT_DECAY_SCORE;
|
|
399
|
+
}
|
|
400
|
+
// 使用 lastUsedAt 作为主要时间戳,如果没有则使用 addedAt
|
|
401
|
+
const lastAccess = item.lastUsedAt || item.addedAt || now;
|
|
402
|
+
const daysSinceAccess = (now - lastAccess) / (1000 * 60 * 60 * 24);
|
|
403
|
+
// 获取自定义半衰期
|
|
404
|
+
// decayRate 越大,衰减越快(半衰期越短)
|
|
405
|
+
// 添加输入验证:decayRate 必须为正数,否则使用默认值
|
|
406
|
+
let halfLifeDays = cfg.DEFAULT_HALF_LIFE_DAYS;
|
|
407
|
+
if (item.decayRate && item.decayRate > 0) {
|
|
408
|
+
halfLifeDays = cfg.DEFAULT_HALF_LIFE_DAYS / item.decayRate;
|
|
409
|
+
}
|
|
410
|
+
// 如果 decayRate 为 0、负数或无效,使用默认半衰期
|
|
411
|
+
// 指数衰减:越久远权重越低
|
|
412
|
+
const decayFactor = Math.exp(-daysSinceAccess / halfLifeDays);
|
|
413
|
+
// 访问频率加成:常访问的衰减慢
|
|
414
|
+
// 每次访问增加配置的加成因子,最多达到最大倍数
|
|
415
|
+
const accessCount = item.accessCount || 1;
|
|
416
|
+
const frequencyBoost = Math.min(1 + (accessCount - 1) * cfg.FREQUENCY_BOOST_FACTOR, cfg.MAX_FREQUENCY_BOOST_MULTIPLIER);
|
|
417
|
+
// pinned 的项目不衰减
|
|
418
|
+
if (item.pinned) {
|
|
419
|
+
return cfg.PINNED_SCORE;
|
|
420
|
+
}
|
|
421
|
+
return Math.min(decayFactor * frequencyBoost, 1);
|
|
78
422
|
}
|
|
79
423
|
function rankByRelevance(items, query, config) {
|
|
80
424
|
const finalConfig = { ...DEFAULT_CONFIG, ...config };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relevance.js","sourceRoot":"","sources":["../../src/agent/relevance.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"relevance.js","sourceRoot":"","sources":["../../src/agent/relevance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,43 @@
|
|
|
1
1
|
import { ContextManager } from './contextManager';
|
|
2
|
-
import { RankedContextItem } from './relevance';
|
|
2
|
+
import { RankedContextItem, QueryIntent } from './relevance';
|
|
3
3
|
export interface EnhancedContextOptions {
|
|
4
4
|
query: string;
|
|
5
5
|
minRelevance?: number;
|
|
6
6
|
maxTokens?: number;
|
|
7
7
|
enableSmartSummary?: boolean;
|
|
8
|
+
enableAccessTracking?: boolean;
|
|
9
|
+
intent?: QueryIntent;
|
|
8
10
|
}
|
|
9
11
|
export declare class SmartContextManager extends ContextManager {
|
|
10
12
|
private cachedRankedItems;
|
|
11
13
|
private cachedQuery;
|
|
14
|
+
private pendingAccessUpdates;
|
|
15
|
+
private throttleTimer;
|
|
16
|
+
private readonly THROTTLE_DELAY_MS;
|
|
17
|
+
private readonly MAX_PENDING_UPDATES;
|
|
12
18
|
getEnhancedContext(options: EnhancedContextOptions): Promise<{
|
|
13
19
|
rankedItems: RankedContextItem[];
|
|
14
20
|
summary: string;
|
|
15
21
|
filteredCount: number;
|
|
16
22
|
totalCount: number;
|
|
23
|
+
detectedIntent: QueryIntent;
|
|
17
24
|
}>;
|
|
18
25
|
private extractPathFromMessage;
|
|
19
26
|
private loadPersistedContext;
|
|
27
|
+
/**
|
|
28
|
+
* 更新访问跟踪信息(带节流)
|
|
29
|
+
* 使用节流机制批量更新,避免频繁磁盘 I/O
|
|
30
|
+
*
|
|
31
|
+
* 策略:
|
|
32
|
+
* 1. 将更新先缓存到内存中
|
|
33
|
+
* 2. 当待更新数量超过阈值或超过节流时间时,批量保存
|
|
34
|
+
* 3. 立即返回,不阻塞主流程
|
|
35
|
+
*/
|
|
36
|
+
private updateAccessTracking;
|
|
37
|
+
/**
|
|
38
|
+
* 刷新待更新的访问跟踪信息到持久化存储
|
|
39
|
+
*/
|
|
40
|
+
private flushPendingUpdates;
|
|
20
41
|
private buildSmartSummary;
|
|
21
42
|
getCachedRankedItems(): RankedContextItem[];
|
|
22
43
|
getCachedQuery(): string;
|