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.
Files changed (39) hide show
  1. package/dist/agent/DualAgentRuntime.d.ts +15 -1
  2. package/dist/agent/DualAgentRuntime.js +62 -37
  3. package/dist/agent/DualAgentRuntime.js.map +1 -1
  4. package/dist/agent/PlanCache.d.ts +207 -0
  5. package/dist/agent/PlanCache.js +468 -0
  6. package/dist/agent/PlanCache.js.map +1 -0
  7. package/dist/agent/governance/riskScoring.d.ts +118 -0
  8. package/dist/agent/governance/riskScoring.js +422 -0
  9. package/dist/agent/governance/riskScoring.js.map +1 -0
  10. package/dist/agent/governance.d.ts +26 -0
  11. package/dist/agent/governance.js +86 -5
  12. package/dist/agent/governance.js.map +1 -1
  13. package/dist/agent/llm.d.ts +1 -1
  14. package/dist/agent/relevance.d.ts +93 -0
  15. package/dist/agent/relevance.js +345 -1
  16. package/dist/agent/relevance.js.map +1 -1
  17. package/dist/agent/smartContextManager.d.ts +22 -1
  18. package/dist/agent/smartContextManager.js +108 -4
  19. package/dist/agent/smartContextManager.js.map +1 -1
  20. package/dist/agent/state.d.ts +3 -0
  21. package/dist/commands/contextStorage.d.ts +32 -0
  22. package/dist/commands/contextStorage.js +81 -0
  23. package/dist/commands/contextStorage.js.map +1 -1
  24. package/dist/core/modelRouter/AdaptiveWeights.d.ts +134 -0
  25. package/dist/core/modelRouter/AdaptiveWeights.js +300 -0
  26. package/dist/core/modelRouter/AdaptiveWeights.js.map +1 -0
  27. package/dist/core/modelRouter/ModelRouter.d.ts +45 -3
  28. package/dist/core/modelRouter/ModelRouter.js +138 -6
  29. package/dist/core/modelRouter/ModelRouter.js.map +1 -1
  30. package/dist/core/modelRouter/MultiMetricSupervisor.d.ts +99 -0
  31. package/dist/core/modelRouter/MultiMetricSupervisor.js +267 -0
  32. package/dist/core/modelRouter/MultiMetricSupervisor.js.map +1 -0
  33. package/dist/core/modelRouter/policies/DslPolicy.d.ts +16 -1
  34. package/dist/core/modelRouter/policies/DslPolicy.js +22 -1
  35. package/dist/core/modelRouter/policies/DslPolicy.js.map +1 -1
  36. package/dist/utils/renderer.d.ts +5 -0
  37. package/dist/utils/renderer.js +46 -1
  38. package/dist/utils/renderer.js.map +1 -1
  39. package/package.json +1 -1
@@ -7,8 +7,16 @@ const contextStorage_1 = require("../commands/contextStorage");
7
7
  class SmartContextManager extends contextManager_1.ContextManager {
8
8
  cachedRankedItems = [];
9
9
  cachedQuery = '';
10
+ // 访问跟踪节流相关
11
+ pendingAccessUpdates = new Map();
12
+ throttleTimer = null;
13
+ THROTTLE_DELAY_MS = 5000; // 5秒节流延迟
14
+ MAX_PENDING_UPDATES = 50; // 最大待更新数量
10
15
  async getEnhancedContext(options) {
11
- const { query, minRelevance = 0.3, maxTokens = 10000, enableSmartSummary = true } = options;
16
+ const { query, minRelevance = 0.3, maxTokens = 10000, enableSmartSummary = true, enableAccessTracking = true, intent: explicitIntent } = options;
17
+ // 检测或使用显式指定的意图
18
+ const detectedIntent = explicitIntent || (0, relevance_1.detectQueryIntent)(query);
19
+ const intentWeights = relevance_1.INTENT_WEIGHTS[detectedIntent];
12
20
  const messages = this.getMessages();
13
21
  let contextItems = messages
14
22
  .filter(m => m.role === 'user')
@@ -27,10 +35,11 @@ class SmartContextManager extends contextManager_1.ContextManager {
27
35
  .filter((item) => item.path && item.path.length > 0);
28
36
  contextItems = [...contextItems, ...persistedContextItems];
29
37
  }
30
- const rankedItems = await (0, relevance_1.rankByRelevance)(contextItems, query);
38
+ // 使用意图相关的权重进行排序
39
+ const rankedItems = (0, relevance_1.rankByRelevance)(contextItems, query, intentWeights);
31
40
  this.cachedRankedItems = rankedItems;
32
41
  this.cachedQuery = query;
33
- const filteredItems = (0, relevance_1.filterContextByRelevance)(contextItems, query, minRelevance);
42
+ const filteredItems = (0, relevance_1.filterContextByRelevance)(contextItems, query, minRelevance, intentWeights);
34
43
  let finalItems = filteredItems;
35
44
  if (maxTokens > 0) {
36
45
  const totalTokens = (0, relevance_1.calculateTotalTokens)(finalItems);
@@ -40,11 +49,16 @@ class SmartContextManager extends contextManager_1.ContextManager {
40
49
  }
41
50
  }
42
51
  const summary = enableSmartSummary ? this.buildSmartSummary(query, finalItems, contextItems) : '';
52
+ // 访问跟踪:更新被访问项目的时间戳和访问计数
53
+ if (enableAccessTracking && filteredItems.length > 0) {
54
+ await this.updateAccessTracking(filteredItems);
55
+ }
43
56
  return {
44
57
  rankedItems,
45
58
  summary,
46
59
  filteredCount: finalItems.length,
47
- totalCount: contextItems.length
60
+ totalCount: contextItems.length,
61
+ detectedIntent
48
62
  };
49
63
  }
50
64
  extractPathFromMessage(content) {
@@ -59,6 +73,96 @@ class SmartContextManager extends contextManager_1.ContextManager {
59
73
  return [];
60
74
  }
61
75
  }
76
+ /**
77
+ * 更新访问跟踪信息(带节流)
78
+ * 使用节流机制批量更新,避免频繁磁盘 I/O
79
+ *
80
+ * 策略:
81
+ * 1. 将更新先缓存到内存中
82
+ * 2. 当待更新数量超过阈值或超过节流时间时,批量保存
83
+ * 3. 立即返回,不阻塞主流程
84
+ */
85
+ async updateAccessTracking(accessedItems) {
86
+ if (accessedItems.length === 0)
87
+ return;
88
+ const now = Date.now();
89
+ let shouldFlush = false;
90
+ // 缓存更新到内存
91
+ for (const item of accessedItems) {
92
+ const existing = this.pendingAccessUpdates.get(item.path);
93
+ if (existing) {
94
+ existing.accessCount += 1;
95
+ existing.lastUsedAt = now;
96
+ }
97
+ else {
98
+ this.pendingAccessUpdates.set(item.path, {
99
+ lastUsedAt: now,
100
+ accessCount: 1
101
+ });
102
+ }
103
+ // 检查是否达到刷新阈值
104
+ if (this.pendingAccessUpdates.size >= this.MAX_PENDING_UPDATES) {
105
+ shouldFlush = true;
106
+ }
107
+ }
108
+ // 如果需要立即刷新,使用 try-catch 包裹以防止未处理的 Promise 拒绝
109
+ if (shouldFlush) {
110
+ try {
111
+ await this.flushPendingUpdates();
112
+ }
113
+ catch (error) {
114
+ // 静默失败,错误已在 flushPendingUpdates 中记录
115
+ console.debug('Flush failed in updateAccessTracking:', error);
116
+ }
117
+ }
118
+ else if (!this.throttleTimer) {
119
+ this.throttleTimer = setTimeout(() => {
120
+ this.flushPendingUpdates().catch(err => {
121
+ console.debug('Failed to flush pending updates:', err);
122
+ });
123
+ }, this.THROTTLE_DELAY_MS);
124
+ }
125
+ }
126
+ /**
127
+ * 刷新待更新的访问跟踪信息到持久化存储
128
+ */
129
+ async flushPendingUpdates() {
130
+ // 清除节流定时器
131
+ if (this.throttleTimer) {
132
+ clearTimeout(this.throttleTimer);
133
+ this.throttleTimer = null;
134
+ }
135
+ // 如果没有待更新,直接返回
136
+ if (this.pendingAccessUpdates.size === 0)
137
+ return;
138
+ try {
139
+ const allItems = await (0, contextStorage_1.loadContext)();
140
+ if (!allItems || allItems.length === 0) {
141
+ this.pendingAccessUpdates.clear();
142
+ return;
143
+ }
144
+ let hasChanges = false;
145
+ // 批量更新
146
+ for (const item of allItems) {
147
+ const update = this.pendingAccessUpdates.get(item.path);
148
+ if (update) {
149
+ item.lastUsedAt = update.lastUsedAt;
150
+ item.accessCount = (item.accessCount || 1) + update.accessCount;
151
+ hasChanges = true;
152
+ }
153
+ }
154
+ // 保存并清空缓存
155
+ if (hasChanges) {
156
+ await (0, contextStorage_1.saveContext)(allItems);
157
+ }
158
+ }
159
+ catch (error) {
160
+ console.debug('Failed to flush pending updates:', error);
161
+ }
162
+ finally {
163
+ this.pendingAccessUpdates.clear();
164
+ }
165
+ }
62
166
  buildSmartSummary(query, items, allItems) {
63
167
  if (items.length === 0) {
64
168
  return '';
@@ -1 +1 @@
1
- {"version":3,"file":"smartContextManager.js","sourceRoot":"","sources":["../../src/agent/smartContextManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smartContextManager.js","sourceRoot":"","sources":["../../src/agent/smartContextManager.ts"],"names":[],"mappings":"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"}
@@ -11,11 +11,13 @@ export type GovernanceDecision = {
11
11
  status: 'approved';
12
12
  by: 'policy' | 'human';
13
13
  timestamp: number;
14
+ riskScore?: number;
14
15
  } | {
15
16
  status: 'rejected';
16
17
  by: 'policy' | 'human';
17
18
  reason: string;
18
19
  timestamp: number;
20
+ riskScore?: number;
19
21
  } | {
20
22
  status: 'modified';
21
23
  by: 'human';
@@ -23,6 +25,7 @@ export type GovernanceDecision = {
23
25
  modifiedAction: ProposedAction;
24
26
  modificationReason: string;
25
27
  timestamp: number;
28
+ riskScore?: number;
26
29
  };
27
30
  export type EvaluationOutcome = {
28
31
  kind: 'continue';
@@ -1,3 +1,35 @@
1
+ /**
2
+ * 清理过期配置
3
+ */
4
+ export interface CleanupOptions {
5
+ /** 最大保留天数(默认 90 天) */
6
+ maxAge?: number;
7
+ /** 最低重要性阈值(默认 0.2) */
8
+ minImportance?: number;
9
+ /** 最大保留项目数(默认 1000) */
10
+ maxItems?: number;
11
+ /** 是否保留 pinned 项目(默认 true) */
12
+ respectPinned?: boolean;
13
+ }
1
14
  export declare function loadContext(): Promise<any[]>;
2
15
  export declare function saveContext(items: any[]): Promise<void>;
3
16
  export declare function clearContextStorage(): Promise<void>;
17
+ /**
18
+ * 主动遗忘:清理过期和低价值的上下文项
19
+ *
20
+ * 清理策略:
21
+ * 1. 高重要性(>0.7)的项目永久保留
22
+ * 2. Pinned 项目永久保留(除非 respectPinned=false)
23
+ * 3. 超过 maxAge 天数的低价值项目被移除
24
+ * 4. 低于 minImportance 的项目被移除
25
+ * 5. 最终按重要性排序,保留最多 maxItems 个项目
26
+ *
27
+ * @param options 清理配置选项
28
+ * @returns 清理统计信息
29
+ */
30
+ export declare function cleanupStaleContext(options?: CleanupOptions): Promise<{
31
+ beforeCount: number;
32
+ afterCount: number;
33
+ removedCount: number;
34
+ removedPaths: string[];
35
+ }>;
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.loadContext = loadContext;
7
7
  exports.saveContext = saveContext;
8
8
  exports.clearContextStorage = clearContextStorage;
9
+ exports.cleanupStaleContext = cleanupStaleContext;
9
10
  const promises_1 = __importDefault(require("fs/promises"));
10
11
  const path_1 = __importDefault(require("path"));
11
12
  const CONTEXT_DIR = path_1.default.resolve(process.cwd(), '.ai');
@@ -26,4 +27,84 @@ async function saveContext(items) {
26
27
  async function clearContextStorage() {
27
28
  await promises_1.default.rm(CONTEXT_FILE, { force: true });
28
29
  }
30
+ /**
31
+ * 主动遗忘:清理过期和低价值的上下文项
32
+ *
33
+ * 清理策略:
34
+ * 1. 高重要性(>0.7)的项目永久保留
35
+ * 2. Pinned 项目永久保留(除非 respectPinned=false)
36
+ * 3. 超过 maxAge 天数的低价值项目被移除
37
+ * 4. 低于 minImportance 的项目被移除
38
+ * 5. 最终按重要性排序,保留最多 maxItems 个项目
39
+ *
40
+ * @param options 清理配置选项
41
+ * @returns 清理统计信息
42
+ */
43
+ async function cleanupStaleContext(options = {}) {
44
+ const { maxAge = 90, // 默认 90 天
45
+ minImportance = 0.2, // 默认最低重要性 0.2
46
+ maxItems = 1000, // 默认最多 1000 个项目
47
+ respectPinned = true // 默认保留 pinned 项目
48
+ } = options;
49
+ const items = await loadContext();
50
+ const now = Date.now();
51
+ const beforeCount = items.length;
52
+ const removedPaths = [];
53
+ const filtered = items.filter((item) => {
54
+ // 高重要性永久保留
55
+ if (item.importance && item.importance > 0.7)
56
+ return true;
57
+ // Pinned 项目永久保留(除非配置不尊重 pinned)
58
+ if (respectPinned && item.pinned)
59
+ return true;
60
+ // 计算年龄
61
+ const createdAt = item.addedAt || item.lastUsedAt;
62
+ if (!createdAt) {
63
+ // 没有时间戳的项目,如果是低重要性则移除
64
+ if (item.importance !== undefined && item.importance < minImportance) {
65
+ removedPaths.push(item.path);
66
+ return false;
67
+ }
68
+ return true;
69
+ }
70
+ const ageDays = (now - createdAt) / (1000 * 60 * 60 * 24);
71
+ // 超过最大年龄,移除
72
+ if (ageDays > maxAge) {
73
+ removedPaths.push(item.path);
74
+ return false;
75
+ }
76
+ // 低于最低重要性,移除
77
+ if (item.importance !== undefined && item.importance < minImportance) {
78
+ removedPaths.push(item.path);
79
+ return false;
80
+ }
81
+ return true;
82
+ });
83
+ // 如果仍超限,按重要性排序后截断
84
+ let final = filtered;
85
+ if (filtered.length > maxItems) {
86
+ const sorted = filtered.sort((a, b) => {
87
+ // 优先保留 pinned
88
+ if (respectPinned) {
89
+ if (a.pinned && !b.pinned)
90
+ return -1;
91
+ if (!a.pinned && b.pinned)
92
+ return 1;
93
+ }
94
+ // 按重要性降序
95
+ return (b.importance || 0.5) - (a.importance || 0.5);
96
+ });
97
+ const removed = sorted.slice(maxItems);
98
+ removedPaths.push(...removed.map((item) => item.path));
99
+ final = sorted.slice(0, maxItems);
100
+ }
101
+ // 保存清理后的数据
102
+ await saveContext(final);
103
+ return {
104
+ beforeCount,
105
+ afterCount: final.length,
106
+ removedCount: beforeCount - final.length,
107
+ removedPaths
108
+ };
109
+ }
29
110
  //# sourceMappingURL=contextStorage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contextStorage.js","sourceRoot":"","sources":["../../src/commands/contextStorage.ts"],"names":[],"mappings":";;;;;AAOA,kCAOC;AAED,kCAGC;AAED,kDAEC;AAvBD,2DAA6B;AAC7B,gDAAwB;AAGxB,MAAM,WAAW,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;AACvD,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AAErD,KAAK,UAAU,WAAW;IAC7B,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,KAAY;IAC1C,MAAM,kBAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,MAAM,kBAAE,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AAEM,KAAK,UAAU,mBAAmB;IACrC,MAAM,kBAAE,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"contextStorage.js","sourceRoot":"","sources":["../../src/commands/contextStorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ import { RoutingStrategy } from './types';
2
+ /**
3
+ * 执行结果,用于学习
4
+ */
5
+ export interface ExecutionOutcome {
6
+ success: boolean;
7
+ executionTime: number;
8
+ costLevel: number;
9
+ timestamp: number;
10
+ strategy: RoutingStrategy;
11
+ modelName: string;
12
+ }
13
+ /**
14
+ * 权重配置
15
+ */
16
+ export interface WeightConfig {
17
+ taskMatch?: number;
18
+ context?: number;
19
+ latency?: number;
20
+ cost?: number;
21
+ history?: number;
22
+ quality?: number;
23
+ }
24
+ /**
25
+ * 权重历史记录
26
+ */
27
+ interface WeightSnapshot {
28
+ weights: WeightConfig;
29
+ timestamp: number;
30
+ outcomeCount: number;
31
+ }
32
+ /**
33
+ * 学习超参数配置
34
+ */
35
+ export interface LearningConfig {
36
+ /** 学习率 (0-1),默认 0.1 */
37
+ learningRate: number;
38
+ /** 最小样本数才开始学习,默认 10 */
39
+ minSamples: number;
40
+ /** 历史窗口大小,默认 100 */
41
+ historyWindow: number;
42
+ /** 权重衰减因子,防止权重无限增长,默认 0.01 */
43
+ weightDecay: number;
44
+ /** 奖励归一化因子 */
45
+ rewardNormalization: {
46
+ latency: number;
47
+ cost: number;
48
+ };
49
+ }
50
+ /**
51
+ * 自适应权重学习系统
52
+ *
53
+ * 使用强化学习思想,根据执行结果动态调整策略权重
54
+ *
55
+ * 核心算法:
56
+ * 1. 收集执行结果
57
+ * 2. 计算奖励函数 (综合考虑延迟、成本、成功率)
58
+ * 3. 使用梯度上升更新权重
59
+ * 4. 应用权重衰减防止过拟合
60
+ *
61
+ * 奖励函数设计:
62
+ * reward = w_latency * (-latency/normalize) +
63
+ * w_cost * (-cost/normalize) +
64
+ * w_success * (success ? 1 : -1)
65
+ */
66
+ export declare class AdaptiveWeights {
67
+ private weightsHistory;
68
+ private outcomeHistory;
69
+ private currentWeights;
70
+ private config;
71
+ private readonly DEFAULT_WEIGHTS;
72
+ constructor(config?: Partial<LearningConfig>);
73
+ /**
74
+ * 记录执行结果
75
+ */
76
+ recordOutcome(outcome: ExecutionOutcome): void;
77
+ /**
78
+ * 获取当前策略权重
79
+ */
80
+ getWeights(strategy: RoutingStrategy): WeightConfig;
81
+ /**
82
+ * 获取权重历史
83
+ */
84
+ getWeightHistory(strategy: RoutingStrategy): WeightSnapshot[];
85
+ /**
86
+ * 核心权重更新算法 (梯度上升)
87
+ *
88
+ * 对于每个权重维度:
89
+ * new_weight = old_weight + learning_rate * reward_gradient
90
+ *
91
+ * 奖励梯度计算:
92
+ * - 延迟权重: 如果延迟低,增加延迟权重
93
+ * - 成本权重: 如果成本低,增加成本权重
94
+ * - 历史权重: 如果成功,增加历史权重
95
+ */
96
+ private updateWeights;
97
+ /**
98
+ * 计算平均奖励
99
+ */
100
+ private calculateAverageReward;
101
+ /**
102
+ * 计算单个执行的奖励
103
+ *
104
+ * 奖励函数:
105
+ * reward = -0.4 * (latency / normalize_latency)
106
+ * -0.3 * (cost / normalize_cost)
107
+ * +0.3 * (success ? 1 : -1)
108
+ */
109
+ private calculateReward;
110
+ /**
111
+ * 计算每个权重维度的梯度
112
+ *
113
+ * 梯度表示: 该权重的增加对奖励的正向影响程度
114
+ */
115
+ private calculateGradients;
116
+ /**
117
+ * 重置权重为默认值
118
+ */
119
+ reset(strategy?: RoutingStrategy): void;
120
+ /**
121
+ * 获取学习统计信息
122
+ */
123
+ getStats(): Record<string, {
124
+ currentWeights: WeightConfig;
125
+ sampleCount: number;
126
+ avgReward: number;
127
+ improvement: number;
128
+ }>;
129
+ /**
130
+ * 计算权重改进幅度
131
+ */
132
+ private calculateImprovement;
133
+ }
134
+ export {};