简体中文 English 繁體中文 日本語 Русский
本文为静态镜像,内容以交互版为准 在交互式文档中心打开 →

Общий агент ErisPulse-QvQChat

ErisPulse-QvQChat — это модуль общего агента, построенный вокруг цикла инструментов: получение и отправка сообщений, вызов сервисов экосистемных модулей, написание и выполнение кода, управление компьютером, генерация изображений и голоса, управление расписанием задач и долгосрочной памятью — всё это выполняется с помощью единой протокола инструментов.

Important

QvQChat необходимо установить отдельно:

epsdk install ErisPulse-QvQChat

Также необходимо добавить хотя бы один совместимый с OpenAI модель в «пул моделей» (Base URL, API Key, имя модели).

Основные возможности

Возможность Описание
Цикл инструментов Модель генерирует вызов инструмента → параллельное выполнение → результат возвращается → продолжение вывода, пока не будет получен окончательный ответ
Потоковая беседа SSE выводит по одному символу, шаги инструментов видны в реальном времени; при обновлении / переходе и возвращении прогресс не теряется
Сжатие контекста При превышении порога токенов старый диалог автоматически сжимается в резюме (по умолчанию 128000 оценочных токенов, можно изменить)
Мост экосистемных сервисов Автоматически обнаруживает объявленные модулем сервисы и преобразует их в инструменты, добавление/удаление модуля увеличивает/уменьшает возможности
Клиент MCP stdio и Streamable HTTP, инструменты MCP объединяются в один набор инструментов
Подагенты spawn_agent запускает независимый сеанс подагент для исследования задачи, возвращает только вывод
Выполнение в процессе run_python_sdk выполняет Python в основном процессе, напрямую обращаясь к объектам среды выполнения
Управление компьютером Трехуровневый безопасный песочник (strict / standard / permissive), подтверждение опасных операций, полный аудит
Визуальное восприятие Изображения автоматически вставляются в модель (при отсутствии поддержки изображений автоматически удаляются и повторяется попытка)
Вложения Любые файлы по hash-значению сохраняются на диск, путь передается ИИ для самостоятельного обработки; вставка скриншотов через Ctrl+V
Общий доступ к сеансу Временная ссылка только для чтения (срок действия + бюджет токенов), экспорт в Markdown
Планировщик задач cron / одноразовые / периодические, сохраняются, права доступа привязаны к создателю
Перехват сеанса Администратор может предоставить агенту полный доступ к сеансу
Система личности Системный промт + начальный диалог + белый список инструментов, может быть привязан к сеансу
Долгосрочная память Каждый сеанс имеет записи памяти, которые вставляются по поиску по схожести
Автоматическое наименование ИИ После первого ответа сеанса автоматически генерируется краткое название

Модульное расширение

Любой модуль ErisPulse, объявляющий services, автоматически становится инструментом QvQChat без необходимости специального интерфейса:

from ErisPulse.Core.Bases import BaseModule, ModuleMeta

class Main(BaseModule):
    @staticmethod
    def get_meta() -> ModuleMeta:
        return ModuleMeta(name="Draw", services=[
            {"name": "draw", "description": "Генерирует изображение по описанию и возвращает URL изображения"},
        ])

    async def draw(self, prompt: str, size: str = "1024x1024"):
        return {"image_url": "https://..."}

Подпись метода автоматически сопоставляется с определением параметров JSON Schema инструмента, а первая строка docstring используется как описание параметра.

Глубокая интеграция (необязательно)

Модуль может дополнительно реализовать любую из следующих служб, каждая из которых необязательна — один модуль может быть предназначен только для расширения персонажа, а может только внедрять системные подсказки:

qvq_prompts() → Внедрение системных подсказок

Возвращает list[str] или list[{"text": str, "priority": int}], объединяя подсказки по возрастанию priority.

async def qvq_prompts(self):
    return [
        {"text": "Отправьте пользователю изображение с помощью send_message после рисования.", "priority": 10},
        {"text": "Поддерживаемые стили: аниме, реализм, акварель, пиксель.", "priority": 20},
    ]

qvq_personas() → Регистрация предустановленных персонажей

Возвращает список персонажей, id автоматически добавляется префикс ext.<имя_модуля>., модуль при отключении автоматически очищается. Подходит для модулей, специально предоставляющих расширение персонажей (например, эмоциональное сопровождение, переводчик, рецензент кода и т.д.).

async def qvq_personas(self):
    return [
        {"id": "companion", "name": "Теплый парень", "system": "Ты — тёплый и внимательный собеседник..."},
        {"id": "coder", "name": "Код-наставник", "system": "...", "tools": ["read_file", "run_python"]},
    ]

Параметр tools необязательно может ограничивать набор доступных инструментов для этого персонажа.

qvq_schemas() → Явное определение схемы параметров

Возвращает dict[имя_службы, JSON Schema], перезаписывая вывод из сигнатуры метода. Используется, когда параметры сложные или требуется строгая проверка.

async def qvq_schemas(self):
    return {
        "draw": {
            "type": "object",
            "properties": {
                "prompt": {"type": "string", "description": "Описание изображения"},
                "size": {"type": "string", "enum": ["512x512", "1024x1024"]},
            },
            "required": ["prompt"],
        },
    }

Время обновления

Время обновления глубоких интеграционных служб: запуск, установка и удаление модуля, ручное обновление на странице Dashboard «Инструменты».

Подписка на события

QvQChat транслирует два события жизненного цикла:

Событие Время Параметры
qvq.message Получено сообщение от пользователя chat_key platform sender_id sender_name text is_group
qvq.replied Отправлен ответ chat_key reply tools
async def setup(self):
    sdk.lifecycle.on("qvq.message", self.on_message)

Вызов как сервис

Сервис Подпись Описание
chat (session_id, prompt, persona="") Диалог с агентом, возвращает текст
run_prompt (chat_key, prompt, ...) Выполнение подсказки, результат может быть отправлен в целевой сеанс
get_status () Сводка о состоянии выполнения

Интерфейс

Доступ к интерфейсу осуществляется по отдельному адресу /QvQChat/view или встраивается в боковую панель панели управления.

Обзор

Чат