13P by neo 7달전 | favorite | 댓글 1개
  • GPT-3.5/GPT-4와 페어 프로그래밍 하며 로컬 git 저장소에 저장된 코드를 편집할 수 있게 해주는 커맨드라인 도구
  • aider는 로컬 소스 파일의 코드를 직접 편집하고 적절한 커밋 메시지와 함께 변경 사항을 git 커밋함
  • 새 프로젝트를 시작하거나 기존 git 저장소에서 작업할 수 있음
  • aider의 독특한 점은 기존에 존재하는 큰 코드 베이스에 대한 변경 사항을 요청할 수 있다는 것

주요 기능

  • 편집할 소스 파일 집합과 함께 명령줄에서 aider를 시작하여 코드에 대해 GPT와 채팅할 수 있음. aider를 통해 GPT는 해당 파일의 내용을 보고 편집
  • GPT는 python, javascript, typescript, php, html, css 등 대부분의 인기 있는 언어로 코드를 작성하고 편집할 수 있음
  • 코드에 대한 새로운 기능, 변경, 개선 또는 버그 수정을 요청할 수 있음. 새로운 테스트 케이스, 업데이트된 문서 또는 코드 리팩터링을 요청할 수 있음
  • aider는 GPT가 제안한 수정 사항을 소스 파일에 직접 적용함
  • aider는 설명이 포함된 커밋 메시지와 함께 각 변경 세트를 로컬 git 저장소에 자동으로 커밋함. 이러한 빈번한 자동 커밋은 안전망을 제공함. 변경 사항을 쉽게 실행 취소하거나 표준 git 워크플로우를 사용하여 더 긴 변경 시퀀스를 관리할 수 있음
  • 여러 소스 파일을 동시에 aider와 함께 사용할 수 있으므로 GPT는 단일 변경 세트/커밋에서 모든 파일에 걸쳐 코드 변경을 조정할 수 있음
  • aider는 GPT-4에게 전체 git 저장소의 맵을 제공할 수 있어 대규모 코드베이스를 이해하고 수정하는 데 도움이 됨
  • aider와 채팅하는 동안 편집기를 사용하여 파일을 수동으로 편집할 수도 있음. aider는 이러한 대역 외 편집을 감지하고 GPT를 파일의 최신 버전으로 최신 상태로 유지함. 이를 통해 aider 채팅과 편집기 사이를 왔다 갔다 하면서 GPT와 협업하여 코딩할 수 있음
  • openai를 통해 gpt-4를 직접 사용하는 경우 이미지 파일을 컨텍스트에 추가할 수 있으며, 이렇게 하면 자동으로 gpt-4-vision-preview 모델로 전환됨

채팅 내 명령어

  • aider는 채팅 내에서 /로 시작하는 명령을 지원함. 가장 유용한 채팅 내 명령 중 일부:
    • /add : 일치하는 파일을 채팅 세션에 추가
    • /drop : 일치하는 파일을 채팅 세션에서 제거
    • /undo: aider에서 수행한 경우 마지막 git 커밋을 실행 취소
    • /diff: 마지막 aider 커밋의 diff 표시
    • /run : 셸 명령을 실행하고 선택적으로 출력을 채팅에 추가
    • /voice: 음성으로 코드 변경 사항을 요청하려면 aider에게 말하기
    • /help: 모든 명령에 대한 도움말 표시

  • 변경하려면 어떤 파일을 편집해야 하는지 생각해 보고 채팅에 추가할 것. aider는 GPT가 편집할 파일을 스스로 파악할 수 있는 능력이 어느 정도 있지만, 가장 효과적인 방법은 필요한 파일을 명시적으로 직접 채팅에 추가하는 것
  • 대규모 변경은 접근 방식과 전체 설계를 계획하는 사려 깊은 단계의 시퀀스로 수행하는 것이 가장 좋음. GPT를 주니어 개발자와 함께 하는 것처럼 변경 사항을 안내할 것. 준비를 위한 리팩터링을 요청한 다음 실제 변경을 요청. 코드 품질/구조 개선을 요청하는 데 시간을 할애해야 함
  • GPT가 유용한 응답을 제공하지 않는 경우 Control-C를 사용하여 안전하게 중단 가능. 부분 응답은 대화에 남아 있으므로 더 많은 정보나 방향으로 GPT에 답장할 때 참조할 수 있음
  • /run 명령을 사용하여 테스트, 린터 등을 실행하고 출력을 GPT에 표시하여 문제를 해결할 수 있음
  • Meta-ENTER(일부 환경에서는 Esc+ENTER)를 사용하여 여러 줄 채팅 메시지를 입력 가능. 또는 첫 번째 줄에 {만 입력하여 여러 줄 메시지를 시작하고 마지막 줄에 }만 입력하여 메시지를 끝냄
  • 코드에서 오류가 발생하면 /run을 사용하거나 채팅에 붙여넣어 오류 출력을 GPT와 공유할 것. GPT가 버그를 찾아 수정하도록 하기
  • GPT는 많은 표준 도구와 라이브러리에 대해 알고 있지만 API 및 함수 인수에 대한 세부 정보를 일부 잘못 이해할 수 있음. 문서 스니펫을 채팅에 붙여넣어 이러한 문제를 해결 가능
  • GPT는 특별히 "채팅에 추가"한 파일의 내용만 볼 수 있음. aider는 또한 전체 git 저장소의 맵을 GPT-4에 보냄. 따라서 GPT는 요청에 필요하다고 판단되면 추가 파일을 볼 것을 요청할 수 있음.

GN⁺의 의견

  • 대규모 프로젝트에서 aider를 활용하면 코드 베이스 전반에 걸쳐 일관된 변경 사항을 쉽게 적용할 수 있을 것 같음. 특히 GPT-4의 능력과 결합하면 더욱 강력할 것으로 보임
  • 다만 GPT가 제안한 변경 사항을 무조건 수용하기 보다는 개발자가 직접 리뷰하고 테스트 해보는 과정이 필요할 듯함. 아직은 GPT 모델이 완벽하지는 않기에 버그가 발생할 가능성도 있음
  • 코드뿐만 아니라 문서화나 테스트 케이스 작성에도 aider를 활용하면 좋을 것 같음. GPT의 자연어 이해 능력을 활용하면 보다 높은 품질의 문서와 테스트 코드를 빠르게 생성할 수 있을 것으로 기대됨
  • CLI 기반이라 접근성이 좋지만, 편집기 플러그인 등으로 개발 환경과 더 밀접하게 통합된다면 개발자 생산성 향상에 크게 도움이 될 것 같음
  • GitHub Copilot 등 유사한 AI 페어 프로그래밍 도구들과의 차별화된 장점은 GPT-4 활용과 git 기반의 워크플로우라고 봄. 기존 도구들과의 장단점 비교가 흥미로울 것 같음
Hacker News 의견

다음은 해커뉴스 댓글들을 요약한 내용입니다:

  • AI 도구 사용 시 프롬프트 작성과 결과 검토에 시간이 많이 들어 직접 작업하는 것보다 비효율적일 수 있음. 새로운 솔루션 탐색 시에는 정확도 면에서도 한계가 있어 보임.
  • Aider와 유사한 기능을 가진 Plandex라는 터미널 기반 프로젝트가 있음. Git 스타일 CLI를 사용하며, 여러 파일에 걸친 복잡한 작업에 중점을 둠.
  • Claude를 사용해 반응형 웹사이트 디자인 작업을 수행한 경험 공유. 긴 문맥 유지가 잘 되고, 혼합된 HTML/CSS/JS 코드베이스를 잘 다룰 수 있었음.
  • Go 애플리케이션에서 AI 도구 사용 시 변수 범위 규칙 등을 제대로 이해하지 못해 오류가 발생한 사례 공유. 신뢰성에 대한 의문 제기.
  • JetBrains 등 기존 IDE와의 통합이 부족한 점을 아쉬워함. GitHub Copilot 등 기존 도구와의 연계 사용 경험 공유.
  • Aider의 LLM 성능 벤치마킹 결과에 대한 관심. GPT-4 Turbo with Vision 모델의 성능이 이전 모델보다 떨어지는 것으로 나타남.
  • AI 도구의 결과물 품질이 아직 완벽하지 않아 실제 활용에는 한계가 있음. 미묘한 오류들이 여전히 존재.