코딩 에이전트 작업을 터미널 밖으로 옮긴 이유
요약
코딩 에이전트의 작업 상태를 효율적으로 관리하기 위해 개발된 오픈 소스 클라우드 워크벤치 ArchCode를 소개합니다. 터미널 기반의 파편화된 세션 관리 문제를 해결하고, 아이디어부터 자동화까지 이어지는 체계적인 워크플로우를 제공합니다.
핵심 포인트
- 터미널 탭에 의존하던 기존 코딩 에이전트 워크플로우의 한계 지적
- ArchCode: 아이디어, 논의, 준비, 세션으로 이어지는 단계별 작업 관리
- 프로젝트 상태(Project State)를 유지하기 위한 전용 워크벤치 제공
- 멀티 에이전트 환경에서 명확한 책임 구조(Owner)를 지향
어느 순간부터 제가 터미널 탭을 닫지 않고 있다는 사실을 깨달았습니다.
어떤 탭에는 에이전트(agent)가 기능 구현을 절반쯤 진행 중인 상태가 남아 있었습니다. 다른 탭에는 잃어버리고 싶지 않은 유용한 조사 내용이 들어 있었습니다. 세 번째 탭은 제가 질문에 답해주기를 기다리고 있었습니다. 각 탭이 다른 어디에도 존재하지 않는 프로젝트 상태(project state)의 조각을 담고 있었기에, 저는 이 모든 탭을 열어둔 채로 유지했습니다.
터미널은 어느새 조용히 저의 파일 정리 시스템(filing system)이 되어 있었습니다.
저는 코딩 에이전트(coding agents)를 좋아하며, 일반적으로 그들이 실제 작업을 수행하도록 맡기는 것에 거부감이 없습니다. 문제는 그들이 너무 많은 일을 한다는 것이 아니었습니다. 문제는 여러 프로젝트와 세션(sessions)이 진행되고 있을 때, 전체적인 그림을 볼 수 있는 좋은 방법이 없었다는 점이었습니다.
어떤 아이디어가 아직 미완성인가? 무엇이 빌드할 준비가 되었는가? 어떤 세션이 실행 중인가? 무엇이 나를 기다리고 있는가? 무엇이 이미 시도되었는가?
터미널 탭을 하나씩 확인하는 것은 워크플로우(workflow)가 아니었습니다. 그래서 저는 ArchCode를 만들기 시작했습니다.
코드 주변의 작업을 위한 공간
ArchCode는 AI 코딩을 위한 오픈 소스 클라우드 워크벤치(cloud workbench)입니다.
여기서 "클라우드(cloud)"라고 말하는 것은 반드시 타인의 인프라(infrastructure)에서 실행되어야 한다는 뜻이 아닙니다. 코드가 있는 동일한 노트북에서 실행할 수도 있고, 책상 아래의 워크스테이션(workstation)이나 원격 서버(remote server)에서 실행할 수도 있습니다. 기계는 여러분이 선택합니다. 브라우저는 단순히 이를 관리하는 수단일 뿐입니다.
저는 이 워크벤치가 에이전트가 코드를 작성하는 순간 그 이상을 다루기를 원했습니다. 대부분의 프로젝트 작업은 그보다 훨씬 이전에 시작됩니다.
때로는 해결해야 할 명확한 버그(bug)가 있을 때도 있습니다. 어떤 때는 그저 막연한 생각일 때도 있습니다:
이 코드베이스(codebase)의 이 부분은 변경하기가 점점 어려워지고 있어. 나중에 살펴봐야겠다.
이것은 아직 프롬프트(prompt)로 만들 준비가 되지 않았지만, 여전히 간직할 가치가 있습니다.
ArchCode는 모든 프로젝트에 고유한 할 일 목록(Todos)을 제공하며, 여기서 기능(features), 버그(bugs), 리팩터링(refactors), 실험(experiments), 또는 반쯤 형성된 아이디어들을 저장할 수 있습니다. 할 일 목록은 제가 그것에 대해 생각할 준비가 될 때까지 그곳에 머물 수 있습니다. 저는 에이전트(Agent)와 이를 논의하고, 제가 실제로 원하는 것이 무엇인지 파악한 후에야 비로소 '준비됨(Ready)'으로 표시할 수 있습니다.
때가 되면, 할 일(Todo)은 실제 세션(Session) 또는 자동화(Automation)로 전환될 수 있습니다. 원래의 아이디어는 새로운 채팅창으로 사라지는 대신 작업에 계속 붙어 있게 됩니다.
이제 그 흐름은 다음과 같습니다:
아이디어(Idea) → 논의(Discussion) → 준비됨(Ready) → 세션(Session) 또는 자동화(Automation)
단순해 보이지만, 이것이 기존의 코딩 에이전트(Coding-agent) 도구들에서 제가 가장 갈구했던 핵심 요소 중 하나였습니다.
멀티 에이전트(Multi-agent), 하지만 책임자가 있는 구조
저는 또한 멀티 에이전트(Multi-agent) 작업에 명확한 소유자(Owner)가 있기를 원했습니다.
"멀티 에이전트"는 결과에 대해 명확히 책임지는 사람 없이 여러 에이전트가 서로 대화만 하는 상태로 쉽게 변질될 수 있습니다. ArchCode는 더 직관적인 접근 방식을 취합니다.
리드(Lead)가 작업을 소유합니다. 리드는 직접 작업을 수행할 수도 있지만, 명확한 이유가 있을 때는 전문 에이전트(Specialist Agents)를 불러올 수도 있습니다:
- 분석가(Analyst): 더 깊은 분석 및 검토를 위해
- 빌드(Build): 구현 및 검증을 위해
- 탐색(Explore): 코드베이스를 빠르게 조사하기 위해
- 사서(Librarian): 문서화 및 외부 조사를 위해
작은 변경 사항은 리드(Lead)만으로 충분할 수 있습니다. 더 큰 작업은 먼저 조사가 필요할 수 있고, 이를 구현할 빌드 에이전트(Build Agent)와 결과를 검토할 분석가(Analyst)가 필요할 수도 있습니다.
저는 단순히 에이전트 숫자를 늘리기 위해 더 많은 에이전트를 원하는 것이 아닙니다. 저는 각 에이전트가 인식 가능한 직무, 고유한 도구(Tools), 그리고 자신이 책임지는 범위에 대한 명확한 경계를 갖기를 원합니다.
ArchCode는 자체적인 에이전트 런타임(Agent runtime)을 실행합니다. 이는 Claude Code, Codex 또는 다른 코딩 CLI(Command Line Interface) 위에 얹혀진 웹 UI(Web UI)가 아닙니다. 서버가 에이전트 실행, 세션(Sessions), 도구(Tools), 승인(Approvals), 메모리(Memory), 그리고 지속 가능한 상태(Durable state)를 소유합니다.
이러한 차이는 중요합니다. 왜냐하면 특정 실행이 끝난 후에도 세션(Session)이 프로젝트의 일부로 남아 있기 때문입니다. 제가 다시 돌아왔을 때도 그 대화, 모델 선택, 도구 활동, 결정 및 실행 이력이 그대로 남아 있습니다.
브라우저는 제어실입니다
실제 에이전트(Agent) 작업은 브라우저 내부가 아니라 ArchCode 호스트(Host)에서 실행됩니다.
이는 제가 온라인 상태를 유지하는 머신에서 작업을 시작한 뒤, 페이지를 닫고 나중에 다른 브라우저에서 확인할 수 있음을 의미합니다. ArchCode와 호스트 머신(Host machine)이 계속 실행 중인 한, 탭을 닫는다고 해서 작업이 취소되지 않습니다.
Web UI를 통해 저는 프로젝트 간을 이동하거나, 활성화된 세션(Sessions)을 추적하고, 지침을 추가하거나, 질문에 답하고, 민감한 작업을 승인하며, 변경 사항과 테스트 결과를 검사하거나, 잘못된 방향으로 진행되는 작업을 중단할 수 있습니다.
저는 에이전트(Agent)가 해롭지 않은 모든 명령마다 저를 방해하는 것을 원하지 않습니다. 그것은 에이전트가 백그라운드(Background)에서 작업하도록 허용하는 이유의 상당 부분을 무색하게 만듭니다. 저는 차라리 에이전트에게 작동할 수 있는 여유를 주고, 실제 결정이 필요한 시점에 저를 다시 불러들이는 방식을 선호합니다.
더 강력한 격리(Isolation)가 필요한 작업의 경우, ArchCode를 제어된 머신이나 가상 환경(Virtual environment) 내부에서 실행할 수 있습니다. 셀프 호스팅(Self-hosting)이 보안 우려를 완전히 제거하는 것은 아니지만, 경계가 어디에 있어야 할지를 제가 결정할 수 있게 해줍니다.
에이전트 역할과 모델은 별개의 선택 사항입니다
모든 작업에 가장 강력한 모델을 사용하는 것은 비용이 빠르게 증가합니다. 또한 그럴 필요도 없습니다.
ArchCode에는 세 가지 설정 가능한 모델 프로필(Profiles)이 있습니다: principal, deep, 그리고 fast입니다. 판단이나 검토가 중요한 곳에는 더 강력한 모델을 사용하고, 일상적인 구현이나 코드베이스 탐색에는 더 빠르고 저렴하거나 로컬(Local)에서 작동하는 모델을 사용할 수 있습니다.
모델이 바뀌더라도 에이전트의 책임은 동일하게 유지됩니다.
이것이 저에게 중요한 이유는 워크플로(Workflow)가 특정 모델 벤더(Vendor)에 종속되는 것을 원하지 않기 때문입니다. ArchCode는 다양한 제공업체(Providers)와 사용자 정의된 OpenAI 호환 엔드포인트(Endpoints)를 지원하며, 세션(Session)은 작업 성격에 따라 다른 모델을 사용할 수 있습니다.
모델은 교체 가능하지만, 프로젝트 기록과 워크플로는 그렇지 않습니다.
제가 실제로 구축하려는 것
제가 ArchCode가 Claude Code, Codex 또는 다른 기존 코딩 에이전트(Coding agents)보다 모델이 코드를 더 잘 작성하게 만든다고 주장하는 것은 아닙니다.
그것은 제가 해결하고자 했던 문제가 아닙니다.
저는 코딩을 둘러싼 레이어(layer)를 구축하려고 합니다. 즉, 아이디어가 대기하고, 작업이 구체화되며, 에이전트(Agents)가 책임을 맡고, 세션(Sessions)이 계속 유지되며, 6개의 터미널을 열지 않고도 무슨 일이 일어나고 있는지 확인할 수 있는 공간을 만들고자 합니다.
ArchCode는 아직 초기 단계입니다. 현재는 다중 사용자 엔지니어링 팀보다는 한 명의 개인 운영자를 위해 구축되었습니다. 활발한 작업은 브라우저를 닫아도 유지될 수 있지만, 아직 ArchCode 서버를 재시작하는 것까지는 견디지 못합니다. 원격 배포(Remote deployment) 또한 적절한 인증과 네트워크 보안이 필요합니다.
아직 다듬어지지 않은 부분들이 있으며, 더 많은 사람들이 사용하게 되면 워크플로우(workflow)의 일부가 바뀔 것이라고 확신합니다.
만약 여러분이 이미 여러 프로젝트나 코딩 에이전트(coding agents)를 동시에 실행하고 있다면, 무엇을 가장 먼저 놓치게 되는지 알고 싶습니다. 그것이 제가 가장 관심을 두고 있는 문제입니다.
소스 코드와 설치 방법은 여기에서 확인할 수 있습니다:
저는 이 초안을 정리하고 영어를 다듬는 데 AI의 도움을 받았습니다. 경험과 제품에 대한 결정은 저의 것이며, 게시하기 전에 모든 기술적 주장을 검토했습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기