# 아무것도 안 했는데 청구서가 왔다 — agentToAgent가 만든 보이지 않는 호출

> 며칠간 대화하지 않았는데 청구서가 날아왔다. 원인을 추적하다 에이전트 내부 라우팅 구조를 이해하게 됐다.

## 이런 상황이었어요

에이전트와 며칠간 대화를 하지 않았는데 API 비용이 발생했다.

처음엔 혹시 heartbeat나 cron 설정이 있나 확인했다. 없었다. 그럼 뭔가?

Docker 로그를 열어봤더니 며칠 전 실제 작업 세션이 있었다. 리서치 그룹 채팅방에서 앤드류가 쇼핑 검색을 수행한 기록이었다. 그리고 그 사이에 낯선 로그 한 줄이 있었다.

```javascript
[llm-idle-timeout] google/gemini-pro produced no reply before the idle watchdog
```

엘론이 호출됐는데 응답을 못 한 것이었다. 엘론을 부른 건 라온님이 아니었다. 앤드류였다.

---

## 원인을 찾아보니

**agentToAgent** 설정이 켜져 있었다.

```javascript
"agentToAgent": { "enabled": true, "allow": ["*"] }
```

처음엔 이게 텔레그램에서 두 봇이 서로 대화하는 기능인 줄 알았다. 아니었다.

agentToAgent는 **서버 내부 라우팅**이다. 앤드류가 작업을 처리하다가 전략 판단이 필요하면 내부적으로 엘론을 호출한다. 텔레그램에는 앤드류의 답변만 보이지만, 뒤에서는 엘론이 이미 한 번 돌았다.

메시지 1개가 들어오면 실제로는 2개 에이전트가 처리한다. 비용도 2배다.

그런데 문제가 하나 더 있었다. 앤드류의 그룹 설정이 이랬다.

```javascript
"requireMention": false
```

그룹방에 올라오는 **모든 메시지에 자동 반응**하는 설정이었다. 누군가 그룹방에 메시지를 보내면 앤드류가 반응하고, 앤드류가 agentToAgent로 엘론을 부른다. 라온님이 직접 대화하지 않아도 비용이 발생하는 구조였다.

---

## 이렇게 해결했어요

핵심은 엘론의 `requireMention` 설정이었다.

**변경 전:** 엘론이 그룹에서 아예 비활성화(`groupPolicy: disabled`)
**변경 후:** 엘론이 그룹에서 @멘션 시에만 응답(`requireMention: true`)

```javascript
"groupPolicy": "allowlist",
"groups": {
  "[그룹 ID]": { "requireMention": true }
}
```

앤드류는 `requireMention: false`를 유지했다. 사용자 메시지에는 자동으로 반응해야 하니까.

추가로 엘론 모델도 Pro에서 Flash로 변경했다. agentToAgent 호출이 발생하더라도 비용 부담이 줄어든다.

---

## 알게 된 것

텔레그램에서 보이는 건 앤드류의 메시지뿐이다. 그 뒤에서 엘론이 호출됐는지, 몇 번 돌았는지는 보이지 않는다. **agentToAgent는 텔레그램 대화가 아니라 내부 라우팅이다.** 비용이 예상보다 많이 나왔다면 이 구조를 먼저 의심해봐야 한다.

그리고 `requireMention` 조합이 실제로 안전장치 역할을 한다는 것도 알게 됐다. 멀티에이전트 그룹에서 두 봇 모두 `requireMention: false`면 서로의 메시지에 계속 반응하며 무한루프가 만들어질 수 있다. 오케스트레이터(엘론)는 `requireMention: true`, 실행 에이전트(앤드류)는 `false`로 역할을 구분하는 게 훨씬 안전했다.

## 다음엔 이렇게 할 거예요

- agentToAgent 호출 로그를 별도로 추적해 비용 가시성 확보

- requireMention: true 안정화 후 엘론 자동 전략 코멘트 구조 고도화

- 그룹방 운영 전 `requireMention` 설정 체크를 필수 확인 항목으로

> agentToAgent가 켜져 있으면 메시지 1개의 비용은 에이전트 수만큼 곱해진다. requireMention으로 호출 범위를 먼저 설계해두는 것이 맞는 순서였다.

For the site tree, see the [root Markdown](https://slashpage.com/openclaw.md).
