
1. 从零聊起AI Agent 到底在解决什么问题我第一次认真把 AI Agent 当成日常工具来用大概是在去年年中。那时候手头同时压着三个项目一个 Django 后台要重构接口、一个数据清洗脚本要迁移到新服务器、还有一堆零散的 Git 分支要合并整理。每天光是切换上下文、复制粘贴报错信息、翻文档找命令就能耗掉大半天。后来我试着把其中一部分重复劳动交给 AI Agent 去跑才发现这东西真正的价值不在于替你写代码而在于替你扛住那些高频、琐碎、需要来回确认的中间环节。很多人一听到 AI Agent 就想到 ChatGPT 对话框觉得无非是问一句答一句。这个理解其实偏了。ChatGPT 更像一个知识渊博但只能坐在你对面聊天的顾问而 AI Agent 是能自己动手、能调用工具、能读你本地文件、能执行命令、能根据结果决定下一步怎么走的那种执行型助手。前者给你答案后者帮你把答案落地。这个区别决定了你在用它的时候思路要完全不一样——你不能只想着问什么还得想着让它能碰到什么、能改什么、改完怎么验证。这篇文章我想聊的就是这些实操层面的小经验。不涉及什么高深理论全是我自己在用 ChatGPT、Codex、DeepSeek 这几类工具配合 Git 做日常开发时踩出来的东西。适合谁看如果你已经装过 Git、写过几行代码、对命令行不陌生但还没把 AI Agent 真正嵌进工作流里那这篇应该能帮你少走点弯路。如果你是完全的新手也没关系我会把该补的基础知识顺手带上比如 Git 安装、分支合并这些保证你能跟着操作。核心关键词我先摆在这AI Agent、ChatGPT、Codex、DeepSeek、Git。这五个东西基本构成了我目前整套工作流的骨架——Git 管版本ChatGPT 和 DeepSeek 管理解和生成Codex 管代码层面的具体执行AI Agent 是把它们串起来的那根线。下面我按整体思路—核心细节—实操过程—问题排查这个顺序往下讲每一块都会给到能直接抄的配置和命令。2. 整体设计与思路拆解2.1 为什么我不追求全自动而是半自动加人工卡点刚上手的时候我也幻想过搞一个全自动流水线Agent 自己读需求、自己写代码、自己跑测试、自己提交。试了两周就放弃了。原因很现实——AI Agent 的容错成本比人高。它一旦理解偏了会沿着错误方向一路狂奔等你发现的时候可能已经改了十几个文件。而人在中间设一个卡点成本极低收益极高。所以我的整体设计原则是让 Agent 干信息密集但决策简单的活让人干决策复杂但信息量小的活。具体拆开就是三层第一层理解与规划用 ChatGPT 或 DeepSeek 把模糊需求拆成明确任务清单。这一步纯对话不碰代码。第二层执行与生成用 Codex 这类能读文件、能跑命令的 Agent 去改代码、跑脚本。这一步它动手但每改完一个模块就停下来等我确认。第三层验证与归档用 Git 做 diff 审查、分支隔离、提交记录。这一步是安全网保证任何一步翻车都能回滚。这个结构的好处是每一层都有独立的失败边界。第一层错了最多是任务拆得不好重来就行第二层错了Git 能兜底第三层本身就是兜底。三层之间用明确的输入输出衔接不会出现一个环节崩了全盘皆输的情况。2.2 工具选型ChatGPT、Codex、DeepSeek 各自站什么位置很多人纠结到底用哪个我的经验是别选分工。这三个东西的定位其实很清楚工具我主要用它做什么优势注意点ChatGPT需求拆解、方案讨论、报错解释上下文理解强表达清晰对话串长了容易丢上下文Codex读写本地代码、执行命令、批量改文件能直接操作工作区需要明确边界别让它乱跑DeepSeek代码生成、API 调用、本地部署场景代码质量稳成本可控复杂推理任务要拆细我举个具体场景你就明白了。有次要给一个 Django 项目加一套新的权限校验我的做法是先在 ChatGPT 里把需求讲清楚让它帮我列出需要改哪些文件、每个文件改什么然后切到 Codex让它按这个清单逐个文件改每改完一个我 review 一次中间遇到一个 ORM 查询性能问题我把报错和上下文丢给 DeepSeek它给的优化方案比我自己想的还干净。三个工具各司其职没有一个是多余的。这里有个关键认知AI Agent 的能力边界取决于你给它的上下文边界。你给它一个文件它只能在这个文件里折腾你给它整个仓库加清晰的 README它就能理解项目结构。所以我在每个项目根目录都会放一个AGENT.md或者CONTEXT.md写清楚项目是干什么的、目录结构、常用命令、代码规范。这个文件看起来是给人看的实际上主要是给 Agent 看的效果立竿见影。2.3 Git 在整个流程里扮演什么角色Git 在这里不是顺便用一下的工具而是整个 AI Agent 工作流的安全底座。我给自己定了几条铁律任何让 Agent 动手之前先git status确认工作区干净或者先git stash存起来。每个独立任务开一个新分支命名带上任务标识比如feat/agent-permission。Agent 每完成一个可验证的小块就提交一次commit message 写清楚这是 Agent 生成的待人工复核。合并前一定用git diff逐行看不看 diff 直接 merge 是我见过最多的翻车方式。这几条听起来啰嗦但真出事的时候能救命。我有一次让 Agent 批量重命名函数它顺手把一个公共工具函数也改了导致另外两个模块编译失败。因为当时是独立分支我直接git checkout main就回来了损失为零。如果没有分支隔离那天晚上就得加班修。3. 核心细节解析与实操要点3.1 Git 安装与基础配置别跳过这一步很多人觉得 Git 装完能用就行其实初始配置直接影响后面 Agent 提交记录的可读性。我以常见的 Linux 和 macOS 为例Windows 用户装 Git for Windows 后命令基本一致。安装完成后第一件事是配置身份git config --global user.name 你的名字 git config --global user.email 你的邮箱然后配置几个我强烈建议开启的选项# 让 diff 显示更清晰的颜色 git config --global color.ui auto # 处理换行符跨平台协作必备 git config --global core.autocrlf input # 设置默认分支名为 main git config --global init.defaultBranch main # 让 pull 默认用 rebase历史更干净 git config --global pull.rebase true注意core.autocrlf在 Windows 上建议设为truemacOS 和 Linux 设为input。这个配置不对跨平台协作时会出现整文件 diff 的假象非常影响 Agent 改代码后的审查。配置完用git config --list检查一遍。这一步花两分钟能省后面无数麻烦。3.2 给 AI Agent 准备一份项目说明书这是我认为投入产出比最高的一件事。在项目根目录建一个AGENT.md内容不用长但要把关键信息写全。我的模板大概是这样# 项目说明 ## 这是什么 一个基于 Django 的后台管理系统提供用户、权限、日志三大模块。 ## 目录结构 - apps/ 各业务模块 - config/ 项目配置 - utils/ 公共工具 - tests/ 测试用例 ## 常用命令 - 启动python manage.py runserver - 测试pytest tests/ - 迁移python manage.py makemigrations python manage.py migrate ## 代码规范 - 函数命名用 snake_case - 所有公共函数必须有 docstring - 禁止在视图层直接写 SQL ## 禁区 - 不要修改 config/settings/base.py 里的数据库配置 - 不要动 migrations/ 下的历史文件这份文件的作用是给 Agent 划边界。实测下来有了它之后 Agent 改错文件、用错命令的概率能降一大半。因为它不用猜直接读就行。3.3 对话串上下文管理为什么 ChatGPT 会失忆用 ChatGPT 做长任务时最烦的就是聊到一半它开始胡言乱语或者忘了前面说过的约束。这不是它坏了是上下文窗口有限。对话越长早期信息被稀释得越厉害。我的应对办法有三个第一分段开新对话。一个任务聊完就归档新任务开新串。不要在一个对话里塞三个不相关的需求。第二关键约束反复重申。比如所有函数必须加类型注解这种要求每隔几轮就提一次或者直接写进第一条消息里加粗。第三用文件代替对话记忆。把重要的决策、约束、进度写进项目里的NOTES.md每次开新对话先把这文件内容贴进去。这样上下文是重新加载的不依赖对话历史。提示如果你遇到无法加载 config.toml因此此对话串无法继续这类报错通常是本地配置文件格式错了或者路径不对。先检查文件是否存在、缩进是否是合法的 TOML 格式再重启客户端。配置文件里model字段拼写错误是最常见的原因。3.4 Codex 使用要点让它动手但别让它乱动Codex 这类能操作本地文件的 Agent威力大风险也大。我的使用原则是小步快跑频繁确认。具体操作上我会把任务拆成一次只改一个文件或一个函数的粒度。比如要重构一个模块我不会说帮我重构这个模块而是说把utils/date.py里的parse_date函数改成支持多种格式输入其他函数不要动。粒度越细它跑偏的概率越低你 review 的成本也越低。另外Codex 执行命令前我会先让它把要执行的命令列出来我确认没问题再让它跑。尤其是涉及删除、覆盖、批量修改的命令这一步绝对不能省。关于模型选择有时候会遇到类似the gpt-x.x-sol model is not supported when using codex with a chatgpt account的提示这通常是你选的模型和当前账号类型不匹配。解决办法很简单换成账号支持的模型或者检查配置里 model 字段是不是写了个不存在的名字。别硬刚换一个能用的就行。3.5 DeepSeek 的接入与 API 调用DeepSeek 我在两个场景用得最多一是纯代码生成二是本地部署后的 API 调用。API 调用这块核心就是拿到 key 之后按标准格式发请求。一个最小可用的 Python 示例import requests url https://api.deepseek.com/v1/chat/completions headers { Authorization: Bearer 你的API_KEY, Content-Type: application/json } payload { model: deepseek-chat, messages: [ {role: system, content: 你是一个严谨的代码助手}, {role: user, content: 写一个 Python 函数判断字符串是否是合法邮箱} ], temperature: 0.3 } resp requests.post(url, headersheaders, jsonpayload, timeout60) print(resp.json()[choices][0][message][content])几个实操要点temperature设低一点0.2 到 0.4代码任务不需要发散timeout一定要设不然网络卡住会一直挂着返回结果记得做异常处理别直接下标取值万一返回结构变了会崩。如果你要在本地部署比如在 Jetson Orin 这类设备上跑重点看显存和量化方案。模型选小一点的量化版本推理速度能接受就行别追求满血版。4. 实操过程与核心环节实现4.1 一个完整任务的拆解流程我拿一个真实任务来演示给现有项目加一个操作日志自动记录功能。整个过程我分成六步。第一步需求澄清。在 ChatGPT 里我把需求讲清楚哪些操作要记录、记录哪些字段、存哪里、保留多久。让它帮我列一个任务清单。它给出的清单是建日志模型、写记录中间件、接入视图层、加查询接口、写测试。第二步环境准备。确认 Git 工作区干净git status git checkout -b feat/operation-log第三步让 Codex 建模型。我明确告诉它在apps/logs/models.py里新建一个OperationLog模型字段包括 user_id、action、target、created_at不要动其他文件。它改完我 review diff确认没问题提交一次。第四步写中间件。同样小粒度只改中间件文件。这里有个坑中间件里拿 request.user 要注意匿名用户的情况我在 prompt 里专门强调了匿名用户跳过记录。第五步接入视图。这一步涉及多个文件我让 Codex 先列出要改的文件清单我确认后再逐个改。第六步测试与合并。跑pytest tests/通过后git diff main看整体改动没问题再 merge。整个流程走下来大概两小时其中我真正动手的时间不到半小时其余都是 Agent 在跑、我在 review。效率提升主要来自不用自己敲重复代码而不是不用思考。4.2 Git 分支合并的实操细节Agent 干活多了分支就多合并就成了高频操作。我常用的几种合并方式普通合并保留完整历史git checkout main git merge feat/operation-log压缩合并把分支上的一堆提交压成一个git checkout main git merge --squash feat/operation-log git commit -m feat: 添加操作日志功能我一般用压缩合并因为 Agent 生成的提交往往很碎压成一个更清晰。遇到冲突怎么办先别慌git status会告诉你哪些文件冲突。打开冲突文件会看到、、标记。手动决定保留哪部分删掉标记然后git add 冲突文件 git commit注意合并前一定先git fetch拉最新本地 main 落后太多直接合并冲突会多到怀疑人生。4.3 让 Agent 帮忙写提交信息提交信息写得好不好直接影响后面查历史。我现在的做法是让 Agent 根据 diff 生成 commit message。把git diff --staged的输出丢给它让它按 Conventional Commits 格式生成比如feat(logs): 添加操作日志模型与记录中间件 - 新增 OperationLog 模型 - 添加日志记录中间件跳过匿名用户 - 补充单元测试这样生成的提交信息规范、可读比我自己随手写的强多了。4.4 并发场景下的注意事项有人问 AI Agent 怎么扛并发。我的经验是Agent 本身不是并发工具别指望它处理高并发请求。它的并发能力体现在同时处理多个任务上而不是同时响应多个用户。如果你要让它批量处理任务比如同时改十个文件正确做法是串行加队列而不是并行。因为并行改文件容易出现写冲突而且你 review 不过来。我一般是一个任务一个任务排队跑跑完一个确认一个。真要提速就把任务拆得更细让每个任务更快完成而不是同时跑多个。如果是在服务端集成 Agent 能力那并发问题就变成常规的后端问题了加队列、限流、超时控制、失败重试。这些跟 Agent 本身没关系是工程问题。5. 常见问题与排查技巧实录5.1 高频问题速查表问题现象可能原因解决办法对话串无法继续提示 config.toml 加载失败配置文件格式错误或 model 字段拼写错检查 TOML 缩进核对 model 名称提示某模型不支持当前账号模型与账号类型不匹配换成账号支持的模型Codex 执行命令报代理相关错误本地网络配置问题检查本地环境配置重启客户端Git 推送提示 SSH 认证失败密钥未配置或未添加到账户重新生成密钥并添加公钥合并后代码编译失败Agent 改了不该改的文件用 git diff 定位回滚问题提交Agent 改完代码测试不过上下文不足或理解偏差补充 AGENT.md缩小任务粒度ChatGPT 对话中途失忆上下文窗口超限开新对话用文件承载记忆本地部署推理太慢模型太大或未量化换量化版本降低精度要求5.2 几个我踩过的坑坑一让 Agent 直接改生产配置。有次我图省事让它直接改settings.py里的数据库连接。结果它把测试库的配置也一起改了导致本地测试连到了错误的地方。教训是配置文件永远手动改或者改完必须逐行核对。坑二不看 diff 直接提交。早期我信任 Agent改完直接git add . git commit。有一次它把一个调试用的print语句留在了代码里上线后日志刷屏。从那以后我养成了git diff逐行看的习惯哪怕改动很小。坑三任务描述太模糊。优化一下这个函数这种指令Agent 会给你一堆它认为的优化但可能完全不是你想要的。正确做法是明确说把时间复杂度从 O(n²) 降到 O(n)或者减少重复的数据库查询。指令越具体结果越可控。坑四忽略 .gitignore。Agent 生成的临时文件、缓存文件如果不加进.gitignore会被一起提交污染仓库。我现在的.gitignore模板里一定会包含__pycache__/、*.log、.env、node_modules/这些。5.3 独家避坑技巧技巧一给 Agent 设只读区。在 AGENT.md 里明确列出哪些目录或文件是禁止修改的比如migrations/、config/secrets/。这比事后回滚省事得多。技巧二用 Git hook 做自动检查。配置一个 pre-commit hook提交前自动跑 lint 和测试。Agent 生成的代码如果不符合规范直接拦下来。这样能过滤掉大部分低级错误。技巧三保留 Agent 的思考过程。有些 Agent 会输出它的推理步骤别急着关掉。这些步骤能帮你判断它是怎么理解你的需求的理解偏了能及时发现。技巧四定期清理对话和分支。用久了会积累一堆废弃分支和对话串定期清理保持工作区干净。分支合并完就删对话任务完成就归档。技巧五重要操作前打 tag。在让 Agent 做大规模改动前先git tag before-agent-refactor出问题直接git reset --hard before-agent-refactor比翻提交历史快得多。6. 我个人的一些使用体会用到现在我最大的感受是AI Agent 不是替代你思考的工具而是放大你执行力的工具。你思路清晰它帮你十倍速落地你思路混乱它帮你十倍速制造混乱。所以花在想清楚要做什么上的时间一点都不能省。另一个体会是工具会变方法论不会。今天用 ChatGPT明天可能换别的但小步快跑、频繁确认、Git 兜底这套东西是通用的。把精力放在建立自己的工作流上比追着每个新工具跑要划算得多。最后分享一个小习惯我会在每周五花半小时把这周用 Agent 踩的坑、总结的技巧记到一个agent-notes.md里。攒了几个月这份笔记已经成了我自己的避坑手册比任何教程都管用。你也可以试试从今天开始记三个月后回头看收获会超出预期。