UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

114 lines (113 loc) 3.51 kB
/** * AgentInstructionsGenerator 通用 AI Agent 指令文件生成器 * * Channel F: 为多种 AI 编码工具生成项目指令文件 * - AGENTS.md OpenAI Codex / 通用 Agent * - CLAUDE.md Claude Code * - .github/copilot-instructions.md GitHub Copilot(动态版,替代静态模板) * * 设计原则: * 1. 内容来源统一 _loadEntries() 已加载的知识条目中提取 * 2. 互补不重复 .mdc 处理行为规则,Channel F 处理项目知识 * 3. 轻量索引 只输出摘要和规则,详细内容引导至 MCP 工具 * 4. 幂等生成 每次 deliver 重写全部文件,不做增量 diff */ import type { KnowledgeEntryProps } from '../../domain/knowledge/KnowledgeEntry.js'; export declare class AgentInstructionsGenerator { logger: { info?: (...args: unknown[]) => void; }; projectName: string; projectRoot: string; constructor(projectRoot: string, projectName?: string, logger?: { info?: (...args: unknown[]) => void; }); /** * 生成所有 Agent 指令文件 * * @param params.rules kind='rule' 的条目(已排序) * @param params.patterns kind='pattern' 的条目(已排序) * @param params.skills 可用 Skill 名称列表 * @returns } */ generate({ rules, patterns, skills, }?: { rules?: KnowledgeEntryProps[]; patterns?: KnowledgeEntryProps[]; skills?: string[]; }): { agents: { filePath: string; tokensUsed: number; skipped: boolean; }; claude: { filePath: string; tokensUsed: number; skipped: boolean; }; copilot: { filePath: string; tokensUsed: number; skipped: boolean; }; stats: { filesWritten: number; filesSkipped: number; totalTokens: number; duration: number; }; }; /** * 从知识条目构建共享内容段 */ _buildSections({ rules, patterns, skills, }: { rules: KnowledgeEntryProps[]; patterns: KnowledgeEntryProps[]; skills: string[]; }): { ruleLines: string[]; patternRows: string[]; skillLines: string[]; toolLines: string[]; }; _writeAgentsMd(sections: { ruleLines: string[]; patternRows: string[]; skillLines: string[]; toolLines: string[]; }): { filePath: string; tokensUsed: number; skipped: boolean; }; _writeClaudeMd(sections: { ruleLines: string[]; patternRows: string[]; skillLines: string[]; toolLines: string[]; }): { filePath: string; tokensUsed: number; skipped: boolean; }; /** * 动态生成 copilot-instructions.md * 读取 templates/instructions/conventions.md + HTML markers */ _writeCopilotInstructions(_sections: { ruleLines: string[]; patternRows: string[]; skillLines: string[]; toolLines: string[]; }): { filePath: string; tokensUsed: number; skipped: boolean; }; /** * 读取 templates/instructions/conventions.md 唯一内容源 * .mdc、copilot-instructions.md、Channel F 动态版全部从这里读取 */ _loadConventionsTemplate(): string; } export default AgentInstructionsGenerator;