从Codex原理到构建专属AI智能体(Agent)全流程详解

从Codex原理到构建专属AI智能体(Agent)全流程详解 前言026年AI智能体已成为产业界最热的关键词。OpenAI Codex从代码补全工具进化为全能执行代理引领了从“问答”到“办事”的范式转移。本文将带你深入Codex的技术内核并手把手从零实现一个具备文件读写、命令执行、自主循环推理的简易智能体让你不仅“看得懂”更能“造得出”目录一、Codex的前世今生从Copilot到全能Agent1.1 初代Codex20211.2 2026年的Codex颠覆性进化二、2026年Codex的六大核心能力升级三、技术原理Codex的“大脑”如何工作3.1 智能体循环Agent Loop3.2 三层架构3.3 Codex vs ChatGPT分工而非替代四、AI智能体产业全景第二部分动手实战——从零构建“Mini Codex”智能体制作流程篇一、项目目标与设计思路二、环境准备三、定义工具函数Tools四、构建Agent循环核心引擎五、启动你的“Mini Codex”一、Codex的前世今生从Copilot到全能Agent1.1 初代Codex2021Codex最初是OpenAI基于GPT-3架构微调的代码生成模型通过混合训练159GB的GitHub公开Python代码与自然语言数据支持Python、JS、Java等语言并作为GitHub Copilot的技术底座。它的核心能力是将自然语言需求转化为可执行代码片段。在训练策略上OpenAI采用了「代码优先、自然语言辅助」的思路先用海量公开代码让模型掌握语法结构与编程范式再通过自然语言指令微调让模型学会理解「用户想要什么」。这种双阶段训练让Codex不仅能补全代码还能根据一句中文或英文描述生成符合意图的完整函数。值得一提的是初代Codex在HumanEval基准测试中达到了约28%的通过率虽然放在今天并不算高但在当时已属突破性进展。它证明了「用自然语言驱动代码生成」这条路是可行的也为后续GPT-4、GPT-5系列在编程能力上的飞跃打下了坚实基础。从产品形态看初代Codex主要作为GitHub Copilot的底层引擎存在用户感受到的是「编辑器里的自动补全」——你敲下注释或函数名它帮你续写。这种体验虽然惊艳但本质上仍是「单点辅助」模型只看到当前文件的一小段上下文无法理解整个项目的结构、依赖关系和运行状态。1.2 2026年的Codex颠覆性进化如今的Codex已升级为一套完整的软件工程代理产品矩阵包括CLI、云端智能体、桌面应用和IDE插件目标从“代码补全”进阶到“任务委托”。它不再是被动工具而是能独立完成从需求理解、代码编写、测试运行到提交PR全流程的“数字员工”。形象比喻用ChatGPT写代码像是查菜谱——它告诉你怎么做但锅还得自己掂。而Codex更像是请了一位私人厨师到家——它能读懂整个项目、直接修改文件、运行命令、跑测试最后把成品交给你验收。二、2026年Codex的六大核心能力升级Computer Use计算机操作Codex可在后台运行视觉识别屏幕上的所有应用自主移动光标点击、输入且轨迹拟人化非机械直线移动。应用内浏览器内置浏览器支持用户在网页上添加评论给智能体下达精确指令特别适合前端与游戏开发。长期记忆功能保留历史交互中的用户偏好、修正记录和细节数据越用越懂你。任务调度与自动化支持设置工作计划并自动启动可处理持续数天甚至数周的长期任务如自动推进PR、跟进JIRA、监控Slack/Gmail。90插件生态整合JIRA、CircleCI、CodeRabbit、GitLab Issues、Microsoft Suite等开发工具链。图像生成集成gpt-image-1.5可生成产品概念图、设计稿和游戏素材。三、技术原理Codex的“大脑”如何工作3.1 智能体循环Agent LoopCodex的核心逻辑是Agent Loop协调用户、AI模型及软件工具的交互流程如下输入接收→提示词构建→模型推理Token生成→结果处理生成回复或调用工具→循环迭代将工具执行结果附加回上下文再次查询模型直至任务完成。3.2 三层架构Codex负责人揭示真正的智能体由三层结构组成推理模型层极其智能的底层模型如GPT-5-CodexAPI层承接任务链路框架层让模型稳定运行的支撑框架含上下文压缩机制在Token超阈值时自动提炼关键信息3.3 Codex vs ChatGPT分工而非替代维度ChatGPTCodex定位通用对话助手仓库级编程代理擅长需求讨论、方案设计、代码解释读项目、改代码、跑测试、交PR能力边界文本回答、代码片段操作文件系统、执行终端命令工作模式查菜谱厨师到府做饭正确用法用ChatGPT做分析决策想清楚做什么用Codex做仓库内执行在代码里落地。四、AI智能体产业全景规模爆发全球日活智能体预计2026年达7940万个2030年将增长至22.16亿个。企业采纳2026年Q1大中型企业AI采纳率达90.9%17%已部署AI智能体。主流框架LangChain生态最丰富、AutoGen多Agent协作、CrewAI企业级任务编排、Google ADK代码优先。第二部分动手实战——从零构建“Mini Codex”智能体制作流程篇理论终究要落地。接下来我们不依赖任何重型框架仅用Python OpenAI兼容API手写一个具备文件读取、代码写入、Shell命令执行能力的简易智能体。我们将实现最核心的Agent Loop规划→工具调用→观察→迭代。一、项目目标与设计思路目标构建一个名为MiniCodex的CLI智能体用户输入自然语言指令如“读取test.py并运行”智能体自主决策调用哪些工具循环执行直到完成。核心技术OpenAI Function Calling或解析结构化JSON 自定义工具函数。兼容性代码适配OpenAI、DeepSeek、智谱GLM等所有兼容OpenAI格式的API。二、环境准备pip install openai准备好你的API Key以环境变量或直接赋值方式。三、定义工具函数Tools我们需要给智能体“双手”读文件、写文件、执行Shell命令。import os import json import subprocess from openai import OpenAI 1. 工具函数定义 def read_file(path: str) - str: 读取指定路径的文件内容 try: with open(path, r, encodingutf-8) as f: return f.read() except Exception as e: return f读取文件失败: {str(e)} def write_file(path: str, content: str) - str: 将内容写入指定文件覆盖写入 try: # 确保目录存在 os.makedirs(os.path.dirname(path), exist_okTrue) with open(path, w, encodingutf-8) as f: f.write(content) return f文件 {path} 写入成功 except Exception as e: return f写入文件失败: {str(e)} def run_command(command: str) - str: 执行Shell命令并返回输出结果 try: result subprocess.run(command, shellTrue, capture_outputTrue, textTrue, timeout30) output result.stdout if result.stdout else result.stderr return f命令执行完成 (退出码 {result.returncode}):\n{output[:2000]} # 截断输出防止爆token except subprocess.TimeoutExpired: return 命令执行超时30秒 except Exception as e: return f命令执行失败: {str(e)} 2. 工具描述供LLM理解 TOOLS_DESCRIPTION 你是一个编码智能体拥有以下工具 read_file(path) - 读取文件内容 write_file(path, content) - 写入文件 run_command(command) - 执行Shell命令 请严格按照JSON格式返回调用结果格式为 {action: 工具名, params: {参数名: 参数值}} 如果任务完成返回 {action: finish, response: 最终回答内容} 四、构建Agent循环核心引擎这是智能体的“大脑”循环将用户指令和工具描述传给LLM解析其决策执行工具将结果反馈给LLM反复迭代直至完成。# 3. Agent核心类 def _execute_tool(self, action: str, params: dict) -gt; str: 路由到具体的工具函数 if action read_file: return read_file(params.get(path, )) elif action write_file: return write_file(params.get(path, ), params.get(content, )) elif action run_command: return run_command(params.get(command, )) else: return f未知工具: {action} def chat(self, user_input: str) -gt; str: 处理用户输入进入Agent循环 self.messages.append({role: user, content: user_input}) for i in range(self.max_iterations): print(f\n Agent 迭代 {i1}/{self.max_iterations}) # 调用LLM response self.client.chat.completions.create( modelself.model, messagesself.messages, temperature0.3 ) reply response.choices[0].message.content self.messages.append({role: assistant, content: reply}) print(f 模型思考: {reply[:150]}...) # 尝试解析JSON动作 try: # 提取JSON模型可能附带解释文字 json_start reply.find({) json_end reply.rfind(}) 1 if json_start -1: # 如果没有JSON视为最终回答 return reply json_str reply[json_start:json_end] parsed json.loads(json_str) action parsed.get(action) if action finish: return parsed.get(response, 任务已完成) params parsed.get(params, {}) print(f 执行工具: {action} 参数: {params}) # 执行工具 result self._execute_tool(action, params) print(f 工具返回: {result[:100]}...) # 将工具执行结果作为新消息加入上下文 self.messages.append({ role: user, content: f工具 {action} 执行结果:\n{result} }) except json.JSONDecodeError: # 如果解析失败但模型没有返回finish我们强行走下一步 # 简单策略把回复当作最终回答实际可优化重试 if finish not in reply.lower(): return f模型格式异常已停止循环。回复内容{reply} return reply return 任务执行超时超过最大迭代次数/pre五、启动你的“Mini Codex”# 4. 主程序入口 agent MiniCodex(api_keyAPI_KEY, base_urlBASE_URL, modelMODEL) print( MiniCodex 已启动输入你的指令输入 exit 退出) print(示例指令读取当前目录下的test.py内容 或 写一个hello.py并执行它) while True: user_input input(\n 你: ) if user_input.lower() in [exit, quit]: break try: final_answer agent.chat(user_input) print(f\n✅ 最终结果: {final_answer}) except Exception as e: print(f❌ 发生错误: {e})/pre