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

本文翻译整理自: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-002或code-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(六)
相关文章:
Codex CLI - 自然语言命令行界面
本文翻译整理自:https://github.com/microsoft/Codex-CLI 文章目录 一、关于 Codex CLI相关链接资源 二、安装系统要求安装步骤 三、基本使用1、基础操作2、多轮模式 四、命令参考五、提示工程与上下文文件自定义上下文 六、故障排查七、FAQ如何查询可用OpenAI引擎&…...
实现窗口函数
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…...
pycharm中怎么解决系统cuda版本高于pytorch可以支持的版本的问题?
在PyCharm中安装与系统CUDA版本不一致的PyTorch是可行的。以下是解决方案的步骤: 1. 确认系统驱动兼容性 检查NVIDIA驱动支持的CUDA版本:运行 nvidia-smi,右上角显示的CUDA版本是驱动支持的最高版本。只要该版本不低于PyTorch所需的CUDA版本…...
Day57 | 79. 单词搜索、89. 格雷编码
79. 单词搜索 题目链接:79. 单词搜索 - 力扣(LeetCode) 题目难度:中等 代码: class Solution {public boolean exist(char[][] board, String word) {char[] wordsword.toCharArray();for(int i0;i<board.lengt…...
清华《数据挖掘算法与应用》K-means聚类算法
使用k均值聚类算法对表4.1中的数据进行聚类。代码参考P281。 创建一个名为 testSet.txt 的文本文件,将以下内容复制粘贴进去保存即可: 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 中…...
深入解析进程与线程:区别、联系及Java实现
引言 在现代操作系统中,进程和线程是并发编程的两大核心概念。理解它们的区别与联系对开发高性能、高可靠性的程序至关重要。本文将通过原理分析和Java代码示例,深入探讨这两个关键概念。 一、基本概念 1.1 进程(Process) 定义&…...
【Flutter深度解析】多线程编程
Flutter作为单线程模型的框架,在处理复杂计算时可能会遇到性能瓶颈。本文将全面剖析Flutter中的多线程编程方案,帮助你充分利用设备的多核性能,构建流畅的Dart应用。 一、Flutter线程模型基础 1. Dart的单线程事件循环 Flutter应用运行在单…...
HAL库配置RS485+DMA+空闲中断收发数据
前言: (1)DMA是单片机集成在芯片内部的一个数据搬运工,它可以代替单片机对数据进行传输、存储,节约CPU资源。一般应用场景,ADC多通道采集,串口收发(频繁进入接收中断)&a…...
【java实现+4种变体完整例子】排序算法中【计数排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
以下是计数排序的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格: 一、计数排序基础实现 原理 通过统计每个元素的出现次数,按顺序累加得到每个元素的最终位置,并填充到结果数组中。 代码示…...
嵌入式单片机开发 - Keil MDK 编译与烧录程序
Keil MDK 编译程序 1、Keil MDK 编译按钮 Build 按钮:重新编译整个工程的所有源文件,无论它们是否被修改过 Rebuild 按钮:仅编译修改过的文件及其依赖项,未修改的文件直接使用之前的编译结果 2、Keil MDK 编译结果 linking... …...
裂项法、分式分解法——复杂分式的拆解
目录 一、裂项法 1. 核心思想 2. 适用场景 3. 步骤 4. 例题 二、分式分解 1. 核心思想 2. 适用场景 3. 步骤 4.例题 一、裂项法 1. 核心思想 将一项拆解为多项之差,使得在求和时中间项相互抵消,最终仅剩首尾少数项。 2. 适用场景 级数求和…...
黑马点评秒杀优化
异步优化秒杀业务 回顾之前的内容黑马点评 秒杀优惠券集群下一人一单超卖问题-CSDN博客,为了处理并发情况下的线程安全和数据一致性的问题,我们已经完成了查询优惠券信息、判断秒杀是否开始和结束、检查库存、用户ID加锁、创建订单和扣减库存。 尽管之前…...
JavaScript 的演变:2023-2025 年的新特性解析
随着Web技术的飞速发展,ECMAScript(简称ES)作为JavaScript的语言标准,也在不断进化。 本文将带你学习 ECMAScript 2023-2025 的新特性。 一、ECMAScript 2023 新特性 1.1 数组的扩展 Array.prototype.findLast()/Array.protot…...
[Java · 初窥门径] Java 注释符
🌟 想系统化学习 Java 编程?看看这个:[编程基础] Java 学习手册 0x01:Java 注释符简介 在编写程序时,为了使代码易于理解,通常会为代码加一些注释。Java 注释就是用通俗易懂的语言对代码进行描述或解释&a…...
Spring MVC 全栈指南:RESTful 架构、核心注解与 JSON 实战解析
目录 RESTful API 设计规范Spring MVC 核心注解解析静态资源处理策略JSON 数据交互全解高频问题与最佳实践 一、RESTful API 设计规范 1.1 核心原则 原则说明示例 URI资源为中心URI 使用名词(复数形式)/users ✔️ /getUser ❌HTTP 方法语义化GET&…...
【web服务_负载均衡Nginx】三、Nginx 实践应用与高级配置技巧
一、Nginx 在 Web 服务器场景中的深度应用 1.1 静态网站部署与优化 在 CentOS 7 系统中,使用 Nginx 部署静态网站是最基础也最常见的应用场景。首先,准备网站文件,在/var/www/html目录下创建index.html文件: sudo mkdir -p…...
Docker环境下SpringBoot程序内存溢出(OOM)问题深度解析与实战调优
文章目录 一、问题背景与现象还原**1. 业务背景****2. 故障特征****3. 核心痛点****4. 解决目标** 二、核心矛盾点分析**1. JVM 与容器内存协同失效****2. 非堆内存泄漏****3. 容器内存分配策略缺陷** 三、系统性解决方案**1. Docker 容器配置**2. JVM参数优化(容器…...
【计算机网络】网络基础(协议,网络传输流程、Mac/IP地址 、端口号)
目录 1.协议简述2.网络分层结构2.1 软件分层2.2 网络分层为什么? 是什么?OSI七层模型TCP/IP五层(或四层)结构 3. 网络与操作系统之间的关系4.从语言角度理解协议5.网络如何传输局域网通信(同一网段) 不同网…...
【Mysql】mysql数据库占用空间查询
Mysql数据库操作 数据库大小查询 # 查询 每一个 数据库大小 SELECT table_schema AS 数据库名,SUM(data_length index_length) / 1024 / 1024 AS 数据库大小(MB) FROM information_schema.TABLES GROUP BY table_schema;# 查询 数据库占用磁盘大小 SELECT SUM(data_length …...
pgsql中使用jsonb的mybatis-plus和jps的配置
在pgsql中使用jsonb类型的数据时,实体对象要对其进行一些相关的配置,而mybatis和jpa中使用各不相同。 在项目中经常会结合 MyBatis-Plus 和 JPA 进行开发,MyBatis_plus对于操作数据更灵活,jpa可以自动建表,两者各取其…...
使用MetaGPT 创建智能体(2)多智能体
先给上个文章使用MetaGPT 创建智能体(1)入门打个补丁: 补丁1: MeteGTP中Role和Action的关联和区别?这是这两天再使用MetaGPT时候心中的疑问,这里做个记录 Role(角色)和 Action&…...
C# 使用.NET内置的 IObservable<T> 和 IObserver<T>-观察者模式
核心概念 IObservable<T> 表示 可观察的数据源(如事件流、实时数据)。 关键方法:Subscribe(IObserver<T> observer),用于注册观察者。 IObserver<T> 表示 数据的接收者,响应数据变化。 三个核心…...
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多…...
【dify实战】chatflow结合deepseek实现基于自然语言的数据库问答、Echarts可视化展示、Excel报表下载
dify结合deepseek实现基于自然语言的数据库问答、Echarts可视化展示、Excel报表下载 观看视频,您将学会 在dify下如何快速的构建一个chatflow,来完成数据分析工作;如何在AI的回复中展示可视化的图表;如何在AI 的回复中加入Excel报…...
vue3 传参 传入变量名
背景: 需求是:在vue框架中,接口传参我们需要穿“变量名”,而不是字符串 通俗点说法是:在网络接口请求的时候,要传属性名 效果展示: vue2核心代码: this[_keyParam] vue3核心代码&…...
裸金属服务器有什么用途?
裸金属服务器可以直接在硬件上运行应用程序和操作系统,不需要虚拟化层,裸金属服务器还会为企业提供一种高性能、高可靠性和高安全性的计算资源,通常运用在需要大量计算能力和数据处理能力的应用场景中,下面介绍一下裸金属服务器的…...
旅游特种兵迪士尼大作战:DeepSeek高精准路径优化
DeepSeek大模型高性能核心技术与多模态融合开发 - 商品搜索 - 京东 随着假期的脚步日渐临近,环球影城等备受瞩目的主题游乐场,已然成为大人与孩子们心中不可或缺的节日狂欢圣地。然而,随之而来的庞大客流,却总让无数游客在欢乐的…...
【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? Spring_MVC 是 Spring 框架的一个模块,用于构建 Web 应用程序。它基于 MVC(Model-View-Controller)设计模式,将应用程序分为模型(M…...
