Codex CLI - 自然语言命令行界面

news2025/5/12 9:58:31

在这里插入图片描述

本文翻译整理自:https://github.com/microsoft/Codex-CLI


文章目录

    • 一、关于 Codex CLI
      • 相关链接资源
    • 二、安装
      • 系统要求
      • 安装步骤
    • 三、基本使用
      • 1、基础操作
      • 2、多轮模式
    • 四、命令参考
    • 五、提示工程与上下文文件
      • 自定义上下文
    • 六、故障排查
    • 七、FAQ
      • 如何查询可用OpenAI引擎?
      • 是否支持Azure运行?


一、关于 Codex CLI

本项目利用 GPT-3 Codex 将自然语言指令转换为 PowerShell、Z shell 和 Bash 中的命令。



命令行界面(CLI)是我们与机器交互的第一个主要用户界面。它功能强大,几乎可以完成任何操作,但要求用户必须极其精确地表达意图——用户需要_掌握计算机的语言_。

随着大语言模型(LLM)的出现,特别是经过代码训练的模型,现在可以使用自然语言(NL)与CLI进行交互。这些模型能充分理解自然语言_和_代码,实现两者之间的转换。

本项目旨在提供跨Shell的 NL->代码转换体验,让用户能用自然语言操作熟悉的CLI。
用户输入如"what’s my IP address"的指令,按下Ctrl + G即可获得符合当前Shell语法的建议命令。
项目直接使用GPT-3 Codex模型(未针对该任务专门训练),通过提示工程(见下文章节)引导Codex生成正确命令。

注意:模型仍可能出错!不要运行你不理解的命令。如果不确定命令作用,请按Ctrl + C取消

本项目技术灵感来源于zsh_codex,扩展了其功能以支持多Shell,并定制了传递给模型的提示(见下文提示工程部分)。


相关链接资源

  • github : https://github.com/microsoft/Codex-CLI
  • 官网:https://openai.com/blog/openai-codex/
  • 官方文档:https://beta.openai.com/docs/
  • Demo/在线试用:https://mybuild.microsoft.com/
  • License : MIT

二、安装

系统要求

  • Python 3.7.1+
    • [Windows]: 需将Python添加至PATH环境变量
  • OpenAI账号
    • OpenAI API密钥
    • OpenAI组织ID。若属多组织,请在获取ID前于默认组织设置页选择有权访问Codex引擎的组织
    • OpenAI引擎ID。例如code-davinci-002code-cushman-001,详见可用引擎查询

安装步骤

请根据PowerShell、bash或zsh选择对应安装说明:<./Installation.md>


三、基本使用

1、基础操作

配置完成后,在Shell中输入以#开头的注释,按Ctrl + G即可使用Codex CLI。

支持两种主要模式:

  • 单轮模式(默认)
  • 多轮模式(通过# start multi-turn# stop multi-turn切换)

2、多轮模式

启用多轮模式时,Codex CLI会"记忆"与模型的交互历史,允许引用先前操作。例如:

# change my timezone to mountain
tzutil /s "Mountain Standard Time"

# change it back to pacific
tzutil /s "Pacific Standard Time"

工具会创建current_context.txt文件记录交互历史,并在后续命令中传递给模型。

关闭多轮模式后,工具不再保留交互历史。多轮模式虽支持上下文关联,但会增加开销——若模型生成错误脚本,需手动清除上下文,否则后续交互可能重复错误。单轮模式下,相同命令始终产生相同输出。

当模型持续输出错误命令时,可使用:

  • # stop multi-turn:停止记忆并加载默认上下文
  • # default context:加载默认上下文但保持多轮模式

四、命令参考

命令描述
start multi-turn启用多轮交互
stop multi-turn禁用多轮交互并加载默认上下文
load context <文件名>contexts文件夹加载上下文文件
default context加载默认Shell上下文
view context在文本编辑器中打开上下文文件
save context <文件名>保存上下文至contexts文件夹(未指定文件名则使用当前时间)
show config显示当前模型交互配置
set <配置键> <配置值>设置模型交互参数

可通过set命令调整token限制、引擎ID和温度等参数,例如:

# set engine cushman-codex
# set temperature 0.5
# set max_tokens 50

五、提示工程与上下文文件

本项目通过_提示工程_引导GPT-3 Codex从自然语言生成命令。具体做法是向模型传递一系列NL->命令示例,使其理解应生成的代码类型,并适配当前Shell语法。示例存储在contexts目录中,如下PowerShell上下文片段:

# what's the weather in New York?
(Invoke-WebRequest -uri "wttr.in/NewYork").Content

# make a git ignore with node modules and src in it
"node_modules
src" | Out-File .gitignore

# open it in notepad
notepad .gitignore

项目将自然语言命令建模为注释,并提供预期脚本示例(包括单行、多行及多轮补全)。当用户输入新命令时,系统会将其作为注释追加到上下文中,要求Codex生成后续代码。通过示例引导,Codex能生成满足注释要求的简短PowerShell脚本。


自定义上下文

除预置Shell上下文外,可创建自定义上下文引导模型行为。例如要生成Kubernetes脚本,可创建包含kubectl命令示例的新上下文:

# make a K8s cluster IP called my-cs running on 5678:8080
kubectl create service clusterip my-cs --tcp=5678:8080

将上下文文件放入contexts文件夹后运行load context <文件名>加载。也可修改src\prompt_file.py中的默认上下文设置。

虽然Codex通常无需示例即可生成正确脚本(因其训练数据包含大量代码),但定制上下文能优化输出风格(如脚本长度、变量声明方式等)。重要提示:添加新上下文时请保持多轮模式开启,以避免自动恢复默认上下文。

我们已提供认知服务上下文示例,展示如何通过API实现文本转语音响应。


六、故障排查

  • 使用DEBUG_MODE切换至终端输入调试代码(适用于添加新命令时)
  • openai包抛出未捕获异常时,可在codex_query.py末尾添加catch块打印自定义错误信息

七、FAQ

如何查询可用OpenAI引擎?

不同组织可能访问不同OpenAI引擎。通过List engines API查询可用引擎:

  • Shell

    curl https://api.openai.com/v1/engines \
      -H 'Authorization: Bearer YOUR_API_KEY' \
      -H 'OpenAI-Organization: YOUR_ORG_ID'
    
  • PowerShell v5 (Windows默认版本)

    (Invoke-WebRequest -Uri https://api.openai.com/v1/engines -Headers @{"Authorization" = "Bearer YOUR_API_KEY"; "OpenAI-Organization" = "YOUR_ORG_ID"}).Content
    

  • PowerShell v7
    (Invoke-WebRequest -Uri https://api.openai.com/v1/engines -Authentication Bearer -Token (ConvertTo-SecureString "YOUR_API_KEY" -AsPlainText -Force) -Headers @{"OpenAI-Organization" = "YOUR_ORG_ID"}).Content
    

是否支持Azure运行?

当前示例代码仅适用于OpenAI API的Codex。未来几个月将更新版本以支持Azure OpenAI服务。


伊织 xAI 2025-04-19(六)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2338492.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实现窗口函数

java 实现窗口函数 public class SlidingWin {public static void main(String[] args) {SlidingWin slidingWin new SlidingWin();double v slidingWin.SlidWin(2);System.out.println(v);}public double SlidWin(int k){int [] array new int[]{2,4,5,6,9,10,12,23,1,3,8…

清华《数据挖掘算法与应用》K-means聚类算法

使用k均值聚类算法对表4.1中的数据进行聚类。代码参考P281。 创建一个名为 testSet.txt 的文本文件&#xff0c;将以下内容复制粘贴进去保存即可&#xff1a; 0 0 1 2 3 1 8 8 9 10 10 7 表4.1 # -*- coding: utf-8 -*- """ Created on Thu Apr 17 16:59:58 …

MATLAB - 小车倒立摆的非线性模型预测控制(NMPC)

系列文章目录 目录 系列文章目录 前言 一、摆锤/小车组件 二、系统方程 三、控制目标 四、控制结构 五、创建非线性 MPC 控制器 六、指定非线性设备模型 七、定义成本和约束 八、验证非线性 MPC 控制器 九、状态估计 十、MATLAB 中的闭环仿真 十一、使用 MATLAB 中…

HAL库配置RS485+DMA+空闲中断收发数据

前言&#xff1a; &#xff08;1&#xff09;DMA是单片机集成在芯片内部的一个数据搬运工&#xff0c;它可以代替单片机对数据进行传输、存储&#xff0c;节约CPU资源。一般应用场景&#xff0c;ADC多通道采集&#xff0c;串口收发&#xff08;频繁进入接收中断&#xff09;&a…

【java实现+4种变体完整例子】排序算法中【计数排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格

以下是计数排序的详细解析&#xff0c;包含基础实现、常见变体的完整代码示例&#xff0c;以及各变体的对比表格&#xff1a; 一、计数排序基础实现 原理 通过统计每个元素的出现次数&#xff0c;按顺序累加得到每个元素的最终位置&#xff0c;并填充到结果数组中。 代码示…

嵌入式单片机开发 - Keil MDK 编译与烧录程序

Keil MDK 编译程序 1、Keil MDK 编译按钮 Build 按钮&#xff1a;重新编译整个工程的所有源文件&#xff0c;无论它们是否被修改过 Rebuild 按钮&#xff1a;仅编译修改过的文件及其依赖项&#xff0c;未修改的文件直接使用之前的编译结果 2、Keil MDK 编译结果 linking... …

裂项法、分式分解法——复杂分式的拆解

目录 一、裂项法 1. 核心思想 2. 适用场景 3. 步骤 4. 例题 二、分式分解 1. 核心思想 2. 适用场景 3. 步骤 4.例题 一、裂项法 1. 核心思想 将一项拆解为多项之差&#xff0c;使得在求和时中间项相互抵消&#xff0c;最终仅剩首尾少数项。 2. 适用场景 级数求和…

黑马点评秒杀优化

异步优化秒杀业务 回顾之前的内容黑马点评 秒杀优惠券集群下一人一单超卖问题-CSDN博客&#xff0c;为了处理并发情况下的线程安全和数据一致性的问题&#xff0c;我们已经完成了查询优惠券信息、判断秒杀是否开始和结束、检查库存、用户ID加锁、创建订单和扣减库存。 尽管之前…

JavaScript 的演变:2023-2025 年的新特性解析

随着Web技术的飞速发展&#xff0c;ECMAScript&#xff08;简称ES&#xff09;作为JavaScript的语言标准&#xff0c;也在不断进化。 本文将带你学习 ECMAScript 2023-2025 的新特性。 一、ECMAScript 2023 新特性 1.1 数组的扩展 Array.prototype.findLast()/Array.protot…

[Java · 初窥门径] Java 注释符

&#x1f31f; 想系统化学习 Java 编程&#xff1f;看看这个&#xff1a;[编程基础] Java 学习手册 0x01&#xff1a;Java 注释符简介 在编写程序时&#xff0c;为了使代码易于理解&#xff0c;通常会为代码加一些注释。Java 注释就是用通俗易懂的语言对代码进行描述或解释&a…

Docker环境下SpringBoot程序内存溢出(OOM)问题深度解析与实战调优

文章目录 一、问题背景与现象还原**1. 业务背景****2. 故障特征****3. 核心痛点****4. 解决目标** 二、核心矛盾点分析**1. JVM 与容器内存协同失效****2. 非堆内存泄漏****3. 容器内存分配策略缺陷** 三、系统性解决方案**1. Docker 容器配置**2. JVM参数优化&#xff08;容器…

【计算机网络】网络基础(协议,网络传输流程、Mac/IP地址 、端口号)

目录 1.协议简述2.网络分层结构2.1 软件分层2.2 网络分层为什么&#xff1f; 是什么&#xff1f;OSI七层模型TCP/IP五层&#xff08;或四层&#xff09;结构 3. 网络与操作系统之间的关系4.从语言角度理解协议5.网络如何传输局域网通信&#xff08;同一网段&#xff09; 不同网…

pgsql中使用jsonb的mybatis-plus和jps的配置

在pgsql中使用jsonb类型的数据时&#xff0c;实体对象要对其进行一些相关的配置&#xff0c;而mybatis和jpa中使用各不相同。 在项目中经常会结合 MyBatis-Plus 和 JPA 进行开发&#xff0c;MyBatis_plus对于操作数据更灵活&#xff0c;jpa可以自动建表&#xff0c;两者各取其…

使用MetaGPT 创建智能体(2)多智能体

先给上个文章使用MetaGPT 创建智能体&#xff08;1&#xff09;入门打个补丁&#xff1a; 补丁1&#xff1a; MeteGTP中Role和Action的关联和区别&#xff1f;这是这两天再使用MetaGPT时候心中的疑问&#xff0c;这里做个记录 Role&#xff08;角色&#xff09;和 Action&…

C# 使用.NET内置的 IObservable<T> 和 IObserver<T>-观察者模式

核心概念 IObservable<T> 表示 可观察的数据源&#xff08;如事件流、实时数据&#xff09;。 关键方法&#xff1a;Subscribe(IObserver<T> observer)&#xff0c;用于注册观察者。 IObserver<T> 表示 数据的接收者&#xff0c;响应数据变化。 三个核心…

Redis——网络模型之IO讲解

目录 前言 1.用户空间和内核空间 1.2用户空间和内核空间的切换 1.3切换过程 2.阻塞IO 3.非阻塞IO 4.IO多路复用 4.1.IO多路复用过程 4.2.IO多路复用监听方式 4.3.IO多路复用-select 4.4.IO多路复用-poll 4.5.IO多路复用-epoll 4.6.select poll epoll总结 4.7.IO多…

vue3 传参 传入变量名

背景&#xff1a; 需求是&#xff1a;在vue框架中&#xff0c;接口传参我们需要穿“变量名”&#xff0c;而不是字符串 通俗点说法是&#xff1a;在网络接口请求的时候&#xff0c;要传属性名 效果展示&#xff1a; vue2核心代码&#xff1a; this[_keyParam] vue3核心代码&…

旅游特种兵迪士尼大作战:DeepSeek高精准路径优化

DeepSeek大模型高性能核心技术与多模态融合开发 - 商品搜索 - 京东 随着假期的脚步日渐临近&#xff0c;环球影城等备受瞩目的主题游乐场&#xff0c;已然成为大人与孩子们心中不可或缺的节日狂欢圣地。然而&#xff0c;随之而来的庞大客流&#xff0c;却总让无数游客在欢乐的…

【MySQL】第一弹——MySQL数据库结构与操作

目录 一. 数据库介绍1.1 什么是数据库1.2 为什么要使用数据库1.3 主流数据库1.3.1 关系型数据库1.3.2 非关系型数据库 二. MySQL 的结构2.1 MySQL服务器和客户端2.2 MySQL服务器是如何组织数据的 三. 数据库的操作3.1 创建数据库语法格式示例 3.2 查看数据库语法格式示例 3.3 使…

Spring_MVC 快速入门指南

Spring_MVC 快速入门指南 一、Spring_MVC 简介 1. 什么是 Spring_MVC&#xff1f; Spring_MVC 是 Spring 框架的一个模块&#xff0c;用于构建 Web 应用程序。它基于 MVC&#xff08;Model-View-Controller&#xff09;设计模式&#xff0c;将应用程序分为模型&#xff08;M…