octorus: Rust-built TUI 도구, AI가 PR diff를 탐색하는 동안 코드를 자동으로 검토하고 수정합니다
Source: Dev.to
개요
octorus는 Rust로 만든 터미널 UI(TUI) 도구로, 풀‑리퀘스트(diff)를 탐색하고 인라인 댓글을 남기며 AI‑Rally 라는 자율 AI 리뷰‑수정 사이클을 실행할 수 있습니다. Helix 편집기로 전환한 뒤 octo.nvim을 대체하기 위해 만들어졌습니다.
주요 기능
- 구문 강조가 적용된 diff와 함께 인라인 리뷰 댓글 작성.
- 리뷰 댓글과 토론 댓글을 구분하는 별도 섹션.
- AI‑Rally: 두 AI 에이전트(리뷰어 & 리뷰이)가 번갈아가며 코드를 리뷰하고 수정하며, 수렴하거나 설정된 반복 제한에 도달할 때까지 진행.
- AI‑Rally를 백그라운드에서 실행해 수동 리뷰를 계속할 수 있음.
- AI가 생성한 댓글과 커밋을 자동으로 PR에 게시.
- 프롬프트와 동작을 사용자 정의 가능.
설치
cargo install octorus
빠른 시작
설정 초기화
octorus init
이 명령은 ~/.config/octorus/ 아래에 설정 파일과 프롬프트 마크다운 파일을 생성합니다.
diff 뷰어 실행
octorus --repo <owner/repo> --pr <pr-number>
<owner/repo>와 <pr-number>를 실제 값으로 바꾸세요.
사용법
- Diff 탐색 – 원하는 키 바인딩으로 PR diff 뷰를 이동합니다.
- 댓글 남기기 –
c를 눌러 댓글,s를 눌러 제안,a를 눌러 승인,r을 눌러 변경 요청(기본 바인딩, 설정 섹션 참고). - 전체 댓글 보기 – 리뷰 댓글과 토론 댓글이 별도 섹션에 표시돼 한눈에 파악하기 쉽습니다.
AI‑Rally
A키를 눌러 AI‑Rally를 시작합니다.- 두 AI 에이전트(리뷰어 & 리뷰이)가
max_iterations까지 뒤뒤로 리뷰·수정 루프를 수행합니다. b키를 눌러 Rally를 백그라운드로 전송하면, 수동 리뷰를 계속할 수 있습니다.- 에이전트가 작업을 마치면 자동으로 댓글을 게시하고 PR에 커밋을 푸시합니다.
프롬프트와 설정 옵션을 통해 AI 동작을 커스터마이즈할 수 있습니다.
설정
octorus init를 실행하면 기본 설정 파일(~/.config/octorus/config.toml)이 생성됩니다. 기본 내용은 다음과 같습니다:
editor = "vi" # PR 댓글 작성을 위해 실행되는 편집기(e.g., nvim, hx)
[diff]
theme = "base16-ocean.dark" # diff 뷰어의 구문 강조 테마
[keybindings]
approve = "a"
request_changes = "r"
comment = "c"
suggestion = "s"
[ai]
reviewer = "claude" # 옵션: "claude" 또는 "codex" (로컬에 설치돼 있어야 함)
reviewee = "claude"
max_iterations = 10
timeout_secs = 600
# 커스텀 프롬프트 디렉터리 (기본값: ~/.config/octorus/prompts/)
# prompt_dir = "/custom/path/to/prompts"
커스텀 프롬프트
프롬프트 파일은 ~/.config/octorus/prompts/에 저장됩니다:
~/.config/octorus/prompts/
├── reviewer.md # 리뷰어 에이전트용 프롬프트
├── reviewee.md # 리뷰이 에이전트용 프롬프트
└── rereview.md # 재리뷰 반복용 프롬프트
Claude와 Codex는 모두 헤드리스 모드로 실행되므로, 해당 CLI 도구가 머신에 설치돼 있어야 합니다. 작성자는 리뷰어로 Codex를, 리뷰이로 Claude Code를 사용합니다.
배경 및 영감
AI 에이전트가 소셜 플랫폼에서 대화하는 모습을 보고, 그 역동성을 코드 리뷰에 적용하고 싶었습니다. TUI diff 뷰어를 만들면서 자율 리뷰 사이클을 실험하기에 최적의 환경이 되었습니다.
추가 자료
octorusdiff 렌더링에 대한 상세 성능 분석:
octorus가 유용하다고 생각되면 GitHub 저장소에 ⭐를 눌러 주세요. 즐거운 리뷰 되세요!