Agent Skills by ALSEL
汎用LLM・AI開発⭐ リポ 2品質スコア 59/100

hyperagents-self-improvement

AIシステムがメタレベルの修正手順そのものを編集可能にすることで、自己を再帰的に改善できるようにします。これにより、オープンエンドな機能拡張の成長を実現できます。

description の原文を見る

Enable AI systems to recursively improve themselves by making the meta-level modification procedure itself editable, achieving open-ended capability growth.

SKILL.md 本文

ハイパーエージェント: 編集可能なメタ手続を通じた再帰的自己改善

ほとんどの自己改善型AIシステムは根本的な制限に直面しています。メタレベルの改善メカニズムが固定されているのです。強化学習エージェントはポリシーを改善できますが、報酬関数は静的です。プログラム合成エージェントはコードを生成できますが、合成手続そのものは変わることがありません。

ハイパーエージェントはシンプルながら深い洞察を通じてこの問題を解決します。改善メカニズム自体を含め、すべてのものを修正の対象にするのです。これにより、システムはタスクパフォーマンスだけでなく、改善を探索する方法も向上させる再帰的構造が生まれます。その結果、開放型能力成長が実現されます。各反復がシステムのさらなる改善能力を向上させるのです。

コアコンセプト

ハイパーエージェントは完全な編集可能性を備えたダーウィン・ゲーデル機械(DGM)を実装します。

タスクエージェント: ターゲット問題を解決し、修正可能です。

メタエージェント: 自身とタスクエージェントを修正でき、同時に修正も可能です。

主要な革新: メタ修正手続自体が編集可能です。ヒトが自己改善アルゴリズムを設計するのではなく、システムが独自の改善戦略を進化させます。

システムは自身のバリアント(異なるメタレベル手続を含む)を生成し、どのバリアントが最も高いパフォーマンスを発揮するかを評価し、改善を保持します。これはシステムが文字通り自身のソースコードを改善する再帰ループを作成します。

アーキテクチャの概要

  • 統一されたプログラム表現: タスクとメタエージェントが編集可能なプログラムとして保存される
  • 自己バリアント生成: プログラムコードを体系的に変異・再結合する
  • 評価フレームワーク: 各バリアントをテストしてパフォーマンス向上を測定する
  • 永続メモリ: 成功した修正を実行全体で再利用するために保存する
  • メタ認知ループ: メタ改善は反復全体で複合する
  • ドメイン非依存: 計算可能なタスク評価を備えたあらゆるドメインで機能する

実装ステップ

ステップ1: エージェントを編集可能なプログラムとして表現する

タスクとメタロジックの両方を修正可能なコードとして保存します。

from dataclasses import dataclass
from typing import Callable, List, Dict, Optional, Any
import hashlib
import copy

@dataclass
class AgentProgram:
    """
    Editable representation of an agent.
    Can be task logic or meta-improvement logic.
    """
    code: str  # Python code defining the agent
    metadata: Dict[str, Any]  # Task params, performance history
    version: int  # Iteration when created
    performance: float = 0.0  # Cached performance score
    creation_time: Optional[str] = None

    def compute_hash(self) -> str:
        """Unique identifier for this program."""
        return hashlib.sha256(self.code.encode()).hexdigest()[:8]

    def execute(self, task_input: Any, env_context: Dict = None) -> Any:
        """Run this agent program on a task."""
        # Create execution namespace
        namespace = {'task_input': task_input}
        if env_context:
            namespace.update(env_context)

        try:
            exec(self.code, namespace)
            return namespace.get('output', None)
        except Exception as e:
            return {'error': str(e), 'output': None}

    def clone(self, mutation: Optional[str] = None) -> 'AgentProgram':
        """Create a variant (optionally with code mutation)."""
        new_code = mutation if mutation else self.code
        new_program = AgentProgram(
            code=new_code,
            metadata=copy.deepcopy(self.metadata),
            version=self.version + 1,
            performance=0.0
        )
        return new_program

class HyperagentSystem:
    """
    System that recursively improves via self-modification.
    """

    def __init__(self, initial_task_agent: AgentProgram,
                 initial_meta_agent: AgentProgram):
        self.task_agent = initial_task_agent
        self.meta_agent = initial_meta_agent
        self.improvement_history = []  # Track successful modifications
        self.persistent_modifications = {}  # Reusable code patterns

    def create_initial_agents(self, task_description: str) - None:
        """Initialize task and meta agents for a domain."""

        # Task agent: solves the target task
        task_code = f"""
# Task Agent for: {task_description}
def task_agent(task_input):
    # Initial strategy: simple heuristic
    output = solve_task(task_input)
    return output

def solve_task(x):
    # Basic implementation (will be improved)
    return x
"""

        # Meta agent: improves the task agent
        meta_code = """
# Meta Agent: Improves task agent
def meta_agent(task_agent_code, evaluation_results):
    # Strategy 1: Add logging for debugging
    # Strategy 2: Try parameter variations
    # Strategy 3: Apply remembered successful modifications

    if 'high_variance' in evaluation_results:
        modified_code = add_parameter_sweep(task_agent_code)
    elif 'low_performance' in evaluation_results:
        modified_code = apply_heuristic_refinement(task_agent_code)
    else:
        modified_code = apply_random_local_search(task_agent_code)

    return modified_code

def add_parameter_sweep(code):
    # Insert parameter tuning
    return code.replace(
        'return x',
        'return x * 1.1'  # Simple modification
    )

def apply_heuristic_refinement(code):
    # Add domain-specific logic
    return code.replace(
        'return x',
        'return x if x > 0 else -x'
    )

def apply_random_local_search(code):
    # Small syntactic variations
    return code
"""

        self.task_agent = AgentProgram(
            code=task_code,
            metadata={'task': task_description},
            version=0
        )

        self.meta_agent = AgentProgram(
            code=meta_code,
            metadata={'role': 'meta_agent'},
            version=0
        )

ステップ2: 自己バリアントを生成する

タスクとメタエージェントの変異を作成します。

import random
import re

class VariantGenerator:
    """Generate program variants through mutation."""

    def __init__(self):
        self.mutation_operators = [
            self.add_parameter,
            self.refactor_logic,
            self.add_early_exit,
            self.add_memoization,
            self.modify_constants
        ]

    def generate_variants(self, program: AgentProgram,
                         num_variants: int = 5) -> List[AgentProgram]:
        """Create multiple variants of a program."""
        variants = []

        for _ in range(num_variants):
            mutation_fn = random.choice(self.mutation_operators)
            mutated_code = mutation_fn(program.code)
            variant = program.clone(mutation=mutated_code)
            variants.append(variant)

        return variants

    def add_parameter(self, code: str) -> str:
        """Introduce tunable parameters."""
        # Find return statements and add a parameter multiplier
        modified = re.sub(
            r'return ([^;\n]+)',
            r'return param * (\1)',
            code
        )
        # Initialize parameter
        modified = 'param = 1.0\n' + modified
        return modified

    def refactor_logic(self, code: str) -> str:
        """Simplify or restructure logic."""
        # Try to identify and refactor loops/conditionals
        if 'while' in code or 'for' in code:
            # Suggest vectorization
            modified = code.replace('for ', '# (refactored) for ')
            return modified
        return code

    def add_early_exit(self, code: str) -> str:
        """Add early termination conditions."""
        modified = code.replace(
            'def solve_task(',
            'def solve_task(\n    # Early exit on impossible inputs\n'
        )
        modified = re.sub(
            r'return ([^;\n]+)',
            r'if check_feasibility(): return \1\nelse: return None',
            modified
        )
        return modified

    def add_memoization(self, code: str) -> str:
        """Cache computation results."""
        modified = 'cache = {}\n' + code
        modified = modified.replace(
            'def solve_task(',
            'def solve_task(\n    if task_input in cache: return cache[task_input]\n'
        )
        modified = modified.replace(
            'return ',
            'cache[task_input] = result; return result\n    result = '
        )
        return modified

    def modify_constants(self, code: str) -> str:
        """Adjust numerical constants."""
        def adjust_number(match):
            num = float(match.group())
            # Random ±10% variation
            adjusted = num * (0.9 + 0.2 * random.random())
            return str(adjusted)

        modified = re.sub(r'\d+\.?\d*', adjust_number, code)
        return modified

ステップ3: バリアントを評価する

バリアントをテストして改善を特定します。

class PerformanceEvaluator:
    """Measure agent performance on tasks."""

    def __init__(self, test_tasks: List[Dict], success_metric: Callable):
        self.test_tasks = test_tasks
        self.success_metric = success_metric

    def evaluate_agent(self, agent: AgentProgram,
                      num_evals: int = 10) -> Dict[str, float]:
        """
        Run agent on test tasks and measure performance.
        Returns: {accuracy, speed, stability, etc.}
        """

        results = {
            'success_rate': 0.0,
            'avg_latency': 0.0,
            'error_count': 0,
            'consistency': 0.0
        }

        successes = 0
        latencies = []
        outputs = []

        for task in self.test_tasks[:num_evals]:
            import time
            start = time.time()

            try:
                output = agent.execute(task)
                latency = time.time() - start

                if self.success_metric(output, task):
                    successes += 1

                latencies.append(latency)
                outputs.append(output)

            except Exception as e:
                results['error_count'] += 1

        # Aggregate metrics
        results['success_rate'] = successes / max(num_evals, 1)
        results['avg_latency'] = sum(latencies) / max(len(latencies), 1)

        # Consistency: do we get same output for same input?
        consistency_score = 1.0 if len(set(str(o) for o in outputs)) == 1 else 0.5
        results['consistency'] = consistency_score

        # Combined score
        results['combined_score'] = (
            0.6 * results['success_rate'] +
            0.2 * (1.0 / max(results['avg_latency'], 0.01)) +
            0.2 * results['consistency']
        )

        return results

    def select_best_variant(self, variants: List[AgentProgram]) -> AgentProgram:
        """Evaluate all variants and return the best."""
        best_variant = None
        best_score = -float('inf')

        for variant in variants:
            results = self.evaluate_agent(variant)
            score = results['combined_score']

            if score > best_score:
                best_score = score
                best_variant = variant

        if best_variant:
            best_variant.performance = best_score

        return best_variant

ステップ4: 再帰的メタ改善

メタエージェントが自身を改善できるようにします。

class RecursiveImprover:
    """
    Enables the meta-agent to improve itself.
    This is the key to open-ended growth.
    """

    def __init__(self, evaluator: PerformanceEvaluator):
        self.evaluator = evaluator
        self.meta_improvement_history = []
        self.variant_generator = VariantGenerator()

    def improve_task_agent(self, task_agent: AgentProgram,
                          meta_agent: AgentProgram) -> AgentProgram:
        """Use meta-agent to improve task-agent."""

        # Get meta-agent's suggested improvement
        improvement_suggestion = meta_agent.execute(
            task_input=task_agent.code,
            env_context={'evaluation_results': {}}
        )

        if improvement_suggestion and 'error' not in improvement_suggestion:
            improved_code = improvement_suggestion
        else:
            # Fallback: use variant generator
            improved_code = self.variant_generator.add_parameter(task_agent.code)

        improved_agent = task_agent.clone(mutation=improved_code)
        return improved_agent

    def improve_meta_agent(self, meta_agent: AgentProgram,
                          improvement_history: List[Dict]) -> AgentProgram:
        """
        CRITICALLY: Improve the meta-agent itself.
        This enables open-ended improvement.
        """

        # Generate variants of the meta-agent
        meta_variants = self.variant_generator.generate_variants(
            meta_agent, num_variants=3
        )

        # Evaluate each meta-variant by using it to improve a task agent
        # This is slower but demonstrates true meta-improvement

        best_meta_variant = None
        best_meta_score = -float('inf')

        for meta_variant in meta_variants:
            # Quick evaluation: does it produce sensible modifications?
            # (Full evaluation would be expensive)

            suggested_modification = meta_variant.execute(
                task_input={'sample': 'task_code'},
                env_context={}
            )

            # Score: preference for non-error modifications
            is_valid = suggested_modification and 'error' not in str(suggested_modification)
            meta_score = 1.0 if is_valid else 0.0

            if meta_score > best_meta_score:
                best_meta_score = meta_score
                best_meta_variant = meta_variant

        if best_meta_variant and best_meta_score > 0:
            return best_meta_variant

        return meta_agent

    def run_improvement_loop(self, task_agent: AgentProgram,
                            meta_agent: AgentProgram,
                            num_iterations: int = 10) -> Dict[str, AgentProgram]:
        """
        Run recursive improvement loop.
        Each iteration: improve task agent, then improve meta-agent.
        """

        current_task = task_agent
        current_meta = meta_agent

        for iteration in range(num_iterations):
            print(f"\n=== Iteration {iteration} ===")

            # Phase 1: Improve task agent
            improved_task = self.improve_task_agent(current_task, current_meta)
            task_perf = self.evaluator.evaluate_agent(improved_task)
            print(f"Task agent score: {task_perf['combined_score']:.3f}")

            # Phase 2: Improve meta-agent (the key step!)
            improved_meta = self.improve_meta_agent(current_meta, self.meta_improvement_history)
            print(f"Meta-agent improved (v{improved_meta.version})")

            # Record improvement
            self.meta_improvement_history.append({
                'iteration': iteration,
                'task_score': task_perf['combined_score'],
                'task_agent_hash': improved_task.compute_hash(),
                'meta_agent_hash': improved_meta.compute_hash()
            })

            current_task = improved_task
            current_meta = improved_meta

        return {
            'final_task_agent': current_task,
            'final_meta_agent': current_meta,
            'improvement_history': self.meta_improvement_history
        }

実践的なガイダンス

ハイパーパラメータ:

  • 反復ごとのバリアント数: 3~7個(探索と計算のバランスを取る)
  • 変異タイプ: 3~5種類の異なるオペレータを使用(多様性が探索を改善)
  • バリアントごとの評価予算: 10~50テストケース(高速な評価でより多くの反復が可能)
  • メタ改善の頻度: タスク反復ごとに2~5回

使用すべき場合:

  • 継続的な改善が価値のある長時間実行システム
  • 改善戦略自体が変動するドメイン
  • 開放型学習を探索する研究環境
  • 再帰的評価のための計算予算がある場合

使用してはいけない場合:

  • リアルタイムシステム(再帰的改善はレイテンシを追加)
  • 安全関連ドメイン(制御されない自己修正はリスク)
  • シングルショットタスク(改善オーバーヘッドが正当化されない)
  • 形式検証が必要なシステム(自己修正は分析が困難)

落とし穴:

  • 暴走変異: チェックなしではコードが無意味に発散する可能性があります。構造を検証してください
  • 評価ノイズ: わずかなパフォーマンス差が無作為な方向につながる。複数実行を使用してください
  • 正のフィードバックループ: 改善戦略が機能すると支配的になる。多様化してください
  • 無限のコード成長: プログラムが肥大化する可能性があります。コードサイズを追跡し、必要に応じてペナルティを課してください

参考資料

論文: arxiv.org/abs/2603.19461

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
ADu2021
リポジトリ
ADu2021/skillXiv
ライセンス
MIT
最終更新
2026/3/26

Source: https://github.com/ADu2021/skillXiv / ライセンス: MIT

関連スキル

OpenAILLM・AI開発⭐ リポ 6,054

agent-browser

AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。

by JimmyLv
汎用LLM・AI開発⭐ リポ 1,982

anyskill

AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 1,982

engram

AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 21,584

skyvern

AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。

by Skyvern-AI
汎用LLM・AI開発⭐ リポ 1,149

pinchbench

PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。

by pinchbench
汎用LLM・AI開発⭐ リポ 4,693

openui

OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。

by thesysdev
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: ADu2021 · ADu2021/skillXiv · ライセンス: MIT