autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
76 lines (75 loc) • 2.64 kB
TypeScript
/**
* 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;