Vasat, 즉 평균적인 코딩 도구들에 더 나은 오케스트레이션을 제공할 것이라는 기대감으로 모드(mod), 스킬(skill), 플러그인(plugin), 명령어(talimat) 및 MCP를 추가하는 데 지친 분들에게 안녕하세요. 😄
Claude Code, Codex, Pi, OpenCode, Antigravity, CommandCode… 어떤 것을 선택하든 이제는 그렇습니다. 하나를 설치하고 부족한 점을 발견하며, 그 부족한 점들을 또 다른 것으로 메우려고 합니다. 약간의 메모리(memory), 약간의 서브에이전트(subagent), 약간의 리뷰(review), 그리고 '이번에는 명령어들을 잊지 않게' 하는 새로운 .md 파일까지. 그러다 보면 프로젝트 개발과 자신의 코딩 도구 관리(돌보기)가 뒤섞입니다.
WrongStack 측에서는 메모리, 작업 관리(task management), 모델 라우팅(model routing), 도구 사용(tool usage), 에이전트 간 통신 및 검증이 하나의 엔진 안에서 함께 작동합니다. 자체 코어(core), 프로바이더 연결(provider connections), 툴 실행기(tool executor) 및 다중 에이전트 작업 시스템을 갖추고 있습니다. 처음부터 끝까지 독립적인 개발 환경에 대해 이야기하고 있습니다.
내장 플러그인 생태계에는 결정론적으로 작동하는 기능뿐만 아니라, 필요할 때 LLM을 사용하는 기능도 있습니다. 의사결정 측면에서는 Brain의 규칙, 선택적 Jev 평가 및 더 높은 위험도의 사안에 대해서는 다중 모델(multi-model) Council이 가동될 수 있습니다. 게다가 플러그인의 모델까지 별도로 라우팅할 수 있습니다. 모든 작은 작업에 대해 리더가 사용하는 모델을 실행할 필요는 없습니다.
SAGE 메모리 시스템은 기억 기록을 파일, 디렉터리, 명령어, 테스트, 패키지, 커밋 또는 심지어 클래스 내부의 메서드까지 연결할 수 있습니다. '이 프로젝트에서 예전에 이런 걸 했었지' 수준의 기억력에 대해 이야기하는 것이 아닙니다. 결정이 어떤 코드와 관련되어 있는지 명확하며, 의존하는 소스가 변경되면 유효성을 재검사합니다. Memory Companion은 사용된 메모리가 현재 코드와 일치하는지 검증합니다.
Kanban 측면에서는 작업의 종속성(dependency), 책임자, 단계 및 수락 기준이 있습니다. 에이전트가 '완료했다'고 말한다고 해서 카드가 자동으로 Done 상태가 되지 않습니다. Review 단계로 오게 되며, 완료 조건과 증거가 검증됩니다. 왜냐하면 코드를 작성한 것과 작업을 완료한 것은 같지 않기 때문입니다.
같은 세션에서 리더를 한 provider/모델로, 리뷰어(reviewer)를 다른 사람으로, 버그 헌터(bug hunter)를 또 다른 사람으로 구동할 수 있습니다. 역할과 단계별 라우팅(routing), 별도의 폴백 프로파일(fallback profile), 그리고 적절한 provider 오류 발생 시 자동 전환 기능이 있습니다. 한 모델의 용량 문제가 전체 작업 흐름을 단독으로 위태롭게 만들지 않도록 말입니다.
코드베이스 인덱싱 덕분에 에이전트는 파일들 속에서 헤매는 대신 심볼(symbol), 호출 관계(call relationship), 그리고 관련 코드를 검색할 수 있습니다. 전문 에이전트들은 발견한 내용을 프로젝트 전체의 메일박스(mailbox)를 통해 공유할 수 있습니다. 별도의 세션과 워크트리(worktree) 간에도 통신이 가능하여, 모두가 서로 모르는 상태에서 같은 문제를 재발견할 필요가 없습니다.
ToolFlow를 사용하면 상호 연결된 도구 호출들이 하나의 흐름으로 처리될 수 있으며, 중간 결과물은 필요한 곳에서 걸러져 모델에게 결정에 필요한 결과를 전달합니다. Chimera는 변경 사항을 검토하고 파일 및 라인 참조와 함께 발견 내용을 생성합니다. Session Story는 어떤 에이전트가 어떤 도구를 사용했는지, 어떤 파일에 접근했는지, 어떤 메모리를 사용했는지 가시화합니다. 무엇이 일어났는지 추측하는 대신 기록을 살펴볼 수 있습니다.
게다가 전문 에이전트들이 프로젝트별로 학습한 작업 방식도 있습니다. 리뷰어나 버그 헌터가 이 레포지토리(repository)에서 유용했던 경험은 다음 적절한 임무에서 재사용될 수 있습니다. 매번 새로운 세션마다 같은 것들을 처음부터 설명할 필요가 없도록 말입니다.
그러다가 어느 곳에서 “모델이 바보가 됐다”, “예전보다 빨랐다”, “이번엔 프로젝트를 망쳤다”라는 문장들을 봅니다. 그런데 문제가 정말 모델에 있는 걸까요? 어떤 컨텍스트(context)가 모델에게 주어졌는지, 어떤 도구들이 제공되었는지, 이전 지식은 어떻게 정제되었는지, 임무는 어떻게 분할되었는지, 결과는 어떻게 검증되었는지요? 이런 것들을 보지 않고 전체 청구서를 모델에 부과하는 것이 얼마나 의미가 있을까요?
“야, 여기 프로젝트다. 네 마음대로 만져봐; 망가지면 내가 고쳐줄게”라는 프롬프트(prompt)를 던지는 방식으로 작동하다가, 이것을 강력한 엔지니어링 시스템이라고 너무 익숙해진 것 같아요.
제가 말하는 '평균(vasat)'이 바로 이것입니다. 몇 가지 좋은 작업 결과물(task output)을 얻은 후에, 도구가 프로젝트가 커져도 같은 품질을 유지할 것이라고 가정하는 것. 부족한 모든 것을 새로운 지침 파일(instruction file)로 메우려고 시도하는 것. 그리고 그 지침들까지 사용자가 따라 하고, 상기시키고, 감시해야 하는 상황입니다.
WrongStack은 매일 이 사슬의 또 다른 고리를 개발하고 있습니다. 저는 그 차이를 기억력, 도구(tools), 에이전트(agents), 그리고 검증(validation)이 프로젝트 전반에 걸쳐 함께 작동하는 방식에서 보고 있습니다.
사용하는 도구가 기대치를 충족한다면 좋습니다. 하지만 혹시 기대치를 도구의 한계에 맞춰서 축소시킨 것은 아닌지, 그것도 생각해 봐야 합니다.