모든 AI 코딩 도구는 컨텍스트에 대해 이야기하며, 대부분의 설명은 "도구가 볼 수 있는 파일"까지만 다룹니다. 그것은 시작에 불과합니다.
컨텍스트에는 세 가지 계층이 있습니다. 첫 번째 계층은 코드입니다: 편집 중인 파일, 해당 파일을 가져오는(import) 파일들, 그리고 이를 커버하는 테스트 케이스들입니다. 테스트를 볼 수 있는 어시스턴트는 그 테스트를 통과시키는 변경 사항을 작성할 것입니다. 그렇지 못한 어시스턴트는 올바르게 보이는 변경 사항을 작성하지만 실제로는 실패하게 만듭니다.
두 번째 계층은 사용자가 문서화한 규칙입니다. 프로젝트 루트에 있는 짧은 컨텍스트 파일에 정확한 테스트 명령어, 정확한 린트(lint) 명령어, 수동으로 수정하지 않는 파일 목록, 그리고 완료의 정의(definition of done)를 명시하는 것은 모델이 볼 수 있는 백 개의 추가 파일보다 가치가 높습니다. 간결하고 구체적으로 유지해야 하며, 절대 오래되게 두어서는 안 됩니다. 컨텍스트가 오래되면 아무 컨텍스트가 없는 것보다 더 나쁩니다. 왜냐하면 어시스턴트는 그것을 확신하며 따르기 때문입니다.
세 번째 계층은 이미 내린 결정들입니다. 왜 이 라이브러리를 사용했고 저것이 아닌지, 왜 이 엔드포인트가 특정 형태(shape)를 반환하는지에 대한 이유 같은 것입니다. 이러한 결정을 모르는 어시스턴트는 기꺼이 그 결정들을 다시 열어버릴 것입니다. 계속해서 재개방되는 결정들은 한 단락에 문서화하세요: 무엇을 시도했는지, 왜 실패했는지, 대신 무엇을 사용하고 있는지 등을 기록해야 합니다.
프롬프트를 보내기 전에 세 가지를 확인하십시오. 작업이 건드리는 코드와 테스트를 볼 수 있는가? 규칙이 글로 명시되어 있는가? 정착된 질문들을 다시 열지 않도록 막아줄 결정들을 알고 있는가? 이 세 가지 모두 '예'라면, 짧은 프롬프트만으로도 충분합니다. 왜냐하면 컨텍스트 자체가 무거운 작업을 수행하고 있기 때문입니다.