Sol Advisor: 작업 규모와 위험도에 따라 서브 에이전트 위임 여부를 결정하는 Codex 에이전트 오케스트레이션 플러그인

Sol Advisor 소개

코딩 에이전트에 서브에이전트를 붙이는 방식이 흔해지면서, 작업을 받으면 일단 여러 개로 쪼개 나눠 주는 구성이 기본값처럼 자리 잡았습니다. 그런데 쪼개는 데도 비용이 듭니다. 명세를 써 주고, 돌아온 결과를 읽고, 그 결과가 정말 맞는지 다시 확인하는 왕복이 생기기 때문입니다. 문제가 한 세션 안에서 끝날 만한 크기였다면 그 왕복이 순수한 낭비이고, 반대로 위험한 변경이었다면 나눠 준 것만으로는 부족해서 독립적인 검토가 따로 필요합니다. 판단해야 하는 것은 "몇 개로 쪼갤까"가 아니라 "이 작업이 위임할 만한 종류인가"입니다.

이번에 소개할 Sol Advisor는 그 판단을 워크플로우의 첫 단계로 정해 둔 OpenAI Codex 전용 플러그인입니다. 작업 도구를 처음 호출하기 전에 어떤 경로로 갈지와 그 이유를 한 번 선언하게 만들고, 선언한 뒤에는 혼자 처리하거나 보조 한 명을 세우거나 독립 검토를 붙이는 네 가지 중 하나로 진행합니다. 기본값은 혼자 처리하는 solo 이고, 보조 에이전트는 기본 최대 한 명입니다. 어느 경로를 골랐든 변경분 전체를 다시 읽고 검증을 다시 실행하는 일은 원래 세션이 맡습니다.

저장소를 만든 Daniel McAteer는 에이전트 엔지니어링을 다루는 Attention Heads 뉴스레터를 함께 운영하고 있습니다. 플러그인은 Codex 마켓플레이스 형식으로 배포되고, 셸 스크립트와 마크다운 스킬 문서, 그리고 보조 에이전트 정의 파일 세 개로 이루어져 있습니다. 사용하려면 최신 Codex CLI 또는 플러그인이 활성화된 ChatGPT 데스크톱 앱, 그리고 jq가 필요합니다.

서브에이전트를 늘리는 방식과 Sol Advisor의 차이

Codex 생태계에는 반대 방향의 접근도 있습니다. Awesome Codex Subagents처럼 역할별로 특화한 서브에이전트를 대량으로 갖춰 두고 필요할 때 골라 쓰는 컬렉션이 그렇고, Claude Code 동적 워크플로우처럼 작업마다 병렬 하네스를 새로 짜는 방식도 그렇습니다. Sol Advisor는 선택지를 늘리는 대신 위임 자체를 예외로 두고 기본값을 혼자 처리하는 쪽으로 뒤집었습니다.

강한 모델을 조언자로 두고 값싼 모델을 실행자로 쓰는 조합은 Anthropic이 Claude API용 어드바이저 전략으로 공개한 구성과 방향이 비슷합니다. 다만 Sol Advisor는 조언자와 실행자를 나누는 데서 멈추지 않고, 나눌지 말지를 매 작업마다 다시 판정해 기록으로 남기게 합니다.

Sol Advisor의 네 가지 라우트

각 라우트가 언제 쓰이고 무엇을 산출하는지는 저장소가 표로 정리해 두었습니다:

모드 쓰는 상황 진행 방식
solo 기본값이며 위험이 통제되는 경우 루트가 계획하고 구현하고 테스트하고 자체 검토합니다
delegate 명세가 완성되어 구현자 한 명이 맡는 편이 나은 경우 범위가 정해진 작업은 Luna, 판단이 무겁거나 위험이 큰 작업은 Terra가 맡고 루트가 검증합니다
audit 위임보다 독립적인 최종 검토가 중요한 경우 루트가 구현하고, 새로 띄운 읽기 전용 Sol이 검토합니다
full 범위가 넓거나 위험이 크다고 명시적으로 판단한 예외 구현자 한 명, 루트 검증, 새 Sol 검토자를 모두 세웁니다

보조 레인 이름에 등장하는 Sol, Terra, Luna는 OpenAI가 GPT-5.6과 함께 공개한 모델 이름입니다. Sol Advisor는 이 셋에 서로 다른 역할을 고정해 두었습니다. 주 세션은 Sol을 높은 추론 강도(reasoning effort)로 쓰고, 보조 레인은 설치된 에이전트 정의 파일에 모델과 추론 강도가 고정되어 있습니다.

  • Luna 구현 레인: gpt-5.6-luna 를 최대 추론 강도로 쓰며, 계약으로 대부분 결정되는 범위가 정해진 작업을 맡습니다.
  • Terra 구현 레인: gpt-5.6-terra 를 높은 추론 강도로 쓰며, 판단이 무겁거나 영향 범위가 넓은 작업을 맡습니다.
  • Sol 검토 레인: gpt-5.6-sol 을 높은 추론 강도로 쓰고 샌드박스를 읽기 전용으로 고정합니다. 파일을 만들거나 고치지 않고 검토만 합니다.

Sol Advisor가 라우트를 선언하는 방식

작업 도구를 처음 호출하기 전에 다음 형태의 선언을 한 번 출력합니다:

SELECTIVE ROUTE
mode: solo | delegate | audit | full
risk: <이 작업에 한정된 간결한 판단 근거>

이 선언보다 앞서는 작업 도구 호출은 허용되지 않습니다. 형태를 사람이 아니라 기계가 읽을 수 있게 고정해 둔 이유도 여기에 있습니다. 나중에 어떤 경로로 진행했고 그 근거가 무엇이었는지를 기록에서 되짚을 수 있습니다.

경로 변경에도 방향이 정해져 있습니다. 진행 중에 새로 관찰된 위험이 있으면 더 무거운 경로로 올릴 수 있지만, 조용히 낮추는 것은 금지되어 있고 올릴 때는 근거를 기록해야 합니다. 예를 들어 Luna에게 넘긴 작업의 결과가 실제로는 판단이 무거운 작업이었음을 드러내면 Terra로 올라가는데, 이때 Luna를 한 번 더 시도하는 것은 명세 자체가 틀렸을 때에 한정되고 Terra로 가기 위한 선행 조건이 아닙니다.

Sol Advisor가 주 세션에 남겨 두는 일

보조 레인을 쓰더라도 설계와 판정은 원래 세션에 남습니다. Sol Advisor가 주 세션의 책임으로 정해 둔 항목은 요구사항과 모호함 해소, 아키텍처와 인터페이스와 분해 방식 결정, 라우트 선택, 선택한 구현자에게 줄 명세 작성, 실제 변경분 확인과 검증 재실행, 위험이 새로 관찰됐을 때의 승격 판단, 그리고 최종 수용입니다.

구현자에게 넘기는 명세도 형식이 정해져 있습니다. 목표, 담당 파일과 소유권, 인터페이스, 제약, 검증의 다섯 부분과 구조화된 반환 형식을 모두 포함해야 하고, 소유한 파일을 정확히 적어 동시에 진행되는 다른 편집을 보존하며 범위를 조용히 넓히지 않아야 합니다. 자세한 계약은 role-contracts.md에 있습니다.

여기서 눈에 띄는 규정이 하나 더 있습니다. 작업자가 보내온 보고는 주장으로 취급하고, 주 세션이 변경분 전체와 바뀐 파일 범위, 요청한 검사, 실행 증거를 직접 확인합니다. 검토 결과도 ship, fix-first, rethink 세 가지 중 하나로만 돌아오며, 구현을 고치면 이전 검토 결과는 무효가 되어 새 검토자를 다시 세워야 합니다.

Sol Advisor 설치 및 사용법

주 세션이 Sol을 높은 추론 강도로 쓰고 있어야 하고, 네이티브 커스텀 에이전트 기능이 필요합니다. Luna나 Terra 접근 권한은 위임하는 경로를 골랐을 때만 필요합니다. 저장소 이름과 플러그인 식별자는 프로젝트 이름과 달리 sol-advisor 이므로, 아래 명령에서는 그 이름을 그대로 씁니다. 설치는 마켓플레이스 등록, 플러그인 추가, 역할 파일 설치의 세 단계입니다:

codex plugin marketplace add DannyMac180/sol-advisor --ref main
codex plugin add sol-advisor@sol-advisor
plugin_dir="$(codex plugin list --json | jq -r '.installed[] | select(.pluginId == "sol-advisor@sol-advisor") | .source.path')" && test -n "$plugin_dir" && test "$plugin_dir" != null && test -d "$plugin_dir" && test -f "$plugin_dir/scripts/install-agents.sh" && sh "$plugin_dir/scripts/install-agents.sh"

마지막 줄이 실행하는 install-agents.sh는 설치 후 세 개의 역할 파일이 정확한지 검증합니다. 이 설치기는 실패 시 닫히는(fail-closed) 방식이어서, 수정된 파일이나 안전하지 않은 파일, 일반 파일이 아닌 것, 심볼릭 링크, 알 수 없는 파일, 내용이 다른 파일은 그대로 두고 건드리지 않습니다. Codex 설정 자체도 수정하지 않습니다. 설치를 마치면 네이티브 역할이 인식되도록 새 Codex 작업을 시작합니다.

새 작업에서 쓰는 호출 문장은 한 줄입니다:

Use $sol-advisor:orchestration to build this feature and verify it. Declare the selective route before task tools.

갱신할 때는 마켓플레이스를 업그레이드하고 플러그인을 다시 추가한 뒤 역할 파일을 재설치하고 새 작업을 시작합니다:

codex plugin marketplace upgrade sol-advisor
codex plugin add sol-advisor@sol-advisor
plugin_dir="$(codex plugin list --json | jq -r '.installed[] | select(.pluginId == "sol-advisor@sol-advisor") | .source.path')" && test -n "$plugin_dir" && test "$plugin_dir" != null && test -d "$plugin_dir" && test -f "$plugin_dir/scripts/install-agents.sh" && sh "$plugin_dir/scripts/install-agents.sh"

Sol Advisor는 누구에게 유용한가

Codex를 쓰면서 서브에이전트를 언제 붙일지가 매번 감으로 결정되고, 되돌아보면 굳이 나눌 필요 없던 작업에 위임 왕복을 쓴 적이 있다면 이 플러그인이 그 결정을 명시적인 기록으로 바꿔 줍니다. 위험한 변경에 독립 검토를 붙이는 audit 경로가 따로 있다는 점도, 검토를 사람이 기억해서 요청하지 않아도 된다는 뜻이라 실무에서는 차이가 큽니다. 반대로 Codex를 쓰지 않거나 주 세션 모델을 Sol로 고정할 수 없는 환경이라면 이 플러그인은 동작하지 않습니다. Sol Advisor는 모델과 추론 강도가 확인되지 않으면 위임 전에 멈추고 사용자에게 확인을 요청하도록 정해 두었으며, 스킬이 주 세션의 모델을 바꿀 수는 없다고 명시하고 있습니다. 규칙이 촘촘한 만큼 자유도가 낮다는 것도 감안할 부분입니다. 작업마다 하네스를 직접 설계하고 싶은 쪽이라면 이 플러그인이 정해 둔 네 가지 경로가 제약으로 느껴질 수 있습니다.

Sol Advisor의 라이선스

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

:github: Sol Advisor 프로젝트 GitHub 저장소

더 읽어보기




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

이 도구를 직접 설치해 사용해보셨다면, :pytorch:파이토치 한국 사용자 모임:south_korea: 회원들을 위해 경험이나 팁을 댓글로 남겨주세요! :folded_hands:

잘 쓸게요 :') 감사합니다.

1개의 좋아요