Memory
エージェントがより良い判断を下すための、永続的またはタスク固有のコンテキスト。
- ユーザーの設定・好み
- 過去のやり取り
- ドメイン知識
- タスクの文脈
課題
いまのAIエージェントは、ツール、メモリ、再利用可能なスキル、外部サービス、さらには他のエージェントにまでアクセスできます。 難しいのは、もはやそれらを「つなぐこと」ではありません。
難しいのは、次の判断です。
Marmo Coreは、これらの判断を扱うための共通レイヤーを提供します。
01 / リソースモデル
Marmo Coreは、AIエージェントが使える機能を4種類のリソースとして表現します。
エージェントがより良い判断を下すための、永続的またはタスク固有のコンテキスト。
タスクをどう遂行するかを記述した、再利用可能な手順とワークフロー。
ソフトウェアや外部システムを操作するための、実行可能な機能。
委譲されたタスクを受け取って実行する、専門化されたエージェント。
02 / 共通メタデータ
Memory・Skill・Tool・Agentの各リソースは、共通のメタデータモデルを共有します。 どのリソースも、同じ項目で自分自身を記述できます。
これにより、種類の異なるリソースを同じ基盤の上で検索・比較・選択し、統制できます。
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 / ガードされた実行
AIエージェントに外部システムへのアクセスを与えると、通常のfunction callingでは解決できないリスクが生まれます。Marmo Coreは、実行を明示的なポリシーとランタイム制御の後ろに置きます。
LLM
│
▼
Resource Selection
│
▼
Policy Gateway
│
▼
Permission Check
│
▼
Human Approval
│
▼
Runtime
│
▼
Audit Log
05 / クイックスタート
Marmo CoreはPython 3.10以降で動作します。
pip install marmo-core
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)
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 / コマンドライン
Marmo Coreには、リソースの検証・検索・実行を行うコマンドラインインターフェースも含まれています。
marmo validate resources/
marmo search resources/ \
--task "read a local text file safely"
marmo run resources/tools/validate-json.json \
--task "validate JSON input"
07 / 戦略
Marmo Coreは、リソースの発見とルーティングのために複数の戦略を用意しています。
レジストリの規模やアプリケーションの要件に応じて、これらの戦略を組み合わせて使えます。
08 / 接続
Marmo Coreは、AIエージェントとそれが使うリソースの「あいだ」に置かれるように設計されています。既存のツールやサービスを置き換える必要はありません。
AI Agent
│
▼
Marmo Core
│
┌────────────┼────────────┐
▼ ▼ ▼
MCP APIs Python
│ │ │
▼ ▼ ▼
Tools Services Systems
09 / MCP
MCPはツールをつなぐ。Marmoは、それをいつ使うか、そもそも使うかを決める。
Marmo Coreは、Model Context Protocol(MCP)の代替ではありません。 MCPはツールや機能をAIアプリケーションへ公開する標準的な方法を提供します。 Marmo Coreはその機能をリソースとして扱い、次を加えます。
MCP Server
│
▼
MCP Tools
│
▼
Marmo Resource Registry
│
▼
Routing + Policy
│
▼
AI Agent
10 / 信頼性
エージェントシステムに必要なのは、ツール呼び出しの成功だけではありません。Marmo Coreは、失敗と長時間実行を扱うための仕組みを備えています。
11 / 実際の構成
ユーザーのいまのタスクに応じて、関連するメモリ・スキル・ツールを選び出す。
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が扱うのは、別の問題です。
エージェントは、自分が使える機能をどう発見し、選び、統制し、実行すべきか。
中核となる原則は次のとおりです。
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でソースを見る