Appearance
AI Agent 编程工具
学习目标
完成本章学习后,你将能够:
- 理解 AI 核心概念:LLM、Token、Prompt、Context、Tools、MCP、Agent、Skill
- 掌握 Prompt 工程实战技巧,使用万能结构高效编写 Prompt
- 熟练使用 AI Agent 编程工具(OpenCode / Claude Code)
- 在项目实战中用 AI 辅助写代码、需求建模、调试排错
1. AI 核心概念
1.1 LLM(大语言模型)
定义:LLM(Large Language Model)是一种基于 Transformer 架构的深度学习模型,通过海量文本数据训练,能够理解和生成自然语言。
训练范式:
海量文本数据 → 预训练(Pre-training)→ 指令微调(SFT)→ 人类反馈强化学习(RLHF)主流 LLM 产品:
| 模型 | 厂商 | 特点 |
|---|---|---|
| GPT-4 / GPT-4o | OpenAI | 多模态、推理能力强、生态最成熟 |
| Claude 3.5 / 4 | Anthropic | 长上下文、安全性好、编程能力突出 |
| DeepSeek V3 / R1 | 深度求索 | 开源、数学推理强、性价比高 |
| 通义千问 Qwen | 阿里云 | 中英文双语优秀、开源系列丰富 |
| GLM-4 | 智谱AI | 中文理解出色、工具调用能力强 |
1.2 Token
定义:Token(词元)是 LLM 处理文本的最小单位。模型将输入文本拆分为 Token 序列后进行计算。
Token 拆分示例:
"Hello, 你好!"
→ ["Hello", ",", " 你", "好", "!"]
→ 5个 tokensToken 计量规则:
- 英文:平均 1 个词 ≈ 1.3 tokens
- 中文:平均 1 个字 ≈ 1.5-2 tokens
- 空格、标点也计入
重要:LLM 的计费通常按 Token 计算,上下文窗口也以 Token 为单位限制(如 128K、200K tokens)。
1.3 Prompt(提示词)
定义:Prompt 是用户输入给 LLM 的指令文本,它直接决定了模型的输出质量和准确性。
Prompt 三要素:
指令(Instruction) —— 明确告诉模型要做什么
上下文(Context) —— 提供背景信息和参考资料
格式(Format) —— 指定输出的格式要求1.4 Context(上下文窗口)
定义:Context 指模型在一次对话中可以"看到"的全部内容,包括历史对话、系统提示、用户输入。窗口大小决定了一次能处理的信息量。
短期记忆:当前会话的全部输入(受 Token 限制)
长期记忆:通过 RAG(检索增强生成)或 Memory 机制实现上下文窗口对比:
| 模型 | 上下文窗口 |
|---|---|
| GPT-4 Turbo | 128K tokens |
| Claude 3.5 Sonnet | 200K tokens |
| DeepSeek V3 | 128K tokens |
| Gemini 1.5 Pro | 1M tokens |
1.5 Tools(工具)
定义:Tools 是 LLM 可以调用的外部能力,扩展了模型的功能边界。
json
// 工具定义示例(Function Calling)
{
"name": "search_products",
"description": "搜索商品",
"parameters": {
"type": "object",
"properties": {
"keyword": {"type": "string", "description": "搜索关键词"},
"page": {"type": "integer", "description": "页码"}
},
"required": ["keyword"]
}
}常用工具类型:
搜索工具 → 实时信息检索
计算工具 → 数学运算
代码工具 → 执行代码并返回结果
数据库工具 → 查询数据、执行 SQL
文件工具 → 读写操作文件
API 工具 → 调用外部 API1.6 MCP(Model Context Protocol)
定义:MCP(模型上下文协议)是 Anthropic 提出的一种开放协议,用于标准化 AI 应用与外部数据源、工具之间的交互方式。
┌──────────────────┐ MCP 协议 ┌──────────────────┐
│ AI 应用 │ ◄──────────────► │ MCP Server │
│ (Claude Code) │ │ (工具/数据源) │
└──────────────────┘ └──────────────────┘
│
┌────────┴────────┐
│ 本地文件系统 │
│ 数据库 │
│ GitHub API │
│ 自定义企业工具 │
└─────────────────┘MCP 的核心价值:
| 方面 | 说明 |
|---|---|
| 标准化 | 统一了 AI 工具接口规范,无需为每个工具单独适配 |
| 安全性 | 通过权限控制,限制 AI 可调用的资源和操作 |
| 可扩展 | 新增工具只需实现 MCP Server 接口即可 |
| 企业集成 | 可对接内部数据库、API、知识库等 |
1.7 Agent(智能体)
定义:Agent 是一个能够自主感知环境、制定计划、调用工具、完成多步骤任务的 AI 系统。
传统 LLM:
用户输入 → LLM → 文本输出
Agent:
用户目标 → LLM 理解 → 制定计划 → 调用工具 → 观察结果 → 调整计划 → 完成目标Agent 的核心能力:
推理(Reasoning)—— 分解复杂任务,制定执行步骤
工具调用(Tool Use)—— 按需选择合适的工具
记忆(Memory)—— 短期(上下文)和长期(知识库)
自我反思(Self-reflection)—— 从错误中学习,调整策略1.8 Skill(技能)
定义:Skill 是封装好的可复用 AI 能力单元,包含特定的 Prompt 模板、工具配置和执行逻辑。
Skill = System Prompt + Tools + Execution LogicSkill 示例:
| Skill 名称 | 功能 | 应用场景 |
|---|---|---|
| 代码审查 | 审查代码质量、安全性 | PR 代码 Review |
| 测试生成 | 自动生成单元测试 | 提高测试覆盖率 |
| 文档生成 | 生成 API 文档、README | 项目文档维护 |
| 架构分析 | 分析项目架构 | 代码重构、技术债评估 |
2. Prompt 工程实战
2.1 万能 Prompt 结构
定义:Prompt 工程是研究和优化提示词的方法,让 LLM 稳定输出高质量结果。
┌─────────────────────────────────────────────┐
│ # 角色(Role) │
│ 你是一位资深 Python 全栈开发工程师 │
├─────────────────────────────────────────────┤
│ # 任务(Task) │
│ 请为以下需求编写 Django 序列化器代码 │
├─────────────────────────────────────────────┤
│ # 上下文(Context) │
│ 模型定义如下: │
│ class Product(models.Model): ... │
├─────────────────────────────────────────────┤
│ # 要求(Requirements) │
│ 1. 使用 ModelSerializer │
│ 2. 添加自定义校验逻辑 │
│ 3. 包含只读字段 │
├─────────────────────────────────────────────┤
│ # 格式(Format) │
│ 输出完整 Python 代码,含中文注释 │
└─────────────────────────────────────────────┘2.2 实战模板
通用模板:
# 角色
你是一位[领域]专家,精通[技能]。
# 任务
请[具体任务描述]。
# 上下文
[背景信息、已有代码、数据等]
# 要求
1. [具体要求1]
2. [具体要求2]
3. [具体要求3]
# 格式
[输出格式要求:代码/文档/列表/JSON等]代码生成增强模板:
# 角色
你是一位资深全栈工程师,精通 Vue3 + Django + TypeScript。
# 任务
实现用户注册接口,包含手机号验证码校验。
# 上下文
- Django版本:5.0
- DRF版本:3.15
- 使用 SimpleJWT 做 Token 认证
- 验证码存储在 Redis,有效期 5 分钟
# 要求
1. 提供完整的 views.py / serializers.py / urls.py
2. 手机号格式校验 + 验证码正确性验证
3. 密码使用 bcrypt 加密
4. 返回统一响应格式 { code, message, data }
5. 添加 CSRF 豁免
# 格式
按文件分块输出,每块标明文件名,含中文注释2.3 Prompt 优化技巧
| 技巧 | 说明 | 示例 |
|---|---|---|
| 具体化 | 越具体越好,避免模糊描述 | ❌ "写一个接口" → ✅ "POST /api/v1/auth/register/ 用户注册接口" |
| 少样本提示 | 给出 2-3 个示例 | "类似以下格式:输入A→输出A',输入B→输出B'" |
| 思维链 | 让模型逐步推理 | "让我们一步步思考:1)... 2)... 3)..." |
| 角色赋予 | 设定专家角色 | "你是一位有10年经验的Django架构师" |
| 约束条件 | 明确禁止项 | "不要使用 Flask,必须用 Django REST Framework" |
| 正面指令 | 说"要做什么"而非"不要做什么" | ✅ "输出 JSON 格式" ❌ "不要输出其他格式" |
对比示例:
❌ 差 Prompt:
"帮我写个用户登录功能"
✅ 好 Prompt:
# 角色
你是一位 Django 全栈开发专家
# 任务
实现用户密码登录接口
# 上下文
- 使用 DRF + SimpleJWT
- User 模型包含 username、password、is_active
- 登录失败 5 次后锁定账号 30 分钟
# 要求
1. 返回 access_token 和 refresh_token
2. 记录最后登录时间
3. 账号锁定逻辑
4. 统一错误提示,不暴露具体字段
# 格式
输出完整 Python 代码,含日志记录2.4 常见 Prompt 模式
1. 角色扮演模式:
你是一位代码审查专家,请审查以下代码:
[代码]
检查方向:
1. 安全性漏洞
2. 性能问题
3. 代码风格
4. 可维护性2. 分步骤执行模式:
请按以下步骤完成:
步骤1:分析需求
步骤2:设计数据结构
步骤3:编写伪代码
步骤4:实现完整代码
步骤5:编写测试用例
每完成一步请等待我确认后再继续。3. 反思与改进模式:
请生成代码,然后:
1. 自己审查刚才的代码,找出 3 个潜在问题
2. 针对每个问题给出改进方案
3. 输出最终优化后的代码3. AI Agent 编程工具
3.1 OpenCode
定义:OpenCode 是一款开源 AI 编程助手,支持多种 LLM 后端(OpenAI、Claude、DeepSeek 等),可在终端中以 Agent 模式运行,具备读写文件、执行命令、代码理解等能力。
核心特性:
| 特性 | 说明 |
|---|---|
| 多模型支持 | 可切换 GPT-4o、Claude 3.5、DeepSeek 等 |
| 终端 Agent | 直接在终端中与 AI 协作编程 |
| 文件操作 | 创建、读取、编辑、删除文件 |
| 命令执行 | 运行 Shell 命令、安装依赖、启动服务 |
| 代码理解 | 项目级代码索引与搜索 |
3.2 Claude Code
定义:Claude Code 是 Anthropic 提供的 AI 编程 Agent 工具,集成在终端中,能够理解整个代码库,执行多步骤编程任务。
核心能力:
项目理解 → 读取项目结构、分析代码依赖、理解架构
任务执行 → 编写代码、修改文件、运行测试、调试修复
工具调用 → 文件系统、Shell 命令、LSP 分析、Git 操作
自主规划 → 分解复杂任务,按步骤执行,自我修正常用命令:
bash
# 启动 Claude Code
claude
# 指定任务启动
claude "为 order 模块添加单元测试"
# 在指定目录启动
claude --dir /path/to/project
# 允许文件写入(默认只读)
claude --allow-writeClaude Code vs 传统 IDE 补全:
传统 IDE 补全(如 GitHub Copilot):
逐行/逐函数补全 → 被动触发 → 局限于当前文件
AI Agent(如 Claude Code):
理解整个项目 → 主动规划 → 多文件操作 → 执行命令 → 修复错误3.3 工具选择对比
| 工具 | 开源 | 模型支持 | 适用场景 |
|---|---|---|---|
| Claude Code | ❌ | Claude 系列 | 大型项目开发、全栈开发 |
| OpenCode | ✅ | 多模型 | 自定义模型、隐私敏感项目 |
| Cursor | 部分 | GPT-4o / Claude | IDE 集成体验好 |
| GitHub Copilot | ❌ | OpenAI | 代码补全、Chat 对话 |
| Windsurf | ❌ | 多模型 | 全栈 Agent 模式 |
4. 项目实战
4.1 AI 写代码
场景:生成 Vue3 商品列表页
# 指令示例
你是一位 Vue3 + TypeScript 前端开发专家。
请生成一个商品列表页面,功能要求:
1. 从 API 获取商品列表,支持分页
2. 左侧分类筛选树
3. 顶部搜索框(防抖搜索)
4. 排序:综合/价格/销量
5. 加载状态和空状态处理
技术约束:
- Composition API + <script setup>
- Pinia 管理状态
- Element Plus 组件库
- TypeScript 类型定义
- Axios 请求封装AI 的典型输出结构:
1. 类型定义 types/product.ts
2. API 封装 api/product.ts
3. Pinia Store stores/product.ts
4. 页面组件 views/product/ListView.vue
5. 子组件 ProductFilter.vue / ProductCard.vue4.2 需求建模
场景:设计订单系统的数据模型
# 指令示例
你是一位系统架构师。
我正在设计一个 B2C 电商平台的订单系统,请帮我:
1. 设计订单相关的数据库表结构(ER 图文字描述)
2. 列出每个字段的类型、约束、注释
3. 描述订单状态流转
4. 给出 Django Model 代码
业务规则:
- 一个订单包含多个商品
- 支持优惠券和满减活动
- 订单超时 30 分钟自动取消
- 支持部分退款
- 需记录订单操作日志4.3 调试排错
场景:定位并修复 Django 性能问题
# 指令示例
这是我的 Django API 视图,响应时间超过 5 秒:
[粘贴代码]
请帮我:
1. 分析可能的性能瓶颈
2. 给出优化建议
3. 重写优化后的代码
上下文:
- 商品表 10 万条数据
- 使用 MySQL 数据库
- 部署在 4 核 8G 服务器AI 可能指出的问题:
| 问题 | 优化方案 |
|---|---|
| N+1 查询 | 添加 select_related / prefetch_related |
| 缺少索引 | 为常用查询字段添加数据库索引 |
| 全表扫描 | 添加分页限制,使用游标分页 |
| 序列化开销大 | 只返回需要的字段,使用 only() |
| 缓存缺失 | 为热门数据添加 Redis 缓存 |
4.4 AI 辅助工作流
┌──────────────────── 项目开发全流程 ────────────────────┐
│ │
│ ? 需求分析 │
│ AI:分析 PRD,提取功能点,生成用户故事 │
│ │
│ 🎨 原型设计 │
│ AI:根据功能描述生成 UI 组件和页面结构 │
│ │
│ 🏗️ 系统设计 │
│ AI:设计数据模型、接口规范、目录结构 │
│ │
│ 💻 编码实现 │
│ AI:批量生成 CRUD 代码、编写单元测试 │
│ │
│ 🐛 调试优化 │
│ AI:分析错误日志、定位 Bug、性能优化建议 │
│ │
│ 📦 部署运维 │
│ AI:生成 Dockerfile、Nginx 配置、部署脚本 │
│ │
└─────────────────────────────────────────────────────────┘4.5 最佳实践
与 AI Agent 高效协作的技巧:
- 明确目标:每次对话只聚焦一个清晰的任务,不要频繁切换上下文
- 提供上下文:粘贴相关代码、错误信息、项目结构,帮助 AI 理解全貌
- 迭代改进:先让 AI 生成基础版本,再逐步提出优化要求
- 验证输出:AI 生成的代码必须经过审查和测试,不要盲目信任
- 维护记忆:使用项目的 Memory / 文档功能,让 AI 记住项目约定和偏好
安全提醒:
⚠️ 不要向 AI 发送敏感信息(密码、密钥、Token)
⚠️ AI 生成的代码需进行安全审查(SQL注入、XSS、CSRF)
⚠️ 敏感操作(数据库变更、生产部署)必须人工确认小结
知识回顾
- AI 核心概念:LLM → Token → Prompt → Context → Tools → MCP → Agent → Skill,构成了 AI 编程的完整知识体系
- Prompt 工程:万能结构(角色+任务+上下文+要求+格式)+ 优化技巧(具体化、少样本、思维链)
- AI Agent 工具:Claude Code(深度项目理解)、OpenCode(开源多模型)等工具正改变编程方式
- 项目实战:AI 可辅助写代码、需求建模、调试排错,贯穿全栈开发全流程
练习与思考
- Prompt 练习:使用万能 Prompt 结构,写一个"生成 Django 商品模型及其序列化器"的 Prompt,并实际测试输出质量
- AI 辅助开发:尝试用 Claude Code 或 OpenCode 完成一个简单的 CRUD 功能(如:用户地址管理),记录 AI 的表现和你的修正过程
- 调试实战:找一个你之前项目中的 Bug,用 AI 工具帮助分析和修复,对比 AI 方案和你自己方案的区别
- 反思题:AI 编程工具会取代程序员吗?谈谈你认为 AI 时代程序员应该重点培养哪些能力