手搓一个自主 AI 编程 Agent:180 行核心循环 + 7 个工具 + 100 万上下文实战指南
手搓一个自主 AI 编程 Agent:180 行核心循环 + 7 个工具 + 100 万上下文实战指南
最近 AI 编程助手火得一塌糊涂,从 Cursor 到 Windsurf,各种工具层出不穷。但作为一名技术爱好者,你有没有想过:我自己能不能手搓一个 AI Agent 来帮我写代码?
答案是肯定的!今天我们就来聊聊如何在 CNB 环境下,利用 WorkBuddy 框架,从零开始构建一个属于你自己的自主 AI 编程 Agent。别被“自主”两个字吓到,其实核心逻辑只需要 180 行代码,配合 7 个强大的工具,再加上深不见底的 100 万 token 上下文,你也能打造出一个得力的编程小助手。
为什么我们需要“自主”Agent?
自主 AI Agent 的核心工作循环:接收任务、思考决策、工具调用与反馈,直到自动终止。
传统的 Copilot 类工具更像是“自动补全”,你写一句它补一句。而我们要做的这个 Agent,目标是自主性。
给它一个模糊的任务,比如“帮我写一个爬虫抓取某资讯热门帖”,它能够自主拆解任务:搜索相关库 -> 选择技术栈 -> 编写代码 -> 调试运行 -> 修复 Bug。这种“闭环”能力,才是 Agent 的核心魅力。
准备工作:CNB 环境与 WorkBuddy
在开始写代码之前,我们需要一个强大的运行环境。CNB(Cloud Native Buildpacks)提供了极其灵活的容器化环境,非常适合部署这种复杂的 AI 应用。
环境配置
首先,确保你在 CNB 上已经搭建好基础环境。WorkBuddy 是一个轻量级的多 Agent 框架,它负责协调 AI 模型与各种工具之间的交互。
推荐搭配:
- 模型选择:为了支持复杂的逻辑推理和长上下文,建议使用支持 100K+ 上下文的模型(如 Claude 3.5 Sonnet 或 GPT-4o Turbo 的长上下文版本)。本次实战直接挑战 100 万上下文,这意味着 Agent 可以“记住”整个项目的所有代码,不用担心上下文溢出。
- 依赖安装:通常是 Python 环境,安装 WorkBuddy SDK 以及必要的解析库。
核心架构:180 行的灵魂循环
构建 Agent 必备的 7 个基础工具,覆盖了从文件操作、命令执行到代码检索的开发全流程。
很多复杂的 Agent 系统动不动几千行代码,让人望而却步。但实际上,一个具备基本逻辑判断能力的 Agent,其核心循环(The Loop)非常精简。
我们将这 180 行代码拆解为以下几个关键步骤:
1. 任务接收与解析
Agent 启动后,首先接收用户的自然语言指令。我们需要一个 Prompt 模板,告诉 AI 它的角色、目标以及工具的使用限制。
# 伪代码示例
system_prompt = """
你是一个高级开发工程师。你的目标是完成用户的编程任务。
你可以使用以下工具:write_file, read_file, execute_command, search_web...
请思考每一步操作,直到任务完成。
"""
messages = [{"role": "system", "content": system_prompt}]
2. 思考与决策
这是 Agent 的大脑。AI 会根据当前的状态,决定下一步该做什么。
- 思考:分析当前文件内容,对比用户需求。
- 决策:是读取新文件?是写入代码?还是运行测试?
3. 工具调用与反馈
有了决策后,Agent 会调用具体的工具函数。注意,这里不能直接让 AI 执行代码,而是要通过函数调用的方式。
例如,Agent 决定“读取 main.py”,系统会拦截这个意图,执行 cat main.py,然后把结果喂回给 AI。AI 看到内容后,再决定下一步。
4. 自动终止条件
为了避免 Agent 陷入死循环(比如无限修 Bug),必须设定终止条件:
- 成功完成任务。
- 达到最大迭代次数(比如 10 步)。
- 用户强制中断。
武器库:必须掌握的 7 个工具
俗话说“巧妇难为无米之炊”,Agent 再聪明,没有工具也干不了活。在 WorkBuddy 中,我们为 Agent 配备了 7 个基础工具,覆盖了开发流程的方方面面。
1. 文件操作
这是最基础的能力。代码的增删改查都离不开它。
2. 命令行执行
真正的编程离不开终端。Agent 需要执行 npm install、python main.py、git status 等命令。
安全提示:在生产环境中,务必对命令执行做沙箱隔离,防止 Agent 删库跑路(例如 rm -rf /)。
3. 代码检索
在 100 万上下文的加持下,Agent 理论上可以把整个项目“记住”。但在实际操作中,通过语义检索快速定位相关代码片段效率更高。这个工具帮助 Agent 在海量代码中“大海捞针”。
4. 浏览器/文档搜索
遇到不会用的 API 怎么办?Agent 需要具备自行查阅 StackOverflow 或官方文档的能力。给它一个搜索工具,让它自己找答案,而不是把所有错误都抛给你。
5. LLM 模型推理
有时候 Agent 需要分步思考,比如先写伪代码,再生成具体实现。这个工具允许 Agent 内部进行自我反思和重构。
6. 语法校验
在运行代码前,先进行静态检查,可以节省大量时间。确保代码没有明显的语法错误再启动测试。
7. 自我测试与修复
这是一个高级工具,它能根据报错信息自动分析原因,并尝试修改代码直到测试通过。
实战演练:利用 100 万上下文的优势
很多人觉得 100 万上下文是噱头,但在构建 Agent 时,这简直是神技。
场景一:全项目重构
假设你的项目有 1000 个文件。传统的 RAG 方案可能会遗漏关键逻辑,导致重构改一处崩一处。有了 100 万窗口,你可以简单粗暴地把核心几百个文件全部丢进去,Agent 对项目结构了如指掌,重构时会考虑到所有依赖关系。
场景二:复杂 Bug 追踪
Bug 往往是由于多文件交互产生的。通过长上下文,Agent 可以一次性拉取 A、B、C 三个模块的代码,在同一个对话窗口中完整复现数据流向,从而精准定位问题。
总结与下一步
通过 CNB + WorkBuddy,我们仅用 180 行核心代码就构建了一个具备自主编程能力的 Agent。它的核心在于:循环感知 + 工具调用 + 长上下文记忆。
当然,这只是一个最小可行性产品(MVP)。如果你想进一步优化,可以尝试以下几个方向:
- 增加记忆模块:使用向量数据库存储历史经验,让 Agent 越用越聪明。
- 多 Agent 协作:一个 Agent 负责写代码,另一个负责写测试,第三个负责 Code Review。
- 人机交互优化:增加确认机制,防止 Agent “自作主张”搞破坏。
技术日新月异,自己动手不仅能理解原理,还能根据需求随意魔改。赶紧去试试吧,打造你的专属 AI 程序员!
评论已关闭