@zooique/memora 0.1.0 → 0.2.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/agent.d.ts +155 -23
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +386 -124
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/assembler.d.ts +8 -2
- package/dist/agent/assembler.d.ts.map +1 -1
- package/dist/agent/assembler.js +17 -6
- package/dist/agent/assembler.js.map +1 -1
- package/dist/agent/builtinToolHandlers.d.ts +1 -1
- package/dist/agent/builtinToolHandlers.d.ts.map +1 -1
- package/dist/agent/builtinToolHandlers.js +5 -3
- package/dist/agent/builtinToolHandlers.js.map +1 -1
- package/dist/agent/builtinTools.d.ts +1 -1
- package/dist/agent/builtinTools.js +2 -2
- package/dist/agent/builtinTools.js.map +1 -1
- package/dist/agent/constants.d.ts +27 -6
- package/dist/agent/constants.d.ts.map +1 -1
- package/dist/agent/constants.js +27 -6
- package/dist/agent/constants.js.map +1 -1
- package/dist/agent/contextManager.d.ts +35 -9
- package/dist/agent/contextManager.d.ts.map +1 -1
- package/dist/agent/contextManager.js +138 -25
- package/dist/agent/contextManager.js.map +1 -1
- package/dist/agent/loop.d.ts +41 -11
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +143 -61
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/managers/archiveCoordinator.d.ts +100 -0
- package/dist/agent/managers/archiveCoordinator.d.ts.map +1 -0
- package/dist/agent/managers/archiveCoordinator.js +127 -0
- package/dist/agent/managers/archiveCoordinator.js.map +1 -0
- package/dist/agent/managers/autoConfigRefiner.d.ts.map +1 -1
- package/dist/agent/managers/autoConfigRefiner.js +1 -1
- package/dist/agent/managers/autoConfigRefiner.js.map +1 -1
- package/dist/agent/managers/configManager.d.ts +13 -2
- package/dist/agent/managers/configManager.d.ts.map +1 -1
- package/dist/agent/managers/configManager.js +13 -5
- package/dist/agent/managers/configManager.js.map +1 -1
- package/dist/agent/managers/insightExtractor.d.ts +36 -3
- package/dist/agent/managers/insightExtractor.d.ts.map +1 -1
- package/dist/agent/managers/insightExtractor.js +48 -11
- package/dist/agent/managers/insightExtractor.js.map +1 -1
- package/dist/agent/managers/memoryAdvisor.d.ts +4 -2
- package/dist/agent/managers/memoryAdvisor.d.ts.map +1 -1
- package/dist/agent/managers/memoryAdvisor.js +6 -4
- package/dist/agent/managers/memoryAdvisor.js.map +1 -1
- package/dist/agent/managers/memoryDecayScheduler.d.ts +113 -0
- package/dist/agent/managers/memoryDecayScheduler.d.ts.map +1 -0
- package/dist/agent/managers/memoryDecayScheduler.js +134 -0
- package/dist/agent/managers/memoryDecayScheduler.js.map +1 -0
- package/dist/agent/managers/memoryInspector.d.ts +70 -10
- package/dist/agent/managers/memoryInspector.d.ts.map +1 -1
- package/dist/agent/managers/memoryInspector.js +97 -23
- package/dist/agent/managers/memoryInspector.js.map +1 -1
- package/dist/agent/managers/sessionArchiver.d.ts +77 -0
- package/dist/agent/managers/sessionArchiver.d.ts.map +1 -0
- package/dist/agent/managers/sessionArchiver.js +175 -0
- package/dist/agent/managers/sessionArchiver.js.map +1 -0
- package/dist/agent/managers/sessionManager.d.ts +10 -0
- package/dist/agent/managers/sessionManager.d.ts.map +1 -1
- package/dist/agent/managers/sessionManager.js +26 -5
- package/dist/agent/managers/sessionManager.js.map +1 -1
- package/dist/agent/managers/workProjection.d.ts +1 -1
- package/dist/agent/managers/workProjection.d.ts.map +1 -1
- package/dist/agent/managers/workProjection.js +13 -10
- package/dist/agent/managers/workProjection.js.map +1 -1
- package/dist/agent/messageHistory.d.ts +1 -22
- package/dist/agent/messageHistory.d.ts.map +1 -1
- package/dist/agent/messageHistory.js +3 -19
- package/dist/agent/messageHistory.js.map +1 -1
- package/dist/agent/toolExecutor.d.ts +5 -18
- package/dist/agent/toolExecutor.d.ts.map +1 -1
- package/dist/agent/toolExecutor.js +7 -7
- package/dist/agent/toolExecutor.js.map +1 -1
- package/dist/agent/tracer.d.ts +8 -1
- package/dist/agent/tracer.d.ts.map +1 -1
- package/dist/agent/tracer.js +8 -1
- package/dist/agent/tracer.js.map +1 -1
- package/dist/agent/types.d.ts +29 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/{managers/userFactExtractor.d.ts → userFactExtractor.d.ts} +2 -2
- package/dist/agent/userFactExtractor.d.ts.map +1 -0
- package/dist/agent/userFactExtractor.js.map +1 -0
- package/dist/config/loader.d.ts +4 -4
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +11 -2
- package/dist/config/loader.js.map +1 -1
- package/dist/eval/evalTypes.js +1 -1
- package/dist/eval/evalTypes.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/llm/embedding.d.ts.map +1 -1
- package/dist/llm/embedding.js +8 -6
- package/dist/llm/embedding.js.map +1 -1
- package/dist/llm/factory.d.ts.map +1 -1
- package/dist/llm/factory.js +2 -1
- package/dist/llm/factory.js.map +1 -1
- package/dist/llm/openaiCompatible.d.ts +9 -0
- package/dist/llm/openaiCompatible.d.ts.map +1 -1
- package/dist/llm/openaiCompatible.js +77 -33
- package/dist/llm/openaiCompatible.js.map +1 -1
- package/dist/llm/provider.d.ts +17 -3
- package/dist/llm/provider.d.ts.map +1 -1
- package/dist/llm/provider.js +6 -2
- package/dist/llm/provider.js.map +1 -1
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/logging/logger.js +25 -9
- package/dist/logging/logger.js.map +1 -1
- package/dist/memory/hybridMerge.d.ts +54 -0
- package/dist/memory/hybridMerge.d.ts.map +1 -0
- package/dist/memory/hybridMerge.js +36 -0
- package/dist/memory/hybridMerge.js.map +1 -0
- package/dist/memory/inMemoryStorage.d.ts +90 -15
- package/dist/memory/inMemoryStorage.d.ts.map +1 -1
- package/dist/memory/inMemoryStorage.js +179 -28
- package/dist/memory/inMemoryStorage.js.map +1 -1
- package/dist/memory/loader.js +1 -1
- package/dist/memory/loader.js.map +1 -1
- package/dist/memory/projectManager.d.ts +34 -5
- package/dist/memory/projectManager.d.ts.map +1 -1
- package/dist/memory/projectManager.js +98 -62
- package/dist/memory/projectManager.js.map +1 -1
- package/dist/memory/recall.d.ts +7 -18
- package/dist/memory/recall.d.ts.map +1 -1
- package/dist/memory/recall.js +14 -19
- package/dist/memory/recall.js.map +1 -1
- package/dist/memory/storageInterface.d.ts +81 -14
- package/dist/memory/storageInterface.d.ts.map +1 -1
- package/dist/memory/store.js +1 -1
- package/dist/memory/store.js.map +1 -1
- package/dist/memory/types.d.ts +7 -1
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/memory/types.js +5 -1
- package/dist/memory/types.js.map +1 -1
- package/dist/memory/userProfile.d.ts +6 -6
- package/dist/memory/userProfile.d.ts.map +1 -1
- package/dist/memory/userProfile.js +20 -15
- package/dist/memory/userProfile.js.map +1 -1
- package/dist/memory/vectorStore.d.ts +35 -0
- package/dist/memory/vectorStore.d.ts.map +1 -1
- package/dist/memory/vectorStore.js +111 -2
- package/dist/memory/vectorStore.js.map +1 -1
- package/dist/persona/personaManager.d.ts +17 -4
- package/dist/persona/personaManager.d.ts.map +1 -1
- package/dist/persona/personaManager.js +44 -12
- package/dist/persona/personaManager.js.map +1 -1
- package/dist/security/pathGuard.d.ts +29 -7
- package/dist/security/pathGuard.d.ts.map +1 -1
- package/dist/security/pathGuard.js +148 -81
- package/dist/security/pathGuard.js.map +1 -1
- package/dist/skill/skillManager.d.ts +15 -0
- package/dist/skill/skillManager.d.ts.map +1 -1
- package/dist/skill/skillManager.js +25 -3
- package/dist/skill/skillManager.js.map +1 -1
- package/dist/skill/types.d.ts +7 -1
- package/dist/skill/types.d.ts.map +1 -1
- package/dist/utils/errors.d.ts +26 -7
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +10 -18
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/eventEmitter.d.ts +9 -2
- package/dist/utils/eventEmitter.d.ts.map +1 -1
- package/dist/utils/eventEmitter.js +1 -1
- package/dist/utils/eventEmitter.js.map +1 -1
- package/dist/utils/frontmatter.d.ts +8 -1
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +14 -3
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/path.d.ts +5 -1
- package/dist/utils/path.d.ts.map +1 -1
- package/dist/utils/path.js +5 -1
- package/dist/utils/path.js.map +1 -1
- package/dist/utils/safeTimer.d.ts +19 -0
- package/dist/utils/safeTimer.d.ts.map +1 -1
- package/dist/utils/safeTimer.js +27 -0
- package/dist/utils/safeTimer.js.map +1 -1
- package/dist/utils/segmenter.d.ts +0 -12
- package/dist/utils/segmenter.d.ts.map +1 -1
- package/dist/utils/segmenter.js +8 -3
- package/dist/utils/segmenter.js.map +1 -1
- package/dist/utils/strings.d.ts +1 -1
- package/dist/utils/strings.d.ts.map +1 -1
- package/dist/utils/strings.js +4 -2
- package/dist/utils/strings.js.map +1 -1
- package/package.json +1 -1
- package/dist/agent/managers/userFactExtractor.d.ts.map +0 -1
- package/dist/agent/managers/userFactExtractor.js.map +0 -1
- /package/dist/agent/{managers/userFactExtractor.js → userFactExtractor.js} +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SOURCE_LABELS } from '../../memory/types.js';
|
|
2
2
|
import { ONE_DAY_MS } from '../../memory/recall.js';
|
|
3
|
+
import { nowIso } from '../../utils/time.js';
|
|
3
4
|
// ─── 常量 ────────────────────────────────────────────────
|
|
4
5
|
/** 关联推荐:每个 source 采样 top-N 条 */
|
|
5
6
|
const SUGGEST_TOP_PER_SOURCE = 3;
|
|
@@ -22,7 +23,7 @@ const SOURCE_HEALTH_THRESHOLDS = {
|
|
|
22
23
|
/**
|
|
23
24
|
* 记忆顾问
|
|
24
25
|
*
|
|
25
|
-
* 从 MemoryInspector
|
|
26
|
+
* 从 MemoryInspector 拆分,负责基于记忆数据的分析计算:
|
|
26
27
|
* - sourceHealth():记忆源健康诊断(数量、score、新鲜度)
|
|
27
28
|
* - suggest():关联推荐(基于 score + 时效性 + 多样性)
|
|
28
29
|
*
|
|
@@ -51,11 +52,11 @@ export class MemoryAdvisor {
|
|
|
51
52
|
* - critical:avgScore < 0.2 或 30 天以上未访问
|
|
52
53
|
*
|
|
53
54
|
* 纯只读、同步、不调 LLM,与 stats() 互补(stats 只有数量,本方法有质量指标)。
|
|
54
|
-
*
|
|
55
|
+
* 使用 getAllSources() 发现所有 source 标签,替代全量 search。
|
|
55
56
|
*/
|
|
56
57
|
sourceHealth() {
|
|
57
58
|
const now = Date.now();
|
|
58
|
-
//
|
|
59
|
+
// 使用 getAllSources() 获取所有有数据的 source 标签
|
|
59
60
|
const sourceMap = this.index.getAllSources();
|
|
60
61
|
const sourceSet = new Set();
|
|
61
62
|
for (const [source, count] of sourceMap) {
|
|
@@ -104,7 +105,7 @@ export class MemoryAdvisor {
|
|
|
104
105
|
return {
|
|
105
106
|
sources: entries.sort((a, b) => statusPriority[b.status] - statusPriority[a.status]),
|
|
106
107
|
overallStatus,
|
|
107
|
-
diagnosedAt:
|
|
108
|
+
diagnosedAt: nowIso(),
|
|
108
109
|
};
|
|
109
110
|
}
|
|
110
111
|
// ─── 关联推荐 ─────────────────────────────────────────
|
|
@@ -187,6 +188,7 @@ export class MemoryAdvisor {
|
|
|
187
188
|
return b.relevance - a.relevance;
|
|
188
189
|
});
|
|
189
190
|
return scored.slice(0, limit).map(({ memory, relevance, reason }) => ({
|
|
191
|
+
id: memory.id,
|
|
190
192
|
name: memory.name,
|
|
191
193
|
source: memory.source,
|
|
192
194
|
relevance: Math.round(relevance * 100) / 100,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memoryAdvisor.js","sourceRoot":"","sources":["../../../src/agent/managers/memoryAdvisor.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"memoryAdvisor.js","sourceRoot":"","sources":["../../../src/agent/managers/memoryAdvisor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 记忆衰减调度器(从 agent.ts 拆分)
|
|
3
|
+
*
|
|
4
|
+
* 职责:
|
|
5
|
+
* 1. 定期执行记忆 score 衰减(体现"自然遗忘")
|
|
6
|
+
* 2. 衰减指标统计(执行次数 / 累计衰减记忆数 / 上次衰减时间)
|
|
7
|
+
* 3. 衰减可观测性(Tracer Span 埋点)
|
|
8
|
+
* 4. 衰减完成事件发射(decayCompleted)
|
|
9
|
+
*
|
|
10
|
+
* 设计理由:
|
|
11
|
+
* agent.ts 原承担 15+ 职责,记忆衰减是独立的生命周期职责,
|
|
12
|
+
* 拆分后 Agent 聚焦对话编排,MemoryDecayScheduler 聚焦记忆自然遗忘。
|
|
13
|
+
*
|
|
14
|
+
* 衰减范围:
|
|
15
|
+
* - insight(洞察记忆)
|
|
16
|
+
* - profile(用户画像记忆)
|
|
17
|
+
* - work-projection(作品投影)
|
|
18
|
+
* 不衰减 persona/rule/skill(配置型记忆不应衰减)
|
|
19
|
+
*
|
|
20
|
+
* 自然生长原则:
|
|
21
|
+
* - 不持有 storage 引用(start 时注入,stop 时释放)
|
|
22
|
+
* - 通过回调发射事件(不继承 TypedEventEmitter,避免与 Agent 事件系统耦合)
|
|
23
|
+
* - 指标统计内聚(getMetrics 返回快照,Agent.getMetrics 直接合并)
|
|
24
|
+
*/
|
|
25
|
+
import { type ITracer } from '../../agent/tracer.js';
|
|
26
|
+
/** 衰减完成的回调类型(Agent 注入 emit('decayCompleted', ...)) */
|
|
27
|
+
export type DecayCompletedCallback = (payload: {
|
|
28
|
+
decayedCount: number;
|
|
29
|
+
}) => void;
|
|
30
|
+
/** MemoryDecayScheduler 构造选项 */
|
|
31
|
+
export interface MemoryDecaySchedulerOptions {
|
|
32
|
+
/** 可观测性 Tracer(未注入时降级为 NOOP_TRACER) */
|
|
33
|
+
readonly tracer?: ITracer;
|
|
34
|
+
/** 衰减完成事件发射回调(Agent 注入 this.emit.bind(this, 'decayCompleted')) */
|
|
35
|
+
readonly onDecayCompleted: DecayCompletedCallback;
|
|
36
|
+
}
|
|
37
|
+
/** 衰减指标快照(供 Agent.getMetrics 合并) */
|
|
38
|
+
export interface DecayMetrics {
|
|
39
|
+
/** 衰减执行次数(每次 runOnce 实际执行 +1) */
|
|
40
|
+
readonly runCount: number;
|
|
41
|
+
/** 累计衰减记忆数(score 被调低的记忆条数总和) */
|
|
42
|
+
readonly totalDecayedCount: number;
|
|
43
|
+
/** 上次衰减时间(ISO 8601,null 表示从未执行过) */
|
|
44
|
+
readonly lastRunAt: string | null;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 记忆衰减调度器
|
|
48
|
+
*
|
|
49
|
+
* 使用方式:
|
|
50
|
+
* const scheduler = new MemoryDecayScheduler({ tracer, onDecayCompleted });
|
|
51
|
+
* scheduler.start(storage, intervalMs); // 启动定时衰减
|
|
52
|
+
* scheduler.runOnce(); // 立即执行一次衰减
|
|
53
|
+
* scheduler.stop(); // 停止定时衰减
|
|
54
|
+
* scheduler.getMetrics(); // 获取衰减指标快照
|
|
55
|
+
*/
|
|
56
|
+
export declare class MemoryDecayScheduler {
|
|
57
|
+
/** 可观测性 Tracer(默认 NOOP,零开销) */
|
|
58
|
+
private readonly tracer;
|
|
59
|
+
/** 衰减完成事件发射回调 */
|
|
60
|
+
private readonly onDecayCompleted;
|
|
61
|
+
/** 衰减定时器(null 表示未启动) */
|
|
62
|
+
private decayTimer;
|
|
63
|
+
/** 衰减目标存储(start 时注入,stop 时释放) */
|
|
64
|
+
private storage;
|
|
65
|
+
/** 衰减执行次数(每次 runOnce 实际执行 +1) */
|
|
66
|
+
private metricDecayRunCount;
|
|
67
|
+
/** 累计衰减记忆数(score 被调低的记忆条数总和) */
|
|
68
|
+
private metricTotalDecayedCount;
|
|
69
|
+
/** 上次衰减时间(ISO 8601,null 表示从未执行过) */
|
|
70
|
+
private metricLastDecayAt;
|
|
71
|
+
constructor(opts: MemoryDecaySchedulerOptions);
|
|
72
|
+
/**
|
|
73
|
+
* 启动定期衰减
|
|
74
|
+
*
|
|
75
|
+
* @param storage 衰减目标存储(IMemoryStorage.decayScores)
|
|
76
|
+
* @param intervalMs 衰减间隔(毫秒,通常为 1 小时)
|
|
77
|
+
*/
|
|
78
|
+
start(storage: IMemoryStorageLike, intervalMs: number): void;
|
|
79
|
+
/**
|
|
80
|
+
* 停止定期衰减,释放资源
|
|
81
|
+
*
|
|
82
|
+
* 清理定时器和 storage 引用,防止 close 后回调触发。
|
|
83
|
+
*/
|
|
84
|
+
stop(): void;
|
|
85
|
+
/**
|
|
86
|
+
* 执行一次记忆衰减
|
|
87
|
+
*
|
|
88
|
+
* 对 insight/profile/work-projection 记忆执行 score 衰减,
|
|
89
|
+
* 长期未访问的记忆 score 逐渐降低,体现"自然遗忘"。
|
|
90
|
+
* 不影响 persona/rule/skill(这些是配置型记忆,不应衰减)。
|
|
91
|
+
*
|
|
92
|
+
* 衰减逻辑委派给 IMemoryStorage.decayScores(),
|
|
93
|
+
* 宿主(SqliteStorage)可用一条 SQL UPDATE 批量完成,避免 O(n) 全量加载。
|
|
94
|
+
*/
|
|
95
|
+
runOnce(): void;
|
|
96
|
+
/**
|
|
97
|
+
* 获取衰减指标快照
|
|
98
|
+
*
|
|
99
|
+
* 供 Agent.getMetrics() 合并到完整 AgentMetrics 中。
|
|
100
|
+
*/
|
|
101
|
+
getMetrics(): DecayMetrics;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* IMemoryStorage 的衰减子接口(接口隔离原则)
|
|
105
|
+
*
|
|
106
|
+
* MemoryDecayScheduler 只需要 decayScores 方法,不需要完整 IMemoryStorage。
|
|
107
|
+
* 使用结构子接口便于测试 mock,同时避免对完整接口的过度耦合。
|
|
108
|
+
*/
|
|
109
|
+
export interface IMemoryStorageLike {
|
|
110
|
+
/** 对指定 source 的记忆执行 score 衰减,返回被衰减的记忆条数 */
|
|
111
|
+
decayScores(sources: readonly string[], now: Date): number;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=memoryDecayScheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoryDecayScheduler.d.ts","sourceRoot":"","sources":["../../../src/agent/managers/memoryDecayScheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAOH,OAAO,EAA4B,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE3E,sDAAsD;AACtD,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,CAAC;AAEjF,gCAAgC;AAChC,MAAM,WAAW,2BAA2B;IAC1C,uCAAuC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,kEAAkE;IAClE,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;CACnD;AAED,oCAAoC;AACpC,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gCAAgC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,oCAAoC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED;;;;;;;;;GASG;AACH,qBAAa,oBAAoB;IAC/B,+BAA+B;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,iBAAiB;IACjB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyB;IAE1D,wBAAwB;IACxB,OAAO,CAAC,UAAU,CAA+C;IACjE,iCAAiC;IACjC,OAAO,CAAC,OAAO,CAAmC;IAGlD,iCAAiC;IACjC,OAAO,CAAC,mBAAmB,CAAa;IACxC,gCAAgC;IAChC,OAAO,CAAC,uBAAuB,CAAa;IAC5C,oCAAoC;IACpC,OAAO,CAAC,iBAAiB,CAAuB;gBAEpC,IAAI,EAAE,2BAA2B;IAK7C;;;;;OAKG;IACH,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAQ5D;;;;OAIG;IACH,IAAI,IAAI,IAAI;IAQZ;;;;;;;;;OASG;IACH,OAAO,IAAI,IAAI;IAyBf;;;;OAIG;IACH,UAAU,IAAI,YAAY;CAO3B;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,WAAW,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,GAAG,MAAM,CAAC;CAC5D"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 记忆衰减调度器(从 agent.ts 拆分)
|
|
3
|
+
*
|
|
4
|
+
* 职责:
|
|
5
|
+
* 1. 定期执行记忆 score 衰减(体现"自然遗忘")
|
|
6
|
+
* 2. 衰减指标统计(执行次数 / 累计衰减记忆数 / 上次衰减时间)
|
|
7
|
+
* 3. 衰减可观测性(Tracer Span 埋点)
|
|
8
|
+
* 4. 衰减完成事件发射(decayCompleted)
|
|
9
|
+
*
|
|
10
|
+
* 设计理由:
|
|
11
|
+
* agent.ts 原承担 15+ 职责,记忆衰减是独立的生命周期职责,
|
|
12
|
+
* 拆分后 Agent 聚焦对话编排,MemoryDecayScheduler 聚焦记忆自然遗忘。
|
|
13
|
+
*
|
|
14
|
+
* 衰减范围:
|
|
15
|
+
* - insight(洞察记忆)
|
|
16
|
+
* - profile(用户画像记忆)
|
|
17
|
+
* - work-projection(作品投影)
|
|
18
|
+
* 不衰减 persona/rule/skill(配置型记忆不应衰减)
|
|
19
|
+
*
|
|
20
|
+
* 自然生长原则:
|
|
21
|
+
* - 不持有 storage 引用(start 时注入,stop 时释放)
|
|
22
|
+
* - 通过回调发射事件(不继承 TypedEventEmitter,避免与 Agent 事件系统耦合)
|
|
23
|
+
* - 指标统计内聚(getMetrics 返回快照,Agent.getMetrics 直接合并)
|
|
24
|
+
*/
|
|
25
|
+
import { safeSetInterval, clearSafeInterval } from '../../utils/safeTimer.js';
|
|
26
|
+
import { logger } from '../../logging/logger.js';
|
|
27
|
+
import { toError } from '../../utils/errors.js';
|
|
28
|
+
import { nowIso } from '../../utils/time.js';
|
|
29
|
+
import { SOURCE_LABELS } from '../../memory/types.js';
|
|
30
|
+
import { NOOP_TRACER, TRACE_SPANS } from '../../agent/tracer.js';
|
|
31
|
+
/**
|
|
32
|
+
* 记忆衰减调度器
|
|
33
|
+
*
|
|
34
|
+
* 使用方式:
|
|
35
|
+
* const scheduler = new MemoryDecayScheduler({ tracer, onDecayCompleted });
|
|
36
|
+
* scheduler.start(storage, intervalMs); // 启动定时衰减
|
|
37
|
+
* scheduler.runOnce(); // 立即执行一次衰减
|
|
38
|
+
* scheduler.stop(); // 停止定时衰减
|
|
39
|
+
* scheduler.getMetrics(); // 获取衰减指标快照
|
|
40
|
+
*/
|
|
41
|
+
export class MemoryDecayScheduler {
|
|
42
|
+
/** 可观测性 Tracer(默认 NOOP,零开销) */
|
|
43
|
+
tracer;
|
|
44
|
+
/** 衰减完成事件发射回调 */
|
|
45
|
+
onDecayCompleted;
|
|
46
|
+
/** 衰减定时器(null 表示未启动) */
|
|
47
|
+
decayTimer = null;
|
|
48
|
+
/** 衰减目标存储(start 时注入,stop 时释放) */
|
|
49
|
+
storage = null;
|
|
50
|
+
// ─── 衰减指标统计字段 ──────────────────────────────────
|
|
51
|
+
/** 衰减执行次数(每次 runOnce 实际执行 +1) */
|
|
52
|
+
metricDecayRunCount = 0;
|
|
53
|
+
/** 累计衰减记忆数(score 被调低的记忆条数总和) */
|
|
54
|
+
metricTotalDecayedCount = 0;
|
|
55
|
+
/** 上次衰减时间(ISO 8601,null 表示从未执行过) */
|
|
56
|
+
metricLastDecayAt = null;
|
|
57
|
+
constructor(opts) {
|
|
58
|
+
this.tracer = opts.tracer ?? NOOP_TRACER;
|
|
59
|
+
this.onDecayCompleted = opts.onDecayCompleted;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* 启动定期衰减
|
|
63
|
+
*
|
|
64
|
+
* @param storage 衰减目标存储(IMemoryStorage.decayScores)
|
|
65
|
+
* @param intervalMs 衰减间隔(毫秒,通常为 1 小时)
|
|
66
|
+
*/
|
|
67
|
+
start(storage, intervalMs) {
|
|
68
|
+
this.storage = storage;
|
|
69
|
+
// 立即执行一次首次衰减
|
|
70
|
+
this.runOnce();
|
|
71
|
+
// 注册定期衰减
|
|
72
|
+
this.decayTimer = safeSetInterval(() => this.runOnce(), intervalMs);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* 停止定期衰减,释放资源
|
|
76
|
+
*
|
|
77
|
+
* 清理定时器和 storage 引用,防止 close 后回调触发。
|
|
78
|
+
*/
|
|
79
|
+
stop() {
|
|
80
|
+
if (this.decayTimer) {
|
|
81
|
+
clearSafeInterval(this.decayTimer);
|
|
82
|
+
this.decayTimer = null;
|
|
83
|
+
}
|
|
84
|
+
this.storage = null;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* 执行一次记忆衰减
|
|
88
|
+
*
|
|
89
|
+
* 对 insight/profile/work-projection 记忆执行 score 衰减,
|
|
90
|
+
* 长期未访问的记忆 score 逐渐降低,体现"自然遗忘"。
|
|
91
|
+
* 不影响 persona/rule/skill(这些是配置型记忆,不应衰减)。
|
|
92
|
+
*
|
|
93
|
+
* 衰减逻辑委派给 IMemoryStorage.decayScores(),
|
|
94
|
+
* 宿主(SqliteStorage)可用一条 SQL UPDATE 批量完成,避免 O(n) 全量加载。
|
|
95
|
+
*/
|
|
96
|
+
runOnce() {
|
|
97
|
+
if (!this.storage)
|
|
98
|
+
return;
|
|
99
|
+
// 衰减 Span:记录衰减执行过程,补全衰减可观测性缺口
|
|
100
|
+
const decaySpan = this.tracer.startSpan(TRACE_SPANS.DECAY);
|
|
101
|
+
try {
|
|
102
|
+
const sources = [SOURCE_LABELS.INSIGHT, SOURCE_LABELS.PROFILE, SOURCE_LABELS.WORK_PROJECTION];
|
|
103
|
+
const decayedCount = this.storage.decayScores(sources, new Date());
|
|
104
|
+
logger.debug({ decayedCount }, '记忆衰减完成');
|
|
105
|
+
// 衰减指标统计:累计执行次数和衰减记忆数
|
|
106
|
+
this.metricDecayRunCount++;
|
|
107
|
+
this.metricTotalDecayedCount += decayedCount;
|
|
108
|
+
this.metricLastDecayAt = nowIso();
|
|
109
|
+
decaySpan.setAttribute('decayedCount', decayedCount);
|
|
110
|
+
decaySpan.setAttribute('totalRuns', this.metricDecayRunCount);
|
|
111
|
+
this.onDecayCompleted({ decayedCount });
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
logger.warn({ err }, '记忆衰减异常,跳过本轮');
|
|
115
|
+
decaySpan.recordException(toError(err));
|
|
116
|
+
}
|
|
117
|
+
finally {
|
|
118
|
+
decaySpan.end();
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* 获取衰减指标快照
|
|
123
|
+
*
|
|
124
|
+
* 供 Agent.getMetrics() 合并到完整 AgentMetrics 中。
|
|
125
|
+
*/
|
|
126
|
+
getMetrics() {
|
|
127
|
+
return {
|
|
128
|
+
runCount: this.metricDecayRunCount,
|
|
129
|
+
totalDecayedCount: this.metricTotalDecayedCount,
|
|
130
|
+
lastRunAt: this.metricLastDecayAt,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=memoryDecayScheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoryDecayScheduler.js","sourceRoot":"","sources":["../../../src/agent/managers/memoryDecayScheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAgB,MAAM,mBAAmB,CAAC;AAuB3E;;;;;;;;;GASG;AACH,MAAM,OAAO,oBAAoB;IAC/B,+BAA+B;IACd,MAAM,CAAU;IACjC,iBAAiB;IACA,gBAAgB,CAAyB;IAE1D,wBAAwB;IAChB,UAAU,GAA0C,IAAI,CAAC;IACjE,iCAAiC;IACzB,OAAO,GAA8B,IAAI,CAAC;IAElD,kDAAkD;IAClD,iCAAiC;IACzB,mBAAmB,GAAW,CAAC,CAAC;IACxC,gCAAgC;IACxB,uBAAuB,GAAW,CAAC,CAAC;IAC5C,oCAAoC;IAC5B,iBAAiB,GAAkB,IAAI,CAAC;IAEhD,YAAY,IAAiC;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;IAChD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAA2B,EAAE,UAAkB;QACnD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,aAAa;QACb,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,SAAS;QACT,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;IAED;;;;OAIG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACnC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED;;;;;;;;;OASG;IACH,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,8BAA8B;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;YAC9F,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YACnE,MAAM,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,EAAE,QAAQ,CAAC,CAAC;YAEzC,sBAAsB;YACtB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,uBAAuB,IAAI,YAAY,CAAC;YAC7C,IAAI,CAAC,iBAAiB,GAAG,MAAM,EAAE,CAAC;YAClC,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YACrD,SAAS,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAE9D,IAAI,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;YACpC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC;gBAAS,CAAC;YACT,SAAS,CAAC,GAAG,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,mBAAmB;YAClC,iBAAiB,EAAE,IAAI,CAAC,uBAAuB;YAC/C,SAAS,EAAE,IAAI,CAAC,iBAAiB;SAClC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -15,7 +15,7 @@ import type { MemoryRelation, RelationDirection } from '../../memory/types.js';
|
|
|
15
15
|
import type { VectorStore } from '../../memory/vectorStore.js';
|
|
16
16
|
import type { MessageHistory } from '../../agent/messageHistory.js';
|
|
17
17
|
import type { AgentLoop } from '../../agent/loop.js';
|
|
18
|
-
import type { SourceHealthReport, SuggestOptions, SuggestHit } from '../../agent/managers/memoryAdvisor.js';
|
|
18
|
+
import type { MemoryAdvisor, SourceHealthReport, SuggestOptions, SuggestHit } from '../../agent/managers/memoryAdvisor.js';
|
|
19
19
|
export type { SourceHealthStatus, SourceHealthEntry, SourceHealthReport, SuggestOptions, SuggestHit, } from '../../agent/managers/memoryAdvisor.js';
|
|
20
20
|
/** 记忆快照 */
|
|
21
21
|
export interface MemorySnapshot {
|
|
@@ -99,15 +99,16 @@ export declare class MemoryInspector {
|
|
|
99
99
|
private vectorStore;
|
|
100
100
|
/** 关系存储(可选,ADR-014 侧车,未注入时跳过关系查询) */
|
|
101
101
|
private readonly relationStore;
|
|
102
|
-
/** 记忆顾问(
|
|
102
|
+
/** 记忆顾问(sourceHealth + suggest 委托) */
|
|
103
103
|
private readonly advisor;
|
|
104
104
|
/**
|
|
105
105
|
* @param index - 记忆存储(用于搜索 + 统计)
|
|
106
106
|
* @param loop - AgentLoop(用于获取工作记忆)
|
|
107
107
|
* @param history - MessageHistory(用于获取当前会话信息)
|
|
108
|
+
* @param advisor - 记忆顾问(组合根一致性,由 assembler.ts 显式注入,必填)
|
|
108
109
|
* @param relationStore - 关系存储侧车(可选,ADR-014,未注入时关系相关方法降级返回空)
|
|
109
110
|
*/
|
|
110
|
-
constructor(index: IMemoryStorage, loop: AgentLoop, history: MessageHistory, relationStore?: IMemoryRelationStore | null);
|
|
111
|
+
constructor(index: IMemoryStorage, loop: AgentLoop, history: MessageHistory, advisor: MemoryAdvisor, relationStore?: IMemoryRelationStore | null);
|
|
111
112
|
/**
|
|
112
113
|
* 注入向量存储(由 Agent 在初始化后调用,解决构造时序)
|
|
113
114
|
*/
|
|
@@ -119,16 +120,52 @@ export declare class MemoryInspector {
|
|
|
119
120
|
*/
|
|
120
121
|
upsert(memory: Memory): void;
|
|
121
122
|
/**
|
|
122
|
-
*
|
|
123
|
+
* 删除记忆(软删除,写入 deletedAt)
|
|
123
124
|
*
|
|
124
125
|
* @param id 记忆唯一标识(${source}:${name} 格式)
|
|
125
126
|
*/
|
|
126
127
|
delete(id: string): void;
|
|
127
128
|
/**
|
|
128
|
-
*
|
|
129
|
+
* 恢复软删除的记忆(清除 deletedAt)
|
|
129
130
|
*
|
|
130
131
|
* @param id 记忆唯一标识
|
|
131
|
-
|
|
132
|
+
*/
|
|
133
|
+
restore(id: string): void;
|
|
134
|
+
/**
|
|
135
|
+
* 物理删除记忆(不可恢复,用于回收站彻底删除)
|
|
136
|
+
*
|
|
137
|
+
* @param id 记忆唯一标识
|
|
138
|
+
*/
|
|
139
|
+
purge(id: string): void;
|
|
140
|
+
/**
|
|
141
|
+
* 列出回收站中的软删除记忆
|
|
142
|
+
*
|
|
143
|
+
* @param limit 返回数量上限(默认 50)
|
|
144
|
+
* @returns 软删除记忆列表(按 deletedAt 降序)
|
|
145
|
+
*/
|
|
146
|
+
listDeleted(limit?: number): Memory[];
|
|
147
|
+
/**
|
|
148
|
+
* 按 ID 获取单条软删除记忆
|
|
149
|
+
*
|
|
150
|
+
* 用于 restore/purge 操作前的存在性校验,避免 listDeleted 默认 50 上限
|
|
151
|
+
* 导致回收站超量时操作失效。
|
|
152
|
+
*
|
|
153
|
+
* @param id 记忆唯一标识
|
|
154
|
+
* @returns 软删除记忆,不存在或未软删除时返回 null
|
|
155
|
+
*/
|
|
156
|
+
getDeletedById(id: string): Memory | null;
|
|
157
|
+
/**
|
|
158
|
+
* 清理过期的软删除记忆
|
|
159
|
+
*
|
|
160
|
+
* @param before 时间阈值,deletedAt 早于此值的记忆将被物理删除
|
|
161
|
+
* @returns 被清理的记忆数量
|
|
162
|
+
*/
|
|
163
|
+
purgeExpired(before: Date): number;
|
|
164
|
+
/**
|
|
165
|
+
* 按 ID 获取单条活跃记忆(已软删除的返回 null)
|
|
166
|
+
*
|
|
167
|
+
* @param id 记忆唯一标识
|
|
168
|
+
* @returns 记忆对象,不存在或已软删除时返回 null
|
|
132
169
|
*/
|
|
133
170
|
getById(id: string): Memory | null;
|
|
134
171
|
/**
|
|
@@ -169,9 +206,12 @@ export declare class MemoryInspector {
|
|
|
169
206
|
/**
|
|
170
207
|
* 混合搜索记忆(语义 + 关键词双通道)
|
|
171
208
|
*
|
|
172
|
-
*
|
|
209
|
+
* 当 VectorStore 可用时,启用语义搜索通道,补强关键词召回的语义缺口。
|
|
173
210
|
* 向量搜索失败时静默降级到纯关键词(降级优先原则)。
|
|
174
211
|
*
|
|
212
|
+
* 融合排序算法已提取到 hybridMerge.ts,与 recall() 共享同一实现,
|
|
213
|
+
* 避免跨模块常量依赖。
|
|
214
|
+
*
|
|
175
215
|
* @returns 混合排序后的搜索结果(含相似度分数)
|
|
176
216
|
*/
|
|
177
217
|
searchHybrid(query: string, limit?: number): Promise<AgentSearchHit[]>;
|
|
@@ -179,7 +219,7 @@ export declare class MemoryInspector {
|
|
|
179
219
|
* 记忆库统计
|
|
180
220
|
*
|
|
181
221
|
* 返回记忆来源分布、数据库大小等关键指标。
|
|
182
|
-
*
|
|
222
|
+
* 优化:使用 getAllSources() 一次查询替代多次 countBySource + 全量 search,
|
|
183
223
|
* 复杂度从 O(n*knownSources + n) 降为 O(distinctSources)。
|
|
184
224
|
*/
|
|
185
225
|
stats(): AgentStats;
|
|
@@ -203,6 +243,26 @@ export declare class MemoryInspector {
|
|
|
203
243
|
* @returns 全部关系边数组
|
|
204
244
|
*/
|
|
205
245
|
getAllRelations(): MemoryRelation[];
|
|
246
|
+
/**
|
|
247
|
+
* 添加记忆关系(透传 relationStore)
|
|
248
|
+
*
|
|
249
|
+
* 用于宿主 UI 手动创建关系(关系图右键菜单 → 连线 → 创建关系)。
|
|
250
|
+
* relationStore 未注入时静默降级(不阻塞)。
|
|
251
|
+
*
|
|
252
|
+
* @param relation 关系边数据
|
|
253
|
+
*/
|
|
254
|
+
addRelation(relation: MemoryRelation): void;
|
|
255
|
+
/**
|
|
256
|
+
* 删除记忆关系(透传 relationStore)
|
|
257
|
+
*
|
|
258
|
+
* 用于宿主 UI 手动删除关系(关系图右键菜单 → 编辑关系 → 删除)。
|
|
259
|
+
* relationStore 未注入时静默降级(不阻塞)。
|
|
260
|
+
*
|
|
261
|
+
* @param sourceId 关系起点
|
|
262
|
+
* @param targetId 关系终点
|
|
263
|
+
* @param type 关系类型
|
|
264
|
+
*/
|
|
265
|
+
removeRelation(sourceId: string, targetId: string, type: string): void;
|
|
206
266
|
/**
|
|
207
267
|
* 统计关系边总数
|
|
208
268
|
*
|
|
@@ -214,14 +274,14 @@ export declare class MemoryInspector {
|
|
|
214
274
|
* 记忆源健康诊断(委托给 MemoryAdvisor)
|
|
215
275
|
*
|
|
216
276
|
* 为每个 source 计算健康指标(数量、平均 score、新鲜度、状态)。
|
|
217
|
-
* 实现已迁移至 MemoryAdvisor
|
|
277
|
+
* 实现已迁移至 MemoryAdvisor,此处保留委托以维持 API 契约。
|
|
218
278
|
*/
|
|
219
279
|
sourceHealth(): SourceHealthReport;
|
|
220
280
|
/**
|
|
221
281
|
* 关联推荐(委托给 MemoryAdvisor)
|
|
222
282
|
*
|
|
223
283
|
* 基于 score + 时效性 + source 多样性推荐记忆。
|
|
224
|
-
* 实现已迁移至 MemoryAdvisor
|
|
284
|
+
* 实现已迁移至 MemoryAdvisor,此处保留委托以维持 API 契约。
|
|
225
285
|
*
|
|
226
286
|
* @param query - 可选的搜索关键词(提供时结合搜索结果推荐,省略时基于全局热度推荐)
|
|
227
287
|
* @param options - 推荐选项
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memoryInspector.d.ts","sourceRoot":"","sources":["../../../src/agent/managers/memoryInspector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"memoryInspector.d.ts","sourceRoot":"","sources":["../../../src/agent/managers/memoryInspector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAWjD,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,UAAU,EACX,MAAM,mCAAmC,CAAC;AAG3C,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,UAAU,GACX,MAAM,mCAAmC,CAAC;AAa3C,WAAW;AACX,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,OAAO,EAAE,qBAAqB,CAAC;IAC/B,kCAAkC;IAClC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,6BAA6B;IAC7B,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,mBAAmB;AACnB,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;QAC/C,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;CACJ;AAED,2BAA2B;AAC3B,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,kBAAkB;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;CACJ;AAED,wDAAwD;AACxD,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,eAAe;IACf,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED,gCAAgC;AAChC,MAAM,WAAW,cAAc;IAC7B,mEAAmE;IACnE,EAAE,EAAE,MAAM,CAAC;IACX,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,MAAM,EAAE,MAAM,CAAC;IACf,cAAc;IACd,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,cAAc;AACd,MAAM,WAAW,UAAU;IACzB,mBAAmB;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;CACvB;AAID,qBAAa,eAAe;IAgBxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAjB1B,uCAAuC;IACvC,OAAO,CAAC,WAAW,CAA4B;IAC/C,qCAAqC;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAC5D,sCAAsC;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IAExC;;;;;;OAMG;gBAEgB,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,cAAc,EACxC,OAAO,EAAE,aAAa,EACtB,aAAa,GAAE,oBAAoB,GAAG,IAAW;IAOnD;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI;IAS5C;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI5B;;;;OAIG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIxB;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIzB;;;;OAIG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIvB;;;;;OAKG;IACH,WAAW,CAAC,KAAK,SAAK,GAAG,MAAM,EAAE;IAIjC;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIzC;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM;IAIlC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIlC;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAIrC;;;;;;;;;OASG;IACH,IAAI,CAAC,KAAK,SAAK,GAAG,MAAM,EAAE;IAM1B;;;;;;;;;OASG;IACH,QAAQ,IAAI,cAAc;IA0D1B;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,cAAc,EAAE;IAyBnD;;;;;;;;;;OAUG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAqDxE;;;;;;OAMG;IACH,KAAK,IAAI,UAAU;IAenB;;;;;;;;;OASG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,iBAA0B,GAAG,cAAc,EAAE;IAKvF;;;;;;;OAOG;IACH,eAAe,IAAI,cAAc,EAAE;IAKnC;;;;;;;OAOG;IACH,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAK3C;;;;;;;;;OASG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAKtE;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAOtB;;;;;OAKG;IACH,YAAY,IAAI,kBAAkB;IAIlC;;;;;;;;OAQG;IACH,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,EAAE;CAGhE"}
|