tags: [robeing, agent-loop, skills, hooks, orchestration] # 로빙 에이전트 루프와 스킬 훅 구조 아이디어 ## 배경 - 로빙이 단순 질의응답기가 아니라 실행 가능한 존재형 에이전트라면, 단발 응답보다 `예측-행동-평가-반성` 루프가 먼저 정의되어야 합니다. - 현재 `skill-*` 서비스들은 독립 실행 단위로 존재하지만, 로빙 본체가 어떤 지점에서 어떤 스킬을 어떻게 개입시키는지는 더 명확히 정리할 필요가 있습니다. - 이번 아이디어는 "로빙 본체는 오케스트레이터, 스킬은 훅을 가진 실행 단위"라는 구조를 제안합니다. ## 핵심 아이디어 ### 1. 로빙 본체는 큰 루프를 가진다 - 로빙 본체는 사용자 목표를 받아 다음 순서로 움직입니다. 1. 목표 해석 2. 다음 행동 결정 3. 스킬 또는 내부 기능 실행 4. 결과 관찰 5. 성공/실패 판단 6. 기억·로그·정책 갱신 - 즉, 로빙은 스킬을 직접 대체하지 않고 스킬들을 조율하는 존재입니다. ### 2. 스킬은 훅을 통해 루프에 개입한다 - `스킬별로 훅을 가져간다`는 뜻은 각 스킬이 자기 책임 범위 안에서 개입 가능한 지점을 가진다는 뜻입니다. - 예시 훅: - `before_plan`: 입력 보강, 권한 확인, 선행조건 점검 - `before_run`: 실행 인자 정규화, 컨테이너/세션 준비 - `on_success`: 결과 후처리, 포맷 변환, 다음 스킬로 전달 - `on_error`: 복구 시도, 재시도 정책 제안, 실패 원인 구조화 - `on_close`: 로그 저장, 기억 반영, 사용자 보고용 요약 생성 - 이렇게 하면 로빙 본체는 공통 루프를 유지하고, 스킬은 자기 도메인 로직만 책임질 수 있습니다. ### 3. 스킬 호출은 API 호출만을 뜻하지 않는다 - 어떤 스킬은 내부 API를 호출할 수 있고, - 어떤 스킬은 이미 떠 있는 컨테이너에 `exec`로 들어가 실행 파일을 직접 돌릴 수 있고, - 어떤 스킬은 다른 스킬의 결과를 받아 후속 처리만 할 수도 있습니다. - 중요한 것은 호출 방식 자체보다 `입력·출력·권한·실패·완료 기준`이 계약으로 고정되는 것입니다. ### 4. 로빙은 API 소비자일 수도 있고 CLI 운영자일 수도 있다 - 안정적인 기능은 API 소비자처럼 동작할 수 있습니다. - 운영, 복구, 디버깅이 필요한 경로에서는 CLI 운영자처럼 동작할 수 있습니다. - 따라서 로빙의 미래 구조는 "모든 걸 docker exec로 처리"가 아니라, - 기본은 API - 예외적으로 운영 제어가 필요한 구간만 CLI 의 하이브리드가 더 현실적입니다. ## 예시 시나리오 ### 뉴스 수집 후 슬랙 전송 1. 사용자가 "AI 뉴스를 보여줘"라고 요청합니다. 2. 로빙이 `news` 스킬을 선택합니다. 3. `news.before_run`이 키워드 정규화와 컨테이너 준비를 수행합니다. 4. `news` 실행 결과가 나오면 `news.on_success`가 중복 제거와 표준 출력 포맷 변환을 수행합니다. 5. 사용자가 "슬랙으로 보내"라고 하거나 작업 목표에 포함돼 있으면 `slack` 스킬이 후속 실행됩니다. 6. `slack.on_close`가 전송 결과와 메시지 ID를 기록합니다. ### 실패 시 1. `news` 실행 중 에러가 발생합니다. 2. `news.on_error`가 에러 타입을 분류하고 재시도 가능 여부를 로빙 본체에 전달합니다. 3. 로빙은 재시도, 코드 수정, 사용자 보고 중 하나를 결정합니다. 4. 실패 은닉 없이 원인과 중단 지점을 남깁니다. ## 이 구조가 로빙 철학과 맞는 이유 - 존재형 에이전트는 단순 실행기가 아니라 판단과 책임의 연속성을 가져야 합니다. - 스킬 훅 구조는 "무엇을 왜 했는지"를 설명 가능하게 만들고, 실패를 숨기지 않으며, 기억과 반성을 루프에 자연스럽게 연결합니다. - 이는 공통 SSOT의 `Truth First`, `Trust by Design`, `실패 가시성`, `원인 직접 수정`과도 일치합니다. ## 아직 아이디어 단계인 이유 - 훅 이름과 호출 순서가 아직 고정되지 않았습니다. - `skill-*` 서비스별 계약 문서가 아직 표준화되지 않았습니다. - 로빙 본체의 성공 기준, 중단 기준, 최대 재시도 규칙이 제품 수준으로 명시되지 않았습니다. ## 다음 단계 1. `news`, `slack`, `email` 스킬 중 하나를 골라 샘플 훅 계약 문서를 작성합니다. 2. 로빙 본체 루프의 최소 상태 머신을 문서로 먼저 고정합니다. 3. 실패 시 `사용자 보고`, `자동 복구`, `중단`의 분기 기준을 정합니다. ## 바로 적용할 제품 방향 - 먼저 만들 것은 "스킬 플랫폼"보다 `로빙의 에이전트 루프 + 도구 프로토콜`입니다. - 즉 모델 출력은 최소한 아래와 비슷한 구조화 액션으로 받는 편이 좋습니다. ```json { "action": "run_shell", "args": { "command": "docker exec news-app python crawl.py --keyword AI" }, "done": false } ``` - 로빙은 이 구조를 받아 실행하고, stdout/stderr를 다시 다음 판단 입력으로 넘깁니다. - 스킬 훅은 이 루프 위에서 `입력 보정`, `실패 분류`, `후처리`, `종료 정리`를 맡습니다. - 따라서 현재 아이디어의 우선순위는 `스킬을 많이 만드는 것`보다 `루프와 프로토콜을 먼저 고정하는 것`입니다. - 그리고 이 루프 안에는 최소한 아래 다섯 요소가 들어가야 합니다. - 명령 실행기 - 결과 수집기 - 오류 판단 루프 - 재시도 규칙 - 위험 명령 차단 규칙 ## 관련 문서 - `../research/orchestration_tools/260312_로빙_에이전트루프_스킬훅_LLM실행구조_리서치.md` - `../research/orchestration_tools/260312_로빙_LLM_API_Agent_API_모델선정_비용비교_리서치.md` - `../../book/100_philosophy/130_존재형_에이전트란_무엇인가.md` - `../../book/200_core_design/240_스킬시스템_함수형_자동화와_컨텍스트.md`