GitHub Copilot CLI 是一个让 GitHub Copilot 来在命令行环境下使用自然语言提示命令行的工具。

如果要使用 GitHub Copilot CLI ,那么必需能够访问 GitHub Copilot,并且还需要通过 waitlist。另外需要注意的是 GitHub Copilot CLI 目前还是在试验中(technical preview),有一些 corner case 或者还有一些平台支持可能不完善,并且 CLI 补充的任何命令请在完全知晓是什么内容和作用的情况下再执行。

安装

使用 npm 全局安装:

npm install -g @githubnext/github-copilot-cli

然后将 github-copilot-cli 添加到 PATH,然后使用下面的命令授权

github-copilot-cli auth

然后按照命令行的提示在网页授权。一旦授权,token 会保存在用户设备本地,为后续的请求使用。这个命令正常只会在第一次使用的时候执行。

更新命令

npm install -g @githubnext/github-copilot-cli

设置 alias

正常情况下可以直接执行 github-copilot-cli 来使用,但是更建议使用 ??, git?, gh? 这样的方式。

可以在 Shell 的配置 .zshrc.bashrc 中添加

eval "$(github-copilot-cli alias -- "$0")"

使用

GitHub Copilot CLI 会将自然语言转变成 shell 命令,在安装之后可以通过如下三种方式使用:

  • ?? 将自然语言变成命令
  • git? 将自然语言变成 git 命令
  • gh? 将自然语言变成 GitHub CLI 命令

s8dN

GitHub Copilot CLI 的三种模式均以相同方式工作 —- 编写自然语言查询来声明您想要的内容,然后 GitHub Copilot CLI 将尝试构建一个命令或命令序列来执行它。

如果满意 Copilot 建议的命令,只需要求 GitHub Copilot CLI 运行它即可。

GitHub Copilot CLI 还会逐步解释建议命令的作用。 当学习新命令时尤其需要注意:shell 非常强大,您可能会无意中做出您不打算进行的破坏性的变化。在运行命令之前,一定要确保您理解建议命令的作用。像所有 AI 系统一样,GitHub Copilot CLI 不是完美的,可能会犯错误。

Shell 使用注意事项

因为直接使用 Shell ,而有一些关键的符号在 Shell 中有其自身的含义,所以有一些需要特别注意的内容。

有一些符号可能在提交到 GitHub Copilot CLI 之前就被 Shell 处理了,所以避免使用如下的符号,或者使用 \ 转义,或者将符号放到单引号 '...' 中。

  • 查询中的单引号 ',双引号 ",或者问号,感叹号,通常会造成 shell 的语法错误,如果遇到这种情况,按 Ctrl-c,然后重新查询即可
  • 括号,包括 () [], {} 也可能造成语法错误
  • * 号,会匹配文件或文件夹,这会导致敏感的文件名出现在查询中
  • | 管道符,将被解释为 shell pip,并将查询解释为单独的命令。造成查询 Copilot 失败
  • 小心,避免在任何变量前使用 $ ,这会导致 Shell 将其扩展成一个变量值,并且可能无意之间将敏感的环境变量传给 GitHub Copilot 查询
  • Warp 是我去年介绍的一款使用 Rust 编写的终端,Warp 也提供了类似的通过 AI 支持的命令行补全,如果感兴趣也可以去体验一下。
  • 另外还有一些 Zsh 插件也可以借助 OpenAI Codex 的能力提供命令自动补全的能力,比如 Zsh Codex 但是该项目有一段时间没有更新了。