开源AI开发工具:OpenAI Codex CLI

一、概述

OpenAI Codex CLI 是一款开源命令行工具,可将我们最新推理模型的强大功能直接带到您的终端。它充当轻量级的编码代理,可以**在您的本地计算机上读取、修改和运行代码,**从而帮助您更快地构建功能、修复错误并理解不熟悉的代码。由于 CLI 在本地运行,因此除非您选择共享,否则您的源代码永远不会离开您的环境。
有关更多详细信息,请直接查看 Github repo - https://github.com/openai/codex

二、主要功能

  • 零设置安装 -- 只需一个npm install -g @openai/codex(或codex --upgrade)即可开始。
  • 多模式输入------传递文本、屏幕截图或图表,并让代理相应地生成或编辑代码。
  • 丰富的审批工作流程 ------通过三种不同的模式选择您想要的实际操作方式(请参阅审批模式)。
  • 完全在您的终端中运行- 非常适合快速迭代而无需切换上下文。

三、审批模式

|---------------------|--------------------------------------------|--------------------------------|
| 模式 | 代理可以做什么 | 何时使用 |
| 建议(Suggest,默认) | 读取文件。建议编辑和 shell 命令,但在进行更改或执行命令之前需要您的批准。 | 安全探索、代码审查、学习代码库。 |
| 自动编辑(Auto Edit) | 自动读写文件。运行 shell命令前仍会询问。 | 重构或重复编辑时您需要留意副作用。 |
| 全自动(Full Auto) | 在当前目录范围内的沙盒、网络禁用环境中自主读取、写入和执行命令。 | 较长的任务,例如,在您喝咖啡时修复损坏的构建或制作原型功能。 |

专业提示:如果目录不受版本控制,Codex 会在进入自动编辑或全自动编辑之前向您发出警告。

四、快速入门

1.安装npm install -g @openai/codex
2.验证 :导出您的 OpenAI API 密钥(export OPENAI_API_KEY="<OAI_KEY>")。
3.在建议模式下运行 :从项目根目录,输入 codex 并询问例如:"向我解释这个 repo。"
4.切换模式:根据需要添加标志:

  • codex --auto-edit
  • codex --full-auto
    5.审核输出:Codex 会以内联方式打印建议的补丁和 Shell 命令。您可以根据需要批准、拒绝或进行调整。

6.过程示例

复制代码
#下载和安装NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash


\. "$HOME/.nvm/nvm.sh"

# 下载安装 Node.js:
nvm install 22

# 验证Node.js版本:
node -v # 输出 "v22.14.0".
nvm current # 输出 "v22.14.0".

# 验证NPM版本
npm -v # Should print "10.9.2".

#全局安装
npm install -g @openai/codex

#设置OpenAI API密钥:
export OPENAI_API_KEY="your-api-key-here"

#设置模型
codex --model gpt-4.1-2025-04-14

#让模型设置永久生效

mkdir -p ~/.codex
echo "model: gpt-4.1-2025-04-14" > ~/.codex/config.yaml

#基本使用方式
#交互式运行
codex

#使用提示作为输入
codex "解释这个代码库给我"

#完全自动模式
codex --approval-mode full-auto "创建一个最精美的待办任务应用"

#高级配置
#Codex 会查找 ~/.codex/ 目录下的配置文件:
# ~/.codex/config.yaml
model: o4-mini # 默认模型
fullAutoErrorMode: ask-user # 或 ignore-and-continue

#自定义指令
# ~/.codex/instructions.md
- 不要用表情符号回应
- 只有当我明确提到时才使用 git 命令

todo list例子(网上的一个) ,下面直接执行

复制代码
# AI超元域频道原创视频

codex --model gpt-4.1-2025-04-14  --approval-mode full-auto "创建一个现代化的Todo List应用,具有以下功能:

1. 任务管理功能:
   - 添加新任务
   - 标记任务为完成/未完成
   - 编辑现有任务
   - 删除任务
   - 按优先级分类任务(高、中、低)
   - 任务截止日期设置

2. 分类与过滤:
   - 创建任务分类(如工作、个人、学习等)
   - 按完成状态过滤任务
   - 按截止日期排序
   - 搜索任务功能

3. 用户体验:
   - 响应式设计,适配移动端和桌面端
   - 拖放重新排序任务
   - 深色/浅色主题切换
   - 简洁美观的UI设计

4. 本地存储:
   - 使用localStorage保存任务数据
   - 导入/导出任务列表功能

使用HTML、CSS和JavaScript实现,不依赖任何后端服务。确保代码结构清晰,UI交互流畅,并提供适当的用户反馈。"

五、常问问题

1、Codex 使用哪些模型?

Codex 默认以o4‑mini 为目标平台,以实现快速推理。您可以指定 Responses API 中提供的任何模型,例如codex -m o3。我们还建议您验证您的开发者帐户,以便在 API 中查看思路链摘要。

2、Codex 会将我的代码上传到 OpenAI 吗?

不会。所有文件读取、写入和命令执行都在本地进行。只有您的提示符、高级上下文和可选的差异摘要会被发送到模型进行生成。

3、如何更改批准模式?

使用适当的标志(--suggest--auto-edit--full-auto)启动 Codex 或使用会话中的快捷方式/mode进行切换。

4、支持哪些平台?

Codex 正式支持 macOS 和 Linux。Windows 支持尚处于实验阶段,可能需要 WSL。

5、代理卡住或超时------我该怎么办?

  • 确保您拥有稳定的互联网连接以进行 API 调用。
  • 尝试CTRL‑C取消当前步骤并要求 Codex 继续。
  • 如果使用全自动模式,请确认沙盒有权访问所需的目录。

6、如何更新 Codex?

codex --upgrade随时运行以获取最新版本。

六、自制典型功能详解

一个用户自制的 OpenAI Codex CLI 的目标是让你能够通过终端与 Codex 模型进行交互,而无需编写额外的 Python 脚本或使用 OpenAI Playground。它可以极大地提高你在开发、实验和快速生成代码片段时的效率。

1、自然语言生成代码

bash 复制代码
> codex "Create a Python function that reverses a string"

返回:

python 复制代码
def reverse_string(s):
    return s[::-1]

2、终端命令自动补全 / 转换

bash 复制代码
> codex "List all files including hidden ones, with details, sorted by size"

返回:

bash 复制代码
ls -alhS

3、代码重构/优化

bash 复制代码
> codex optimize main.py

Codex 会分析 main.py 并输出更简洁或更高效的代码版本。

4**、代码解释**

bash 复制代码
> codex explain server.js

Codex 会逐行解释 server.js 的逻辑,类似 ChatGPT 的"代码解说模式"。

5**、快速生成项目结构**

bash 复制代码
> codex "Initialize a basic Flask app"

返回:

bash 复制代码
📁 my-flask-app
 ┣ app.py
 ┣ templates/
 ┗ requirements.txt

6、Git 帮助命令

bash 复制代码
> codex "Undo last commit but keep changes"

返回:

bash 复制代码
git reset --soft HEAD~1

七、自制的实现方式

1、使用方式一:结合 OpenAI API + Bash

可以创建一个脚本(如 codex.sh)调用 OpenAI GPT API:

bash 复制代码
#!/bin/bash
prompt="$*"
curl https://api.openai.com/v1/completions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"model\": \"text-davinci-003\",
    \"prompt\": \"$prompt\",
    \"max_tokens\": 150
  }"

然后用法:

bash 复制代码
./codex.sh "How to write a Python decorator?"

2、使用方式二:GitHub 社区项目

以下是一些社区项目,提供了 Codex CLI 类似的体验:

3、适用场景

场景 示例
写脚本/函数 "写一个 bash 脚本自动备份文件夹到远程服务器"
工具命令提示 "我怎么查看一个 Docker 容器的日志?"
自动补全 只输入 "git rebase ..." 然后让 Codex 猜后面
调试代码 复制代码片段后让 Codex 帮你找 bug
创建项目原型 一句话创建 Node.js 或 Python 项目

4、总结

OpenAI Codex CLI 是一个"以自然语言控制终端/代码的接口"概念的实践,可以极大提升开发效率。虽然目前没有官方标准产品,但可以通过 OpenAI API + Shell 脚本 + 社区工具,自行打造一个属于你的 Codex CLI。

七、 自制完整的 Codex CLI 脚本

1、明确脚本的需求和功能

在开始编写任何代码之前,最重要的是明确你的 Codex CLI 脚本需要完成什么任务。例如:

  • 它需要与 OpenAI Codex API 交互吗?如果是,需要哪些功能(代码生成、编辑、补全等)?
  • 它需要处理哪些输入(例如,从命令行参数、文件读取)?
  • 它需要产生哪些输出(例如,在终端打印、写入文件)?
  • 是否有特定的用户交互需求?
  • 是否需要处理错误和异常情况?

2、选择编程语言

选择一种你熟悉且适合 CLI 脚本开发的编程语言。一些常见的选择包括:

  • Python: 拥有丰富的库(如 argparse 用于命令行参数解析,requests 用于 HTTP 请求),易于学习和使用。
  • Bash: 如果你的脚本主要涉及系统操作和调用其他命令行工具,Bash 是一个不错的选择。
  • Node.js: 如果你熟悉 JavaScript 并且可能需要处理异步操作或与 Web 服务交互,Node.js 也是一个选项。

在接下来的示例中,我们将使用 Python,因为它在处理 API 交互和文本处理方面非常方便。

3、设置项目结构

一个清晰的项目结构有助于组织你的代码并使其更易于维护。一个基本的结构可能如下所示:

复制代码
codex_cli/
├── codex_cli.py      # 主要脚本文件
├── config.py         # 配置文件(例如,API 密钥)
├── utils.py          # 实用函数
└── README.md         # 项目说明

4、处理命令行参数

CLI 脚本通常需要接受用户通过命令行传递的参数。Python 的 argparse 模块可以帮助你轻松地定义和解析这些参数。

python 复制代码
# codex_cli.py
import argparse

def main():
    parser = argparse.ArgumentParser(description="A CLI tool for interacting with Codex.")
    parser.add_argument("prompt", help="The prompt to send to Codex.")
    parser.add_argument("-n", "--num_completions", type=int, default=1, help="Number of completions to generate.")
    parser.add_argument("-m", "--model", default="code-davinci-002", help="The Codex model to use.")
    parser.add_argument("-o", "--output", help="Optional file to save the output.")
    args = parser.parse_args()

    print(f"Prompt: {args.prompt}")
    print(f"Number of completions: {args.num_completions}")
    print(f"Model: {args.model}")
    if args.output:
        print(f"Output file: {args.output}")

if __name__ == "__main__":
    main()

现在,用户可以通过命令行传递 prompt 以及可选的参数 -n, -m, 和 -o。例如:

bash 复制代码
python codex_cli.py "Write a Python function to calculate factorial" -n 2 -m code-cushman-001 -o output.py

5、配置 API 密钥

为了与 OpenAI Codex API 交互,你需要一个 API 密钥。最好将这个密钥存储在一个配置文件中,而不是硬编码在脚本中。

python 复制代码
# config.py
import os
from dotenv import load_dotenv

load_dotenv()
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")

if not OPENAI_API_KEY:
    raise ValueError("OPENAI_API_KEY environment variable not set. Please create a .env file with your API key.")

确保有一个 .env 文件在你的项目根目录下,内容如下:

复制代码
OPENAI_API_KEY=YOUR_OPENAI_API_KEY

6、与 Codex API 交互

使用 requests 库或其他 HTTP 库向 OpenAI API 发送请求。需要构建正确的请求头和请求体。

python 复制代码
# codex_cli.py
import argparse
import requests
import config
import json

def generate_code(prompt, num_completions=1, model="code-davinci-002"):
    api_url = "https://api.openai.com/v1/completions"
    headers = {
        "Authorization": f"Bearer {config.OPENAI_API_KEY}",
        "Content-Type": "application/json"
    }
    data = {
        "prompt": prompt,
        "model": model,
        "n": num_completions,
        "max_tokens": 256  # 可以根据需要调整
    }
    try:
        response = requests.post(api_url, headers=headers, json=data)
        response.raise_for_status()  # 如果请求失败,抛出 HTTPError 异常
        return response.json()["choices"]
    except requests.exceptions.RequestException as e:
        print(f"Error communicating with OpenAI API: {e}")
        return None

def main():
    parser = argparse.ArgumentParser(description="A CLI tool for interacting with Codex.")
    parser.add_argument("prompt", help="The prompt to send to Codex.")
    parser.add_argument("-n", "--num_completions", type=int, default=1, help="Number of completions to generate.")
    parser.add_argument("-m", "--model", default="code-davinci-002", help="The Codex model to use.")
    parser.add_argument("-o", "--output", help="Optional file to save the output.")
    args = parser.parse_args()

    completions = generate_code(args.prompt, args.num_completions, args.model)

    if completions:
        if args.output:
            with open(args.output, "w") as f:
                for i, choice in enumerate(completions):
                    f.write(f"-- Completion {i+1} --\n")
                    f.write(choice["text"] + "\n\n")
            print(f"Completions saved to {args.output}")
        else:
            for i, choice in enumerate(completions):
                print(f"-- Completion {i+1} --\n")
                print(choice["text"])

if __name__ == "__main__":
    main()

7、处理输出

脚本需要将 Codex API 返回的结果以用户友好的方式展示出来。这可能包括在终端打印代码、将其保存到文件中,或者进行进一步的处理。

在上面的示例中,如果提供了 -o 参数,生成的代码补全将被写入指定的文件;否则,它们将被打印到终端。

8、错误处理和异常管理

一个健壮的 CLI 脚本应该能够处理各种错误情况,例如 API 请求失败、无效的输入、文件写入错误等。使用 try...except 块来捕获和处理这些异常。

generate_code 函数中,我们使用了 response.raise_for_status() 来检查 API 请求是否成功,并在失败时抛出异常。

9、添加实用功能(可选)

根据具体需求,可以添加额外的实用功能,例如:

  • 历史记录: 记录用户之前的 prompt 和生成的代码。
  • 模板: 允许用户使用预定义的 prompt 模板。
  • 代码执行: 如果生成的是可执行代码,可以提供一个选项来运行它(需要谨慎处理安全性)。
  • 更复杂的参数处理: 使用更高级的 argparse 功能来支持更复杂的命令行选项。

10、编写文档 (README)

一个好的 README 文件对于让其他用户(或者未来的你)了解如何使用你的脚本至关重要。它应该包括:

  • 脚本的简要描述。
  • 如何安装和配置(例如,设置 API 密钥)。
  • 如何使用脚本的示例。
  • 脚本支持的选项和参数。

11、测试

在发布或广泛使用脚本之前,进行彻底的测试非常重要。测试应该覆盖各种场景,包括正常的输入、边缘情况和错误输入。

  • 单元测试: 测试脚本中的各个函数是否按预期工作。
  • 集成测试: 测试脚本的各个组件是否能协同工作。
  • 手动测试: 亲自运行脚本,模拟用户的使用场景。

12、打包和分发(可选)

如果希望其他人也能方便地使用你的脚本,可以考虑将其打包成可执行文件或发布到包管理器(例如,PyPI 对于 Python 包)。

对于 Python 脚本,可以使用工具如 PyInstallercx_Freeze 将其打包成独立的可执行文件。

13、总结

编写一个完整的 Codex CLI 脚本是一个迭代的过程。从明确需求开始,逐步构建功能,并始终关注用户体验和代码质量。记住处理错误、编写清晰的文档和进行充分的测试是至关重要的步骤。

八、自制相关信息

以下是一个典型的用户自制 OpenAI Codex CLI 可能具备的功能、实现方式以及一些考虑事项:

1、核心功能(可能包含但不限于):

  1. 代码生成 (Completion):

    • 接受文本提示 (Prompt): 允许用户在命令行中输入自然语言的指令或代码片段作为 Codex 的输入。
    • 指定生成数量: 可以设置生成多个代码补全结果。
    • 选择模型: 允许用户指定要使用的 Codex 模型(例如 code-davinci-002, code-cushman-001 等)。
    • 控制生成参数: 提供选项来调整 Codex API 的各种参数,例如:
      • max_tokens: 生成代码的最大长度。
      • temperature: 控制生成代码的随机性。
      • top_p: 控制生成代码的核采样概率。
      • stop: 定义生成代码的停止序列。
    • 输出格式化: 以清晰易读的方式在终端显示生成的代码,或者提供保存到文件的选项。
  2. 代码编辑 (Edit):

    • 提供输入代码和指令: 允许用户输入一段现有的代码,并提供一个自然语言的指令来修改这段代码(例如,"将这个 Python 函数中的变量名 x 改为 value")。
    • 指定模型: 选择用于编辑任务的 Codex 模型。
    • 控制编辑参数: 类似于代码生成,可以调整 temperaturetop_p 等参数。
    • 显示编辑后的代码: 在终端显示修改后的代码,或提供保存选项。
  3. 代码补全 (Inference):

    • 输入部分代码: 允许用户输入一段不完整的代码。
    • 模型自动补全: Codex 基于上下文补全剩余的代码。
    • 参数控制: 同样可以调整相关参数。
  4. 配置管理:

    • API 密钥管理: 提供安全存储和管理 OpenAI API 密钥的方式(例如,通过环境变量或配置文件)。
    • 默认参数设置: 允许用户设置常用的默认模型、生成数量等参数,避免每次都重复输入。
  5. 实用工具:

    • 历史记录: 记录用户之前的 prompt 和生成的代码。
    • 模板功能: 允许用户保存和使用常用的 prompt 模板。
    • 与其他工具集成: 可能会与其他命令行工具(例如代码格式化工具)集成。

2、实现方式 (以 Python 为例):

正如之前的回答中提到的,一个 Codex CLI 通常会使用编程语言(如 Python)结合相关的库来实现:

  • argparse: 用于解析命令行参数,使得用户可以通过命令行传递 prompt、模型名称、生成数量等。
  • requests: 用于发送 HTTP 请求到 OpenAI Codex API。
  • dotenvconfigparser: 用于管理 API 密钥和配置信息。
  • json: 用于处理 API 返回的 JSON 格式数据。

一个简化的 Python 实现示例(仅展示代码生成的核心逻辑):

python 复制代码
import argparse
import requests
import json
import os
from dotenv import load_dotenv

load_dotenv()
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
API_URL = "https://api.openai.com/v1/completions"

def generate_code(prompt, model="code-davinci-002", n=1, max_tokens=256, temperature=0.7):
    headers = {
        "Authorization": f"Bearer {OPENAI_API_KEY}",
        "Content-Type": "application/json"
    }
    data = {
        "prompt": prompt,
        "model": model,
        "n": n,
        "max_tokens": max_tokens,
        "temperature": temperature
    }
    try:
        response = requests.post(API_URL, headers=headers, json=data)
        response.raise_for_status()
        return response.json()["choices"]
    except requests.exceptions.RequestException as e:
        print(f"Error: {e}")
        return None

def main():
    parser = argparse.ArgumentParser(description="OpenAI Codex CLI")
    parser.add_argument("prompt", help="The prompt for Codex")
    parser.add_argument("-n", "--num_completions", type=int, default=1, help="Number of completions to generate")
    parser.add_argument("-m", "--model", default="code-davinci-002", help="The Codex model to use")
    parser.add_argument("--max_tokens", type=int, default=256, help="Maximum number of tokens to generate")
    parser.add_argument("--temperature", type=float, default=0.7, help="Sampling temperature (0.0 - 1.0)")
    parser.add_argument("-o", "--output", help="Optional file to save the output")
    args = parser.parse_args()

    if not OPENAI_API_KEY:
        print("Error: OPENAI_API_KEY environment variable not set.")
        return

    completions = generate_code(
        args.prompt,
        model=args.model,
        n=args.num_completions,
        max_tokens=args.max_tokens,
        temperature=args.temperature
    )

    if completions:
        if args.output:
            with open(args.output, "w") as f:
                for i, choice in enumerate(completions):
                    f.write(f"-- Completion {i+1} --\n")
                    f.write(choice["text"] + "\n\n")
            print(f"Completions saved to {args.output}")
        else:
            for i, choice in enumerate(completions):
                print(f"-- Completion {i+1} --\n")
                print(choice["text"])

if __name__ == "__main__":
    main()

3、如何使用(基于上述示例):

  1. 安装依赖:

    bash 复制代码
    pip install requests python-dotenv
  2. 设置 API 密钥: 在项目根目录下创建一个 .env 文件,并添加你的 OpenAI API 密钥:

    复制代码
    OPENAI_API_KEY=sk-...
  3. 运行脚本:

    bash 复制代码
    python your_script_name.py "Write a Python function to calculate the sum of a list" -n 2 -m code-cushman-001 --max_tokens 100

    或者将结果保存到文件:

    bash 复制代码
    python your_script_name.py "Write a Javascript function to reverse a string" -o reversed_string.js

4、优点:

  • 便捷性: 无需编写额外的代码即可快速与 Codex 交互。
  • 效率: 可以直接在终端进行实验和生成代码片段。
  • 可定制性: 用户可以根据自己的需求定制 CLI 的功能和参数。
  • 自动化: 可以将 Codex 集成到 shell 脚本或其他自动化流程中。

5、考虑事项:

  • API 费用: 每次调用 Codex API 都会产生费用,需要注意使用情况。
  • 安全性: 需要妥善保管 API 密钥。
  • 错误处理: 需要实现完善的错误处理机制,以应对 API 调用失败、网络问题等。
  • 用户体验: 设计清晰的命令行参数和输出格式,提高用户友好性。

一个用户自制的 OpenAI Codex CLI 是一个强大的工具,它允许开发者和技术人员通过命令行界面直接利用 Codex 的代码生成和编辑能力。通过合理地设计和实现,它可以显著提高与 Codex 交互的效率和便捷性。如果你经常需要使用 Codex,构建一个符合自己工作流程的 CLI 是一个非常有价值的项目。

6、官方与自制的区别

  • 官方性与支持:

    • 官方 CLI: 由 OpenAI 官方开发、维护和支持。这意味着它更可能与 Codex API 的最新功能保持同步,并且有官方的文档和潜在的技术支持。
    • 用户自制 CLI: 由个人或社区开发,维护和支持取决于开发者个人的意愿和能力。可能无法及时跟进 API 的更新,文档和支持也可能有限。
  • 安装与配置:

    • 官方 CLI: 根据链接中的说明,它可能需要特定的安装步骤,例如使用 pip install openai 并进行特定的配置(例如,通过 openai configure 设置 API 密钥)。
    • 用户自制 CLI: 安装和配置方式取决于开发者的选择,通常也是使用 pip install 安装依赖库,并通过环境变量或配置文件管理 API 密钥。
  • 功能集:

    • 官方 CLI: 官方工具的功能集通常会紧密围绕 Codex API 的核心能力展开,并经过精心设计以提供最佳的用户体验。从链接的"Getting Started"来看,它似乎专注于代码补全和生成,并提供了模型选择、最大 token 数、温度等参数的控制。
    • 用户自制 CLI: 功能集可能更广泛或更狭窄,取决于开发者的具体需求和实现。一些用户可能会添加额外的实用功能,如历史记录、模板等。
  • 更新和维护:

    • 官方 CLI: OpenAI 会负责官方 CLI 的更新和维护,以修复 bug、添加新功能并兼容 API 的变化。
    • 用户自制 CLI: 更新和维护完全取决于开发者。如果开发者停止维护,工具可能会过时或无法使用。
  • 信任和安全性:

    • 官方 CLI: 使用官方工具通常在安全性方面更有保障,因为它是 OpenAI 官方发布的。
    • 用户自制 CLI: 需要用户自行评估代码的安全性,特别是如果从非信任的来源获取。
相关推荐
Mintopia8 小时前
OpenClaw 对软件行业产生的影响
人工智能
陈广亮9 小时前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能
会写代码的柯基犬9 小时前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm
Mintopia10 小时前
OpenClaw 是什么?为什么节后热度如此之高?
人工智能
爱可生开源社区10 小时前
DBA 的未来?八位行业先锋的年度圆桌讨论
人工智能·dba
叁两12 小时前
用opencode打造全自动公众号写作流水线,AI 代笔太香了!
前端·人工智能·agent
前端付豪13 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
strayCat2325513 小时前
Clawdbot 源码解读 7: 扩展机制
人工智能·开源