ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

面试官:“什么是 Agentic Engineering?它和 Vibe Coding 有什么区别?” 我:“别急,先看这份 AGENTS.md 配置骨架再聊”

面试官:“什么是 Agentic Engineering?它和 Vibe Coding 有什么区别?” 我:“别急,先看这份 AGENTS.md 配置骨架再聊” 1. 面试里被问懵的那一刻“什么是 Agentic Engineering它和 Vibe Coding 有什么区别”如果你最近在面 AI 编程相关岗位这道题出现的概率不低。我第一次被问到的时候脑子里第一反应是“不就是让 AI 写代码么”但面试官紧接着追问了一句“测试都过了你就直接合”我才意识到这个问题问的根本不是工具用法而是工程责任的归属。先把核心检索词说清楚。Agentic Engineering 指的是人作为技术负责人定义规范、拆解任务、设定验收标准让 AI Agent 在明确边界内执行编码、测试、修复最后由人做 Code Review 和合并决策的一套工程方法。Vibe Coding 则是用自然语言描述需求AI 生成代码人不太看实现细节能跑就先用。两者都用了 AI区别在于人对代码的掌控程度和工程闭环的完整度。这篇文章适合三类人正在准备 AI 编程岗位面试的开发者、想把 AI 写代码从“玩具”变成“生产流程”的团队、以及被 AI 生成代码的维护成本折磨过的人。我会用一份可复制的 AGENTS.md 配置骨架作为切入点把 Agentic Engineering 和 Vibe Coding 在 AI 写代码、Code Review 环节的协作差异讲透并给出用 TaoToken 统一 Key 接入的完整示例和验证 Agent 行为的具体检查动作。面试里如果只说“Vibe Coding 比较随意Agentic Engineering 比较正规”这个答案太浅。真正要讲清楚的是这背后是从“生成代码”到“管理 AI 工程流程”的变化。AI 能写出大量代码不代表这些代码值得进生产。工程能力体现在你能不能定义边界、发现问题、控制质量、持续维护。2. 为什么 AGENTS.md 是分水岭2.1 Vibe Coding 的协作方式Vibe Coding 的典型流程是这样的你打开 Cursor 或者类似的 AI 编辑器输入“帮我做一个带登录、注册、用户列表的后台”AI 生成一堆前端页面、接口调用、数据库操作你点开能跑就先上线试试。这个模式在原型阶段非常高效。写一次性脚本、做个人小工具、验证一个想法Vibe Coding 的速度优势明显。问题出在项目开始变大之后。AI 不知道你的目录约定不知道哪些模块不能动不知道接口兼容性要求每次生成都可能跟已有代码冲突。你继续让 AI 修 bug它可能改出新的问题因为它的上下文里没有全局约束。2.2 Agentic Engineering 的协作方式Agentic Engineering 把 AI 当成一个执行力很强、但需要被管理的工程成员。在让 AI 写第一行代码之前你要先完成几件事定技术栈、写目录结构、明确数据库 schema、定义 API 规范、确定鉴权方式、写错误处理策略、设定测试要求。这些约束需要一个载体让 AI 每次执行任务时都能读到。AGENTS.md 就是这个载体。它放在项目根目录AI 编辑器或 Agent 工具在启动时会自动读取作为本次任务的上下文约束。2.3 两者的核心差异对照维度Vibe CodingAgentic Engineering人的角色需求描述者技术负责人AI 的角色代码生成器执行工程师过程控制能跑就继续有规范、有测试、有 Review适合场景Demo、脚本、小工具长期维护的真实项目最大风险代码不可控流程成本更高Code Review基本跳过强制环节人签字这张表里最容易被忽略的是最后一行。Vibe Coding 里 Code Review 经常被跳过因为代码是 AI 写的人自己也没完全看懂。Agentic Engineering 里 Code Review 是强制环节因为 AI 生成的补丁必须有人判断是否符合架构、质量和安全要求。3. TaoToken 前置统一 Key 与 API 通道在讲 AGENTS.md 配置骨架之前先解决一个实际问题Agent 执行任务时需要调用模型如果每个项目、每个工具都配一套 Key管理成本很高。我试过用 TaoToken 做统一通道把模型调用收敛到一个入口。TaoToken 是一个模型 API 聚合服务提供统一的 Key 和 API 地址支持多种模型。对于 Agentic Engineering 场景它的价值在于你可以在 AGENTS.md 里写清楚项目使用哪个模型、通过哪个通道调用团队成员拿到同一个 Key 就能复现相同的 Agent 行为。官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 。注意 API 地址不带 UTM 参数直接用于代码配置。你需要先拿到 API Key。进入控制台创建 Key 的页面在 https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 创建后复制保存。这个 Key 会用在后面的环境变量配置里。如果你主要做长期编码和 Agent 任务可以了解 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。如果只是想先验证模型对话效果可以用模型对话页面https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 配置过程中遇到问题可以对照文档排查。4. 可复制的 AGENTS.md 配置骨架下面这份 AGENTS.md 骨架可以直接复制到项目根目录按你的项目实际情况修改。它的作用是让 AI Agent 在每次执行任务前先读到项目的工程约束。# AGENTS.md ## 项目概述 - 项目名称user-management-system - 技术栈Node.js 20 TypeScript 5 PostgreSQL 16 React 18 - 包管理器pnpm ## 目录结构约束 - src/api/HTTP 接口层只做参数校验和响应封装 - src/service/业务逻辑层不允许直接操作数据库 - src/repository/数据访问层所有 SQL 集中在此 - src/model/类型定义和数据库 schema - tests/unit/单元测试 - tests/integration/集成测试 ## 允许修改的目录 - src/ 下所有子目录 - tests/ 下所有子目录 ## 禁止修改的文件 - package.json 中的 dependencies 版本号 - .env.example - src/model/schema.sql数据库 schema 变更需人工确认 ## 编码规范 - 所有函数必须有 TypeScript 类型标注 - 错误处理统一使用 src/utils/error.ts 中的 AppError - 不允许使用 any 类型 - 接口返回值统一使用 src/utils/response.ts 中的 formatResponse ## 测试要求 - 每个 service 方法必须有对应的单元测试 - 每个 API 接口必须有对应的集成测试 - 测试覆盖率不低于 80% - 提交前必须运行 pnpm test 和 pnpm lint ## 模型调用配置 - API Base URLhttps://taotoken.net/api - 环境变量TAOTOKEN_API_KEY - 默认模型按项目 .env 中的 MODEL_NAME 读取 ## 任务执行规则 - 每次只处理一个模块或一个接口 - 修改前先读取相关文件确认现有实现 - 修改后必须运行测试测试不通过不允许提交 - 不允许跨模块大改如需跨模块变更先输出方案这份骨架的关键在于“禁止修改”和“任务执行规则”两部分。Vibe Coding 模式下AI 可能随手改 package.json 的依赖版本或者直接改数据库 schema。Agentic Engineering 模式下这些操作被明确禁止AI 必须先输出方案由人确认后才能执行。4.1 环境变量配置在项目根目录创建 .env 文件写入 TaoToken 的配置TAOTOKEN_API_KEY你的API Key TAOTOKEN_BASE_URLhttps://taotoken.net/api MODEL_NAMEclaude-sonnet-4-20250514然后在代码里读取这些环境变量。以 Node.js 为例import OpenAI from openai; const client new OpenAI({ apiKey: process.env.TAOTOKEN_API_KEY, baseURL: process.env.TAOTOKEN_BASE_URL, }); export async function callModel(prompt: string): Promisestring { const response await client.chat.completions.create({ model: process.env.MODEL_NAME || claude-sonnet-4-20250514, messages: [{ role: user, content: prompt }], temperature: 0.2, }); return response.choices[0].message.content ?? ; }temperature 设为 0.2 是为了让 Agent 在执行编码任务时输出更稳定减少随机性。Vibe Coding 场景下你可能喜欢高 temperature 带来的创意但 Agentic Engineering 要的是可复现。4.2 在 Agent 工具中引用 AGENTS.md不同的 AI 编辑器对 AGENTS.md 的读取方式略有差异。以常见的做法为例在项目根目录放置 AGENTS.md 后Agent 工具会在启动时自动读取。如果没有自动读取可以在对话开头显式引用请先读取项目根目录的 AGENTS.md严格按照其中的约束执行任务。 本次任务为 src/service/userService.ts 中的 getUserById 方法补充单元测试。这个显式引用很重要。它相当于在每次任务开始时把工程约束重新注入 Agent 的上下文。项目越大上下文管理越关键AGENTS.md 就是那个稳定的锚点。5. 验证 Agent 行为是否符合预期配置写完了怎么知道 Agent 真的按约束执行了不能只看它说“已完成”要有具体的检查动作。5.1 检查一文件修改范围Agent 执行完任务后先看它改了哪些文件。用 git diff 查看git diff --stat预期结果是只修改了任务相关的文件。如果你让它补一个 service 的测试它却改了 package.json 或者 schema.sql说明 AGENTS.md 的约束没有被遵守。这时候不要直接接受回退后重新下发任务并在 prompt 里再次强调禁止修改的文件。5.2 检查二测试是否真实运行Agent 说“测试通过”不等于测试真的跑了。检查方式pnpm test -- --coverage看覆盖率报告里新增的测试文件是否被计入看测试用例数量是否增加。如果 Agent 只是生成了测试文件但没有实际运行覆盖率不会变化。5.3 检查三Code Review 清单在合并之前用这份清单过一遍## Agent 生成代码 Review 清单 - [ ] 修改范围是否在 AGENTS.md 允许的目录内 - [ ] 是否引入了新的依赖版本是否与 package.json 一致 - [ ] 错误处理是否使用了统一的 AppError - [ ] 接口返回值是否使用了 formatResponse - [ ] 是否有 any 类型 - [ ] 单元测试是否覆盖了新增的 service 方法 - [ ] 集成测试是否覆盖了新增的 API 接口 - [ ] 测试是否真实运行并通过 - [ ] 是否有跨模块变更是否经过人工确认这份清单的作用是把 Code Review 从“感觉没问题”变成“逐项确认”。Vibe Coding 里 Review 经常被跳过因为人自己也没完全理解 AI 写了什么。Agentic Engineering 里 Review 是强制环节清单让这个过程有据可依。5.4 检查四Agent 行为日志如果你用的是支持日志的 Agent 工具查看本次任务的执行日志。重点看两个地方Agent 是否读取了 AGENTS.mdAgent 是否在修改前读取了相关文件。如果日志显示 Agent 直接开始写代码没有读取现有实现说明它的执行流程有问题生成的内容很可能跟现有代码不一致。6. 本篇常见错排查6.1 Agent 不读 AGENTS.md现象Agent 生成的代码违反了 AGENTS.md 里的目录约束或编码规范。排查确认 AGENTS.md 放在项目根目录文件名大小写正确。部分工具要求文件名全大写。如果工具不支持自动读取在 prompt 开头显式引用。另外检查 AGENTS.md 是否过长过长的文件可能被截断把最关键的约束放在前 50 行。6.2 测试通过但合并后出问题现象Agent 说测试通过合并到主干后出现回归。排查测试只覆盖了已写进用例的预期。检查测试是否覆盖了边界 case是否只测了 happy path。另外确认 Agent 运行的测试命令和 CI 上的一致本地测试通过不代表 CI 通过。建议在 AGENTS.md 里明确写清楚提交前必须运行的命令。6.3 API 调用返回 401现象Agent 调用模型时返回 401 Unauthorized。排查检查 TAOTOKEN_API_KEY 是否正确设置环境变量是否被项目读取。如果用的是 .env 文件确认没有被 .gitignore 忽略导致部署环境读不到。另外确认 baseURL 是 https://taotoken.net/api 不要多加路径。6.4 Agent 跨模块大改现象你让它改一个接口它顺手重构了三个模块。排查这是上下文管理失控的典型表现。解决办法是把任务拆得更小一次只给一个接口或一个组件。在 AGENTS.md 的任务执行规则里明确写“不允许跨模块大改如需跨模块变更先输出方案”。如果 Agent 仍然跨模块修改在 prompt 里加上“只允许修改 src/service/userService.ts其他文件一律不动”。6.5 生成代码与现有实现不一致现象Agent 生成的代码用了跟项目不同的错误处理方式或返回值格式。排查Agent 没有读取现有实现就开始写。在 AGENTS.md 里要求“修改前先读取相关文件”并在 prompt 里指定参考文件。比如“参考 src/service/orderService.ts 的实现风格为 userService.ts 补充 getUserById 方法”。7. 从面试题到工程落地回到面试官那个问题“测试都过了你就直接合”测试通过是必要条件但它只回答了“AI 能把任务做完”没有回答“工程师怎么定义风险、怎么验收补丁、怎么对最终合并负责”。Agent 能写、能测甚至能把修复建议送到眼前也不等于它接走了工程责任。判断一个团队有没有从 Vibe Coding 走到 Agentic Engineering不要只看用了多少 Agent也不要只看生成了多少代码。看的是任务有没有边界、结果有没有验收、失败能不能回滚以及最后有没有一个明确的人对合并负责。如果你正在准备这类面试题或者想把团队的 AI 编码流程规范化可以从这份 AGENTS.md 骨架开始改起。把项目的约束写清楚把验证动作固定下来把 Code Review 清单用起来。这些动作比“用哪个模型”更能决定 AI 生成的代码能不能进主干。需要统一管理模型 Key 和 API 通道的话可以从 API Keys 页面创建 Keyhttps://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 接入细节对照文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。长期做编码和 Agent 任务的话Coding Plan 页面有更完整的方案说明https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。
返回列表