UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

179 lines (129 loc) 8.08 kB
# AutoSnippet Recipe 格式说明 Recipe 是 AutoSnippet 知识库的核心载体:以「代码片段 + 使用说明 + 语义元数据」的形式存储,供 **检索(Search)****Guard(Lint)****代码生成(Generate)** 等能力使用。 --- ## 存放位置 - 项目内:**AutoSnippet/recipes/**(或由 boxspec `knowledgeBase.dir` 指定的知识库目录下的 `recipes/`)。 - 建议按模块或功能划分子目录,便于管理与检索过滤。 --- ## 知识三分类(kind) V2 知识库中的 Recipe 按 `knowledgeType` 自动归入三类 kind,影响检索和展示: | kind | knowledgeType 范围 | 说明 | |------|-------------------|------| | **rule** | `boundary-constraint` | Guard 规则,用于代码质量检查 | | **pattern** | `code-pattern`, `architecture`, `best-practice`, `code-standard`, `code-style`, `solution` | 可复用代码模式 | | **fact** | `code-relation`, `inheritance`, `call-chain`, `data-flow`, `module-dependency` | 结构性知识 | --- ## 文件格式(必读) 每个 `.md` 文件须包含 **三段**,系统方可直接解析入库(无需 AI 重写): 1. **Frontmatter**`---` 包裹的 YAML,**title****trigger** 必填;其余字段用于 AI 检索、多信号排序与知识关联。 2. **## Snippet / Code Reference**:下一行起用 Markdown 代码块写出可引用/可运行的代码片段。 3. **## AI Context / Usage Guide**:适用场景、何时不用、使用步骤、最佳实践等,供 AI 与人类阅读。 --- ## Frontmatter 字段(与架构对齐) ### 必填字段(7 个) | 字段 | 类型 | 说明 | 格式要求 | |------|------|------|----------| | `title` | string | 标题(英文名,单行) | ≤50 字,建议动词开头 | | `trigger` | string | 触发词 | **MUST**`@` 开头,小写+下划线,无空格 | | `category` | string | **分类(MUST 为 8 个标准值之一)** | `View`, `Service`, `Tool`, `Model`, `Network`, `Storage`, `UI`, `Utility` | | `language` | string | 编程语言 | `swift``objectivec``go``python``java``kotlin``javascript``typescript``dart``rust` | | `summary_cn` | string | 中文概述 | ≤100 字 | | `summary_en` | string | 英文概述 | ≤100 words | | `headers` | array | **完整 import/include 语句** | Swift: `["import Foundation"]`;ObjC: `["#import <UIKit/UIKit.h>"]`;Go: `["import \"fmt\""]`;Python: `["import os"]`;Java: `["import java.util.List;"]`;JS/TS: `["import fs from 'node:fs'"]`;Dart: `["import 'package:flutter/material.dart'"]`;Rust: `["use std::collections::HashMap;"]` | ### 可选字段(强烈推荐) | 字段 | 类型 | 说明 | AI 用途 | |------|------|------|--------| | `keywords` | array | 关键词列表 | 加权字段/关键词搜索 | | `knowledgeType` | string | 知识维度 | `code-pattern`/`architecture`/`best-practice`/`boundary-constraint` 等 | | `whenToUse` | string 或 array | 何时应使用此 Recipe | 场景匹配、意图理解 | | `whenNotToUse` | string 或 array | 何时不应使用 | 负向过滤、避免误推荐 | | `difficulty` | string | 难度:`beginner` / `intermediate` / `advanced` | 难度匹配 | | `authority` | number | 权威分 1~5 | 多信号排序 | | `relatedRecipes` | array | 关联 Recipe 的 trigger | 知识图谱、推荐 | | `version` | string | 版本号 | 版本追踪 | | `updatedAt` | number | 最后更新时间戳 | 新鲜度 | | `author` | string | 作者或团队名 | 归属信息 | | `deprecated` | boolean | 是否已过时 | 过滤过时内容 | ### 扩展字段(可选) | 字段 | 类型 | 说明 | |------|------|------| | `tags` | array | 标签,如 `[production-ready, guard-rule]` | | `deps` | object | 依赖:`targets``imports` 等 | | `alternatives` | string 或 array | 替代方案说明或其它 Recipe 的 trigger | | `quality` | object | 质量信号:如 `codeReviewStatus``hasUnitTest` | | `performance` | object | 性能:如 `timeComplexity``spaceComplexity` | | `security` | object | 安全:如 `riskLevel``bestPractices` | | `deprecationReason` | string | 过时原因(配合 `deprecated: true` 使用) | | `replacedBy` | string | 替代 Recipe 的 trigger | --- ## 正文:AI Context / Usage Guide 结构规范 为便于 AI 与人类一致理解,Usage Guide 应按照标准结构组织信息。 ### 格式要求 (CRITICAL) **⚠️ MUST DO:** - **必须用 `###` 三级标题分段**,每个分段单独成行 - **必须用 `-` 或 `*` 建立列表**,每行一个要点 - **必须用换行分隔 section 和 item**,至少 2 行空行分开大分段 - **禁止将所有内容放在一行**(常见 AI 生成错误) **❌ BAD Example:** ``` 何时用:在需要…时;与…配合时;或直接拿…做…时。关键点:…内部会…;…支持…,…无需…;找不到…。 ``` **✅ GOOD Example:** ```markdown ### 何时用 - App 启动或根窗口显示后需持续监测网络状态时 - 在应用生命周期管理类中统一启停 ### 关键点 - 单例 sharedMonitor,线程安全 - startMonitoring 开始监测,stopMonitoring 停止 ### 依赖 - BDNetworkMonitor(Foundation) - SystemConfiguration ``` --- ### 推荐的分段标题与内容 | 分段标题 | 内容 | 优先级 | |---------|------|--------| | **什么时候用** | 3~5 条适用场景与典型业务 | ⭐⭐⭐ 必填 | | **何时不用** | 2~3 条排除场景(负向说明对检索很重要) | ⭐⭐ 推荐 | | **使用步骤** | 简要步骤(1~3 步)或调用方式 | ⭐⭐ 推荐 | | **关键点** | 易错点、线程/内存约束、版本限制 | ⭐⭐ 推荐 | | **依赖与前置条件** | 模块/框架、权限、最低系统版本 | ⭐⭐ 推荐 | | **错误处理** | 常见失败场景、重试/超时/降级策略 | ⭐⭐ 推荐 | | **性能与资源** | 缓存、线程、内存、频率限制 | ⭐ 可选 | | **安全与合规** | 鉴权、敏感信息、日志脱敏策略 | ⭐ 可选 | | **常见误用** | 反例与规避方式(`❌ 不要…` / `✅ 应该…`) | ⭐ 可选 | | **最佳实践** | 推荐做法、设计模式、配置建议 | ⭐ 可选 | | **替代方案** | 与其它 Recipe 或方案的对比与选用建议 | ⭐ 可选 | | **相关 Recipe** | 关联 trigger 或补充模式 | ⭐⭐ 推荐 | ### 格式与风格建议 - **标题**:使用 `###` 三级标题,每个分段独立清晰 - **列表**:用 `-` 或数字列表;避免过长段落 - **代码**:关键代码用反引号围绕或代码块 - **强调**:关键词用 `**粗体**` - **对比**:使用 `❌ 错误做法` / `✅ 正确做法` 标记 - **链接**:相关 Recipe 用 `` `@trigger` `` 格式 --- ## Recipe 生命周期 - **Draft**:编写、自测,可先不发布。 - **Review**:Guard/人工检查,更新权威分与质量信号。 - **Published**:进入知识库,参与检索与排序。 - **Maintenance**:根据使用反馈、依赖与最佳实践演进更新。 - **Deprecated**:标记过时并填写 `replacedBy`,保留供历史查询。 --- ## MCP 工具(与 Recipe 相关) | 工具 | 说明 | |------|------| | `autosnippet_search` | 统合搜索(mode=auto: FieldWeighted + 语义融合,mode=context: 智能上下文检索) | | `autosnippet_submit_knowledge` | 统一知识提交(单条/批量/文档)。使用 `items` 数组格式传入 1~N 条。文档模式设 `knowledgeType: 'dev-document'` 仅需 title + markdown | | `autosnippet_knowledge(operation=confirm_usage)` | 确认 Recipe 被采纳/应用 | | `autosnippet_knowledge(operation=insights)` | 获取 Recipe 质量洞察(只读) | --- ## 参考文件 - **example.md**:包含扩展 frontmatter 与完整 Usage Guide 结构的标准示例。 - **_template.md**:空白模板,复制后改名、填空即可新建 Recipe。 --- ## 延伸阅读 - `docs/使用文档.md` — 用户使用指南 - `docs/术语与Skills.md` — 术语定义与 Skills 说明 - `docs/MCP配置说明.md` — MCP 服务器配置