<p align="center">
  <img src="https://raw.githubusercontent.com/agentscope-ai/QwenPaw/main/plugins/bundle/cloudpaw/docs/cloudpaw.png" alt="CloudPaw" width="360" />
</p>

<p align="center">
  <strong>Плагин расширения облачных возможностей для QwenPaw</strong>
</p>

<p align="center">
  <a href="https://github.com/agentscope-ai/CloudPaw/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg" alt="License" /></a>
  <a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/Python-3.10%2B-blue.svg" alt="Python" /></a>
  <a href="#"><img src="https://img.shields.io/badge/version-0.0.4-green.svg" alt="Version" /></a>
</p>

<p align="center">
  <a href="README.md">English</a> | <a href="README_zh.md">中文</a> | <a href="README_ja.md">日本語</a> | <b>Русский</b>
</p>

---

CloudPaw — это плагин расширения облачных возможностей для QwenPaw, объединяющий **QwenPaw + Aliyun CLI** с глубокой интеграцией **IaC**. Это не просто чат-бот — это интеллектуальный ассистент с облачным движком выполнения.

Просто опишите свои потребности на естественном языке, и CloudPaw автоматизирует весь процесс от создания ресурсов до развёртывания приложений. Например:

- **Развёртывание приложения одной фразой**: Скажите CloudPaw «Помоги мне создать персональный сайт» — он автоматически создаст ECS-инстанс, настроит группы безопасности, развернёт приложение и вернёт доступный URL.
- **Быстрый запуск персонального сайта**: Опишите желаемый контент и стиль, и CloudPaw сгенерирует код, развернёт его в облаке и привяжет публичный эндпоинт.
- **Быстрая публикация API-сервиса**: Укажите определения интерфейсов, и CloudPaw выполнит весь пайплайн от генерации кода и сборки контейнера до публикации сервиса.

CloudPaw полностью работает в вашей собственной среде, обеспечивая безопасность и контроль над данными.

## Быстрый старт

### Предварительные требования

| Элемент | Требование |
|---------|------------|
| **Версия QwenPaw** | **≥ v1.1.7** |
| **Python** | 3.10 ~ 3.13 |
| **Аккаунт Alibaba Cloud** | Требуется Access Key для облачных операций |

> Информацию об установке QwenPaw см. в [Быстром старте QwenPaw](https://qwenpaw.agentscope.io/docs/quickstart). Если версия QwenPaw ниже v1.1.7, сначала обновите: `pip install --upgrade qwenpaw>=1.1.7`.

### 1. Установка плагина CloudPaw

**Через консоль (рекомендуется):**

1. Запустите QwenPaw (`qwenpaw app`), откройте http://127.0.0.1:8088/
2. Нажмите «Менеджер плагинов» в левой боковой панели (в разделе «Настройки»), затем нажмите «Установить плагин»
3. Перетащите папку `cloudpaw/` в диалог установки или выберите ZIP-файл (CloudPaw предустановлен в QwenPaw v1.1.7+ в `plugins/bundle/cloudpaw/`)
4. Дождитесь завершения установки

**Через CLI:**

```bash
qwenpaw plugin install /path/to/cloudpaw
```

> **⚠️ ВАЖНО: После установки необходимо принудительно обновить браузер** (`Ctrl+Shift+R` / `Cmd+Shift+R`) для загрузки обновлений фронтенда. Пользовательские UI-компоненты CloudPaw (выбор предложений, управление PRD и т.д.) не появятся до обновления страницы. Если после установки функции отсутствуют, сначала попробуйте обновить страницу.

### 2. Настройка

После установки CloudPaw выполните следующие настройки:

#### ① Модель QwenPaw

Настройте провайдера LLM и API Key в консоли: Настройки → Модели. См. [документацию по моделям QwenPaw](https://qwenpaw.agentscope.io/docs/models).

#### ② Учётные данные Alibaba Cloud

Настройте в разделе «Переменные окружения» консоли (CloudPaw автоматически создаёт записи-заполнители):

- `ALIBABA_CLOUD_ACCESS_KEY_ID` — ваш Access Key ID
- `ALIBABA_CLOUD_ACCESS_KEY_SECRET` — ваш Access Key Secret
- `ALIBABA_CLOUD_REGION_ID` — ID региона (по умолчанию `cn-hangzhou`)

Также можно настроить через системные переменные окружения или CLI. Инструкции по получению Access Key см. в [документации Alibaba Cloud](https://help.aliyun.com/document_detail/116401.html). Рекомендуется использовать Access Key основного аккаунта с полными правами.

#### ③ Настройка модели iac-code

CloudPaw использует [iac-code](https://github.com/aliyun/iac-code) (≥ 0.1.2) для генерации IaC-шаблонов. **Ручная настройка модели не требуется** — CloudPaw автоматически синхронизирует активную модель QwenPaw с iac-code.

При запуске плагина CloudPaw записывает `llm_source: qwenpaw` в `~/.iac-code/settings.yml`. Это позволяет iac-code считывать конфигурацию модели (провайдер, API-ключ, название модели и т.д.) напрямую из активной модели QwenPaw. Если вы уже настроили рабочую модель в QwenPaw (шаг ①), iac-code автоматически будет использовать ту же модель — дополнительная настройка не требуется.

**Ручное переопределение:** Если вам нужно, чтобы iac-code использовал модель, отличную от QwenPaw, установите переменную окружения `IAC_CODE_PROVIDER` (через страницу переменных окружения QwenPaw или системные переменные). При наличии этой переменной CloudPaw пропускает автоматическую инъекцию, и iac-code использует вашу ручную конфигурацию. Подробнее см. [документацию по настройке LLM в iac-code](https://aliyun.github.io/iac-code/docs/configuration/llm-providers).

### 3. Начало использования

Выберите «CloudPaw-Master» в выпадающем списке агентов на странице чата.

> **⚠️ Предупреждение о рисках: пожалуйста, прочитайте перед использованием**
>
> 1. **Риск ресурсов**: Данный сервис требует учётные данные администратора Alibaba Cloud с полным доступом к аккаунту. Операции могут создавать, изменять или удалять ресурсы в вашем аккаунте.
> 2. **Рекомендации по безопасности**: Действуйте осторожно и следите за существующими ресурсами. **Создавайте резервные копии важных данных** перед использованием и регулярно проверяйте состояние ресурсов и счета.
> 3. **Отказ от ответственности**: Данный сервис полностью управляется ИИ. ИИ может генерировать ошибки или неточные результаты. Вы несёте ответственность за проверку и подтверждение операций ИИ, а также за конечные результаты. Мы не несём ответственности за убытки, вызванные операциями ИИ.
> 4. **Уведомление о стоимости**: Создание и использование облачных ресурсов повлечёт соответствующие расходы на облачные сервисы. Пожалуйста, следите за счетами и планируйте использование ресурсов.

## Архитектура

CloudPaw интегрируется через нативную систему плагинов QwenPaw.

```
QwenPaw/
└── plugins/
    └── bundle/
        └── cloudpaw/           # Плагин CloudPaw (фронтенд и бэкенд)
            ├── plugin.json     # Манифест плагина
            ├── plugin.py       # Точка входа бэкенда
            ├── requirements.txt # Python-зависимости (iac-code, httpx-sse)
            ├── ui/             # Фронтенд-плагин (кастомные рендереры tool call)
            ├── skills/         # Определения навыков
            ├── tools/          # Реализации инструментов
            ├── modules/        # Модули
            ├── agents/         # Промпты и конфигурации агентов
            └── prompts/        # Определения промптов
```

## Функции

- **Оркестрация IaC-развёртывания**: Автоматизация развёртывания ресурсов Alibaba Cloud через движок [iac-code](https://github.com/aliyun/iac-code) для генерации ROS/Terraform-шаблонов
- **Выбор предложений по ресурсам**: Интерактивное сравнение и выбор нескольких предложений с выделенным фронтенд-рендерингом (инструмент `proposal_choice`)
- **Расширение фронтенда управления PRD**: Кастомный фронтенд-рендеринг для управления PRD в QwenPaw Mission Mode (инструмент `manage_prd`)
- **Многоагентная коллаборация**: Оркестрация нескольких агентов для сложных задач развёртывания через QwenPaw Mission Mode
- **Интеграция удалённых агентов Alibaba Cloud Skills**: Подключение и вызов удалённых агентов на Alibaba Cloud Skills Hub через протокол A2A с потоковым отображением в реальном времени
- **Автоматическая настройка зависимостей**: Автоматическая установка `iac-code` и Alibaba Cloud CLI при запуске плагина

## Интеграция удалённых агентов Alibaba Cloud Skills

CloudPaw поддерживает подключение и вызов удалённых агентов на **Alibaba Cloud Skills Hub** через **протокол A2A (Agent-to-Agent)**, обеспечивая межагентную коллаборацию.

> **Примечание**: Функциональность A2A в настоящее время поддерживается только в плагине CloudPaw и ограничена агентами на Alibaba Cloud Skills Hub. Подключение к другим A2A-агентам может привести к проблемам совместимости.

### Использование

CloudPaw предоставляет **два способа** вызова удалённых A2A-агентов. Оба метода обрабатываются LLM и выполняются через инструмент `a2a_call`:

#### Способ 1: Быстрый вызов командой `/a2a`

Отправляйте сообщения удалённому агенту с помощью команды `/a2a` в чате:

```
/a2a <псевдоним> <сообщение>
```

Пример:

```
/a2a my-agent Как развернуть приложение Node.js на ECS?
```

Команда автоматически преобразуется в понятную LLM инструкцию, которая затем вызывает инструмент `a2a_call`.

#### Способ 2: Вызов на естественном языке

Просто опишите свои потребности на естественном языке, и LLM автоматически определит, нужно ли вызывать удалённого агента, и выполнит вызов через инструмент `a2a_call`:

```
Спросите у my-agent, как быстро развернуть приложение Flask в Alibaba Cloud?
```

В этом режиме LLM понимает намерения пользователя и автоматически выбирает подходящего удалённого агента. Идеально для сценариев, требующих многоходового диалога и контекста.

#### Список зарегистрированных агентов

Введите `/a2a` без аргументов, чтобы увидеть список всех зарегистрированных удалённых A2A-агентов и их статус подключения, аналогично команде `/skills` для просмотра установленных навыков.

### Примечания

- Функциональность A2A в настоящее время поддерживается только в плагине CloudPaw и ограничена агентами на Alibaba Cloud Skills Hub. Подключение к другим A2A-агентам может привести к проблемам совместимости.
- При вызове удалённых агентов содержимое сообщений отправляется на удалённые серверы — учитывайте безопасность данных
- Одновременно поддерживается только один активный вызов A2A

## Многоагентная архитектура

CloudPaw реализует многоагентную коллаборацию через **Mission Mode** QwenPaw. Пользователи взаимодействуют с главным агентом, который автоматически разбивает требования в PRD (документ требований к продукту) и делегирует задачи специализированным подагентам по приоритету историй.

| Агент | Ответственность |
|---|---|
| **CloudPaw-Master** | Оркестрация: диалог с пользователем, уточнение требований, генерация PRD, делегирование задач, агрегация результатов |
| **CloudPaw-Executor** | Общее выполнение: написание кода, развёртывание приложений, настройка окружения, операции CLI |
| **CloudPaw-Verifier** | Унифицированная верификация: статус облачных ресурсов, функциональность приложения, доступность, соответствие безопасности |
| **iac-code** (внешний ACP-агент) | IaC-движок: асинхронный вызов через протокол ACP для генерации ROS/Terraform-шаблонов, оценки стоимости и управления стеками |

## Примеры использования

**Развёртывание персональной страницы в облаке**

> Помогите мне создать персональную страницу и развернуть её в облаке. Страница должна включать: личное представление, навыки, опыт проектов и контактную информацию — пожалуйста, используйте заполнители для всей личной информации. Стиль должен быть чистым и минимальным, адаптивным для мобильных и десктопных устройств. Пожалуйста, разверните с использованием Alibaba Cloud ECS.

**Быстрая публикация API-сервиса в облаке**

> Помогите мне быстро развернуть API-сервис в облаке. Я хочу, чтобы по умолчанию были доступны эндпоинты /health и /hello, и дайте мне вызываемый URL с примерами запросов. Конфигурация должна быть максимально простой и понятной.

## Благодарности

- [iac-code](https://github.com/aliyun/iac-code) — ИИ-ассистент Infrastructure as Code для Alibaba Cloud
