Directory-as-ID: 구성 없이 모듈 탐색 확장
Source: Dev.to
Introduction
이전 볼륨에서는 AI‑Perceivable 세계에 대한 비전을 살펴보았습니다. 이제 본격적으로 내부 구조를 들여다볼 차례입니다. apcore 프로토콜의 첫 번째 기술적 기둥은 겉보기와는 달리 매우 단순한 아이디어인 Directory-as-ID 입니다.
전통적인 마이크로서비스나 모듈형 아키텍처에서는 중앙 레지스트리, 방대한 YAML 설정 파일, 혹은 복잡한 의존성 주입 컨테이너가 시스템이 10개의 모듈에서 1,000개로 확장될 때 병목이 되곤 합니다. 병합 충돌, 네이밍 충돌, 그리고 “Scaling Rot”(스케일링 부패) 같은 문제가 흔히 발생합니다.
apcore는 파일 시스템을 진실의 원천으로 삼아 이를 해결합니다. 이번 열 번째 기사에서는 Directory-as-ID 뒤에 숨은 알고리즘과 AI‑ready 시스템을 확장하는 데 왜 필수적인지 살펴보겠습니다.
The Algorithm: From Path to Canonical ID
원리는 간단합니다: 모듈 파일의 상대 경로가 고유 식별자가 됩니다.
모듈 루트 디렉터리(예: extensions/)가 있으면, apcore는 파일들을 스캔하고 다음과 같은 결정적 매핑을 적용합니다:
-
루트 제거
extensions/executor/email/send.py → executor/email/send.py -
확장자 제거
executor/email/send.py → executor/email/send -
구분자 정규화
executor/email/send → executor.email.send (The Canonical ID)
Why This Matters for AI
AI 에이전트는 이름에 매우 민감합니다. 계층적이고 디렉터리 기반의 네이밍 규칙을 사용하면 자연스럽게 네임스페이스가 형성됩니다. 에이전트는 executor.user.delete와 admin.user.delete를 빠르게 구분할 수 있는데, 이는 계층 구조가 컨텍스트를 제공하기 때문입니다.
Case Study: Zero‑Config in apexe
apexe: AI‑fying the CLI Universe
apexe는 기존 CLI(예: git 또는 docker)를 스캔해 apcore 모듈로 래핑합니다. 다음을 실행하면:
apexe scan git
~/.apexe/modules/ 아래에 모듈 계층이 생성됩니다:
git commit→cli.git.commitgit push→cli.git.push
Directory-as-ID 덕분에 apexe는 ID 데이터베이스를 관리할 필요가 없습니다. 파일을 적절한 폴더에 기록하면 apcore 레지스트리가 전체 CLI 명령 트리를 즉시 “인식”합니다. 이는 Dynamic Skill Discovery(동적 스킬 발견)를 가능하게 하며, 새로운 CLI 도구를 설치하고 스캔하면 에이전트가 즉시 이를 알게 되고 서버 재시작이 필요하지 않습니다.
Technical Rigor: Handling Multi‑Language Drift
언어에 구애받지 않는 표준의 핵심 과제는 각 언어마다 네이밍 컨벤션이 다르다는 점입니다(Python은 snake_case, TypeScript는 camelCase를 선호).
apcore 프로토콜은 엄격한 ID Normalization Rules(ID 정규화 규칙)를 정의합니다:
- Normalization: 모든 ID는 레지스트리를 위해 정규 형태(소문자, snake_case)로 변환됩니다.
- Language Mapping: 각 SDK(Python, TypeScript, Rust)는 정규화된 ID와 로컬 파일 이름 간의 매핑을 수행합니다(예:
SendEmail.ts는send_email에 매핑).
이를 통해 다국어 환경에서도 AI 에이전트는 단일하고 일관된 주소 공간을 보게 됩니다.
Conclusion: Scale Is a Design Constraint
Directory-as-ID는 단순한 편의 기능이 아니라 에이전시 시대를 위한 설계 제약입니다. Zero‑Config Discovery를 가능하게 하고 레지스트리 병목을 제거하며 AI 인지를 위한 자연스러운 네임스페이스를 제공합니다.
다음 기사에서는 엔진의 핵심인 11‑Step Execution Pipeline을 살펴볼 예정입니다.
이 글은 apcore: Building the AI‑Perceivable World 시리즈의 10번째 기사입니다.
GitHub: