autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
114 lines (113 loc) • 3.51 kB
TypeScript
/**
* 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;