모델에 정확히 무엇을 보내는지 보여주는 AI IDE를 만들었습니다
요약
AI 코딩 도구의 불투명한 컨텍스트와 에이전트의 권한 문제를 해결하기 위해 개발된 오픈 소스 AI IDE 'DevWit'을 소개합니다. 사용자가 모델에 전송되는 모든 프롬프트와 컨텍스트를 시각적으로 확인하고 제어할 수 있는 기능을 제공합니다.
핵심 포인트
- 컨텍스트 패널을 통해 시스템 프롬프트, 파일, RAG 청크 등 주입된 모든 항목을 실시간 확인 및 편집 가능
- 권한 게이트 기능을 통해 에이전트의 파일 작성 및 셸 명령 실행을 개별적으로 승인하거나 거부 가능
- 모든 LLM 요청 매니페스트를 디스크에 기록하여 사후 감사(Audit)가 가능한 투명성 확보
- RAG 검색 결과의 실패 원인을 명확히 표시하여 조용한 실패(Silent failure) 방지
모든 AI 코딩 도구는 동일한 신념의 도약 (leap of faith)을 요구합니다. 즉, 도구가 보내는 컨텍스트 (context)가 합리적일 것이라는 믿음과, 에이전트 (agent)가 건드려서는 안 될 것을 건드리지 않을 것이라는 믿음입니다. 저는 이러한 막연한 믿음에 지쳐서, 이 두 가지가 모두 완전히 가시적이고 강제될 수 있는 무료 오픈 소스 AI IDE인 DevWit를 만들었습니다.
제가 계속해서 마주쳤던 두 가지 벽
벽 1: 불투명한 컨텍스트 (opaque context). 모델의 답변 품질이 저하되는데 그 이유를 알 수 없습니다. 40k-토큰 (40k-token) 파일이 몰래 주입되었나요? 오래된 RAG 청크 (RAG chunk)가 실제로 필요한 파일을 밀어냈나요? 대부분의 도구는 프롬프트 (prompt)를 블랙박스 (black box)로 취급합니다.
벽 2: 주변 권한 (ambient authority). 파일을 작성하고 셸 명령 (shell commands)을 실행할 수 있는 에이전트 (agents)는 진정으로 유용합니다. 하지만 예상치 못한 행동을 하기 전까지만 말이죠. "대체로 먼저 물어봅니다"라는 말은 권한 모델 (permission model)이 아닙니다.
DevWit은 이 두 가지 벽에 대한 해답을 핵심 기능으로 담고 있습니다.
기능 1: 컨텍스트 패널 (The Context Panel)
DevWit의 모든 LLM 요청은 전송되기 전에 완전한 매니페스트 (manifest)를 렌더링합니다:
- 시스템 프롬프트 (system prompt) (모드별, 편집 가능)
- 도구 목록 (tool list)
- 주입된 모든 항목 — 파일, RAG 청크, 터미널 출력, 진단 (diagnostics) — 각 항목별 토큰 수 (token count)
요청마다 모든 항목을 끄거나 켤 수 있습니다. 노이즈가 심한 검색 결과 (retrieval result)를 제거하면 토큰 총합이 실시간으로 줄어드는 것을 볼 수 있습니다. 요청이 끝나면 매니페스트는 디스크에 기록되므로, "모델이 이 디프 (diff)를 생성할 때 정확히 무엇을 보았는가?"라는 질문에 대해 몇 주 후 감사 (audit)가 필요할 때도 답을 얻을 수 있습니다.
코드베이스 인덱스 (codebase index, RAG)도 동일한 규칙을 따릅니다. 검색 결과 (retrieval hits)는 매니페스트에 개별적으로 라벨이 붙은 항목으로 나타나며, 아무것도 주입되지 않았다면 패널에 그 이유(why)가 표시됩니다 (인덱스 비활성화 / 구축 중 / 검색 결과 없음 / 제공업체가 임베딩 (embeddings)을 지원하지 않음). 조용한 실패 (silent failures)는 없습니다.
기능 2: 권한 게이트 (The Authorization Gate)
에이전트 런타임 (agent runtime)은 개별 동작에 대한 승인 없이는 물리적으로 파일을 작성하거나 쉘 명령 (shell command)을 실행할 수 없습니다. 이 게이트는 정확한 작업 내용 — 파일 경로 또는 전체 명령줄 (command line) — 을 보여주며, 사용자는 이를 승인, 거부하거나 해당 프로젝트를 위해 결정을 기억하도록 설정할 수 있습니다.
이것은 시스템 프롬프트 (system-prompt) 상의 약속이 아닙니다. 도구 실행 경로 (tool execution path)는 승인자 (authorizer)를 거치도록 라우팅되며, 기록된 승인이 없으면 호출 자체가 발생하지 않습니다. MCP 도구 서버 (MCP tool servers)도 동일한 처리를 받습니다. 모든 외부 도구 호출은 완전 정규화된 이름 (fully-qualified name)을 통해 게이트를 통과합니다.
기능 3: 라우팅을 통한 효율적인 컨텍스트 (Lean context by routing)
더 많은 컨텍스트가 반드시 더 좋은 컨텍스트인 것은 아닙니다. DevWit에는 각 요청을 분류하는 태스크 라우터 (task router)가 포함되어 있습니다. 단순한 요청(오타 수정, 작은 질문 등)은 Ollama를 통해 로컬 모델 (local model)로 전달되어 무료로, 프라이빗하게, 오프라인 상태에서도 사용 가능합니다. 반면 복잡한 다중 파일 작업은 설정된 클라우드 모델 (Anthropic 또는 모든 OpenAI 호환 API)로 전달됩니다. 세션별 사용 내역부 (usage ledger)가 토큰과 예상 비용을 추적하므로, 라우팅 결정 또한 감사 (auditable)가 가능합니다.
이것은 채팅 래퍼 (chat wrapper)가 아닌 실제 IDE입니다
AI 기능 아래에는 일상적으로 사용할 수 있는 에디터가 자리 잡고 있습니다:
- TypeScript 언어 서버 (language server) — 실시간 진단 (diagnostics), 호버 (hover), 정의로 이동 (go-to-definition)
- 통합 Git — 파일 트리 내 상태 배지, 스테이지/커밋 (stage/commit), 인라인 디프 (inline diff)
- 중단점 디버깅 (Breakpoint debugging) — js-debug를 통한 DAP: 중단점 (breakpoints), 스텝 (stepping), 변수 검사 (variable inspection)
- 멀티 에이전트 오케스트레이션 (Multi-agent orchestration) — 플래너 모드 (planner mode)가 의도를 병렬 서브 에이전트 (sub-agents)로 분해하며, 에이전트별 활동 스트림 (activity streams)을 제공
- 커스텀 모드 (Custom modes) — 모드별로 자신만의 시스템 프롬프트 / 도구 세트 / 모델 / 컨텍스트 정책을 정의할 수 있으며, 핫 리로드 (hot-reloaded)가 가능하고 JSON으로 공유할 수 있음
- MCP 도구 서버 (MCP tool servers) — 설정에서 관리되는 stdio 서버, 종료 시 라이프사이클 (lifecycle) 처리
엔지니어링의 정직함
v0.3.0은 실제 패키징된 앱(모의 객체(mocks)가 아님)을 구동하는 614개의 유닛 테스트 (unit tests)와 28개의 엔드 투 엔드 (end-to-end) 스위트를 통해 검증되었습니다. Windows (NSIS), macOS (dmg/zip), Linux (AppImage/deb)용으로 제공되며, GitHub Releases를 통한 자동 업데이트를 지원합니다.
의도적으로 포함하지 않은 기능들: 계정, 클라우드 동기화 (cloud sync), 마켓플레이스 (marketplace), 또는 어떠한 유료 결제 장벽 (paywall)도 없습니다. 텔레메트리 (Telemetry)는 선택 사항 (opt-in)이며, 기본적으로 꺼져 있고 (off by default), 익명으로 처리되며, 어떠한 콘텐츠도 수집하지 않습니다 — 직접 PostHog를 셀프 호스팅 (self-host)하고 싶다면 엔드포인트 (endpoint)를 설정할 수 있습니다. 이것은 자유 소프트웨어 (free software)이며, 앞으로도 그 상태를 유지할 것입니다.
향후 계획
단기 로드맵 (roadmap)은 신뢰와 도달 범위입니다: Windows 빌드를 위한 Azure Trusted Signing (인프라는 이미 CI에 포함되어 있으며, 제 계정 승인을 기다리는 중입니다), winget 배포 (PR 검토 중), 그 다음으로는 더 깊은 LSP 언어 지원 범위 확장입니다.
만약 컴플라이언스 (compliance) 요구 사항이 있는 팀에서 일하시거나 — 혹은 단순히 여러분의 AI 도구가 무엇을 하고 있는지 알고 싶다면 — 진심으로 여러분의 피드백을 기다리겠습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기