ADHD: 코딩 에이전트가 여러 사고 프레임으로 아이디어를 발산하고 추려내는 스킬

ADHD 소개

LLM에게 "몇 가지 방법을 제안해줘" 라고 물으면, 모델은 처음 떠올린 방향에 빠르게 고착되는 경향이 있습니다. 자기회귀(autoregressive) 방식으로 토큰을 이어 붙이는 구조상, 먼저 내뱉은 가설이 그 뒤의 모든 추론을 끌어당기기 때문입니다. 사고의 사슬(Chain-of-Thought)은 이 첫 답에 묶이기 쉽고, 생각의 나무(Tree-of-Thought)는 탐색 폭을 넓히지만 하나의 공유된 맥락 위에서 가지를 뻗기 때문에 고착이 가지들 사이에 그대로 번집니다.

ADHD 는 이 조기 수렴(premature convergence) 문제를 프롬프트가 아니라 구조의 문제로 보고 접근하는 코딩 에이전트용 스킬입니다. 하나의 문제를 서로 의도적으로 다르게 비튼 여러 인지 프레임(cognitive frame)에 나눠 주고, 각 프레임을 맥락을 전혀 공유하지 않는 독립된 추론 프로세스로 동시에 굴립니다. 분기들이 서로를 보지 못하므로 한 방향으로 쏠리는 고착이 생기지 않고, 그 뒤 별도의 비평가(critic) 단계가 쏟아진 아이디어를 채점·선별합니다.

이 프로젝트는 Udit Akhouri가 작성한 프리프린트 "ADHD: Parallel Divergent Ideation for Coding Agents" 를 구현한 것으로, Claude Code, Cursor, Codex 등 여러 에이전트에 설치해 쓸 수 있는 스킬 형태로 배포됩니다. 본 게시물에서는 ADHD의 동작 방식, 저자가 공개한 벤치마크 결과, 그리고 설치·사용법을 정리합니다.

ADHD의 동작 방식

ADHD는 두 단계 사이에 단단한 벽을 둔 루프로 동작합니다. 첫 단계인 발산(Diverge) 에서는 N개의 인지 프레임을 고른 뒤, 각 프레임마다 독립된 Agent 호출을 병렬로 띄웁니다. 각 호출은 문제와 한 프레임의 관점 프롬프트만 보고, 평가를 금지하는 시스템 프롬프트를 받습니다. 분기들은 서로의 결과를 절대 보지 못하므로 앵커링(anchoring)이 발생하지 않습니다.

두 번째 단계인 수렴(Focus) 에서는 별도의 비평가 호출이 모든 아이디어를 채점합니다. 참신성(novelty), 실현 가능성(viability), 적합성(fit)으로 점수를 매기고, 그럴듯하지만 함정인 아이디어를 이유와 함께 표시하며, 비슷한 각도의 아이디어를 군집으로 묶고, 상위 K개를 위험 요소와 첫 단계가 담긴 스케치로 더 깊게 발전시킵니다. 여기서 핵심은 생성기와 비평가의 분리가 하나의 프롬프트 안에서 약속되는 것이 아니라, 정반대의 시스템 프롬프트를 가진 별도의 LLM 호출로 기계적으로 분리된다는 점입니다. 고를 수 있는 인지 프레임은 저장소의 documentation/frames.md 에 15가지가 정리되어 있고, 직접 프레임을 작성해 추가할 수도 있습니다.

ADHD의 벤치마크 결과

저자는 6개의 열린 형태(open-ended) 엔지니어링 문제에 대해, 같은 모델에서 ADHD와 단발성(single-shot) 베이스라인을 비교했습니다. 채점은 회의적인 시니어 엔지니어 역할을 부여한 독립 LLM이 0~10점 척도로 수행했고, A/B 순서는 무작위로 섞었습니다. 보고된 평균 점수는 다음과 같습니다.

항목 ADHD 베이스라인 차이 배율
아이디어 폭(breadth) 9.00 4.83 +4.17 1.9×
참신성(novelty) 7.83 2.67 +5.17 2.9×
함정 탐지(trap detection) 9.50 1.83 +7.67 5.2×
실행 가능성(actionability) 9.50 6.50 +3.00 1.5×
빌더 유용성(builder usefulness) 7.67 6.83 +0.83 1.1×

저자에 따르면 ADHD는 6개 문제 중 5개에서 베이스라인을 앞섰고, 가장 큰 차이는 함정 탐지에서 나타났습니다. 베이스라인은 그럴듯하지만 망가진 아이디어를 잘 짚어내지 못한 반면, ADHD는 비평가 단계에서 이를 표시했기 때문입니다. 다만 이 수치는 저자가 직접 설계한 LLM 기반 평가 결과이므로, 방법론과 한계는 저장소의 documentation/evals.md 에서 함께 확인하는 것이 좋습니다.

ADHD 설치 및 사용법

설치는 한 줄로 끝나며, 사용 중인 에이전트(Claude Code, Cursor, Codex, Gemini CLI 등)를 자동으로 감지합니다.

npx skills add UditAkhourii/adhd

설치 후에는 /adhd "문제 설명" 으로 명시적으로 호출하거나, 발상이 필요한 상황에서 자동으로 트리거되도록 둘 수 있습니다. 독립 실행형 CLI와 라이브러리로도 설치할 수 있습니다.

npm install -g adhd-agent     # CLI
npm install adhd-agent        # 라이브러리

CLI에서는 프레임 수, 아이디어 수, 상위 선별 개수를 옵션으로 조절합니다.

adhd "design a rate limiter that survives a leader election"
adhd "name this function" --frames 3 --ideas 8 --top 2

라이브러리로 직접 호출하면 선별 결과(shortlist), 비범한 선택(nonObviousPick), 함정(traps), 심화된 아이디어(deepened), 군집(clusters)을 결과 객체에서 받을 수 있습니다.

import { run, renderText } from "adhd-agent";

const result = await run({
  problem: "How should we shard this queue under bursty load?",
  framesPerRun: 5,
  topK: 3,
});
console.log(renderText(result));

ADHD의 라이선스

ADHD는 MIT 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.

:scroll: ADHD 방법론 소개(Preprint)

:github: ADHD 프로젝트 GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

2개의 좋아요