Skip to content

AI Agent 编程工具


学习目标

完成本章学习后,你将能够:

  1. 理解 AI 核心概念:LLM、Token、Prompt、Context、Tools、MCP、Agent、Skill
  2. 掌握 Prompt 工程实战技巧,使用万能结构高效编写 Prompt
  3. 熟练使用 AI Agent 编程工具(OpenCode / Claude Code)
  4. 在项目实战中用 AI 辅助写代码、需求建模、调试排错

1. AI 核心概念

1.1 LLM(大语言模型)

定义:LLM(Large Language Model)是一种基于 Transformer 架构的深度学习模型,通过海量文本数据训练,能够理解和生成自然语言。

训练范式:
海量文本数据 → 预训练(Pre-training)→ 指令微调(SFT)→ 人类反馈强化学习(RLHF)

主流 LLM 产品

模型厂商特点
GPT-4 / GPT-4oOpenAI多模态、推理能力强、生态最成熟
Claude 3.5 / 4Anthropic长上下文、安全性好、编程能力突出
DeepSeek V3 / R1深度求索开源、数学推理强、性价比高
通义千问 Qwen阿里云中英文双语优秀、开源系列丰富
GLM-4智谱AI中文理解出色、工具调用能力强

1.2 Token

定义:Token(词元)是 LLM 处理文本的最小单位。模型将输入文本拆分为 Token 序列后进行计算。

Token 拆分示例

"Hello, 你好!"
→ ["Hello", ",", " 你", "好", "!"]
→ 5个 tokens

Token 计量规则

  • 英文:平均 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 Turbo128K tokens
Claude 3.5 Sonnet200K tokens
DeepSeek V3128K tokens
Gemini 1.5 Pro1M 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 工具  → 调用外部 API

1.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 Logic

Skill 示例

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-write

Claude Code vs 传统 IDE 补全

传统 IDE 补全(如 GitHub Copilot):
  逐行/逐函数补全 → 被动触发 → 局限于当前文件

AI Agent(如 Claude Code):
  理解整个项目 → 主动规划 → 多文件操作 → 执行命令 → 修复错误

3.3 工具选择对比

工具开源模型支持适用场景
Claude CodeClaude 系列大型项目开发、全栈开发
OpenCode多模型自定义模型、隐私敏感项目
Cursor部分GPT-4o / ClaudeIDE 集成体验好
GitHub CopilotOpenAI代码补全、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.vue

4.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 高效协作的技巧

  1. 明确目标:每次对话只聚焦一个清晰的任务,不要频繁切换上下文
  2. 提供上下文:粘贴相关代码、错误信息、项目结构,帮助 AI 理解全貌
  3. 迭代改进:先让 AI 生成基础版本,再逐步提出优化要求
  4. 验证输出:AI 生成的代码必须经过审查和测试,不要盲目信任
  5. 维护记忆:使用项目的 Memory / 文档功能,让 AI 记住项目约定和偏好

安全提醒

⚠️ 不要向 AI 发送敏感信息(密码、密钥、Token)
⚠️ AI 生成的代码需进行安全审查(SQL注入、XSS、CSRF)
⚠️ 敏感操作(数据库变更、生产部署)必须人工确认

小结

知识回顾

  1. AI 核心概念:LLM → Token → Prompt → Context → Tools → MCP → Agent → Skill,构成了 AI 编程的完整知识体系
  2. Prompt 工程:万能结构(角色+任务+上下文+要求+格式)+ 优化技巧(具体化、少样本、思维链)
  3. AI Agent 工具:Claude Code(深度项目理解)、OpenCode(开源多模型)等工具正改变编程方式
  4. 项目实战:AI 可辅助写代码、需求建模、调试排错,贯穿全栈开发全流程

练习与思考

  1. Prompt 练习:使用万能 Prompt 结构,写一个"生成 Django 商品模型及其序列化器"的 Prompt,并实际测试输出质量
  2. AI 辅助开发:尝试用 Claude Code 或 OpenCode 完成一个简单的 CRUD 功能(如:用户地址管理),记录 AI 的表现和你的修正过程
  3. 调试实战:找一个你之前项目中的 Bug,用 AI 工具帮助分析和修复,对比 AI 方案和你自己方案的区别
  4. 反思题:AI 编程工具会取代程序员吗?谈谈你认为 AI 时代程序员应该重点培养哪些能力

Last updated:

Python 学习资料