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

ErisPulse-QvQChat 一般エージェント

ErisPulse-QvQChat は、一般エージェントモジュールです。ツールループを構築し、メッセージの送受信、エコシステムモジュールサービスの呼び出し、コードの作成と実行、コンピュータの操作、画像や音声の生成、スケジュールされたタスクと長期記憶の管理を、すべて同じツールプロトコルで行います。

Important

QvQChat は個別にインストールする必要があります:

epsdk install ErisPulse-QvQChat

また、「モデルプール」に少なくとも1つの OpenAI 互換モデル(Base URL、API Key、モデル名)を追加する必要があります。

核心能力

能力 说明
工具循環 モデルが出力したツール呼び出し → 並列実行 → 結果の埋め込み → 最終回答が出るまで推論を継続
ストリーミング対話 SSE による逐字出力、ツールのステップがリアルタイムで表示される;リフレッシュや切り替え後に戻っても、進行状況は失われない
コンテキスト圧縮 token の閾値を超えると、古い対話を要約して圧縮(デフォルトは 128000 估算、カスタマイズ可能)
エコシステムサービス橋 モジュールで宣言されたサービスを自動的にツールとして変換、モジュールの追加・削除で機能を増減可能
MCP クライアント stdio と Streamable HTTP、MCP ツールを同じツールセットに統合
子インテリジェントエージェント spawn_agent で独立したセッションの子インテリジェントエージェントを起動し、タスクを探索、結果のみを報告
プロセス内実行 run_python_sdk でメインプロセス内で Python を実行し、実行時のオブジェクトに直接アクセス可能
コンピュータ操作 3段階のセキュリティサンドボックス(strict / standard / permissive)、危険な操作は確認が必要、全プロセスを監査
視覚理解 画像を自動的にモデルに注入(画像をサポートしない場合、自動的に削除して再試行)
附件 ハッシュ値に基づいて任意のファイルを重複除去し、AI にパスを渡して処理させる;Ctrl+V でスクリーンショットを貼り付け可能
会話共有 一時的な読み取り専用リンク(有効期間とトークン予算付き)、Markdown でエクスポート可能
定時タスク cron / 一回限り / 間隔、永続化、権限は作成者に付与
会話の引き継ぎ 管理者はインテリジェントエージェントが特定の会話を独占できるようにできる
パーソナリティシステム システムプロンプト + 初回対話 + ツールホワイトリスト、会話にバインド可能
長期記憶 各会話ごとのメモリ項目、類似度に基づいて検索して注入
AI による自動命名 会話の最初の返信後に、簡潔なタイトルを自動生成

モジュール拡張

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 パラメータ定義にマッピングされ、ドキュメント文字列の最初の行はパラメータの説明として使用されます。

深度統合(オプション)

モジュールは以下の任意のサービスを追加で実装できます。各サービスは個別に選択可能です。つまり、人格拡張のみを行うモジュールもあれば、プロンプトの注入のみを行うモジュールもあります。

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() → 明示的なパラメータ schema

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"],
        },
    }

リフレッシュタイミング

深度統合サービスのリフレッシュタイミングは、起動時、モジュールのロード/アンロード時、およびダッシュボードの「ツール」ページでの手動リフレッシュ時です。

イベントのサブスクライブ

QvQChat は 2 つのライフサイクルイベントをブロードキャストします:

イベント 時機 ペイロード
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 から個別にアクセスするか、ダッシュボードのサイドバーに埋め込むことができます。

概要

チャット