> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://agentinbox.space/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://agentinbox.space/_mcp/server.

# Как вести тредовые переписки?

Треды — способ Agent Inbox группировать беседы. Новое письмо агента создаёт тред; ответы попадают в тот же тред с полной историей.

## Как это работает

1. Агент отправляет письмо — создаётся тред
2. Получатель отвечает — ответ в том же треде
3. Агент отвечает снова — снова тот же тред
4. Вся история в одном месте

Треды создаются автоматически по заголовкам `Message-ID`, `In-Reply-To`, `References`.

## Список тредов

### По ящику

**`Python`**

```python title="Python"
threads = client.inboxes.threads.list(
    inbox_id="agent@agentinbox.space"
)

for t in threads.threads:
    print(f"Thread: {t.subject} ({t.message_count} messages)")
```

### По всей организации

**`Python`**

```python title="Python"
# Get all threads from every inbox in your organization
all_threads = client.threads.list()
```

Удобно для супервизоров, аналитики и маршрутизации между агентами.

## Полный тред

**`Python`**

```python title="Python"
thread = client.threads.get(thread_id="thread_abc123")

for message in thread.messages:
    print(f"From: {message.from_}")
    print(f"Subject: {message.subject}")
    print(f"Body: {message.text}")
```

## Ответ в треде

Отвечайте на **последнее** сообщение:

**`Python`**

```python title="Python"
thread = client.threads.get(thread_id="thread_abc123")
last_message = thread.messages[-1]

client.inboxes.messages.reply(
    inbox_id="agent@agentinbox.space",
    message_id=last_message.message_id,
    text="Thanks for your message! Here's what I found...",
    html="<p>Thanks for your message! Here's what I found...</p>"
)
```

> **Note**
>
> Указывайте и `text`, и `html` для ответов.

## Цитаты в ответах

Поля `extracted_text` и `extracted_html` — только новый текст ответа без истории цитирования.

**`Python`**

```python title="Python"
new_content = message.extracted_text
content = message.extracted_text or message.text
```

## Метки и состояние

**`Python`**

```python title="Python"
unreplied = client.inboxes.threads.list(
    inbox_id="agent@agentinbox.space",
    labels=["unreplied"]
)

for thread in unreplied.threads:
    thread_detail = client.threads.get(thread.thread_id)
    last_message = thread_detail.messages[-1]
    
    reply_text = your_agent.process(last_message)
    client.inboxes.messages.reply(
        inbox_id="agent@agentinbox.space",
        message_id=last_message.message_id,
        text=reply_text,
        html=f"<p>{reply_text}</p>"
    )
    
    client.inboxes.messages.update(
        inbox_id="agent@agentinbox.space",
        message_id=last_message.message_id,
        add_labels=["replied"],
        remove_labels=["unreplied"]
    )
```

## Советы

* Треды сохраняют контекст многоходовых диалогов
* `client.threads.list()` — для дашбордов и маршрутизации
* Метки вроде `unreplied`, `escalated`, `resolved` для состояния
* Ответ всегда на **последнее** сообщение в треде