logo

实战三:Mini-Coder (简易版 Cursor)

我们将尝试构建一个能够读取本地文件、修改代码并运行测试的简易版 Coding Agent。这实际上就是 Cursor 背后的基本原理。

[PROMPT_LAB_BANNER]


1. 核心思路

Coding Agent 需要三个核心工具:

  1. List Files: 看看目录里有什么。
  2. Read File: 读取代码内容。
  3. Write File: 修改代码。

2. 定义工具 (Python版)

import os

def list_files(directory="."):
    """列出指定目录下的文件"""
    return str(os.listdir(directory))

def read_file(file_path):
    """读取文件内容"""
    if not os.path.exists(file_path):
        return "Error: File not found"
    with open(file_path, "r") as f:
        return f.read()

def write_file(file_path, content):
    """(覆盖)写入文件内容"""
    with open(file_path, "w") as f:
        f.write(content)
    return f"Successfully wrote to {file_path}"

3. 编写 Agent 提示词 (System Prompt)

这是 Coding Agent 的灵魂。我们需要教会它如何像程序员一样思考。

SYSTEM_PROMPT = """
你是一个全栈开发工程师 Agent。你的任务是帮助用户修改代码。

你的工作流程:
1. 探索:先查看目录结构,定位相关文件。
2. 阅读:读取需要修改的文件内容。
3. 思考:分析代码逻辑,设计修改方案。
4. 执行:调用 write_file 工具应用修改。

约束:
- 修改前必须先读取文件,不要猜测内容。
- 每次只修改一个文件,修改后等待用户反馈。
"""

4. 组装与运行

使用 LangChain 或原生 API 组装(这里以伪代码展示):

agent = Agent(
    model="claude-3-5-sonnet", # 推荐用 Sonnet,写代码能力最强
    tools=[list_files, read_file, write_file],
    system_prompt=SYSTEM_PROMPT
)

# 任务:给 hello.py 增加一个打招呼的函数
agent.run("请检查当前目录下的 hello.py,给它增加一个 greet(name) 函数")

Agent 的执行轨迹 (Trace)

  1. Thought: 我需要先看看 hello.py 是否存在。
  2. Action: list_files(".")
  3. Observation: ['hello.py', 'README.md']
  4. Thought: 文件存在,我需要读取它的内容。
  5. Action: read_file("hello.py")
  6. Observation: print("Hello World")
  7. Thought: 原代码很简单。我要添加 greet 函数。
  8. Action: write_file("hello.py", "def greet(name):\n print(f'Hello {name}')\n\nprint('Hello World')")
  9. Final Answer: 修改已完成。

5. 进阶:引入 MCP (Model Context Protocol)

手写 list_files 等工具虽然简单,但不够通用。在生产环境中,我们推荐使用 MCP Filesystem Server

  1. 安装 Server: npm install -g @modelcontextprotocol/server-filesystem
  2. 连接 Agent: 配置 Agent 通过 Stdio 连接该 Server。
  3. 优势: 安全性更高(可以限制目录访问权限),且支持更多高级操作(如搜索、Diff)。

小结

所谓的 "AI 程序员",本质上就是一个拥有文件读写权限的 LLM。 要让它变得更强,你需要:

  1. 更强的模型 (如 Claude 3.5 Sonnet)。
  2. 更好的 Context 管理 (只读取相关代码片段,而不是整个文件)。
  3. 反馈循环 (引入 Linter 或 Test Runner 作为工具,让 Agent 自己修 Bug)。
AI Agent 开发实战手册
AI Engineer

AI Agent 开发实战手册

从 0 到 1 掌握 AI Agent 开发:涵盖自主计划、工具调用、MCP 协议与多智能体编排实战。

AI Agent 开发实战手册实战三:Mini-Coder

实战三:Mini-Coder (简易版 Cursor)

我们将尝试构建一个能够读取本地文件、修改代码并运行测试的简易版 Coding Agent。这实际上就是 Cursor 背后的基本原理。

Prompt Lab

把这章的知识,直接变成实战能力

进入交互式实验室,用真实任务练 Prompt,10 分钟快速上手。

进入 Prompt Lab →

#1. 核心思路

Coding Agent 需要三个核心工具:

  1. List Files: 看看目录里有什么。
  2. Read File: 读取代码内容。
  3. Write File: 修改代码。

#2. 定义工具 (Python版)

python
import os def list_files(directory="."): """列出指定目录下的文件""" return str(os.listdir(directory)) def read_file(file_path): """读取文件内容""" if not os.path.exists(file_path): return "Error: File not found" with open(file_path, "r") as f: return f.read() def write_file(file_path, content): """(覆盖)写入文件内容""" with open(file_path, "w") as f: f.write(content) return f"Successfully wrote to {file_path}"

#3. 编写 Agent 提示词 (System Prompt)

这是 Coding Agent 的灵魂。我们需要教会它如何像程序员一样思考。

python
SYSTEM_PROMPT = """ 你是一个全栈开发工程师 Agent。你的任务是帮助用户修改代码。 你的工作流程: 1. 探索:先查看目录结构,定位相关文件。 2. 阅读:读取需要修改的文件内容。 3. 思考:分析代码逻辑,设计修改方案。 4. 执行:调用 write_file 工具应用修改。 约束: - 修改前必须先读取文件,不要猜测内容。 - 每次只修改一个文件,修改后等待用户反馈。 """

#4. 组装与运行

使用 LangChain 或原生 API 组装(这里以伪代码展示):

python
agent = Agent( model="claude-3-5-sonnet", # 推荐用 Sonnet,写代码能力最强 tools=[list_files, read_file, write_file], system_prompt=SYSTEM_PROMPT ) # 任务:给 hello.py 增加一个打招呼的函数 agent.run("请检查当前目录下的 hello.py,给它增加一个 greet(name) 函数")

#Agent 的执行轨迹 (Trace)

  1. Thought: 我需要先看看 hello.py 是否存在。
  2. Action: list_files(".")
  3. Observation: ['hello.py', 'README.md']
  4. Thought: 文件存在,我需要读取它的内容。
  5. Action: read_file("hello.py")
  6. Observation: print("Hello World")
  7. Thought: 原代码很简单。我要添加 greet 函数。
  8. Action: write_file("hello.py", "def greet(name):\n print(f'Hello {name}')\n\nprint('Hello World')")
  9. Final Answer: 修改已完成。

#5. 进阶:引入 MCP (Model Context Protocol)

手写 list_files 等工具虽然简单,但不够通用。在生产环境中,我们推荐使用 MCP Filesystem Server

  1. 安装 Server: npm install -g @modelcontextprotocol/server-filesystem
  2. 连接 Agent: 配置 Agent 通过 Stdio 连接该 Server。
  3. 优势: 安全性更高(可以限制目录访问权限),且支持更多高级操作(如搜索、Diff)。

#小结

所谓的 "AI 程序员",本质上就是一个拥有文件读写权限的 LLM。 要让它变得更强,你需要:

  1. 更强的模型 (如 Claude 3.5 Sonnet)。
  2. 更好的 Context 管理 (只读取相关代码片段,而不是整个文件)。
  3. 反馈循环 (引入 Linter 或 Test Runner 作为工具,让 Agent 自己修 Bug)。

常见问题

开发 AI Agent 需要掌握哪些编程语言?
首选 Python 或 TypeScript。Python 是 AI 生态的基石,而 TypeScript 在开发 MCP Server 和网页端交互时效率极高。借助 Cursor 等 AI 原生编辑器,编程门槛已大幅降低。
MCP 协议目前支持哪些模型?
MCP 是开放协议,目前对 Claude 3.5 系列支持最完美。通过 MCP Proxy,GPT-4o 和 Gemini 也可以间接访问 MCP Server 数据源。
AI Agent 会导致程序员失业吗?
不会,但会改变程序员的工作内容。未来的开发者将从“写代码”转向“管理 Agent 团队”,重点在于系统架构设计、复杂逻辑校验和 Agent 的提示词优化。