theDakshJaitly/mex
요약
mex는 AI 에이전트가 세션 간 컨텍스트를 유지할 수 있도록 구조화된 프로젝트 메모리를 제공하는 도구입니다. 거대한 지침 파일 대신 라우팅된 마크다운 스캐폴드를 사용하여 토큰 낭비를 줄이고 에이전트의 작업 효율을 높입니다.
핵심 포인트
- 에이전트용 영구적이고 탐색 가능한 프로젝트 메모리 제공
- 라우팅 테이블을 통한 효율적인 컨텍스트 로딩으로 토큰 절약
- CLI를 통한 스캐폴드 무결성 검증 및 괴리(drift) 수정 기능
- 구조화된 마크다운 기반의 AGENTS.md 및 ROUTER.md 활용
AI 에이전트(AI agents)는 세션 사이의 모든 것을 잊어버립니다. mex는 에이전트에게 영구적이고 탐색 가능한 프로젝트 메모리(project memory)를 제공하여, 모든 세션이 차가운 프롬프트 덤프(cold prompt dump) 대신 올바른 컨텍스트(context)와 함께 시작되도록 합니다.
npx mex-agent setup
대부분의 에이전트 메모리 설정은 하나의 거대한 지침 파일(instruction file)이 됩니다. 이는 잠시 동안은 작동하지만, 곧 컨텍스트 윈도우(context window)를 가득 채우고, 토큰(tokens)을 낭비하며, 실제 코드베이스(codebase)에서 벗어나게 됩니다.
| mex 미사용 시 | mex 사용 시 |
|---|---|
거대한 CLAUDE.md / 규칙 파일들 | 작은 앵커(anchor) 파일과 라우팅된 컨텍스트 |
| 에이전트가 결정 사항과 관례를 잊음 | 결정 사항, 패턴, 프로젝트 상태가 유지됨 |
| 문서가 코드와 조용히 동떨어짐 | mex check가 오래되거나 깨진 스캐폴드(scaffold) 주장을 포착함 |
| 모든 세션이 차갑게 시작됨 | 에이전트가 작업에 관련 있는 파일만 로드함 |
| 반복되는 작업이 암묵적 지식으로 남음 | 새로운 패턴이 실제 작업으로부터 성장함 |
mex는 에이전트 메모리를 위한 구조화된 마크다운 스캐폴드(markdown scaffold)를 생성합니다:
AGENTS.md
/CLAUDE.md
— 도구 로드용 아주 작은 앵커(anchor)ROUTER.md
— 작업별 컨텍스트를 위한 라우팅 테이블(routing table)context/
— 아키텍처(architecture), 스택(stack), 설정(setup), 결정 사항(decisions), 관례(conventions)patterns/
— 주의 사항 및 검증 단계가 포함된 재사용 가능한 작업 가이드.mex/events/decisions.jsonl
— mex log를 통한 추가 전용(append-only) 노트
CLI는 해당 스캐폴드의 무결성을 유지합니다. AI 토큰을 소비하지 않고도 경로, 명령, 의존성, 패턴 인덱스, 노후화(staleness), 스크립트 커버리지를 확인합니다. 괴리(drift)가 나타나면, mex sync가 타겟팅된 프롬프트를 구축하여 에이전트가 오래된 부분만 수정하도록 합니다.
npm 패키지 이름은 mex가 이미 사용 중이었기 때문에 mex-agent로 명명되었습니다. CLI 명령어는 여전히 mex입니다.
npx mex-agent setup
설정(Setup) 과정은 .mex/ 스캐폴드를 생성하고, 어떤 AI 도구를 사용하는지 묻고, 코드베이스를 사전 스캔하며, 메모리 파일을 채우기 위한 타겟팅된 프롬프트를 생성합니다. 약 5분 정도 소요됩니다.
설정이 끝나면 mex를 전역(globally)으로 설치할 수 있습니다:
mex check # 괴리 점수(drift score)
mex sync # 괴리 수정(fix drift)
전역 설치를 건너뛰려면 npx를 사용하세요:
npx mex-agent check
npx mex-agent sync
나중에 언제든지 전역으로 설치할 수 있습니다:
npm install -g mex-agent
에이전트(agent)는 자동으로 로드되는 아주 작은 파일로 시작합니다. 해당 파일은 ROUTER.md를 가리키며, 라우터(router)는 현재 작업에 필요한 컨텍스트(context)만을 로드합니다. 유의미한 작업이 완료된 후, GROW 단계는 프로젝트 상태, 결정 사항, 작업 패턴을 업데이트하여 스캐폴드(scaffold)가 시간이 지남에 따라 더욱 유용해지도록 합니다.
편집 가능한 소스: docs/diagrams/context-routing.excalidraw
8개의 체커(checker)가 실제 코드베이스를 기준으로 스캐폴드를 검증합니다. 토큰 소모 0, AI 사용 0입니다.
| 체커 (Checker) | 탐지 내용 |
|---|---|
| path | 디스크에 존재하지 않는 참조 파일 경로 |
| edges | 누락된 파일을 가리키는 YAML 프론트매터 (frontmatter) 엣지(edge) 대상 |
| index-sync | 실제 패턴 파일과 동기화되지 않은 patterns/INDEX.md |
| staleness | 30일 이상 또는 50개 이상의 커밋(commit) 동안 업데이트되지 않은 스캐폴드 파일 |
| command | 존재하지 않는 스크립트를 참조하는 npm run X / make X |
| dependency | package.json에 누락된 선언된 의존성 (dependencies) |
| cross-file | 파일 간 서로 다른 버전으로 존재하는 동일한 의존성 |
| script-coverage | 어떤 스캐폴드 파일에서도 언급되지 않은 package.json 스크립트 |
점수는 100점에서 시작합니다. mex는 오류(error)당 10점, 경고(warning)당 3점, 정보(info)당 1점을 차감합니다.
편집 가능한 소스: docs/diagrams/drift-sync.excalidraw
모든 명령은 프로젝트 루트(root)에서 실행됩니다. 전역(globally)으로 설치하지 않았다면, mex를 npx mex-agent로 대체하여 사용하세요.
| 명령어 | 기능 |
|---|---|
mex | 대화형 터미널 대시보드(interactive terminal dashboard)를 엽니다 |
mex tui | 대화형 터미널 대시보드(interactive terminal dashboard)를 명시적으로 엽니다 |
mex setup | 최초 설정: .mex/ 스캐폴드(scaffold)를 생성하고 AI로 채웁니다 |
mex setup --mode agent-memory | 지속형 에이전트(persistent-agent) / 홈랩(homelab) 메모리 워크스페이스를 위한 템플릿을 생성합니다 |
mex setup --dry-run | 변경 사항을 적용하지 않고 설정이 수행할 작업을 미리 봅니다 |
mex check | 드리프트 체크(drift checkers)를 실행하고 점수가 매겨진 보고서를 출력합니다 |
mex check --quiet | 한 줄 출력: mex: drift score 92/100 (1 warning) |
mex check --json | JSON 형식의 전체 보고서 |
mex check --fix | 오류가 발견되면 확인 후 즉시 동기화(sync)로 이동합니다 |
mex sync | 드리프트(drift)를 감지하고, 모드를 선택하고, AI가 수정하도록 한 뒤, 검증하고, 반복합니다 |
mex sync --dry-run | 실행하지 않고 대상 프롬프트(prompts)를 미리 봅니다 |
mex sync --warnings | 동기화 시 경고(warning) 전용 파일만 포함합니다 |
mex init | 코드베이스(codebase)를 사전 스캔하고 AI를 위한 구조화된 브리프(brief)를 구축합니다 |
mex init --json | 원시 스캐너 브리프(scanner brief)를 JSON으로 출력합니다 |
mex log <message> | 노트, 결정 사항, 리스크 또는 할 일(todo)을 추가합니다 |
mex timeline | 최근 이벤트 로그 항목을 확인합니다 |
mex heartbeat | 경량 지속형 에이전트(persistent-agent) 상태 체크를 1회 실행합니다 |
mex doctor | 친절한 스캐폴드(scaffold) 상태 요약 |
mex watch | 포스트 커밋 훅(post-commit hook)을 설치합니다 |
mex watch --interval | 포그라운드(foreground)에서 하트비트(heartbeat)를 반복적으로 실행합니다 |
mex watch --uninstall | 훅(hook)을 제거합니다 |
mex completion <shell> | 셸 완성(shell completions)을 출력합니다 |
mex commands | 설명과 함께 명령어 및 스크립트 목록을 나열합니다 |
mex setup은
사용 중인 도구가 무엇인지 묻고 적절한 설정 파일(config file)을 생성합니다.
| 도구 | 설정 파일 |
|---|---|
| Claude Code | CLAUDE.md |
| ... |
Neovim 사용자는 Claude Code, Avante.nvim, Copilot.vim 및 일반적인 플러그인 설정을 위해 docs/vim-neovim.md를 사용할 수 있습니다.
AI 기반 농업 음성 헬프라인인 Agrow에서 mex를 테스트한 실제 출력 결과입니다.
설정 전 스캐폴드(Scaffold before setup):
## 현재 프로젝트 상태 (Current Project State)
<!-- 작동 중인 기능. 아직 구축되지 않은 기능. 알려진 문제점.
중요한 작업이 완료될 때마다 이 섹션을 업데이트하세요. -->
설정 후 스캐폴드(Scaffold after setup):
## 현재 프로젝트 상태 (Current Project State)
**작동 중 (Working):**
- 음성 통화 파이프라인 (Twilio -> STT -> LLM -> TTS -> 응답)
...
설정 후 패턴(Patterns) 디렉토리:
patterns/
├── add-api-client.md
├── add-language-support.md
...
커뮤니티 구성원이 OpenClaw에서 Ubuntu 24.04, Kubernetes, Docker, Ansible, Terraform, 네트워킹 및 모니터링을 포함하는 10가지 구조화된 홈랩 (homelab) 시나리오를 통해 독립적으로 테스트했습니다. 10/10 테스트 통과. 드리프트 점수 (Drift score): 100/100.
| 시나리오 | mex 미사용 시 | mex 사용 시 | 절감량 |
|---|---|---|---|
| "K8s는 어떻게 작동하나요?" | ~3,300 토큰 | ~1,450 토큰 | 56% |
| ... | |||
| 세션당 평균 약 60%의 토큰 감소. |
mex setup --mode agent-memory
명령어는 "프로젝트"가 코드 저장소(repo)가 아닌 운영 환경인 지속성 에이전트 (persistent agents)를 위한 스캐폴드를 생성합니다. 이는 HEARTBEAT.md를 추가합니다.
mex를 구조화되고 작업 라우팅된 메모리로 정의하는 계약(contract) 및 템플릿을 제공합니다:
ROUTER.md는 현재 운영 상태를 추적하고 에이전트를 적절한 메모리 파일로 라우팅합니다.
context/는 아키텍처, 스택, 컨벤션 (conventions), 설정 및 결정 사항을 저장합니다.
patterns/는 반복되는 런북 (runbooks)을 저장합니다.
.mex/events/decisions.jsonl은 mex log를 통해 추가 전용 (append-only) 노트와 근거를 저장합니다.
mex heartbeat는 의도적으로 mex check보다 가볍게 설계되었습니다. 이는 last_updated 프론트매터 (frontmatter)와 메모리 정리 메타데이터를 읽고, 상태가 깨끗하면 HEARTBEAT_OK를 출력하며, 에이전트가 오래된 컨텍스트나 메모리 파일을 검토해야 할 때만 보고합니다. 지속성 에이전트 워크스페이스에서 하트비트를 반복적으로 실행하려면 mex watch --interval을 사용하세요.
선택적 설정은 .mex/config.json에 위치합니다. 누락된 값은 기본값으로 대체됩니다.
{
"staleness": {
"warnDays": 30,
...
기여를 환영합니다. 설정 및 가이드라인은 CONTRIBUTING.md를 참조하세요.
릴리스 기록은 CHANGELOG.md를 참조하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Codex tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기