피드로 돌아가기
Dev.toBackend
원문 읽기
Dictionary-based dispatch로 14개 도구까지 스케일링하는 Agent 툴 디스패치 시스템 구축함
Tool Dispatch: A Dictionary Replaces a Switch Statement and Scales to 14 Tools
AI 요약
Context
에이전트가 bash 명령어(cat, echo, sed 등)를 직접 생성하면 출력 자르기, 백슬래시 오류 등 안전하지 않은 동작이 발생함. 도구 수준에서 제약 조건을 적용할 필요가 있음.
Technical Solution
- Dictionary Dispatch: [String: handler] 딕셔너리로 툴 이름을 핸들러 함수에 매핑하여 switch/if-else 체인을 제거함
- resolveSafePath: 작업 디렉토리 외부 경로 접근을 차단하는 Path Sandboxing 구현함
- read_file: 선택적 라인 제한과 50,000자 캡으로 파일 읽기 제한함
- write_file: 원자적 쓰기 operation으로 파일 손상 방지함
- edit_file: 한 번만 수정 가능한 single-occurrence 편집 보장함
실천 포인트
Swift 에이전트에서 새 도구 추가 시 dispatch 딕셔너리에 엔트리 하나만 추가하면 됨. routing 로직 변경 없이 스케일링이 가능하며, Path Sandboxing은 hasPrefix 검사로 작업 디렉토리 이중탈출을 방지해야 함.