autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
99 lines (98 loc) • 2.95 kB
TypeScript
/**
* RuleLearner — Guard 规则学习系统
* 追踪规则触发与用户反馈,计算 P/R/F1,识别高误报规则并给出优化建议
* 持久化到 AutoSnippet/guard-learner.json(Git 友好)
*/
import type { SignalBus } from '../../infrastructure/signal/SignalBus.js';
interface RuleStat {
triggers: number;
correct: number;
falsePositive: number;
falseNegative: number;
firstTriggered: string | null;
lastTriggered: string | null;
lastFeedback: string | null;
}
export declare class RuleLearner {
#private;
constructor(projectRoot: string, options?: {
knowledgeBaseDir?: string;
internalDir?: string;
signalBus?: SignalBus;
});
/**
* 记录规则触发
* @param context
*/
recordTrigger(ruleId: string, _context?: Record<string, unknown>): void;
/** 记录用户反馈 */
recordFeedback(ruleId: string, feedbackType: 'correct' | 'falsePositive' | 'falseNegative'): void;
/**
* 获取规则精准度指标
* @returns }
*/
getMetrics(ruleId: string): {
precision: number;
recall: number;
f1: number;
triggers: number;
falsePositiveRate: number;
};
/**
* 识别问题规则(高误报)
* @returns >}
*/
getProblematicRules(): {
ruleId: string;
metrics: ReturnType<RuleLearner["getMetrics"]>;
recommendation: string;
}[];
/** 获取所有规则统计 */
getAllStats(): Record<string, RuleStat & {
metrics: ReturnType<RuleLearner["getMetrics"]>;
}>;
/** 重置指定规则或全部统计 */
resetStats(ruleId?: string | null): void;
/**
* 基于历史数据提出规则优化建议
* 策略 1: 高误报规则 → 建议调整
* 策略 2: 高触发且高精度 → 建议创建项目特化版本
* @returns >}
*/
suggestRules(): {
type: string;
ruleId: string;
message: string;
confidence: number;
evidence: Record<string, unknown>;
}[];
/**
* 追踪规则创建后的效果
* 对比首次触发后的表现,判断规则是否有效
* @returns }
*/
trackRuleEffectiveness(ruleId: string): {
status: string;
triggers: number;
precision: number;
recommendation: string;
daysSinceFirstTrigger?: undefined;
} | {
status: string;
triggers: number;
precision: number;
recommendation: string;
daysSinceFirstTrigger: number;
};
/**
* RuleLearner→Recipe 桥接: 检查是否有高误报规则需要触发衰退
* 当 FP > 40% && triggers >= minTriggers 时,发射衰退信号到 SignalBus
* @returns 需要衰退检查的规则列表
*/
checkPrecisionDrop(): {
ruleId: string;
falsePositiveRate: number;
recommendation: string;
}[];
}
export {};