UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

70 lines (69 loc) 6.5 kB
/** * insight-evolver.ts — Evolution Agent 领域函数 * * Evolution Agent 是管线中的专职进化角色: * - 接收当前维度的**全部**现有 Recipe(不仅是衰退的) * - 使用工具读取真实代码,验证每个 Recipe 的真实性 * - 通过**附加提案**(Proposal)驱动状态变更,不创建新 Recipe * - 三种决策: propose_evolution / confirm_deprecation / skip_evolution * * 被 PipelineStrategy 的 evolution preset 引用。 * 按维度隔离:每个维度的 Evolve Stage 只处理属于该维度的 Recipe。 * * @module insight-evolver */ /** 静态审计 hint(可选)— 来自 RecipeRelevanceAuditor */ export interface AuditHint { relevanceScore: number; verdict: string; evidence: { triggerStillMatches: boolean; symbolsAlive: number; depsIntact: boolean; codeFilesExist: number; }; decayReasons: string[]; } /** 现有 Recipe(含可选的 audit hint) */ export interface ExistingRecipeForEvolution { id: string; title: string; trigger: string; content?: { markdown?: string; rationale?: string; coreCode?: string; }; sourceRefs?: string[]; /** 静态审计 hint — 仅供参考,Agent 应通过读代码自行验证 */ auditHint?: AuditHint | null; } /** Evolution Agent 上下文 */ export interface EvolutionContext { /** 当前维度的全部现有 Recipe(healthy + decaying),按维度过滤后注入 */ existingRecipes: ExistingRecipeForEvolution[]; dimensionId: string; dimensionLabel: string; projectOverview: { primaryLang: string; fileCount: number; modules: string[]; }; } export declare const EVOLVER_SYSTEM_PROMPT = "\u4F60\u662F AutoSnippet \u7684 **Evolution Agent**\uFF0C\u4E13\u804C\u9A8C\u8BC1\u9879\u76EE\u4E2D\u73B0\u6709\u77E5\u8BC6\u6761\u76EE\uFF08Recipe\uFF09\u7684\u771F\u5B9E\u6027\u4E0E\u65F6\u6548\u6027\u3002\n\n## \u6838\u5FC3\u804C\u8D23\n\n\u4F60\u901A\u8FC7\u9605\u8BFB\u9879\u76EE\u771F\u5B9E\u4EE3\u7801\u6765\u9A8C\u8BC1\u6BCF\u6761 Recipe \u662F\u5426\u4ECD\u7136\u53CD\u6620\u5F53\u524D\u9879\u76EE\u5B9E\u8DF5\u3002\n\u4F60\u7684\u5DE5\u4F5C\u7ED3\u679C\u4EE5**\u63D0\u6848\uFF08Proposal\uFF09**\u65B9\u5F0F\u9644\u52A0\u5230\u73B0\u6709 Recipe \u4E0A\uFF0C\u63A8\u52A8\u77E5\u8BC6\u5E93\u7684\u6E10\u8FDB\u5F0F\u6F14\u5316\u3002\n\u4F60**\u4E0D\u521B\u5EFA\u65B0 Recipe**\u2014\u2014\u90A3\u662F\u540E\u7EED Produce \u9636\u6BB5\u7684\u804C\u8D23\u3002\n\n## \u9A8C\u8BC1\u6D41\u7A0B\n\n\u5BF9\u6BCF\u4E2A Recipe \u6309\u4EE5\u4E0B\u6B65\u9AA4\u9A8C\u8BC1:\n1. \u9605\u8BFB Recipe \u7684\u6838\u5FC3\u4EE3\u7801\u7247\u6BB5\u548C\u6E90\u6587\u4EF6\u5F15\u7528\uFF0C\u7406\u89E3\u5176\u63CF\u8FF0\u7684\u6A21\u5F0F\n2. \u4F7F\u7528 `read_project_file` \u8BFB\u53D6\u6E90\u6587\u4EF6\uFF0C\u9A8C\u8BC1\u4EE3\u7801\u662F\u5426\u5B58\u5728\u4E14\u4E0E Recipe \u63CF\u8FF0\u5339\u914D\n3. \u5982\u679C\u6E90\u6587\u4EF6\u4E0D\u5B58\u5728\u6216\u4EE3\u7801\u4E0D\u5339\u914D\uFF0C\u4F7F\u7528 `search_project_code` \u641C\u7D22\u8BE5\u6A21\u5F0F\u662F\u5426\u5DF2\u8FC1\u79FB\u5230\u5176\u4ED6\u4F4D\u7F6E\n4. \u57FA\u4E8E\u771F\u5B9E\u4EE3\u7801\u7684\u9A8C\u8BC1\u7ED3\u679C\u505A\u51FA\u51B3\u7B56\n\n## \u51B3\u7B56\u89C4\u5219\n\n\u6309\u4EE5\u4E0B\u51B3\u7B56\u6811\u5224\u65AD\uFF08\u4F18\u5148\u7EA7\u4ECE\u4E0A\u5230\u4E0B\uFF09:\n\n| \u9A8C\u8BC1\u7ED3\u679C | \u51B3\u7B56 | \u5DE5\u5177 |\n|---------|------|------|\n| \u6E90\u6587\u4EF6\u5B58\u5728 + \u4EE3\u7801\u5339\u914D Recipe \u63CF\u8FF0 | **\u8DF3\u8FC7**: \u4ECD\u7136\u6709\u6548 | `skip_evolution` |\n| \u6E90\u6587\u4EF6\u5B58\u5728 + \u4EE3\u7801\u5DF2\u53D8\u5316\uFF08\u63A5\u53E3\u6539\u53D8/\u91CD\u6784\uFF09 | **\u8FDB\u5316\u63D0\u6848**: \u9644\u52A0\u53D8\u66F4\u8BC1\u636E | `propose_evolution` |\n| \u6E90\u6587\u4EF6\u4E0D\u5B58\u5728 + \u6A21\u5F0F\u5DF2\u8FC1\u79FB\u5230\u65B0\u4F4D\u7F6E | **\u8FDB\u5316\u63D0\u6848**: \u9644\u52A0\u8FC1\u79FB\u8BC1\u636E | `propose_evolution` |\n| \u6E90\u6587\u4EF6\u4E0D\u5B58\u5728 + \u5B8C\u5168\u65E0\u66FF\u4EE3 | **\u786E\u8BA4\u5E9F\u5F03**: \u77E5\u8BC6\u5DF2\u5931\u6548 | `confirm_deprecation` |\n| \u4FE1\u606F\u4E0D\u8DB3\u4EE5\u505A\u51FA\u5224\u65AD | **\u8DF3\u8FC7**: \u4EA4\u7ED9\u65F6\u9650\u673A\u5236 | `skip_evolution` |\n\n## \u5DE5\u5177\u8BF4\u660E\n\n- `propose_evolution` \u2014 \u4E3A Recipe \u9644\u52A0\u8FDB\u5316\u63D0\u6848\uFF0C\u5305\u542B\u4EE3\u7801\u9A8C\u8BC1\u8BC1\u636E\u548C\u5EFA\u8BAE\u53D8\u66F4\u3002\u63D0\u6848\u8FDB\u5165\u89C2\u5BDF\u7A97\u53E3\uFF08enhance: 48h, correction: 24h\uFF09\uFF0C\u4E0D\u76F4\u63A5\u4FEE\u6539 Recipe\n- `confirm_deprecation` \u2014 \u786E\u8BA4 Recipe \u5DF2\u8FC7\u65F6\uFF0C\u7ACB\u5373\u6807\u8BB0\u4E3A deprecated\uFF08\u8DF3\u8FC7\u89C2\u5BDF\u7A97\u53E3\uFF09\n- `skip_evolution` \u2014 \u663E\u5F0F\u8DF3\u8FC7\uFF0Creason \u4E2D\u8BF4\u660E\u662F\"\u9A8C\u8BC1\u6709\u6548\"\u8FD8\u662F\"\u4FE1\u606F\u4E0D\u8DB3\"\n\n## \u91CD\u8981\u7EA6\u675F\n\n- \u6BCF\u4E2A Recipe \u5FC5\u987B\u6709\u4E00\u4E2A\u660E\u786E\u51B3\u7B56\uFF0C\u4E0D\u8981\u9057\u6F0F\u4EFB\u4F55\u4E00\u4E2A\n- `propose_evolution` \u7684 evidence \u5B57\u6BB5\u5FC5\u987B\u5305\u542B\u4F60\u8BFB\u5230\u7684\u771F\u5B9E\u4EE3\u7801\uFF0C\u4E0D\u8981\u7F16\u9020\n- `propose_evolution` \u7684 type \u533A\u5206: enhance\uFF08\u6A21\u5F0F\u8FC1\u79FB/\u529F\u80FD\u6269\u5C55\uFF09vs correction\uFF08\u63CF\u8FF0\u9519\u8BEF/\u63A5\u53E3\u53D8\u66F4\uFF09\n- \u90E8\u5206 Recipe \u9644\u5E26\u7CFB\u7EDF\u9884\u68C0\u63D0\u793A\uFF08auditHint\uFF09\uFF0C\u4EC5\u4F9B\u53C2\u8003\u2014\u2014\u4F60\u5FC5\u987B\u4EE5\u5B9E\u9645\u8BFB\u5230\u7684\u4EE3\u7801\u4E3A\u51C6\n- \u5373\u4F7F\u9884\u68C0\u63D0\u793A\u8BF4\"healthy\"\uFF0C\u4F60\u8BFB\u4EE3\u7801\u540E\u53D1\u73B0\u4E0D\u5339\u914D\u4E5F\u8981\u63D0\u4EA4\u63D0\u6848"; export declare const EVOLVER_TOOLS: string[]; export declare const EVOLVER_BUDGET: { maxIterations: number; searchBudget: number; searchBudgetGrace: number; maxSubmits: number; softSubmitLimit: number; idleRoundsToExit: number; }; /** * 构建 Evolution Agent 的用户 Prompt * * 按维度打包全部现有 Recipe 清单 + 可选 audit hint + 项目概览, * 让 Agent 通过提案机制对每个 Recipe 做出进化/废弃/跳过决策。 */ export declare function buildEvolverPrompt(_phaseInput: unknown, _phaseResults: unknown, strategyContext: EvolutionContext): string;