autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
62 lines (61 loc) • 2.26 kB
TypeScript
/**
* IncrementalBootstrap — 增量冷启动控制器
*
* 基于 BootstrapSnapshot 存储的文件指纹,检测项目变更范围,
* 推断受影响维度,并控制 fillDimensionsV3 仅执行受影响维度。
*
* 流程:
* 1. 加载上次成功快照
* 2. 扫描当前文件 → 计算 diff (added/modified/deleted)
* 3. 推断受影响维度 → { mode, dimensions, skippedDimensions }
* 4. 从快照恢复未变更维度的 EpisodicMemory
* 5. 只对受影响维度执行 Analyst → Producer
* 6. 完成后保存新快照
*
* @module pipeline/IncrementalBootstrap
*/
import { SessionStore } from '#agent/memory/SessionStore.js';
import type { BootstrapFile, LoggerLike, SaveSnapshotParams } from '../../types.js';
import { BootstrapSnapshot } from './BootstrapSnapshot.js';
export declare class IncrementalBootstrap {
#private;
constructor(db: unknown, projectRoot: string, { logger }?: {
logger?: LoggerLike | null;
});
/**
* 评估增量可行性 — 在 bootstrap 流程最开始调用
*
* @param currentFiles 当前扫描到的文件
* @param allDimIds 所有可用维度 ID
*/
evaluate(currentFiles: BootstrapFile[], allDimIds: string[]): {
canIncremental: boolean;
mode: string;
affectedDimensions: string[];
skippedDimensions: never[];
previousSnapshot: null;
diff: null;
reason: string;
restoredEpisodic: null;
} | {
canIncremental: boolean;
mode: string;
affectedDimensions: string[];
skippedDimensions: string[];
previousSnapshot: import("./BootstrapSnapshot.js").SnapshotData;
diff: import("./BootstrapSnapshot.js").DiffResult;
reason: string;
restoredEpisodic: SessionStore | null;
};
/**
* 保存快照 — 在 bootstrap 完成后调用
*
* @param [params.meta] { durationMs, candidateCount, primaryLang }
* @param [params.plan] evaluate() 返回的计划 (增量时)
* @returns 快照 ID
*/
saveSnapshot(params: SaveSnapshotParams): string;
/** 获取快照管理器 (用于直接查询) */
getSnapshotManager(): BootstrapSnapshot;
}
export default IncrementalBootstrap;