autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
48 lines (47 loc) • 1.99 kB
TypeScript
/**
* MockProvider — Smart Mock AI 提供商
*
* 不发网络请求,但根据 prompt 内容智能匹配场景,返回符合格式的仿真响应。
* 用于让用户在没有 API Key 的情况下体验 AutoSnippet 完整工作流。
*
* 智能匹配场景:
* 1. probe / ping → "pong"
* 2. 重复度检测 (DUPLICATE/SIMILAR/UNIQUE) → "UNIQUE"
* 3. 对话压缩总结 → 从消息中提取关键词
* 4. 代码上下文化 (<chunk>) → 从代码提取函数/类名
* 5. 候选润色 (JSON 9字段) → 原样回传输入字段
* 6. 维度摘要 (dimensionDigest) → 模板化 JSON
* 7. 风格检查建议 → 空数组
* 8. Agent 路由分类 → functionCall classify_intent
* 9. 通用 fallback → 语义化占位文本
*
* 模拟延迟: 50-200ms 随机延迟,营造 "AI 思考" 体验
*/
import { AiProvider, type AiProviderConfig, type ChatContext, type ChatWithToolsOptions, type ChatWithToolsResult, type StructuredOutputOptions } from '../AiProvider.js';
interface MockResponses {
chat?: string;
summarize?: Record<string, unknown>;
[key: string]: unknown;
}
interface CallLogEntry {
method: string;
[key: string]: unknown;
}
export declare class MockProvider extends AiProvider {
callLog: CallLogEntry[];
responses: MockResponses;
constructor(config?: AiProviderConfig & {
responses?: MockResponses;
});
chat(prompt: string, context?: ChatContext): Promise<string>;
chatWithTools(prompt: string, opts?: ChatWithToolsOptions): Promise<ChatWithToolsResult>;
chatWithStructuredOutput(prompt: string, opts?: StructuredOutputOptions): Promise<unknown>;
summarize(code: string): Promise<Record<string, unknown>>;
embed(text: string | string[]): Promise<number[] | number[][]>;
probe(): Promise<boolean>;
/** 获取调用日志(测试断言用) */
getCalls(): CallLogEntry[];
/** 重置调用记录 */
reset(): void;
}
export default MockProvider;