Codex를 사용하고 싶어

멘토링 중 멘토께서 Codex를 사용하여 간단한 코딩 작업을 처리하는 것을 보았다.
지금 한창 Unity로 첫 게임을 만들어보려는 나에겐 드롭다운, 화면 전환 정도의 코딩 작업은 Codex에게 맡기는 것이 생산적일 것 같아 사용해보고 싶었다.

Codex

공식 홈페이지: https://openai.com/ko-KR/codex/

Codex는 프롬프트나 명세를 기반으로 파일 편집, 명령 실행, 테스트 수행을 하는 코딩 파트너라고 한다.

CLI, IDE, 클라우드, 휴대폰에서도 가능하며 나는 CLI를 위주로 사용할 것 같아 CLI 세팅을 했다.

Windows에서의 Codex CLI설치

왜 Mac이 아니라 Windows에서 Codex를 설치하려 하나 싶은데, Unity 개발할 때 C# 쓰고 있기도 하고 무엇보다 데스크탑 모니터가 화면이 많이 커서 편하다.
맥북 화면에 연결하자니 데스크탑 모니터 높이 계속 오르락 내리락 하기도 귀찮고…

여하튼 처음엔 아무 생각 없이 PowerShell로 choco install nodejs 했다가 마지막 설치 단계 때, 스크립트 실행에 오류가 생겼다.
오류 내용은 PowerShell의 보안 정책 때문이었는데, npm.ps1 같은 스크립트 실행이 안 됐단다.

그래서 cmd로 바꿔서 다시 nodejs를 설치했는데 이번엔 무리 없이 잘 풀렸다.
나중에 cmd랑 PowerShell의 차이를 한 번 정리해야겠다. 둘이 쓰는 명령어도 다르더라.

이후 OpenAI에서 알려준대로 npm i -g @openai/codex를 해서 설치했고 실행했는데

“Codex는 wsl 환경일 때 잘 동작해요. 그냥 Windows에서 실행하시면 의도치 않은 에러가 생길 수 있어요.”

같은 내용의 안내가 먼저 나타났다.
‘그건 싫은데’ 싶었던 나는 부랴부랴 WSL에 대해 알아보았다.

WSL

공식 문서: https://learn.microsoft.com/ko-kr/windows/wsl/about

WSL은 Windows Subsystem for Linux의 약자로, 별도의 가상 머신 또는 이중 부팅 없이 Windows에서 Linux 환경을 실행할 수 있는 기능이다.

WSL은 Linux 배포(Ubuntu, Debian…)를 설치하고 실행하며, BASH를 사용할 수 있다.
특히나 가상 머신 없어도 된다는 점이 제일 다행이다.

WSL 1과 WSL 2 버전이 있는데, 2는 가상화 기술을 사용하여 경량 유틸리티 VM 내에서 Linux 커널을 실행한다.
2 버전이 1보다 파일 시스템 성능이 향상되었으며 전체 시스템 호출 호환성을 추가했다고 한다.

고로 2 버전이 1 버전보다 속도가 더 빠를 것이라 생각했기에 2를 설치하려 했다.

설치

  • PowerShell에서 실행: wsl --install -d Ubuntu

이 명령어를 실행하면 Windows 검색에 Ubuntu 앱이 시작 메뉴에 등록된다.
난 처음에 실행했을 때 응용 프로그램 오류 어쩌구 하는 에러가 발생했었는데, 컴퓨터를 재부팅하고 명령어를 실행하니까 정상적으로 동작했었다(스크린샷 좀 찍어둘걸).

설치가 끝나면 나에게 계정 정보를 생성하라 말하고 설정 후에 바로 로그인이 된다.

WSL에서 Codex CLI 설치

이제 우분투도 설치했겠다 build-essential, git, python3, curl 같은 기본적인 것들 설치해주고, nodejs도 설치하고 나면

npm install -g @openai/codex

이 명령어로 codex를 설치한다. 그리고 codex 명령어로 실행시켜주면 인증하라는 내용이 나왔다.

인증 방법은 두 가지였는데 하나는 OpenAI의 API Key를 사용하는 방법과 다른 하나는 안내된 링크에 들어가서 브라우저로 인증하는 방식이었다.
난 두 번째 방법으로 인증을 받아 Codex를 실행했다.

codex_image

  • 주로 작업할 드라이브는 e일텐데 읽어올 수 있나 싶어서 ls /mnt/e를 실행해봤다.

이러고 갑자기 궁금했던게, Codex는 지금 내가 만든 WSL에서 돌아가고 있는데, Ubuntu 커널에서 내 Windows 디렉터리에 어떻게 접근하려는 거지 싶었다.
저 부분은 글이 많이 길어질 것 같아 따로 분리를 해야겠다.

태그: ,

카테고리:

최초작성:

댓글남기기