5cfb8a1이 .gitignore에 docs/를 넣고 68개 파일을 지웠다. 그런데
AgentBuilderContractExampleTest, ToolBundleContractExampleTest,
ArchitectureDocumentContractTest는 docs/ 아래 계약 예제와 architecture
문서를 입력으로 직접 읽는다. 그 결과 clean clone에서 테스트 10건이
입력을 찾지 못해 실패했다.
제외 범위를 원래 의도대로 좁힌다. 에이전트 산출물(AGENTS.md, .agents/,
.codex/, docs/superpowers/)은 계속 제외하고 저장소 문서는 추적한다.
문서는 삭제 직전 상태(3de052a)를 기준으로 복원하고, 그 위에 main 코드와
대조해 어긋난 부분을 고쳤다.
- ADR-0007을 Superseded로 바꾸고 ADR-0013을 새로 쓴다. route당 Tool
Service N개가 최종안이며, PortalToolRegistryClient가 이미 route별로
N개를 유지하고 있는데 ADR-0007은 "bundles는 항상 한 항목"을 Accepted
상태로 주장하고 있었다. ADR-0009 결정 4도 부분 대체한다.
- ADR-0008 파일 헤더가 Accepted였으나 ADR-0009가 이미 대체한 상태였다.
- 6078852의 endpoint 소유권 반전이 반영되지 않은 서술을 계약 v0.2,
bundle 설정 예제, Tool 적재 안내에서 고친다.
- Portal registry 계약 v0.1과 route key 규약을 새로 문서화한다. 둘 다
구현은 있는데 계약 문서가 없었다.
- MCP SDK 2.0.0 SBOM을 추가한다.
번호 주석: ADR-0011과 0012는 feature/mcp-integration이 Tool inputSchema
정책에 쓰고 있어 비워 둔다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1.7 KiB
1.7 KiB
ADR-0002 Agent Builder Tool 노출 제한과 단일 Tool 호출
- 상태: Accepted
- 결정일: 2026-07-10
- 관련 논의: DISC-20260710-001
배경
많은 Tool을 한 번에 LLM context에 노출하면 Tool 식별과 선택 정확도가 저하될 수 있다. 또한 한 요청에서 여러 Tool을 실행하면 timeout, 부분 성공, 순서 의존성과 오류 계약이 복잡해진다.
결정
- Agent Builder가 사용자·Agent·업무 맥락에 맞는 Tool을 선택한다.
- Agent Builder가 한 시점에 LLM에 노출하는 활성 Tool은 최대 50개다.
- 목표 Agent Builder-MCP 호출 모델은 요청 하나당 Tool 하나다.
- MCP Server는 50개 선별 로직이나 LLM 기반 우선순위 판단을 구현하지 않는다.
영향
- 50개 선별은 Agent Builder 변경 사항이며 MCP 코드 변경 대상이 아니다.
- 요청 하나당 Tool 하나라는 결정은 그대로 유효하다.
결정 당시의 envelope 기록 (현재 구현 아님)
결정 시점에는 최종 field 이름이 미확정이어서 params.toolCalls[] 배열 envelope를 유지하고,
원소를 정확히 한 개만 허용해 단일 호출을 강제했다. 빈 배열과 2개 이상은 -32602로 거절했다.
이 envelope는 ADR-0005와
계약 v0.3에서
표준 MCP params.name + params.arguments로 대체되었다.
현재 코드에 toolCalls는 존재하지 않는다. 배열이 사라졌으므로 "정확히 한 개" 검증도
필요 없어졌고, 단일 호출 결정은 envelope 구조 자체로 만족된다.