
在 2026 年的前端、后端和算法项目中有一类需求变得越来越常见让 AI Agent 不只是聊天而是真正参与编码、调试、测试和代码评审。围绕这个目标Codex、Claude Code、Vibe Coding 和 Skill 这四个词频繁出现在技术讨论里。很多人分开学过它们却不知道它们如何组成一个完整工作流Vibe Coding 负责用自然语言把需求描述清楚Codex 和 Claude Code 提供一个能在终端里编辑文件、执行命令的 Agent 载体Skill 则为 Agent 补充可复用的专家流程。这篇文章会带领读者从概念出发搭建环境写出一个能用的自定义 Skill并让 Agent 按照 Skill 完成一个日志分析任务。学习完以后可以在自己的项目里复刻这套流程把重复性开发任务标准化。1. 先理清五个关键词AI Agent、Codex、Claude Code、Vibe Coding 与 Skill 的关系1.1 从一次完整的智能编码过程理解它们设想一个任务写一段 Python 脚本统计 Nginx 访问日志里的 HTTP 状态码分布。不使用 Skill 的情况下用户直接把需求粘贴给 CodexCodex 生成脚本运行发现问题再修改。这个过程本身就是一个典型的 Vibe Coding用户不逐行写代码而是描述意图让 Agent 完成文件操作和命令执行。但这里有个问题如果用户每次都用不同说法描述同一个需求Agent 每次生成的脚本风格、输出格式、错误处理逻辑都不稳定。Skill 的价值就在于把“你希望 Agent 怎么分析日志”沉淀成一个标准操作流程。AI Agent 是这个流程的调度者Codex 和 Claude Code 是承载调度者的终端编程工具。1.2 通俗含义与准确定义AI Agent一段能感知环境、做出决策、执行动作的程序。它通常以 LLM 为推理核心把用户的长期目标拆成小步骤。通俗讲它不像一次问答更像一个“拿着任务清单的实习生”。CodexOpenAI 推出的命令行编程工具。它把对话式能力搬到开发者的终端里可以创建文件、运行命令、提交 Git核心场景是自动化编码。Claude CodeAnthropic 推出的类似编程 Agent 工具。它擅长长上下文理解适合在大型项目里定位问题、重构代码。Vibe Coding用自然语言驱动编程的开发方式。它不要求使用者记住每个 API 细节但要求使用者能把验收标准说清楚。Skill一种预置给 Agent 的能力包通常包含说明文档、脚本、模板和约束。它告诉 Agent“在什么场景下、按什么步骤、用什么工具完成一件事”。1.3 它们的分工和边界名词定位解决什么问题典型产物AI Agent运行时推理与调度把一个目标拆成多步动作执行计划、动作记录Codex终端里的编码 Agent 载体让 Agent 能操作文件系统和执行命令代码文件、Git commitClaude Code另一个编码 Agent 载体长上下文分析与代码重构代码修改、解释报告Vibe Coding人机协作方式把需求用自然语言表达prompt、验收说明Skill可复用能力包给 Agent 补充领域工作流SKILL.md、脚本、模板这个区分很重要。实际项目中很多人把 Vibe Coding 混同为“Agent 自动写代码”其实 Vibe Coding 更多是一种交互范式而 Skill 是把交互范式变成稳定流程的机制。Codex 和 Claude Code 哪个更好也不重要关键是先理解 Agent 从“被 prompt 驱动”走向“被 skill 驱动”之后才能减少重复描述需求的时间。2. 环境准备装好 Codex 和 Claude Code并确认模型连接2.1 基础环境要求在开始安装前先检查系统里是否具备以下条件Node.js 18 以上部分 CLI 要求 Node 20 以上。Git 命令行工具。一个可以正常访问的终端环境macOS 和 Linux 优先Windows 建议使用 WSL。一个可用的模型 API 凭据例如 OpenAI API Key 或 Anthropic API Key。如果使用第三方兼容 API需要先拿到服务商提供的 base_url 和 model 名称。这个清单很重要因为 Codex 和 Claude Code 本身是 Node.js 应用装好后还需要调用模型服务。如果 Node 版本过低安装过程可能不报错但启动时会崩溃。2.2 安装 Codex CLI以 npm 全局安装为例npm install -g openai/codex安装完成后验证版本codex --version如果命令找不到说明 npm 全局目录没有加入 PATH。在 macOS 和 Linux 上常见全局目录是/usr/local/lib/node_modules或 nvm 管理的 node 路径。可以用npm config get prefix查看全局目录再把该目录下的bin加入~/.zshrc或~/.bashrc。登录方式可以选择交互式登录也可以使用环境变量。以 OpenAI 为例export OPENAI_API_KEY你的_API_Key注意如果你使用的是第三方模型服务比如某些兼容 OpenAI 协议的接口需要额外配置 base_url。不要只设置 API Key 就以为已经完成连接。2.3 安装 Claude CodeClaude Code 同样支持 npm 安装npm install -g anthropic-ai/claude-code验证claude --versionClaude Code 默认使用 Anthropic 模型需要设置export ANTHROPIC_API_KEY你的_API_Key如果使用兼容 Anthropic 协议的第三方服务一般还要在配置文件中指定ANTHROPIC_BASE_URL。这个变量在不同服务商那里叫法可能不同落地前先看服务商文档。2.4 检查点的确认安装完成后建议按下面的表格逐项检查避免后面调试时浪费时间检查项命令预期结果Node 版本node -vv18 或更高npm 版本npm -v与 Node 配套Codex 可用codex --version输出版本号Claude Code 可用claude --version输出版本号模型连接在 Codex 中发一句“输出 hello”能正常运行并返回环境准备过程并不复杂但需要明确一件事CLI 工具能启动只代表安装成功不代表模型连接成功。建议第一次使用时先跑一条最简单的 prompt确认模型能返回内容再进入后面的 Vibe Coding 流程。3. Vibe Coding 最小闭环用自然语言完成一个日志分析脚本3.1 需求描述与验收标准Vibe Coding 在实际项目中能否成功关键不在模型多强而在需求描述是否可验收。下面用一个最简单的例子演示。需求写一个 Python 脚本analyze_log.py。输入是一个 Nginx 访问日志文件输出是一份 Markdown 报告报告里包含总请求数。每个状态码的数量和占比。状态码为 4xx 或 5xx 的 Top 5 URL。验收标准脚本在命令行执行不依赖额外第三方库仅使用 Python 标准库报告保存到reports/access_report.md。把这段描述粘贴给 Codex 或 Claude CodeAgent 会自动创建目录和文件然后运行脚本验证。3.2 在 Codex 中的执行方式在项目根目录打开终端运行codex 写一个 Python 脚本 analyze_log.py使用标准库读取 access.log统计状态码和 Top 5 错误 URL输出到 reports/access_report.md给出执行命令Codex 会生成文件并可能直接执行。正常情况下最终生成的核心逻辑类似下面这样实际生成结果会因模型版本略有差异import sys import pathlib from collections import Counter def analyze(log_path: str, report_path: str) - None: lines pathlib.Path(log_path).read_text(encodingutf-8, errorsignore).splitlines() status_counter Counter() error_paths Counter() for line in lines: parts line.split() if len(parts) 7: continue status parts[-2] path parts[-1] status_counter[status] 1 if status.startswith(4) or status.startswith(5): error_paths[f{status} {path}] 1 total sum(status_counter.values()) lines_out [# HTTP 状态码分析, ] lines_out.append(f- 总请求数: {total}) lines_out.append() lines_out.append(| 状态码 | 数量 | 占比 |) lines_out.append(| --- | ---: | ---: |) for status, count in status_counter.most_common(): lines_out.append(f| {status} | {count} | {count / total:.2%} |) lines_out.append() lines_out.append(## 错误 URL Top 5) lines_out.append() for item, count in error_paths.most_common(5): lines_out.append(f- {count} 次{item}) report_file pathlib.Path(report_path) report_file.parent.mkdir(parentsTrue, exist_okTrue) report_file.write_text(\n.join(lines_out), encodingutf-8) print(f报告已写入 {report_path}) if __name__ __main__: analyze(sys.argv[1], sys.argv[2])3.3 验证结果准备一份简单的访问日志cat access.log EOF 127.0.0.1 - - [10/Feb/2026:12:00:01 0800] GET / HTTP/1.1 200 1024 127.0.0.1 - - [10/Feb/2026:12:00:02 0800] GET /api/login HTTP/1.1 500 512 127.0.0.1 - - [10/Feb/2026:12:00:03 0800] POST /api/order HTTP/1.1 404 200 EOF运行脚本python3 analyze_log.py access.log reports/access_report.md查看输出文件cat reports/access_report.md正常结果应该包含三行状态码统计和错误 URL 列表。3.4 这个闭环暴露的常见坑第一个坑是只写“帮我分析日志”而不给输入格式和输出格式。模型可能会读取文件、打印 JSON甚至尝试使用 pandas导致结果不符合预期。解决方式是在 prompt 里写清楚文件和路径、输出格式、是否允许第三方依赖、运行方式。第二个坑是让 AI 直接修改真实文件而不做备份。Vibe Coding 中 AI 可能修改了某个配置结果程序崩溃却找不到原始内容。建议每次让 AI 改动前先让 Agent 创建 Git 分支或备份文件。第三个坑是不验证生成结果。很多时候模型生成的代码能通过静态检查但运行时报错。所以 prompt 最后一定要加上一句“请运行脚本并确认报告生成成功”。Agent 会自己执行并修复问题。4. Skill 的核心机制从一次生成到可复用流程4.1 Skill 为什么能改变 Agent 的使用方式没有 Skill 时每次让 Agent 分析日志用户都要重新描述一遍日志格式、输出要求、脚本保存位置。有 Skill 后只要在 prompt 里写“使用 analyze-log Skill 分析 access.log”Agent 就会自己找到 Skill 目录读取SKILL.md按照里面的步骤执行。它的本质是把“怎么做某类任务”的知识从人脑中转移到项目中让 Agent 每次执行保持一致。一个 Skill 通常包含四部分说明文档描述触发条件、目标、约束。工作流步骤列表Agent 按顺序执行。脚本模板可被调用的工具代码。参考资料常见问题、规则、示例输出。4.2 一个最小 Skill 的目录结构以“日志分析”为例在项目根目录创建.codex/ skills/ analyze-log/ SKILL.md scripts/ analyze_log.py review-code/ SKILL.md在 Claude Code 项目中常见位置是.claude/ skills/ analyze-log/ SKILL.md scripts/ analyze_log.py两个位置的核心都是SKILL.md。4.3 SKILL.md 示例下面是一个面向日志分析的最小 Skill 定义--- name: analyze-log description: 分析访问日志状态码分布和错误趋势。当用户提供日志路径或要求分析访问日志时使用。 --- # 日志分析 ## 目标 生成一份 Markdown 报告包含总请求数、状态码分布、错误 URL Top 5。 ## 工作流程 1. 找到日志文件确认它是 Nginx 风格 access log。 2. 运行 python3 scripts/analyze_log.py 日志路径 报告路径。 3. 如果脚本执行失败查看日志语法并修正脚本。 4. 输出报告路径并把摘要回复给用户。 ## 约束 - 不修改原始日志文件。 - 报告输出到 reports/access_report.md。 - 只使用 Python 标准库。这个例子说明了 Skill 的三个关键点。第一description要写清楚“什么时候用”Agent 才能决定是否调用。第二工作流程必须是一个可执行的步骤列表不能是含糊的“分析日志”。第三约束要限制 Agent 的自由度否则它可能修改原始文件或使用额外依赖。4.4 在 Codex 中让 Skill 生效不同版本对 Skill 的加载机制不完全一样。常见做法是把 Skill 放在项目.codex/skills/目录下并在AGENTS.md中声明。例如AGENTS.md可以写# 项目说明 当需要分析访问日志时使用 .codex/skills/analyze-log/SKILL.md 中的流程。然后把自然语言 prompt 发给 Codexcodex 使用 analyze-log Skill 分析 access.logAgent 会读取 AGENTS.md发现这个 Skill 的说明再根据描述决定调用。4.5 在 Claude Code 中让 Skill 生效Claude Code 中可以把 Skill 放在.claude/skills/目录并在CLAUDE.md中做类似声明# Claude Code 项目说明 项目内置日志分析流程。用户提到“分析访问日志”时请先读取 .claude/skills/analyze-log/SKILL.md再按流程执行。启动claude 使用 analyze-log Skill 分析 access.log注意不同版本对 Skill 目录的默认扫描范围有差异。如果 Agent 没有自动发现 Skill优先检查CLAUDE.md或AGENTS.md的引用声明是否写清楚而不是反复修改 prompt。5. 让 Agent 组合多个 Skill 完成一个真实任务5.1 任务设计从日志分析到修复建议一个 Skill 适合完成一个单一动作。实际开发任务往往需要多个 Skill 顺序执行。下面演示一个组合流程用analyze-logSkill 分析 access.log生成报告。用review-codeSkill 审查报告中指出的错误路径找到可能的问题代码。用fix-codeSkill 生成修复补丁。这个流程体现了 Agent 的编排能力它不是执行一条命令而是按照任务计划调用多个能力包。5.2 创建 review-code Skill 骨架.claude/ skills/ review-code/ SKILL.mdSKILL.md示例--- name: review-code description: 审查日志分析报告中指出的错误路径对应的源码文件输出问题列表。当用户提到错误定位或代码审查时使用。 --- # 代码审查 ## 输入 - 错误 URL 或路径列表。 - 项目源码。 ## 工作流程 1. 根据错误路径找到对应路由或函数。 2. 检查异常处理、空值判断、资源释放。 3. 输出问题列表每个问题包含文件、行号、原因、修复建议。 ## 输出格式 - 使用 Markdown 表格列出问题。 - 如果不确定标注“需要人工确认”。5.3 用 Prompt 发起组合任务在 Claude Code 中运行claude 先执行 analyze-log Skill 分析 access.log然后读取报告对错误最多的路径执行 review-code Skill最后给出修复建议Agent 会先读analyze-log/SKILL.md运行脚本再读review-code/SKILL.md匹配代码最后输出建议。这个过程中用户只需要描述“目标”不需要告诉 Agent 每一步怎么做。5.4 如何观察 Agent 是否真正使用了 Skill很多情况下用户只关心最终结果但排错时却需要知道 Agent 是否真的读了 Skill 文件。判断方式包括让 Agent 在回复中输出它调用的 Skill 名称查看 CLI 的 verbose 日志或者在SKILL.md末尾加一句“执行结束后请回复已完成 analyze-log Skill”。如果要生产化还可以让 Agent 把每次调用的 Skill 名称和关键动作写入结构化日志例如追加到一个 JSON 文件{ task: analyze access.log, skill: analyze-log, action: run analyze_log.py, status: success }这种记录在排查问题时很有价值。6. 常见问题排查从安装报错到模型调用失败6.1 安装与 PATH 问题现象运行codex时提示找不到命令或者 IDE 插件提示unable to locate the codex cli binary。可能原因Codex CLI 已经安装但它的可执行文件不在当前 PATH 中IDE 插件有自己的 PATH 环境不继承 shell 的配置。检查方式which codex npm config get prefix如果which codex能打印路径在 IDE 设置里把该路径配置为codex_cli_path。如果不能打印把 npm 全局 bin 目录加入 PATH或者用 nvm 重新安装 Node 后再安装 CLI避免 sudo 权限混乱。预防建议不要把全局 npm 包安装在系统级目录里优先使用 nvm 管理 Node。6.2 模型名称不识别现象Claude Code 启动后报错类似deepseek-v4-pro is not a model this version of claude code recognizes。可能原因CLI 版本过旧内置模型列表里没有该名称或者第三方服务返回的模型名与配置不一致或者用户把模型名拼写错了。检查方式claude --version codex --version再检查配置文件中model字段的实际值。解决方式升级 CLI 到最新版本改用服务商文档中明确支持的模型名如果接入的是兼容层确认兼容层暴露的端点格式是 OpenAI 风格还是 Anthropic 风格。6.3 API Key 与认证失败现象第一次发起对话就返回 401 Unauthorized或提示 API key 无效。可能原因环境变量没有在当前 shell 中生效Key 有前后空格使用了错误的 Key 类型服务商要求额外设置 base_url。检查方式echo $ANTHROPIC_API_KEY | wc -c echo $OPENAI_API_KEY | wc -c如果长度为 0说明没有导入。重新 export 或写入.env文件。如果使用第三方服务还要确认ANTHROPIC_BASE_URL或OPENAI_BASE_URL是否配置正确。不要在生产环境把 API Key 直接写在项目代码里。推荐使用环境变量、密钥管理工具或 CLI 的登录态。6.4 日志分析脚本执行异常现象脚本在 Windows 下运行报 UnicodeDecodeError或者生成的 Markdown 打开是乱码。可能原因日志文件使用了非 UTF-8 编码脚本读取时没有指定编码代码里写输出的编码没有设置。处理建议读取文件时使用open(..., encodingutf-8, errorsignore)写入报告时也指定utf-8。在 Windows 下运行 Python 时可以设置set PYTHONUTF81预防在 Skill 的SKILL.md中明确约束“所有文件读写都使用 UTF-8 编码”。这样 Agent 生成脚本时就会自动遵守。7. 最佳实践从 Vibe Coding 到生产级 Agent 工作流7.1 Skill 设计清单设计一个 Skill 不只要写一份 Markdown。下面这份清单可以用在验收时逐项检查description 是否说明触发场景工作流程是否包含可执行命令而不是含糊描述是否声明输入和输出文件位置是否限制 Agent 不能做什么是否包含错误处理步骤是否指定运行语言和依赖是否提供验证方式例如生成报告后打印路径是否需要人工确认的高风险操作标记7.2 学习环境与生产环境的差异同一个 Skill 在自己的笔记本上可用未必能直接部署到生产环境。两者的差异主要在三块权限、可审计性、稳定性。维度个人学习环境生产环境权限Agent 可以读写任意文件只允许读写指定目录禁止修改关键配置日志终端输出即可需要结构化日志和操作审计模型版本可以使用最新模型需要锁定模型版本避免输出漂移代码变更可以自动提交必须经过代码评审和 CI异常恢复重新运行即可需要回滚方案和告警7.3 给新手的下一步建议如果从来没有接触过 Codex 和 Claude Code建议按下面的顺序练习第一周只使用 Codex 或 Claude Code 完成一个小脚本的生成和运行。第二周把经常重复的任务写成 Skill并在一个项目里试用。第三周让 Agent 组合两个 Skill完成“分析-修改-验证”闭环。第四周加入 Git 分支、代码评审、测试和日志模拟一个小型生产发布流程。最终要记住的是Vibe Coding 的便利只有建立在清晰需求和可复用流程上才安全。Skill 不是银弹它只是把 Agent 的“自由发挥”约束在可管理的边界内。真正写得好不好仍然需要开发者具备判断代码质量、排查问题、设计流程的能力。工具会更新但这个判断力不会过时。