オープンソース · Pythonカーネル

Marmo Core

AIエージェントのためのリソースカーネル。

適切なMemory・Skill・Tool・Agentを、安全に選び出す。 Marmo Coreは、AIエージェントが目の前のタスクに必要とするリソースを検索し、選択し、 安全に実行するための軽量なPythonカーネルです。

pip install marmo-core

Python 3.10+ Apache License 2.0 Memory / Skill / Tool / Agent

湖底に沈むまりも Marmoという名前は、冷たい湖の底で育つ球状の緑藻「まりも」に由来しています。

課題

エージェントが扱える機能は、かつてないほど増えている。

いまのAIエージェントは、ツール、メモリ、再利用可能なスキル、外部サービス、さらには他のエージェントにまでアクセスできます。 難しいのは、もはやそれらを「つなぐこと」ではありません。

難しいのは、次の判断です。

  • 何を使うべきか?
  • どのリソースを組み合わせて選ぶべきか?
  • その操作は許可されているか?
  • 人間の承認が必要か?
  • 実行中に何が起きたか?

Marmo Coreは、これらの判断を扱うための共通レイヤーを提供します。

  1. Task自然言語の目的が渡される。
  2. Searchレジストリから候補リソースを探す。
  3. Select実際に使う組み合わせまで絞り込む。
  4. Policy & Safety権限・副作用・承認の要否を確認する。
  5. Activate選ばれたリソースをエージェントへ渡す。
  6. Executeランタイムの制御下で実行する。
  7. Audit何を判断し、何が動いたかを記録する。

01 / リソースモデル

ひとつのリソースモデル

Marmo Coreは、AIエージェントが使える機能を4種類のリソースとして表現します。

R-01

Memory

エージェントがより良い判断を下すための、永続的またはタスク固有のコンテキスト。

  • ユーザーの設定・好み
  • 過去のやり取り
  • ドメイン知識
  • タスクの文脈
R-02

Skill

タスクをどう遂行するかを記述した、再利用可能な手順とワークフロー。

  • 調査のワークフロー
  • コーディング手順
  • 文書解析
  • カスタマーサポート業務
R-03

Tool

ソフトウェアや外部システムを操作するための、実行可能な機能。

  • API
  • データベース
  • ファイルシステム
  • シェルコマンド
  • MCPツール
R-04

Agent

委譲されたタスクを受け取って実行する、専門化されたエージェント。

  • 調査エージェント
  • コーディングエージェント
  • レビューエージェント
  • ドメイン特化エージェント

02 / 共通メタデータ

性質の違うリソースを、ひとつのインターフェースで。

Memory・Skill・Tool・Agentの各リソースは、共通のメタデータモデルを共有します。 どのリソースも、同じ項目で自分自身を記述できます。

  • 機能(capabilities)
  • 入力と出力
  • 必要な権限
  • 推定コスト
  • 想定レイテンシ
  • 副作用
  • 信頼レベル
  • 依存関係
  • 競合関係
  • 運用統計

これにより、種類の異なるリソースを同じ基盤の上で検索・比較・選択し、統制できます。

レジストリ → 検索 → 選択 → 実行
Memory ─┐
Skill  ─┤
Tool   ─┼──► Resource Registry
Agent  ─┘          │
                   ▼
               Retrieval
                   │
                   ▼
                Selection
                   │
                   ▼
                Execution

03 / 動的ルーティング

タスクごとに、必要なリソースだけを見つける。

使えるすべての機能を一度にエージェントへ晒すのではなく、Marmo Coreはそのタスクに応じてリソースを検索し、選択します。

ルーティングの流れ
User Task
   │
   ▼
Resource Registry
   │
   ▼
Retriever
   │
   ▼
Candidate Resources
   │
   ▼
Selector
   │
   ▼
Selected Resource Set

Marmo Coreは複数の検索・選択戦略を備えており、関連度、コスト、レイテンシ、権限、信頼、依存関係、リソース同士の相性といった要素のバランスをアプリケーション側で調整できます。

"Summarize this document and send the result."

                    │
                    ▼

               Marmo Core

       ┌────────────┼────────────┐
       ▼            ▼            ▼

Document Skill    Memory      Email Tool

エージェントが受け取るのは、機能空間の全体ではなく、そのタスクに必要なリソースだけです。

04 / ガードされた実行

LLMの出力は「提案」であって、「許可」ではない。

AIエージェントに外部システムへのアクセスを与えると、通常のfunction callingでは解決できないリスクが生まれます。Marmo Coreは、実行を明示的なポリシーとランタイム制御の後ろに置きます。

提案から実行まで
LLM
 │
 ▼
Resource Selection
 │
 ▼
Policy Gateway
 │
 ▼
Permission Check
 │
 ▼
Human Approval
 │
 ▼
Runtime
 │
 ▼
Audit Log
権限permissions
各リソースは、実行前に必要な権限を宣言する。
副作用side effects
操作は read / write / external / irreversible といった影響の種類で分類できる。
人間による承認approval
影響の大きい操作は、実行前に人間の明示的な承認を必須にできる。
シークレットの扱いsecrets
認証情報はモデルのコンテキストの外で解決し、必要な時にだけ注入できる。
プロンプトインジェクション境界untrusted input
外部コンテンツやツールの実行結果を、信頼された命令ではなく信頼できないデータとして扱える。
隔離isolation
コネクタは、実行時に必要な隔離レベルを宣言できる。
監査audit log
実行の判断とランタイムの挙動を記録し、後から検証できる。

05 / クイックスタート

クイックスタート

Marmo CoreはPython 3.10以降で動作します。

インストール

pip install marmo-core

リソースを定義する

pythonツールの登録
from marmo_core import ResourceDefinition, ResourceRegistry

registry = ResourceRegistry()

resource = ResourceDefinition.from_mapping({
    "id": "tool.math.add",
    "kind": "tool",
    "name": "Add Numbers",
    "version": "1.0.0",
    "description": "Add two numbers.",
    "capabilities": ["arithmetic", "addition"],
    "input_summary": "Two numbers.",
    "output_summary": "The calculated sum.",
    "required_permissions": ["math.add"],
    "cost_estimate": 0.0,
    "latency_class": "fast",
    "side_effect": "none",
    "trust_level": "core",
    "ref": "tool://math/add",
    "tags": ["math"],
    "input_schema": {
        "type": "object",
        "required": ["a", "b"],
        "properties": {
            "a": {"type": "number"},
            "b": {"type": "number"}
        }
    }
})

registry.add(resource)

タスクを実行する

pythonゴールの実行
from marmo_core import (
    Kernel,
    MockLLMProvider,
    PolicyContext,
)

def add_numbers(a: float, b: float):
    return {"sum": a + b}

kernel = Kernel(
    registry,
    MockLLMProvider(
        tool_arguments={
            "tool.math.add": {
                "a": 2,
                "b": 3
            }
        }
    ),
    policy_context=PolicyContext(
        granted_permissions=("math.add",)
    ),
    tool_implementations={
        "tool.math.add": add_numbers
    },
)

result = kernel.run_goal(
    "Add 2 and 3 using the calculator."
)

print(result.output)

06 / コマンドライン

CLI

Marmo Coreには、リソースの検証・検索・実行を行うコマンドラインインターフェースも含まれています。

bashリソースを検証する
marmo validate resources/
bashリソースを検索する
marmo search resources/ \
  --task "read a local text file safely"
bashリソースを実行する
marmo run resources/tools/validate-json.json \
  --task "validate JSON input"

07 / 戦略

検索と選択

Marmo Coreは、リソースの発見とルーティングのために複数の戦略を用意しています。

検索(Retrieval)

  • 字句検索(lexical)
  • ハイブリッド検索
  • グラフベースの機能検索
  • 階層的検索
  • LLMによるリランキング
  • Cross-encoderによるリランキング

選択(Selection)

  • ルールベース選択
  • 制約付き貪欲選択
  • ビームサーチ
  • 分枝限定法による選択
  • LLMによる選択

レジストリの規模やアプリケーションの要件に応じて、これらの戦略を組み合わせて使えます。

08 / 接続

既存のエコシステムに、そのまま接続する

Marmo Coreは、AIエージェントとそれが使うリソースの「あいだ」に置かれるように設計されています。既存のツールやサービスを置き換える必要はありません。

  • OpenAI-compatible models
  • Anthropic models
  • MCP servers
  • Python functions
  • HTTP services
  • File systems
  • Shell commands
  • SQLite databases
Marmo Coreの位置
                   AI Agent
                      │
                      ▼
                 Marmo Core
                      │
         ┌────────────┼────────────┐
         ▼            ▼            ▼
        MCP          APIs        Python
         │            │            │
         ▼            ▼            ▼
       Tools       Services      Systems

09 / MCP

MCP + Marmo Core

MCPはツールをつなぐ。Marmoは、それをいつ使うか、そもそも使うかを決める。

Marmo Coreは、Model Context Protocol(MCP)の代替ではありません。 MCPはツールや機能をAIアプリケーションへ公開する標準的な方法を提供します。 Marmo Coreはその機能をリソースとして扱い、次を加えます。

  • 検索
  • 選択
  • 権限
  • 信頼レベル
  • コストの考慮
  • 人間による承認
  • 実行ポリシー
  • 監査可能性
MCPツールをMarmoのリソースとして扱う
MCP Server
    │
    ▼
MCP Tools
    │
    ▼
Marmo Resource Registry
    │
    ▼
Routing + Policy
    │
    ▼
AI Agent

10 / 信頼性

エージェント実行の信頼性

エージェントシステムに必要なのは、ツール呼び出しの成功だけではありません。Marmo Coreは、失敗と長時間実行を扱うための仕組みを備えています。

復旧recovery
リトライ、フォールバック、サーキットブレーカー、復旧戦略に対応する。
状態state store
実行状態を in-memory / JSON / SQLite のいずれかのストアに永続化する。
監査event trail
実行の履歴を、監査可能なイベント列として記録する。
評価statistics
実行結果と運用統計を蓄積し、以降のルーティング判断に反映できるようにする。

11 / 実際の構成

実際のエージェントシステムのために

パーソナルAI

ユーザーのいまのタスクに応じて、関連するメモリ・スキル・ツールを選び出す。

User Request
     │
     ▼
Relevant Memory
     +
Required Skill
     +
Available Tool

業務エージェント

明示的な権限、信頼ポリシー、監査ログによって、社内システムへのアクセスを制御する。

Agent
  │
  ▼
Marmo Policy
  │
  ├── CRM
  ├── Database
  ├── Internal API
  └── External Service

マルチエージェント

専門エージェントを発見し、その能力に応じてタスクを動的に委譲する。

Main Agent
    │
    ▼
Marmo Router
    │
    ├── Research Agent
    ├── Coding Agent
    └── Review Agent

12 / 立ち位置

なぜMarmo Coreなのか

多くのエージェントフレームワークは、ワークフローの定義やモデル呼び出しのオーケストレーションに焦点を当てています。Marmo Coreが扱うのは、別の問題です。

エージェントは、自分が使える機能をどう発見し、選び、統制し、実行すべきか。

中核となる原則は次のとおりです。

リソースの統一

Memory・Skill・Tool・Agentを、共通のインターフェースで扱えるリソースとして統一する。

動的なルーティング

すべての機能を常に全エージェントへ晒すのではなく、タスクに応じて選び出す。

ガードされた実行

モデルの判断と、実行の許可を分離する。

観測可能なランタイム

実行状態・判断・失敗・監査情報を、いつでも確認できる状態に保つ。

フレームワーク非依存

既存のエージェント・モデル・ツール・プロトコルの下層にある基盤として使う。

13 / アーキテクチャ

アーキテクチャ

タスク → 検索 → 選択 → ポリシー → 実行 → 監査
                       User Task
                           │
                           ▼
                    ┌─────────────┐
                    │ Marmo Core  │
                    └──────┬──────┘
                           │
                    Resource Search
                           │
                           ▼
                  ┌─────────────────┐
                  │ Resource Router │
                  └────────┬────────┘
                           │
                  Resource Selection
                           │
                           ▼
                  ┌─────────────────┐
                  │ Policy Gateway  │
                  └────────┬────────┘
                           │
                       Activation
                           │
              ┌────────────┼────────────┐
              ▼            ▼            ▼
           Memory         Skill        Tool
                                         │
                                         ▼
                                      Agent
                           │
                           ▼
                       Execution
                           │
                           ▼
                    State + Audit

「何を使うべきか」を知っているエージェントをつくる。

多くの機能をエージェントに与えながら、すべてのタスクにすべての機能を渡さない。

  • 検索する
  • 選択する
  • 守る
  • 実行する
pip install marmo-core

オープンソース · Apache License 2.0 · コントリビューション、実験、インテグレーション、 フィードバックを歓迎します。 → GitHubでソースを見る