Handoff (No More Compaction)
핵심 포인트
- 1Amp는 요약이 손실되고 긴 스레드를 유도하는 기존의 compaction 기능을 제거하고, 더 집중적인 스레드 사용을 장려하기 위해 Handoff를 도입했습니다.
- 2Handoff는 스레드를 요약하는 대신 기존 컨텍스트에서 다음 작업에 필요한 내용을 추출하여 새로운 스레드로 옮기는 기능으로, 사용자가 새 스레드의 목표를 지정하면 Amp가 관련 프롬프트와 파일을 생성합니다.
- 3Handoff를 통해 생성된 프롬프트는 새 스레드에 초안으로 표시되어 사용자가 검토하고 편집할 수 있으므로, 의도치 않은 컨텍스트 손실 없이 새로운 작업을 정확하게 시작할 수 있습니다.
이 문서는 Amp의 기존 "Compaction" 기능을 대체하는 "Handoff"라는 새로운 방식을 소개한다.
기존의 "Compaction"은 Amp CLI에서 /compact 명령어나 에디터 확장(editor extensions)에서 "Compact" 또는 "New Thread With Summary" 버튼을 통해 사용할 수 있었다. 이 방식은 컨텍스트 윈도우(context window)의 내용을 요약(summary)으로 대체하기 때문에 "lossy"하다는 단점을 가졌다. 즉, 정보 손실이 발생할 수 있으며, 요약의 내용이 에이전트(agent)에 따라 달라질 수 있었다. 또한, 이 기능은 사용자가 컨텍스트 윈도우가 가득 찰 때마다 요약을 반복하여 스레드가 길고 불필요하게 늘어지는(long, meandering threads) 경향을 조장했다.
이를 개선하기 위해 도입된 "Handoff"는 기존 스레드의 컨텍스트(context)를 새로운 스레드로 이동시키는 방식이다. 이 핵심 방법론은 스레드를 단순히 요약하는 대신, 다음 작업을 위해 중요한 정보를 "추출(extracting)"하는 데 중점을 둔다. 사용자는 새로운 스레드의 목표(goal)를 명시하고, Amp는 현재 스레드를 분석하여 새로운 스레드를 시작할 "prompt"와 관련된 파일 목록("list of relevant files")을 생성한다. 생성된 prompt는 새 스레드에서 초안(draft) 형태로 제공되어 사용자가 전송 전에 검토하고 편집할 수 있다. 이 과정을 통해 사용자는 의도하지 않은 컨텍스트 손실(unintended loss of context) 없이 새로운 스레드가 정확히 의도한 대로 시작되도록 지침(instructions)을 재작성할 수 있다.
"Handoff"는 CLI에서 /handoff [새로운 목표]와 같은 형식으로 사용될 수 있으며, 예를 들어 /handoff now implement this for teams as well, not just individual users, /handoff execute phase one of the created plan, 또는 /handoff check the rest of the codebase and find other places that need this fix와 같이 활용된다. 에디터 확장에서는 토큰 사용량 호버(token usage hover)를 통해 접근할 수 있다. 이 새로운 접근 방식은 스레드가 보다 집중적(focused threads)으로 유지되도록 장려하며, 이는 에이전트가 최상의 결과를 도출하는 데 기여할 것으로 기대된다.