직접 해 본 결과만 적습니다 · 확인하지 못한 것은 그렇게 표시합니다
써 AI 마케팅 적용기 시중에 나온 AI 방법을 실무에 넣어 보고, 쓸만한지 남깁니다
반복업무 줄이기

멀티에이전트를 만들었더니 서로 남의 일을 했습니다 — 역할을 도구로 가르는 법

계속 쓴다2026-08-10·읽기 5분·글 써봄

멀티에이전트로 AI에이전트를 여러 개 만들었습니다. 각자 이름과 담당 업무를 정해 뒀는데, 돌려 보니 전부 같은 일을 하려 들었습니다.

한 명에게 시킨 일을 다른 명이 먼저 처리하고, 서로 겹치게 결과물을 만들었습니다.

원인은 단순했습니다. 복제로 만들면서 도구 묶음이 그대로 복사됐습니다.

1. 각 에이전트가 가진 도구 목록을 확인합니다 2. 담당 업무에 필요 없는 도구를 뺍니다 3. 지침을 고친 뒤 재시작합니다 4. 실제로 반영됐는지 확인합니다

멀티에이전트 증상 — 시키지도 않은 일을 합니다

증상 — A에게 시킨 일을 B가 먼저 해 버립니다. 같은 결과물이 두 개 생깁니다. 어떤 일은 서로 미루다 아무도 안 합니다.

원인 — 에이전트는 자기가 가진 도구를 "내가 할 수 있는 일"로 인식합니다. 이름과 말투만 다르게 하고 도구를 똑같이 주면, 셋 다 같은 일을 할 수 있다고 판단합니다.

기본 프로필의 도구 묶음이 복제본에 그대로 복사되는 구조를 정리한 터미널 화면

지침에 "너는 글쓰기 담당" 이라고 적어도, 손에 메일 보내는 도구가 있으면 상황에 따라 그걸 씁니다. 지침은 권고고, 도구는 능력입니다. 능력이 있으면 씁니다.

해결 — AI에이전트 역할을 도구로 가릅니다

해결 — 담당 업무에 필요한 도구만 남깁니다.

도구 구성으로 역할을 나눈 예시를 정리한 터미널 화면

담당 주는 도구 못 하는 일
글쓰기 검색·파일 메일 발송, 게시
발송 메일 글 작성, 게시
게시 게시 나머지 전부

이렇게 하면 겹칠 수가 없습니다. 말로 나누지 말고 손에 쥔 것으로 나눕니다.

설정 파일이라면 이런 모양이 됩니다. tools 목록이 곧 그 에이전트의 업무 범위입니다.

{
  "name": "글쓰기 담당",
  "tools": ["search", "file_read", "file_write"],
  "prompt_file": "roles/writer.md"
}

tools 에 mail_send 나 publish 가 없으면 그 일은 시도조차 못 합니다. 지침에 뭐라고 적혀 있든 상관없습니다.

부수 효과도 있습니다. 실수로 잘못된 일을 시켜도 도구가 없으면 못 합니다. 지침을 잘못 쓴 날에도 사고가 안 납니다.

함정 — 파일을 고쳐도 반영이 안 됩니다

여기서 한 번 더 막혔습니다. 지침 파일을 고쳤는데 행동이 그대로였습니다.

지침이 시작 시 한 번 읽혀 메모리에 올라가는 구조를 정리한 터미널 화면

원인 — 시스템 지침은 시작할 때 한 번 만들어져 메모리에 올라갑니다. 그 뒤로는 파일을 안 읽습니다. 파일을 고쳐도 이미 돌고 있는 것은 옛 지침으로 계속 돕니다.

해결 — 고친 뒤 재시작합니다. 그리고 재시작이 실제로 됐는지 확인합니다.

# 고치고 나서 반드시
systemctl --user restart 에이전트서비스
# 그리고 반영됐는지 확인

주의할 것이 하나 더 있었습니다. 도구 목록을 따로 담아 둔 캐시가 별도로 있었습니다. 지침을 새로 만들어도 그 캐시가 옛 목록을 들고 있어서, 재시작해도 예전 도구를 그대로 쓰고 있었습니다.

캐시가 어디에 몇 겹으로 있는지는 미리 확인해 두는 편이 낫습니다. 저는 이걸 몰라서 "재시작했는데 왜 그대로지" 를 반복했습니다.

확인하는 법

고쳤다고 믿지 말고 실제 상태를 봅니다.

확인 방법 정상
지금 가진 도구 에이전트에게 직접 물어봅니다 담당 업무 것만
지침 반영 시작 시각이 수정 시각보다 뒤인가 뒤여야 함
캐시 캐시 파일의 수정 시각 최근이어야 함
실제 행동 담당 밖 일을 시켜 봅니다 "못 한다"고 답해야 함

마지막 줄이 제일 확실합니다. 일부러 담당 밖의 일을 시켜 보고 거절하는지 봅니다. 받아서 처리하면 아직 도구가 남아 있는 것입니다.

저는 이걸 점검 항목에 넣어 뒀습니다. 설정 파일의 tools 목록과 실제로 가진 것을 대조합니다.

declared = set(config["tools"])
actual = set(agent.list_tools())
if declared != actual:
    warn(f"{name}: 설정과 실제가 다릅니다 — 추가된 것 {actual - declared}")

설정을 고쳤는데 캐시 때문에 반영이 안 된 경우가 여기서 잡힙니다. 저는 이 대조를 넣고 나서야 캐시가 두 겹이라는 걸 알았습니다.

에이전트를 몇 개로 나눌 것인가

대안으로 아예 하나로 두는 방법도 있습니다. 저는 나눠 봤다가 관리가 늘어서 다시 합친 것도 있습니다.

하나로 여럿으로
관리 단순 각자 설정·점검 필요
사고 범위 전부에 영향 그 담당만
겹침 없음 도구를 안 나누면 생김
속도 순차 동시에 여럿

나눌 이유가 분명할 때만 나누는 편이 낫습니다. "여러 명이 있으면 좋겠지" 로 나누면 관리만 늘어납니다. 저는 처음에 그렇게 시작했다가 정리했습니다.

확인 못 한 것

에이전트가 가진 도구와 무관하게 지침만으로 역할을 지키게 만드는 방법이 있는지는 확인하지 못했습니다. 지침을 아주 강하게 쓰면 될 것 같기도 한데, 저는 도구를 빼는 쪽이 확실해 보여서 그렇게 처리했습니다.

지침으로만 막는 건 어차피 부탁이라, 상황에 따라 넘어갈 여지가 남는다고 봅니다. 이건 제 판단이고 검증한 것은 아닙니다.

판정 — 계속 쓴다

도구로 역할을 가르는 방식은 잘 돌아갑니다. 설정 한 번 정리하면 겹침이 사라집니다.

나누는 것 자체는 신중히 합니다. 나눈 만큼 점검할 것이 늘어납니다. 저는 필요한 만큼만 두고 있습니다.

지침 캐시는 처음부터 알아 둬야 합니다. 이걸 모르면 고치고도 안 고쳐진 상태로 며칠 갑니다.

직접 하실 분께

하나. 복제로 만들면 도구까지 복사됩니다. 만든 뒤 도구 목록부터 확인하세요.

둘. 역할은 말이 아니라 도구로 나눕니다. 지침은 권고고 도구는 능력입니다.

셋. 지침을 고쳤으면 재시작하고, 재시작 뒤에도 캐시가 남아 있는지 확인합니다.

넷. 담당 밖의 일을 일부러 시켜 보세요. 거절하면 제대로 나뉜 것입니다.

다음에는 에이전트끼리 일을 주고받을 때 누가 무엇을 했는지 추적하는 방법을 정리해보려고 합니다. 되면 이어서 적겠습니다.