🎯 核心概念理解
1️⃣ Skill(技能)
定义 :Skill 是 AI 系统能够执行的特定任务或功能模块 ,它告诉 AI "怎么做"。
核心特征:
- ✅ 可执行性:包含明确的执行步骤和操作流程
- ✅ 模块化:独立的功能单元,可以单独使用
- ✅ 可组合性:可以与其他 Skill 组合使用
- ✅ 聚焦性:专注于解决特定问题
- ✅ 简洁性:不应过于庞大,保持清晰
内容结构:
markdown
# Skill Name
## 功能描述
简要说明这个 Skill 做什么
## 触发条件
什么情况下使用这个 Skill
## 前置依赖
- 依赖的 Rules
- 依赖的 Knowledge Base
- 依赖的其他 Skills
## 执行步骤
1. 步骤 1(简要)
2. 步骤 2(简要)
3. 步骤 3(简要)
## 输出结果
期望的输出是什么
## 示例
简单的使用示例(可选)
## 相关文档
指向详细文档的链接
大小建议:
- 单个 Skill:200-500 行
- Skill 集合文件:1,000-2,000 行
- 不超过 50 KB
2️⃣ Rule(规则)
定义 :Rule 是 AI 系统必须遵守的约束和规范 ,它告诉 AI "什么能做、什么不能做"。
核心特征:
- ✅ 强制性:必须遵守,不可违反
- ✅ 明确性:清晰的边界和约束
- ✅ 可验证性:可以检查是否遵守
- ✅ 稳定性:不经常变化
- ✅ 普适性:适用于多个场景
内容结构:
markdown
# Rule Category
## 必须遵守的规范
- ✅ 必须做 XXX
- ✅ 必须使用 XXX
## 禁止的操作
- ❌ 禁止做 XXX
- ❌ 不允许使用 XXX
## 命名规范
- 文件命名:xxx_xxx.go
- 函数命名:XxxYyy
## 架构约束
- 分层结构
- 依赖关系
## 验证方法
如何检查是否遵守规则
大小建议:
- 单个 Rule 文件:500-1,500 行
- 不超过 30 KB
3️⃣ Knowledge Base(知识库)
定义 :Knowledge Base 是 AI 系统的背景知识和参考资料 ,它告诉 AI "是什么"。
核心特征:
- ✅ 详细性:提供全面的信息
- ✅ 参考性:供查阅和检索
- ✅ 可检索性:支持语义搜索
- ✅ 可扩展性:可以持续补充
- ✅ 无大小限制:可以很大,支持分块
内容结构:
markdown
# Knowledge Base Topic
## 概述
详细的背景介绍
## 架构设计
详细的架构说明
## 详细说明
- 功能 A 的详细说明
- 功能 B 的详细说明
## 代码示例
大量的代码示例和注释
## 配置说明
详细的配置参数说明
## 最佳实践
经验总结和建议
## 常见问题
FAQ
## 参考资料
外部链接和文档
大小建议:
- 无限制,可以很大
- 支持分块检索
- 可以拆分为多个文件
📊 三者对比表
| 维度 | Skill(技能) | Rule(规则) | Knowledge Base(知识库) |
|---|---|---|---|
| 核心问题 | 怎么做? | 能不能做? | 是什么? |
| 作用 | 执行指南 | 约束条件 | 背景知识 |
| 特点 | 可执行、模块化 | 强制性、明确性 | 详细性、参考性 |
| 内容 | 执行步骤 | 规范约束 | 详细说明、示例 |
| 大小 | 1,000-2,000 行 | 500-1,500 行 | 无限制 |
| 变化频率 | 中等 | 低 | 高 |
| 使用方式 | 主动执行 | 被动遵守 | 按需检索 |
| 示例 | "如何添加数据库" | "禁止修改 internal/" | "数据库配置详解" |
🔗 三者关系
┌─────────────────────────────────────────────┐
│ AI Agent │
│ │
│ ┌──────────┐ ┌──────────┐ ┌────────┐│
│ │ Skill │───▶│ Rule │◀───│ KB ││
│ │ (执行) │ │ (约束) │ │(知识) ││
│ └──────────┘ └──────────┘ └────────┘│
│ │ │ │ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ 执行步骤 检查规则 查询知识 │
└─────────────────────────────────────────────┘
关系说明:
- Skill 依赖 Rule:执行时必须遵守规则
- Skill 依赖 Knowledge Base:需要查询背景知识
- Rule 引用 Knowledge Base:规则的详细说明在知识库中
- 三者协同工作:Skill 执行任务,Rule 提供约束,KB 提供知识
💡 实际案例
案例:添加数据库功能
Skill(怎么做)
markdown
# Skill 1: 如何使用数据库
## 执行步骤
1. 在 repo/ 目录创建 Repository
2. 在 Logic 中调用 Repository
3. 使用 SvcCtx.GetDb() 获取连接
## 依赖
- Rule: gec_rules.md(数据库规范)
- KB: gec_knowledge_base.md(数据库详解)
Rule(能不能做)
markdown
# 数据库规则
## 必须遵守
- ✅ 必须在 repo/ 目录创建 Repository
- ✅ 必须通过 SvcCtx.GetDb() 获取连接
## 禁止操作
- ❌ 禁止在 Logic 中直接写 SQL
- ❌ 禁止使用全局数据库变量
Knowledge Base(是什么)
markdown
# 数据库详解
## 架构设计
GEC 使用 GORM 作为 ORM 框架...
## 配置说明
```yaml
database:
dsn: "user:pass@tcp(host:port)/db"
max_idle_conns: 10
代码示例
go
// 完整的 Repository 实现示例
type UserRepo struct {
db *gorm.DB
}
func (r *UserRepo) GetUser(id int64) (*User, error) {
// 详细的实现代码...
}
最佳实践
当前 SKILL.md 包含:
-
✅ Skill 内容(执行步骤)
-
❌ Rule 内容(规范约束)← 应该在 gec_rules.md
-
❌ Knowledge 内容(详细说明)← 应该在 gec_knowledge_base.md
❌ 问题 2:文件过大
-
6,527 行 / 188 KB
-
已被标记为 isBigFile: true
-
AI 加载困难,理解效率低
❌ 问题 3:职责不清
-
Skill 应该简洁,只包含执行步骤
-
详细说明应该在 Knowledge Base
-
规范约束应该在 Rule
✅ 优化建议
方案:职责分离
ai-coding/
├── SKILL.md # 精简版(1,500 行)
│ └── 14 个 Skill 的执行步骤(简要)
│
└── references/
├── gec_rules.md # 规则(已存在)
├── gec_knowledge_base.md # 知识库(已存在)
│
└── skills/ # 详细 Skill 文档(新增)
├── skill_01_database.md
├── skill_02_redis.md
└── ...
### **SKILL.md 应该保留的内容**
```markdown
# GEC Framework Development Skill
## 核心约束(简要,详见 gec_rules.md)
- 分层架构
- ServiceContext 使用
- 文件修改限制
## 核心技能清单
### Skill 1: 如何使用数据库
**功能**:数据库操作
**执行步骤**:
1. 在 repo/ 创建 Repository
2. 在 Logic 中调用
3. 使用 SvcCtx.GetDb()
**详细文档**:skill_01_database.md
**依赖规则**:gec_rules.md#数据库规范
**相关知识**:gec_knowledge_base.md#数据库
🚀 总结
Skill 的正确定位
- 📌 简洁:只包含执行步骤,不包含详细说明
- 📌 模块化:每个 Skill 独立,可组合
- 📌 可执行:明确的操作流程
- 📌 有边界:1,000-2,000 行,不超过 50 KB
与 Rule 和 KB 的区别
- Skill:告诉 AI "怎么做"(执行指南)
- Rule:告诉 AI "能不能做"(约束条件)
- Knowledge Base:告诉 AI "是什么"(背景知识)
优化方向
- ✅ 精简 SKILL.md,只保留核心执行步骤
- ✅ 将详细说明移到 Knowledge Base
- ✅ 将规范约束移到 Rule
- ✅ 建立清晰的文档引用关系