UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

76 lines (75 loc) 2.64 kB
/** * KnowledgeCompressor — 知识条目压缩器(v3 优化版) * * 将 KnowledgeEntry(含 AI 预计算字段)格式化为 Cursor 交付格式: * - Channel A: compressToRuleLine() → 一行式强制规则(含可选 language 前缀) * - Channel B: compressToWhenDoDont() → When/Do/Don't/Why + Template 格式 * * 原则:只做格式化,无字段 = 不输出,不做启发式猜测。 * * v3 变更: * - Channel A: 多语言项目中增加 [language] 前缀 * - Channel B: 增加 Why 行(content.rationale 首句) * - Channel B: coreCode 骨架化(去注释 + 截断 ≤15 行) */ import type { KnowledgeEntryProps } from '../../domain/knowledge/KnowledgeEntry.js'; export declare class KnowledgeCompressor { /** * Channel A — 一行式规则(含可选 language 前缀) * * 多语言项目中增加 [language] 前缀,帮助 Agent 判断规则适用性。 * scope='universal' 或无 language 的规则不加前缀。 * * @param entries KnowledgeEntry 数组 (kind='rule') */ compressToRuleLine(entries: KnowledgeEntryProps[]): string[]; /** * Channel B — When/Do/Don't/Why + Template(骨架化) * @param entries KnowledgeEntry 数组 (kind='pattern') * @returns >} */ compressToWhenDoDont(entries: KnowledgeEntryProps[]): { trigger: string; when: string; do: string; dont: string; why: string; template: string; }[]; /** * 将 When/Do/Don't/Why 结果格式化为 Markdown 字符串 * @param compressed compressToWhenDoDont 输出 * @param [language=''] 代码围栏语言标识 */ formatWhenDoDont(compressed: Array<{ trigger: string; when: string; do: string; dont: string; why: string; template: string; }>, language?: string): string; /** * Channel B — Fact 条目压缩为 "Know" 行 * * fact 类型没有 trigger/whenClause/doClause 结构, * 采用 "Know: {title} — {description}" 的简洁格式, * 让 Agent 获取项目事实性知识(技术选型、架构决策等)。 * * @param facts KnowledgeEntry 数组 (kind='fact') * @returns >} */ compressToFactLines(facts: KnowledgeEntryProps[]): { title: string; summary: string; }[]; /** * 将 Fact 压缩结果格式化为 Markdown 字符串 * @param factLines */ formatFactLines(factLines: Array<{ title: string; summary: string; }>): string; } export default KnowledgeCompressor;