UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

65 lines (64 loc) 2.2 kB
/** * AiScanService — `asd ais [Target]` 的核心逻辑 * * 按文件粒度扫描 Target 源码,通过 AgentFactory.scanKnowledge 提取 Recipe, * 创建后自动发布(PENDING → ACTIVE),无需 Dashboard 人工审核。 * * Agent(LLM) 直接分析代码 + 使用 AST 工具,输出 Recipe 结构化 JSON。 * 本服务可脱离 MCP 独立在 CLI 运行。 */ import Logger from '../infrastructure/logging/Logger.js'; export declare class AiScanService { agentFactory: { scanKnowledge: (opts: Record<string, unknown>) => Promise<Record<string, unknown>>; } | null; container: { get: (name: string) => Record<string, unknown>; singletons?: Record<string, unknown>; }; logger: ReturnType<typeof Logger.getInstance>; projectRoot: string; /** * @param opts.container ServiceContainer 实例 * @param opts.projectRoot 项目根目录 */ constructor({ container, projectRoot, }: { container: { get: (name: string) => Record<string, unknown>; singletons?: Record<string, unknown>; }; projectRoot: string; }); /** * 扫描指定 Target(或全部 Target)的源文件并提取 Recipe,创建后直接发布 * @param targetName Target 名称;null 时扫描全部 * @param opts { maxFiles, dryRun, concurrency } * @returns >} */ scan(targetName: string | null, opts?: { maxFiles?: number; dryRun?: boolean; }): Promise<{ published: number; files: number; errors: string[]; skipped: number; }>; /** 收集 Target 源文件 */ _collectFiles(targetName: string | null, maxFiles: number): Promise<{ name: string; path: string; relativePath: string; targetName: string; }[]>; /** 递归扫描目录(fallback) */ _walkDir(dir: string, files: Array<{ name: string; path: string; relativePath: string; targetName: string; }>, maxFiles: number, targetName: string): void; /** 从文件名推断语言 */ _inferLanguage(filename: string): string; } export default AiScanService;