在 Ubuntu 24.04 系统上安装并使用 Codex CLI

在 Ubuntu 24.04 系统上安装并使用 Codex CLI

前言

在命令行环境中使用 AI 辅助编程工具,能够极大提升开发效率。Codex CLI 是 OpenAI 推出的命令行编码智能体,能够通过自然语言提示帮助你生成代码、重构、执行命令、分析项目。以下指南适用于 Ubuntu 24.04 系统,展示如何使用 nvm 安装 Node.js,再用 npm 全局安装 Codex CLI 并验证安装。


一、准备环境:安装 nvm 并切换 Shell 环境

我们首先安装 Node.js 版本管理工具 nvm(Node Version Manager),然后使用它来安装 Node.js。这样做的好处是便于切换多个版本并保持环境整洁。

# 下载并运行 nvm 安装脚本curl -o‑ https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh |bash# 使 nvm 脚本立即生效(无需重启 shell)\. "$HOME/.nvm/nvm.sh"
说明:上述脚本从官方仓库下载并运行 nvm 安装脚本。然后我们用 \. "$HOME/.nvm/nvm.sh" 来加载 nvm 到当前 shell 环境,从而立即可用。安装完成后,建议检查 ~/.bashrc~/.zshrc 是否已包含 nvm 初始化代码(nvm 安装脚本一般会自动添加)。如果你以后在新终端中仍无法使用 nvm,可能需要手动 source ~/.bashrc 或重启终端。

二、使用 nvm 安装 Node.js

安装好 nvm 之后,我们使用它来安装 Node.js 的指定版本(例如最新版 25 系列)。

# 安装 Node.js 版本 25 nvm install25# 验证 Node.js 是否安装成功 node -v # 应该输出像 “v25.1.0” 这种格式npm -v # 应该输出 npm 的版本号,例如 “11.6.2”
说明:本示例使用 Node.js 25(如用户示例中所写)。你也可以使用其它版本,只要满足工具的最低要求。根据官方文档,Codex CLI 要求 Node.js 版本 22 或以上 才能正常运行。([API易-帮助中心 - AI大模型 API聚合平台为您服务][1])如果你已经使用 nvm install 25,但 node -v 仍显示旧版本,你可能需要执行 nvm use 25,并用 nvm alias default 25 设置默认。若网络或镜像有问题(尤其在国内环境),建议使用淘宝、清华等镜像同步 Node.js 或 npm 镜像。

三、通过 npm 全局安装 Codex CLI

在 Node.js 环境可用之后,就可以安装 Codex CLI。

# 通过 npm 全局安装 Codex CLInpm i -g @openai/codex 
说明:安装命令来自官方:npm install -g @openai/codex。([developers.openai.com][2])如果出现权限错误(如 EACCES),建议不要长期使用 sudo npm install -g,而是修复 npm 全局安装目录的权限,或者使用用户目录方式安装。([ZEEKLOG][3])在国内网络环境,可能需要配置 npm 镜像或代理,以便顺利下载安装包。

四、确认是否安装成功

安装完成后,可以运行以下命令来验证是否安装成功,并查看版本号。

codex --version # 例如输出 “0.42.0”
说明:若命令无响应或未找到 codex,请确认全局安装路径是否在 PATH 中。安装成功后,首次运行 codex 时,工具通常会提示你进行认证(例如登录或设置 API Key)以使用其功能。([developers.openai.com][2])如果你看到版本号输出(如 0.42.0)即说明安装过程已正确执行。

五、配置与使用:API Key、模式与初步使用

5.1 配置 OPENAI_API_KEY

为了让 Codex CLI 能够调用 OpenAI 模型生成代码,你需要配置你的 API 密钥。通常做法是在 shell 配置文件中添加:

exportOPENAI_API_KEY="你的‑OpenAI‑API‑密钥"

然后重新加载终端或运行 source ~/.bashrc(或 ~/.zshrc)。很多教程也建议将其加入 ~/.bash_profile~/.zshrc。([API易-帮助中心 - AI大模型 API聚合平台为您服务][1])

5.2 模式(approval‑mode)说明

Codex CLI 提供几种不同的自主级别模式,允许你控制 AI 对代码的操作权限:([ZEEKLOG][4])

模式描述适合场景
suggest(默认)AI 提出建议,需要你手动确认修改或命令从熟悉工具、初次使用时推荐
auto‑editAI 自动修改文件,shell 命令仍需确认想快速修改代码但仍保留监督
full‑autoAI 自动读写文件、执行命令(沙箱模式)高度自动化场景,但建议在 Git 仓库且有备份时使用

使用示例:

codex "重构 Dashboard 组件为 React Hooks 写法" codex --approval-mode auto-edit "将全部 .js 文件转换为 .tsx 并添加类型注释" codex --approval-mode full-auto "生成一个完整的 TODO 应用,并运行测试"

5.3 初次运行

安装、配置完成后,你可以尝试在任意代码项目根目录运行:

codex 

然后输入你的自然语言提示,例如:

“分析这个项目中所有未用的依赖并生成报告”
“为 src/utils/createUser.ts 编写单元测试”

工具会读取项目、提出建议或修改,并显示差异。你可以审核后应用。

Read more

leetcode 707. 设计链表

一.题目描述 你可以选择使用单链表或者双链表,设计并实现自己的链表。 单链表中的节点应该具备两个属性:val 和 next 。val 是当前节点的值,next 是指向下一个节点的指针/引用。 如果是双向链表,则还需要属性 prev 以指示链表中的上一个节点。假设链表中的所有节点下标从 0 开始。 实现 MyLinkedList 类: * MyLinkedList() 初始化 MyLinkedList 对象。 * int get(int index) 获取链表中下标为 index 的节点的值。如果下标无效,则返回 -1 。 * void addAtHead(int val) 将一个值为 val 的节点插入到链表中第一个元素之前。在插入完成后,新节点会成为链表的第一个节点。 * void addAtTail(int val)

By Ne0inhk

VOC vs COCO vs YOLO格式终极对比:2025年目标检测项目到底该选哪个标注格式?避坑指南+决策树

维度 / 特性VOC 格式 (XML)COCO 格式 (JSON)YOLO 格式 (TXT)设计初衷PASCAL VOC 竞赛标准,重可读性与完整性MS COCO 竞赛标准,面向大规模、多任务YOLO 系列原生格式,为极致训练效率而生文件类型XMLJSONTXT典型扩展名.xml(每张图片一个).json(整数据集一个或几个大文件).txt(每张图片一个)代表数据集PASCAL VOC 2007/2012MS COCODarknet / Ultralytics 训练集数据结构单图单 XML,含尺寸、难度等丰富元数据集中式 JSON,ID 关联图像与标注,支持关键点/分割单图单 TXT,每行“class x_center y_center width height”

By Ne0inhk

SLAM技术之FAST_LIO和FAST_LIO2算法复现

FAST_LIO与FAST_LIO2算法复现指南 FAST_LIO(Fast LiDAR-Inertial Odometry)及其改进版FAST_LIO2是高效的激光雷达-惯性里程计算法,基于紧耦合的迭代误差状态卡尔曼滤波(IESKF)实现。以下是复现关键步骤: 环境配置 系统要求:Ubuntu 18.04/20.04,ROS Melodic/Noetic 依赖安装: sudo apt-get install ros-${ROS_DISTRO}-cv-bridge ros-${ROS_DISTRO}-tf sudo apt-get install libomp-dev libceres-dev Eigen3.3.7+:需手动安装高版本Eigen(FAST_LIO2要求Eigen≥3.3.7)

By Ne0inhk
《链表面试基础看点:这里不止“快慢指针”的完美实现,更懂“哨兵节点”的巧妙运用》

《链表面试基础看点:这里不止“快慢指针”的完美实现,更懂“哨兵节点”的巧妙运用》

🔥@晨非辰Tong:个人主页  👀专栏:《C语言》、《数据结构与算法》、《数据结构与算法刷题集》 💪学习阶段:C语言、数据结构与算法初学者 ⏳“人理解迭代,神理解递归。” 引言:链表刷题进行时。寻找中间结点,看似简单,但你的解法是否考虑了所有边界情况?本文手把手带你用“快慢指针”写出完美解,以及“哨兵节点”对合并链表的简化实现。 目录 1.  876. 链表的中间结点 - 力扣(LeetCode)(快慢指针) 2.  21. 合并两个有序链表 - 力扣(LeetCode) 1.  876. 链表的中间结点 - 力扣(LeetCode)(快慢指针) 方法一:遍历链表计算总大小,算出mid,将首节点指针向后mid个节点。(容易想到) 方法二:使用快、

By Ne0inhk