UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

126 lines (125 loc) 4.13 kB
/** * pipeline/dimension-context.js — 跨维度上下文管理 (v6) * * ⚠️ 内部 Agent 专用 — 被 orchestrator.js 的 PipelineStrategy analyze 阶段调用。 * 外部 Agent 不使用此模块(外部 Agent 的跨维度上下文由 BootstrapSession.js + EpisodicMemory 管理)。 * * 在 PipelineStrategy 按维度分批执行时,维护跨维度的上下文: * - 项目基础信息 (不变) * - 已完成维度的 DimensionDigest (累积) * - 已提交候选的摘要列表 (累积) * * 确保每个维度的 Analyst 阶段都能看到前序维度的分析结论, * 实现跨维度透明互补。 * * @module pipeline/dimension-context */ /** Project base info (immutable during a bootstrap session) */ interface ProjectContext { projectName: string; primaryLang: string; fileCount: number; targetCount: number; modules: string[]; depGraph?: Record<string, unknown>; astMetrics?: Record<string, unknown>; guardSummary?: Record<string, unknown>; } /** Summary of a completed dimension's analysis */ interface DimensionDigest { summary?: string; candidateCount?: number; candidateTitles?: string[]; keyFindings?: string[]; crossRefs?: Record<string, string>; gaps?: string[]; remainingTasks?: Array<{ signal?: string; } | string>; dimId?: string; completedAt?: number; } /** Summary of a submitted candidate */ interface CandidateSummary { dimId: string; title: string; subTopic: string; summary?: string; } /** Serialized form of DimensionContext (for checkpoint restore) */ interface DimensionContextJSON { projectContext: ProjectContext; completedDimensions?: Record<string, DimensionDigest>; submittedCandidates?: CandidateSummary[]; } /** * DimensionContext — 跨维度上下文容器 * * 在单次 bootstrap 会话中创建一次,按维度累积上下文。 */ export declare class DimensionContext { completedDimensions: Map<string, DimensionDigest>; projectContext: ProjectContext; submittedCandidates: CandidateSummary[]; /** @param projectContext 项目基础信息 (全程不变) */ constructor(projectContext: ProjectContext); /** * 维度完成后存储其摘要 * * @param dimId 维度 ID * @param digest 维度分析摘要 */ addDimensionDigest(dimId: string, digest: DimensionDigest): void; /** * 记录已提交的候选 * * @param candidateInfo { title, subTopic, summary } */ addSubmittedCandidate(dimId: string, candidateInfo: { title?: string; subTopic?: string; summary?: string; }): void; /** * 构建给 Agent 的上下文快照 * * @param currentDimId 当前维度 ID */ buildContextForDimension(currentDimId: string): { project: ProjectContext; previousDimensions: Record<string, Partial<DimensionDigest>>; existingCandidates: { dimId: string; title: string; subTopic: string; }[]; currentDimension: string; }; /** 重算某维度时,获取该维度已有候选 */ getExistingCandidatesForDimension(dimId: string): CandidateSummary[]; /** * 获取所有维度摘要的紧凑文本表示 * 用于 Agent prompt 中注入 */ getDigestsSummaryText(): string; /** 将完整上下文序列化为 JSON (用于断点恢复) */ toJSON(): { projectContext: ProjectContext; completedDimensions: { [k: string]: DimensionDigest; }; submittedCandidates: CandidateSummary[]; }; /** 从 JSON 恢复上下文 (断点恢复) */ static fromJSON(json: DimensionContextJSON): DimensionContext; } /** * 从 Agent 的最终回复中解析 DimensionDigest * * Agent 被要求在回复末尾包含 JSON 格式的 dimensionDigest。 * 此函数从自由格式文本中提取该 JSON 块。 * * @param reply Agent 的完整回复文本 */ export declare function parseDimensionDigest(reply: string | null | undefined): DimensionDigest | null; export {};