我是从 codex cli 出来就开始使用的,现在工作上完全使用 codex。我觉得 codex 并没有说的这么差而且只要用好基本能解决所有问题。
下面是一些基本情况大家了解一下
1、机器是 macboompro m1 max
2、使用语言为 java 开发都是 web 相关的项目 (最近在学 rust)
3、从今年 a÷ 出过公开敌对中国事件后我就没使用 claude code 了,账号我也发邮件让他们删除了
4、codex 我只使用 cli,插件没用过,一般都是在 vs 中删除多余的会话
看过贴吧很多帖子与问题示例后觉得很多人使用不好的原因是对模型缺乏一个基本的了解,所有我先给大家介绍一些模型的基本知识
一、模型的数据是哪里来的

公开可获取的互联网文本、技术博客、论坛、文档网站、百科内容、说明文档、博客文章、开源代码 (github)、额外授权的书籍、文档、人工清晰构造的高质量样本 (比如在强化学习和标注数据阶段模型公司就会出一些问题然后邀请专家来为这个问题编写高质量的回答

二、token 是什么

模型内部用于计算的最小文本单元,token 的切分由 tokenizer 决定,与自然语言的词法规则不完全一致 (大家可以通过这个网站去体验一下 https://tiktokenizer.f2api.com)

三、一个模型产生的大致阶段

1、预训练阶段
这一阶段是训练成本最高的,大模型训练的费用大部分都是花费在这个上面
预训练使用的是大量弱结构数据,包括自然语言与代码混合语料。数据不以任务、指令、问答为单位而是以连续文本流的形式输入。模型看到的只是 token 序列,这一阶段模型主要训练结构建模能力 (语言语法、代码语法、嵌套结构、长程依赖关系)、 统计语义关联 (哪些概念常一起出现,哪些模式在特定上下文中更高概率成立) 、跨域泛化能力 (不同语言、不同编程语言、不同写作风格之间的共享模式)。预训练模型不知道自己在回答问题不具备帮助用户解决问题不区分真实与虚假,只区分哪些 token 常见与罕见
2、标注训练
使用人工编写的高质量样本对模型进行监督训练,这些样本通常以指令、问题、代码需求等形式出现,并配有明确的理想回答。具体可参考 openai 的这篇论文 https://arxiv.org/pdf/2203.02155 (3.4 章节)
这一阶段的核心作用是约束模型的输出行为,让模型从单出的对互联网数据回忆续写文本转变为尝试按人类指令完成任务。标注训练本身并不显著增加新知识,而是让模型用已有知识解决用户的具体问题。
3、强化学习
在标注训练基础上,通过让人类对多个模型回答进行排序,训练奖励模型,再用强化学习算法调整主模型的输出概率分布。强化学习降低胡编概率、提升回答一致性,并强化安全边界与拒答行为用于调整输出倾向

上面这些内容了解一下就行,我自己也是懂了个皮毛所以里面肯定有很多错误。具体信息可以去看 Andrej Karpathy 的视频

b 站的飞天闪客也可稍微看一下
了解了这些后我们可以简单将大模型的一个会话抽象理解成一个持续输出的一维的 token 数组,你在上下文的输入会影响这次会话中模型的输出而且这个影响会发生的很快,当你发现模型的输出开始出现问题或者风格不是需要的最好检查一下你输入了什么,当然你也可以在发现问题时直接纠正,将他改造成你喜欢的样子。推荐在工作的工程中尽量减少语气化的输入 (你认为我在跟你嘻嘻哈哈么?我看起来现在是想跟你搞七捻三么)
毁灭吧我累了,猜猜我按下这个按钮会发生什么

了解了这些你大概就明白为什么你的模型总是不办事或者办事办的乱七八糟的,当然和模型本身的能力也是有关系的
接线来给大家介绍一下 codex cli

这是一个 code agent 你可以在本地或者 ide 插件中去使用,它能够使用内置工具帮助你从 0 开始完成一些编码任务
工程结构
模型层
负责理解指令、分析上下文、生成计划与代码,本质是一个经过对齐的代码模型。
执行层
负责把模型输出转化为可执行动作,例如:读文件、改代码、运行命令、调用工具,并记录完整执行轨迹。
环境层
即你当前的本地仓库或云环境,包括文件系统、git 状态、依赖环境、网络权限等。
Codex 启动时会构建一个指令链,不是简单拼一段 prompt。这个指令链在一次会话(CLI session /exec run)开始时构建完成,之后整个执行过程都基于它运行。
AGENTS.md 是配置规则的核心入口,Codex 会在执行任何任务前,自动搜索并加载 AGENTS.md 文件。这些文件不需要你在 prompt 中显式提到,只要存在,就会被自动纳入上下文窗口。

  1. 全局规则(Global)
  • 目录:~/.codex/
  • 优先级:
    • AGENTS.override.md
    • AGENTS.md
  • 只读取第一个非空文件
  1. 项目规则(Project)
  • 从项目根目录开始
  • 一直向下走到当前工作目录
  • 每一层目录最多加载一个文件,顺序为:
    • AGENTS.override.md
    • AGENTS.md
    • 备用文件名(如 TEAM_GUIDE.md)
  1. 合并规则
  • 所有命中的文件会按目录顺序拼接
  • 越靠近当前目录的规则优先级越高
  • 后出现的规则可以覆盖前面的约定
  1. 窗口大小与 rule 截断
  • 所有规则文件会被拼接进模型上下文
  • 超过上限后,后续规则不会被继续加载

以上是它默认的执行链,可以自己去配置加载的路径。官方文档中有说我就不详细说了

接下来讲讲 MCP

MCP 是 模型 用来接入外部工具和上下文的统一协议。
它解决的问题是:模型如何在不内嵌能力的前提下,安全、可控地使用外部系统。
我一般将它理解为微服务架构中的一个微服务
我只装了这三个 mcp,
context7
用来查开源项目的最新文档,模型工作时优先使用的是训练数据有些数据和技术可能太老。
GitHub - upstash/context7: Context7 MCP Server -- Up-to-date code documentation for LLMs and AI code editors
drawio
用来画图,效果不错,只尝试过一次。
GitHub - lgazo/drawio-mcp-server: Draw.io Model Context Protocol (MCP) Server
database
模型在工作时最好能了解你的数据模型,使用这个就可以让他在实现需求时结合数据库中的数据与表结构思考减少因为信息不完整时的错误实现,这个 mcp 只包含查询功能
MCP - 数据库查询 MCP

接下来说说 skill

这个东西在我的印象中好像出了很久了,但是站里还是有相当一部分再问,我觉得有点困惑 。
skill 本质就是将原本需要在 agents.md 中编写的一些规则抽象成一个单独的文档让模型在执行任务时可以自己根据 description 判断是否需要读取这些内容。它解决的是 agents.md 中内容爆炸的问题,agents.md 中的内容是第一次启动时才会构建,这样随着上下文的延长他就会离当前的上下文距离越远。skill 可以随时重新让模型读取,离当前上下文越近模型执行执行力就越高 (当时使用 atlas 看官方文档时的那个会话一直嘴硬跟我说使用必须手动用命令告诉模型使用 $skill-name, 我后面的测试中是不用的。模型会自己判断加载,当然如果你发现它不遵守也可手动在输入中告诉他遵守这个 skill。所以 skill 的描述不要太接近,相同的内容放在同一个 skill 中就行了,输入命令如果前方有你的输入记得加空格,命令如果是在最前面就不用)


然后讲讲 cli 中一些命令

我使用过的只用 init、review、resume 。其他的好像用不到啊
init
就是用来初始化你的项目生成 agents.md 的
这个东西我一般把他放在项目根目录初始化时直接告诉告诉他根据 agent-md-example/agent-init.md 中的规则初始化项目


v2-2025-12-19.zip
这个 google-java-style-guide.md 我是在网上找的然后整理成 md 的,是不是 google 的我也不确定,随便啦。
Google Java Style Guide
resume
用来恢复会话的
review
可以让来对比提交、分支、未提交的代码对比检验模型的实现是否正确的


一般都是用第 4 个自定义指令,让他明确的只校验当前功能相关的代码也减少一些 token 消耗,现在 review 也有额度了,元旦过后就加了。说实话其余的我真没用到过,大家如果需要可以去它官方文档中自行查询
Codex

接下来讲讲一些 chatgpt 的使用经验吧,说实话现在不用 gemini 的部分原因就是他的其他产品特别好用,比如会话记忆、自定义风格、自定义 gpt。5.2 更新后我感觉 gpt 风格变得越来越油腻和谄媚了,动不动就罗里吧嗦的说一堆废话,还特别喜欢一句话总结。我总结你 xxxx
自定义 gpt


这个功能创建和修改目前只支持 web,app 端可以使用创建好的但是不能修改或创建,他的作用就相当于你自定义一个带系统提示词的会话,这样就不用每次开新会话想让他做一些固定事情是还要跟它解释半天了,你把他理解成一个自定义 skill 就行比如翻译


这是我自定义的一个用来专门翻译的,以后我用这个 gpt 创建一个会话时直接将英文文档给他就行了


自定义风格
这个我就把我自己的个性化定义提示词给大家参考一下

Language & Tone
Default language: Chinese
Use technical, engineering-oriented language
State facts and conclusions only
No rhetorical or evaluative language

Default Output Rules (Strict)
Answer directly
No preamble, no small talk, no evaluation, no opening remarks
Do not restate the question
Do not use phrases like “this is a good question”, “let’s first”, “in conclusion”, etc.
No explanations by default
Maximum 5 lines unless explicitly requested

Explanation Rules
Explanations are allowed only if the prompt explicitly includes keywords:
“why”, “explain”, “reason”, “principle”, “details”, “expand”
If none of these keywords appear, treat the request as answer-only

Content Constraints
No tutorial-style writing
No background, history, or conceptual introductions
Include only information strictly required to answer the question
Prefer precise, verifiable technical statements

Optional Trigger Keywords
“answer only”: output conclusion only
“engineering perspective”: allow implementation details and trade-offs
“expand”: allow detailed explanation

Failure Condition
Any preamble, evaluative language, or unnecessary explanation counts as a failed response

知识库
有些论文或者书籍你可以在这里新建一个知识库,然后让模型将内容总结给你,提升信息的接收速度。这里一个知识库后面是一个沙箱环境的 linux 主机,你所有上传的文件都会保存在这个沙箱环境中


兄弟们燃尽了,一滴都没有了。其中说的有些不对的地方麻烦大家给我指正一下。写了几个小时整理这个文档,很多地方怕写不对写了又删好累啊。
这个内容太长了 SKILL 的分享我就放评论区,都只有 SKILL.md 没有其他的比如

  • scripts
  • references
  • assets
    因为都不是工具类的 skill,然后给大家分享一个获取 skill 的网站
    https://skillsmp.com
    我觉得在 ai 中自己写是最符合自己需求的,需要什么就创建什么

    目前我感觉我的配置 codex 会存在几个问题,有时他不会遵守先计划再编码的规则直接就开始编码的。还有就是代码的结构有时会有点过度封装

然后就是我基于我目前的 skill 与配置给大家演示一下效果。从 0 开始简单的 copy 一个开源项目

看看 token 消耗
codex 简单复现项目地址,后端完成时间 18 分钟,前端完成时间为 10 分钟。前端我没有任何 skill 或者 agents.md 规则效果可能会差一点

token 消耗前后对比


吐槽一下,codex 感觉元旦后 token 消耗变高了,我一周只用 5 天都快感觉不够用了。以前还能剩下百分之 50,现在都只能剩下 25 了。还有上下压缩的问题,有时看剩余明明有 30,它就开始压缩了。不过压缩效果很好,目前看来没有丢失过信息,就是压缩会很慢。


📌 转载信息
原作者:
heidi
转载时间:
2026/1/11 08:32:36

标签: 代码生成, 大语言模型, codex CLi, 编程工具, 模型训练

添加新评论