import type { FailureCategory } from '../task-manager/quality.js'; /** 每次尝试的结果分类:成功或某一类失败 */ export type ModelResultCategory = FailureCategory | 'success'; /** T7 可配置参数 */ export interface ModelStatsConfig { /** 滑动窗口大小:每个 model 保留最近 N 次尝试(默认 20) */ windowSize: number; /** 高失败率阈值:失败率 > 该值视为高风险(默认 0.5,即 50%) */ highFailureRate: number; /** 判定高风险所需的最小样本数(默认 5) */ minSamples: number; } export declare const DEFAULT_MODEL_STATS_CONFIG: ModelStatsConfig; /** 单个 model 的统计快照 */ export interface ModelStats { model: string; total: number; successes: number; failures: number; empty: number; timeout: number; error: number; qualityLow: number; /** 失败率 = failures / total(无样本时为 0) */ failureRate: number; /** 成功率 = successes / total(无样本时为 1,未知模型默认信任) */ successRate: number; } /** 读取当前配置(返回副本,避免外部篡改) */ export declare function getModelStatsConfig(): ModelStatsConfig; /** 部分更新配置(未提供的字段保持原值) */ export declare function configureModelStats(partial: Partial): void; /** 清空全部历史(测试与运行时重置用) */ export declare function resetModelStats(): void; /** 记录一次尝试结果到滑动窗口,超出窗口大小自动丢弃最旧记录 */ export declare function recordModelResult(model: string, category: ModelResultCategory): void; /** 查询单模型统计(无历史时返回全零快照) */ export declare function getModelStats(model: string): ModelStats; /** 按失败率升序返回全部有历史记录的模型及其统计 */ export declare function getSortedModels(): Array<{ model: string; stats: ModelStats; }>; /** * 按失败率升序排序 councillor 条目(成功率高的优先),并做软剔除: * - 失败率 > highFailureRate 且样本 ≥ minSamples 的模型为高风险; * - 存在替代模型(剔除后仍有条目)时跳过高风险模型; * - 全部为高风险(无替代)时回退到完整列表,不硬剔除; * - 排序使用稳定 sort,同失败率保持原顺序。 * * statsProvider 与 cfg 可注入以便测试,默认使用模块级存储与配置。 */ export declare function orderCouncillorsByFailure(entries: Array<[string, T]>, statsProvider?: (model: string) => ModelStats, cfg?: ModelStatsConfig): Array<[string, T]>; //# sourceMappingURL=model-stats.d.ts.map