11.3 高级技巧与集成
🎯 本节目标
掌握进阶技巧:MCP 集成、项目规则配置、模型选择策略,以及如何处理现有代码库。
📐 设置项目规则
为什么需要项目规则?
项目规则让你定义在整个项目中 AI 应该遵循的约定和规范。
项目规则的价值:
├── 保持代码风格一致
├── 强制执行团队约定
├── 减少重复说明
└── 自动应用到所有对话Cursor 规则配置
在项目根目录创建 .cursor/rules/ 文件夹:
bash
mkdir -p .cursor/rules创建规则文件(Markdown 格式):
markdown
# .cursor/rules/code-style.md
## 代码风格规范
- 使用 TypeScript 而不是 JavaScript
- 所有函数必须有类型注解
- 使用 camelCase 命名变量
- 组件文件使用 PascalCase
- 每个文件不超过 200 行
## 技术栈约定
- 前端:React + TypeScript + Tailwind CSS
- 后端:FastAPI + Python 3.12
- 数据库:PostgreSQL
- 不使用 jQuery 或其他过时库
## 禁止事项
- 不要硬编码 API 密钥
- 不要使用 any 类型
- 不要忽略 TypeScript 错误aider 规则配置
创建规则文件和配置:
bash
# 创建规则文件
touch rules.md
# 在 .aider.conf.yml 中添加:
read: rules.md全局规则(应用于所有项目):
bash
# 创建全局规则文件
touch ~/.global_conventions.md
# 在 .aider.conf.yml 中:
read: [~/.global_conventions.md, rules.md]让 AI 帮你创建规则
💡 技巧:让 AI 自动生成规则
1. 分析你的 PRD
2. 让 AI 提取技术约定
3. 自动生成规则文件
参考:https://ghuntley.com/specs/🔌 MCP(Model Context Protocol)
什么是 MCP?
MCP 是 Anthropic 开发的标准协议,用于让 LLM 与外部工具和数据交互。
MCP 的工作原理:
┌─────────┐
│ LLM │
└────┬────┘
│
▼
┌─────────┐
│ MCP │ ← 标准协议
└────┬────┘
│
┌────────┼────────┐
│ │ │
▼ ▼ ▼
┌──────┐ ┌──────┐ ┌──────┐
│数据库│ │文件系统│ │API│
└──────┘ └──────┘ └──────┘MCP vs REST API
| 对比 | REST API | MCP |
|---|---|---|
| 定义 | 通用 Web API 标准 | LLM 专用协议 |
| 集成 | 需要手动解析 | LLM 原生支持 |
| 功能 | 请求/响应 | 工具调用 + 资源访问 |
| 易用性 | 需要额外提示词 | 自动理解意图 |
相关协议
| 协议 | 开发者 | 用途 |
|---|---|---|
| MCP | Anthropic | LLM ↔ 工具通信 |
| SLOP | 社区 | 简化的开放协议 |
| A2A | Agent ↔ Agent 通信 |
查找 MCP 服务器
Anthropic 官方维护的 MCP 服务器列表: github.com/modelcontextprotocol/servers
常用 MCP 服务器:
| 服务 | 功能 |
|---|---|
| filesystem | 文件系统访问 |
| postgres | PostgreSQL 数据库 |
| github | GitHub API |
| slack | Slack 消息 |
| notion | Notion 数据库 |
| browsertools | 浏览器调试 |
⚠️ 注意:目前只有 Claude 模型完整支持 MCP。使用 MCP 工具时确保选择 Claude。
🎛️ 模型选择策略
按用途选择模型
| 用途 | 推荐模型 |
|---|---|
| 头脑风暴 | GPT-5, 4o, o3, Grok |
| 编码 | Claude Sonnet 4, Gemini 2.5 Pro, Grok, GPT-5, o3, o4-mini |
查看最新排行榜
LLM 模型更新非常快,请参考这些排行榜:
- OpenRouter 模型列表 - 筛选
programming类别 - Models.dev - 开源 AI 模型数据库
- Agent Leaderboard - Agent 能力排行
跨模型验证
最佳实践:
├── 不要只依赖一个模型
├── 用不同模型验证关键代码
├── 比较多个模型的输出
└── LLM 是 "Yes Machine",保持批判性思考📦 处理现有代码库
打包代码库上下文
使用工具将代码库打包成 LLM 可以理解的格式:
repomix
bash
# 安装
npm install -g repomix
# 使用
repomix --output context.txt
# 这会生成一个包含整个代码库的文件网站:repomix.com
files-to-prompt
bash
# 安装
pip install files-to-prompt
# 使用
files-to-prompt src/ > context.txt仓库:github.com/simonw/files-to-prompt
处理大型代码库的技巧
markdown
1. 按功能模块拆分
不要一次加载整个代码库
只加载与当前任务相关的部分
2. 任务级别的 prompt
不要说:"改进整个项目"
而是说:"实现用户认证功能"
3. 提供 mini-PRD
为特定功能创建小型需求文档
就像指导一个初级开发者处理一个 GitHub Issue
4. 使用 Cursor 的索引功能
Cursor 可以自动索引你的项目
这比手动打包更智能Karpathy 的方法
"我通常会用 AI 来实现一个特定功能,而不是让它理解整个项目。我给它一个功能描述,它就生成代码。如果代码不能工作,我就把错误信息给它修复。" — Andrej Karpathy
🏗️ 良好的代码结构
问题:LLM 不擅长代码结构
现状(2025年4月):
├── LLM 擅长生成能工作的代码
├── 但不擅长生成结构良好的代码
├── 缺乏适当的分层和关注点分离
└── 这影响可读性、可维护性和缺陷率解决方案:指导式 prompt 顺序
markdown
数据库应用的 prompt 顺序:
1. 首先定义数据类型/记录结构
"创建 User 和 Post 的类型定义..."
2. 然后构建数据访问层
"创建 UserRepository 类来封装数据库访问..."
3. 最后编写业务逻辑
"使用 UserRepository 实现用户注册逻辑..."在项目规则中强制分层
markdown
# .cursor/rules/architecture.md
## 架构原则
- 不要违反分层架构
- 如果需要新的底层方法,添加到封装层
- 业务逻辑不应该直接访问数据库
- 分离 engine 代码和 policy 代码骨架优先开发
技巧:先创建代码骨架
1. 手动写出类和函数的骨架
2. 定义接口和类型
3. 让 LLM 填充实现
4. 确保核心架构按你的意图设计
这样可以:
├── 确保架构符合预期
├── 让 LLM 在明确的边界内工作
├── 保持代码的可维护性
└── 减少后期重构工作🔄 从头开始 vs 使用样板
从头开始(推荐)
优点:
├── LLM 在干净的环境中表现更好
├── 没有遗留代码的约束
└── 代码风格完全一致
适用场景:
├── 新项目
├── POC 和原型
└── 学习和实验使用样板/脚手架
步骤:
1. 使用脚手架创建项目
2. 在规则中说明脚手架的约定
3. 使用 Cursor 索引或 repomix 提供上下文
适用场景:
├── 团队有标准模板
├── 需要特定的项目结构
└── 企业级项目🔧 在 Claude Code 中使用其他 LLM
使用 claude-code-router
想在 Claude Code CLI 中使用其他模型(如 Kimi K2)?
bash
# 1. 安装 Claude Code
npm install -g @anthropic-ai/claude-code
# 2. 安装 router
npm install -g @musistudio/claude-code-router
# 3. 配置 OpenRouter
# 编辑 ~/.claude-code-router/config.json配置示例:
json
{
"Providers": [
{
"name": "kimi-k2",
"api_base_url": "https://openrouter.ai/api/v1/chat/completions",
"api_key": "YOUR_OPENROUTER_API_KEY",
"models": ["moonshotai/kimi-k2"],
"transformer": {
"use": ["openrouter"]
}
}
],
"Router": {
"default": "kimi-k2,moonshotai/kimi-k2"
}
}运行:
bash
# 使用 router 启动
ccr code
# 你会看到:API Base URL: http://127.0.0.1:3456
# 表示正在使用本地代理🔗 下一步
继续学习 11.4 测试与安全最佳实践 —— 确保你的 AI 生成代码安全可靠!