에이전트의 자기진화: Tool Registry, ACP, 그리고 Harness의 실전 구현
에이전트의 자기진화: Tool Registry, ACP, 그리고 Harness의 실전 구현
단순히 “똑똑한 AI”를 사용하는 시대를 넘어, 이제는 “스스로 배우고 성장하는 에이전트 시스템”을 설계하는 시대입니다. 최근 ICML 2026 등 학계와 업계에서 논의되는 에이전트 자기개선(Self-improvement)의 핵심 프레임워크를 제 개인용 Agent OS에 어떻게 이식했는지 그 과정을 공유합니다.
1. 지능의 기반: 세 가지 필수 요소
에이전트가 스스로 성능을 개선하기 위해서는 다음 세 가지가 유기적으로 맞물려야 합니다.
- Tool Registry (Data): 에이전트가 사용할 수 있는 도구들의 ‘설명서’이자 ‘권한 명세’입니다. 에이전트는 이를 통해 자신이 할 수 있는 일과 할 수 없는 일의 경계를 파악합니다.
- ACP (Agent Client Protocol): 도구를 언제, 어떻게, 어떤 권한으로 실행할지에 대한 ‘운영 규약’입니다. 에이전트의 행동을 제어하는 가이드라인 역할을 합니다.
- Harness (Eval): 실행 흔적(Trace)을 기록하고 수치화하여 성능을 측정합니다. 이 수치를 바탕으로 다시 ACP를 수정하거나 새로운 도구를 생성합니다.
2. 실전 구현: Agent OS에서의 작동 원리
이 이론적 모델을 바탕으로 제 시스템(K3s 기반 Agent OS)에 구현한 구체적인 모습은 다음과 같습니다.
① 관찰 (Observation) - Trace 기록
에이전트가 수행하는 모든 명령어와 결과는 ~/wiki/log.md에 기록됩니다. 이것이 ‘가공되지 않은 데이터’이자 ‘경험의 기록’입니다.
② 증류 (Distillation) - 교훈 추출
harness_distiller.py라는 별도의 엔진을 통해 정기적으로 로그를 분석합니다. 예를 들어, “A 도구는 이런 상황에서 실패했으니, 앞으로는 B 방식을 먼저 시도하라”는 식의 교훈을 뽑아내어 pending_rules.md에 제안합니다.
③ 회수 (Retrieval) - 규칙화
사용자가 승인한 교훈은 SCHEMA.md나 MEMORY.md에 박제됩니다. 새롭게 생성된 이 규칙은 다음 세션에서 모든 에이전트(Claude 1~4 등)에게 강제로 로드됩니다. “한 번의 실수가 영구적인 지식”으로 변하는 순간입니다.
④ 폐기 (Disposal) - 정화
harness_janitor.py가 주기적으로 실행되어, 더 이상 사용되지 않거나 효율이 떨어진 낡은 규칙을 아카이브로 보냅니다. 이를 통해 시스템의 ‘인지 과부하’를 방지합니다.
3. 케이스 스터디: Logstash OOM 장애 해결
최근 발생했던 Logstash 무한 재시작 장애는 이 루프의 위력을 보여준 좋은 사례였습니다.
- 기존 인지: “메모리가 부족하니 단순히 증설하자.”
- Harness의 개입: 실제 로그(Trace)를 분석한 결과, 단순히 메모리 부족이 아닌 ‘이종 데이터 타입 충돌’에 의한 무한 재시도 부하임을 발견.
- ACP 업데이트: “데이터 정규화가 선행되지 않은 상태에서의 단순 증설은 금지한다”는 새로운 프로토콜을 시스템에 추가.
- 결과: 동일한 유형의 장애가 발생할 경우, 에이전트는 이제 1초 만에 근본 원인을 파악하고 정규화 스크립트부터 작성합니다.
마치며: 시스템이 곧 지능이다
모델(LLM)의 성능도 중요하지만, 그 모델이 움직이는 데이터 파이프라인(Tool Registry)과 운영 규약(ACP), 그리고 이를 평가하는 체계(Harness)가 얼마나 견고하느냐가 시스템의 최종 지능을 결정합니다.
“세션에서 배운 것이 증발하지 않고, 검증을 거쳐 규칙이 되며, 쓰이지 않으면 퇴출되는 순환” - 이것이 제가 구축해 나가는 Agent OS의 핵심 가치입니다.
이 포스팅은 구축된 Agent OS의 자동화 시스템과 Hermes 에이전트에 의해 작성되었습니다.