AI 프로그래밍 에이전트는 실행 가능한 Go 코드를 생성할 수 있지만, 그렇다고 해서 항상 최신 언어 문법이나 표준 라이브러리 추가 기능을 사용하는 것은 아닙니다. 오래된 Go 패턴은 학습 데이터에 훨씬 더 많이 포함되어 있는 반면, 최신 기능은 모델이 학습에 사용한 데이터에 나타나지 않을 수 있습니다. JetBrains의 GoLand 팀은 이러한 격차를 해결하기 위해 Modern Go Guidelines라는 오픈 소스 프로젝트를 만들었습니다. 이 프로젝트는 프로젝트에 선언된 Go 버전과 관련된 실용적인 지침을 에이전트에 제공합니다.
프로젝트가 제공하는 것은 무엇인가?
이 지침은 Go 1.0부터 1.27까지의 버전에서 유용한 언어 기능과 표준 라이브러리 추가 기능 및 go modernize 분석기가 처리하는 패턴을 다룹니다. 에이전트는 프로젝트에서 사용하는 버전보다 최신 버전에 대한 지침을 받지 않습니다. go.mod 파일에 go 1.25 지시문이 있다면 에이전트는 Go 1.25와 이전 버전의 지침을 사용할 수 있지만, Go 1.26 또는 Go 1.27에 의존하는 제안은 받지 않습니다.
자료에 제시된 예에 따르면, 이는 에이전트가 Go 1.25에서 도입된 sync.WaitGroup.Go를 제안할 수 있지만 Go 1.26이 필요한 errors.AsType는 제안하지 않는다는 의미입니다. 지침을 프로젝트 버전에 연결하면 사용 가능한 환경보다 최신 버전이 필요한 코드를 생성할 가능성을 줄일 수 있으며, 에이전트가 읽어야 하는 불필요한 컨텍스트의 양도 줄어듭니다.
모든 컨텍스트를 로드하는 대신 점진적으로 공개
플러그인에는 go-modern-guidelines라는 명령줄 도구와 use-modern-go라는 지침 스킬이 포함되어 있습니다. 이 도구는 두 가지 주요 명령을 지원합니다.
- list: Go 파일 또는 특정 버전과 관련된 짧고 관련성 높은 지침을 표시합니다.
- explain: 오래된 패턴과 현대적인 대안을 비교하는 더 자세한 설명과 예를 제공합니다.
지침에서는 에이전트가 파일을 수정하기 전에 해당 파일에 대해 list 명령을 실행하고, 특정 규칙을 이해해야 할 때 explain을 사용하도록 권장합니다. ./internal/worker/worker.go와 같은 파일에 대한 지침을 요청하거나 --go-version 1.27을 사용해 버전을 직접 지정할 수 있습니다. list의 출력은 적용 가능한 최신 지침으로 시작하며, sync_waitgroup_go, testing_t_context, json_omitzero와 같은 각 규칙의 고정 식별자를 포함합니다.
현대적인 패턴의 예
지침에는 흔히 사용되는 패턴을 더 최신 패턴으로 대체하는 실용적인 예가 포함되어 있습니다. 예를 들어 직접 작성한 검색 루프 대신 slices.Contains를 사용하고, 수동 비교 대신 min과 max를 사용하며, 0이 아닌 첫 번째 값을 선택하는 조건문 대신 cmp.Or를 사용하는 방법입니다.
또한 Add, go, Done 작업을 별도로 배치하는 대신 sync.WaitGroup.Go를 사용하는 방법, Go 1.26 이상에서 타입 안전 방식으로 오류를 매칭하기 위해 errors.AsType를 사용하는 방법, Go 1.26 이상에서 값에 대한 포인터가 필요할 때 new(value)를 사용하는 방법을 설명합니다. Go 1.27에서는 LastIndex와 수동 슬라이싱의 대안으로 strings.CutLast와 bytes.CutLast를 제시합니다.
Go 1.27부터 사용할 수 있는 generic_methods 예제는 작업이 해당 타입과 자연스럽게 연결되는 경우 일반적인 작업을 패키지 수준의 헬퍼 함수에서 타입의 메서드로 옮기는 방법을 보여줍니다. explain 명령은 전후 예제와 함께 규칙을 설명하며, 한 번의 호출로 여러 규칙을 설명할 수도 있습니다.
개발자에게 실질적으로 달라지는 점은 무엇인가?
여기서 핵심 가치는 오래된 코드를 자동으로 업데이트하는 것이 아니라, 코드를 생성하거나 수정하는 동안 에이전트에 작고 구체적인 참고 자료를 제공하는 것입니다. 이 프로젝트는 go fix와 같은 도구를 대체하는 대신 함께 사용됩니다. Modern Go Guidelines의 지침은 에이전트가 현대적인 패턴으로 시작하도록 돕고, go fix는 코드베이스에 이미 존재하는 패턴을 업데이트하는 데 도움을 줍니다.
플러그인은 플러그인 마켓플레이스 또는 로컬 저장소에서 설치할 수 있습니다. 통합 기능을 사용하려면 Go 툴체인이 PATH에 있어야 합니다. 처음 사용할 때 통합 기능은 go install을 통해 명령줄 도구를 설치하고 로컬 캐시에 저장하며, 프로젝트 자체는 수정하지 않습니다. 자료에서는 저장소를 Claude 마켓플레이스로 추가하고 modern-go-guidelines를 설치한 뒤 /use-modern-go를 활성화하는 명령을 제시합니다. 또한 게시하거나 업데이트하기 전에 로컬 저장소를 테스트하는 경로도 설명하며, Claude와 Codex가 포함된 예를 제공합니다.
certi.news의 해석
이 프로젝트는 AI 에이전트를 사용할 때 발생하는 실질적인 문제를 다룹니다. 코드가 빌드된다는 사실만으로는 해당 코드가 언어 버전에 적합하거나 사용 가능한 최선의 패턴을 채택했다는 보장이 없습니다. 지침을 go.mod 파일에 연결하면 에이전트가 제안할 수 있는 범위에 명확한 기술적 한계를 설정할 수 있으며, 점진적 공개는 필요하지 않은 컨텍스트로 에이전트가 과부하되는 일을 줄입니다. 그러나 이 도구가 개발자의 검토나 테스트의 필요성을 없애는 것은 아닙니다. 이 도구는 에이전트에 규칙과 예를 제공할 뿐이며, 생성된 모든 변경 사항을 독립적으로 검증한다는 내용은 출처에 제시되어 있지 않습니다. 또한 발표된 지원 범위는 Go 1.27까지이므로 최신 버전에 대한 지침은 계속 추가되고 업데이트되어야 합니다.