mcpField
M
memos-memory-guide

memos-memory-guide

github.com/memtensorエージェントワークフロー12.2k295 回インストール5 日前に更新
リポジトリ

memos-memory-guide について

エージェント向けの MemOS ガイドです。会話メモリーの検索、共有データの利用、スキルの再利用を説明し、ローカルとチームの共有範囲を区別します。

主な機能

  1. 01会話メモリーの検索と取得
  2. 02ローカルまたはチームでのメモリー共有
  3. 03タスクの要約とコンテキストの確認
  4. 04再利用可能なスキルの検索とインストール
  5. 05共有タスクとスキルの管理

活用シーン

  1. 01過去の決定や好みを探す
  2. 02関連メモリーをワークスペースのエージェントと共有
  3. 03過去のタスクから実績あるガイドを取得
  4. 04新しいタスク向けのスキルを探す

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/memtensor/memos --skill memos-memory-guide

インストール後、Claude Code で/memos-memory-guideを入力して読み込まれたか確認します。

詳細

MemOS ローカルメモリ — エージェントガイド

このスキルでは、MemOS のメモリツールを使って、ユーザーの長期的な会話履歴を確実に検索して利用する方法、チーム共有データを照会する方法、タスクを共有する方法、再利用可能なスキルを見つけたり取得したりする方法について説明します。

共有には 2 つの種類があり、混同しないでください。

  • ローカルエージェント共有: 同じ OpenClaw ワークスペース内のエージェントだけに表示されます。
  • チーム共有: 設定済みのチームサーバーを通じてチームメンバーに表示されます。

各ターンでメモリが提供される仕組み

  • 自動想起(フック): 各ターンの開始時に、システムがユーザーの現在のメッセージを使ってメモリを検索し、関連する過去のメモリをコンテキストに挿入します。このため、ツールを呼び出す必要はありません。
  • それだけでは不十分な場合: ユーザーのメッセージが非常に長い、曖昧である、または自動検索でメモリが見つからない場合は、独自に短く焦点を絞ったクエリを作成し、memory_search を自分で呼び出してください。
  • メモリの分離: 各エージェントが参照できるのは、自身のローカルプライベートメモリとローカルの public メモリだけです。チーム共有データは、scope="group" または scope="all" を指定して検索した場合にのみ表示されます。

ツール — 機能と呼び出すタイミング

memory_search
  • 機能: 過去の会話、ユーザーの好み、決定事項、経験について、長期会話メモリを検索します。関連する抜粋を chunkId と、場合によっては task_id とともに返します。現在のエージェントに属するメモリ、またはパブリックとしてマークされたメモリだけを返します。
  • 呼び出すタイミング:
    • 自動想起が実行されなかった場合、または何も返されなかった場合。
    • ユーザーのクエリが長い、または不明瞭な場合 — 短いクエリを自分で作成し、memory_search(query="...") を呼び出してください。
    • 異なる切り口で検索する必要がある場合(例:role='user' で絞り込む)。
  • パラメーター:
    • query(文字列、必須)— 自然言語による検索クエリ。
    • scope(文字列、任意)— 現在のエージェントとローカル共有メモリを対象とする 'local'(デフォルト)、またはチーム共有メモリを含める 'group'/'all'。
    • maxResults(数値、任意)— 最初の検索範囲が狭すぎる場合に増やします。
    • minScore(数値、任意)— 想起条件が厳しすぎる場合に少し下げます。
    • role(文字列、任意)— ローカル検索結果を 'user'、'assistant'、'tool'、または 'system' で絞り込みます。
memory_get
  • 機能: メモリチャンクの元の全文を取得します。検索結果の正確な詳細を確認するために使用します。
  • 呼び出すタイミング: memory_search の検索結果が関連しているように見えるものの、要約や抜粋だけではなく元の内容全体を確認する必要がある場合。
  • パラメーター:
    • chunkId(文字列、必須)— 検索結果の chunkId。
    • maxChars(数値、任意)— 返す最大文字数(デフォルト 4000、最大 12000)。
memory_write_public
  • 機能: 新しいローカル共有メモリを作成します。このメモリは、同じ OpenClaw ワークスペース内のすべてのエージェントが memory_search で参照できます。チームサーバーには何も公開されません。
  • 呼び出すタイミング: マルチエージェントまたは共同作業のシナリオで、共有の決定事項、規約、設定、ワークフローなど、新しい永続的な共有メモを一から作成したい場合。公開する対象の特定のメモリチャンクがすでにある場合は使用しないでください。
  • パラメーター:
    • content(文字列、必須)— ローカル共有メモリに書き込む内容。
    • summary(文字列、任意)— 内容の短い要約。
memory_share
  • 機能: 既存のメモリを、ローカルの OpenClaw エージェント、チーム、またはその両方と共有します。
  • 呼び出すタイミング:
    • 会話の内容をチームまたはハブと共有したい場合は、まずその内容に関連するメモリを取得して適切な chunkId(複数可)を確認してから、共有します。
    • target='agents'(デフォルト):同じワークスペース内の他のエージェントにとって明らかに役立つメモリであれば、ユーザーに確認せず積極的に共有してもかまいません。
    • target='hub' または 'both':その内容が共同作業者に役立つ場合に限り、ユーザーの明示的な同意を得てから共有します。簡潔に説明して先に確認し、その後 hub/both を呼び出してください(Hub の設定が必要です)。確認せずに Hub と共有してはいけません。
  • 使用しない場合: 既存のチャンクがなく、新しい共有メモを作成する場合は使用しません。代わりに memory_write_public を使用してください。
  • パラメーター:
    • chunkId(string、必須)— 既存のメモリチャンク ID。
    • target(string、任意)— 'agents'(デフォルト)、'hub'、または 'both'。
    • visibility(string、任意)— target にチームが含まれる場合のチーム内での公開範囲:'public'(デフォルト)または 'group'。
    • groupId(string、任意)— visibility='group' の場合に指定する、任意のチームグループ ID。
memory_unshare
  • 機能: 既存のメモリを、ローカルエージェントとの共有、チームとの共有、またはその両方から削除します。
  • 呼び出すタイミング: メモリを現在のエージェント以外には表示されないようにする場合、またはチームから削除する場合。
  • パラメーター:
    • chunkId(string、必須)— 既存のメモリチャンク ID。
    • target(string、任意)— 'agents'、'hub'、または 'all'(デフォルト)。
    • privateOwner(string、任意)— 元の所有者の記録がない、古い公開メモリにのみ使用するまれなフォールバック。
task_summary
  • 機能: 完了したタスクの詳細な概要(タイトル、ステータス、説明形式の概要、関連スキル)を取得します。memory_search で task_id を含む結果が見つかり、そのタスクの全体像が必要な場合に使用します。URL、ファイルパス、コマンド、エラーコード、手順などの重要な情報を保持します。
  • 呼び出すタイミング: memory_search の検索結果に task_id が含まれており、そのタスクの全体的なコンテキストが必要な場合。
  • パラメーター:
    • taskId(string、必須)— memory_search の検索結果に含まれる task_id。
skill_get
  • 機能: skillId または taskId を指定して、実証済みのスキル(経験ガイド)を取得します。taskId を渡すと、システムが関連付けられたスキルを自動的に検索します。
  • 呼び出すタイミング: 検索結果に task_id が含まれており、そのタスクに「もう一度同じことを行う方法」のガイドがある場合。手順に従ったり、再利用したりする際に使用します。
  • パラメーター:
    • skillId(string、任意)— 直接指定するスキル ID。
    • taskId(string、任意)— タスク ID。このタスクに関連付けられたスキルを検索します。
    • skillId または taskId の少なくとも一方を指定する必要があります。
skill_search
  • 機能: 自然言語で利用可能なスキルを検索します。自分のスキル、ローカル共有スキル、またはその両方を検索できます。チームのスキルを含めることもできます。
  • 呼び出すタイミング: 現在のタスクに必要な機能やガイドがない場合は、まず skill_search で検索します。見つかったら skill_get で内容を読み、その後 skill_install で今後のターンに備えて読み込みます。
  • パラメーター:
    • query(string、必須)— 必要なスキルの内容を自然言語で記述したもの。
    • scope(string、任意)— 'mix'(デフォルト、自分のスキル+ローカル共有スキル)、'self'、'public'(ローカル共有のみ)、またはチームの検索結果を含める場合は 'group'/'all'。
skill_install
  • 機能: 習得したスキルをエージェントのワークスペースにインストールし、永続的に利用できるようにします。インストール後は、今後のセッションでスキルが自動的に読み込まれます。
  • 呼び出すタイミング: skill_get の後、そのスキルを継続的に使用する場合。
  • パラメーター:
    • skillId(string、必須)— インストールするスキル ID。
skill_publish
  • 機能: スキルをローカルエージェントと共有するか、チームに公開します。
  • 呼び出すタイミング: 他のエージェントやチームに役立つスキルがある場合です。
  • パラメーター:
    • skillId (string、必須) — 公開するスキル ID です。
    • target (string、省略可) — 'agents'(デフォルト)または 'hub' です。
    • visibility (string、省略可) — target='hub' の場合は、'public'(デフォルト)または 'group' を指定します。
    • groupId (string、省略可) — target='hub' かつ visibility='group' の場合に指定する、チームグループ ID です。
    • scope (string、省略可) — 以前の呼び出しとの後方互換性のためのエイリアスです。新しい呼び出しでは target と visibility の使用を推奨します。
skill_unpublish
  • 機能: ローカルエージェントとの共有を停止するか、チームに公開したコピーを削除するか、または両方を行います。
  • 呼び出すタイミング: 以前に公開したスキルの共有を停止したい場合です。
  • パラメーター:
    • skillId (string、必須) — 公開を停止するスキル ID です。
    • target (string、省略可) — 'agents'(デフォルト)、'hub'、または 'all' です。
network_memory_detail
  • 機能: チーム検索で見つかった結果の全文を取得します。
  • 呼び出すタイミング: memory_search の結果がチーム由来で、共有メモリーの全文が必要な場合です。
  • パラメーター: remoteHitId。
task_share / task_unshare
  • 機能: ローカルのタスクをチームと共有するか、後から共有を解除します。
  • 呼び出すタイミング: タスクがグループやチーム全体にとって有用で、共有検索から見つけられるようにしたい場合です。
  • パラメーター: taskId。必要に応じて、共有の可視性/スコープも指定します。
network_skill_pull
  • 機能: チームで共有されたスキルバンドルをローカルストレージに取得します。
  • 呼び出すタイミング: skill_search で役立つチームスキルが見つかり、ローカルまたはオフラインで使いたい場合です。
  • パラメーター: skillId。
network_team_info
  • 機能: 現在のチームサーバーの接続情報、ユーザー、ロール、グループを返します。
  • 呼び出すタイミング: チーム共有が設定されているか、現在のクライアントがどのグループに属しているかを確認する必要がある場合です。
  • 次の操作の前に最初に呼び出してください: memory_share(... target='hub'|'both')、memory_unshare(... target='hub'|'all')、task_share、task_unshare、skill_publish(... target='hub')、skill_unpublish(... target='hub'|'all')、または network_skill_pull。
  • パラメーター: なし。
memory_timeline
  • 機能: メモリー検索結果の前後のコンテキストを展開します。検索結果の chunkId を渡すと、前後の会話メッセージを読み取れます。
  • 呼び出すタイミング: memory_search の結果が関連しているものの、前後のやり取りも確認したい場合です。
  • パラメーター:
    • chunkId (string、必須) — memory_search の検索結果に含まれる chunkId です。
    • window (number、省略可) — コンテキストの範囲(前後 ±N メッセージ)です。デフォルトは 2 です。
memory_viewer
  • 機能: MemOS Memory Viewer の URL を表示します。ユーザーがメモリーの表示、閲覧、管理、確認方法を尋ねた場合に呼び出します。ユーザーがブラウザーで開ける URL を返します。
  • 呼び出すタイミング: ユーザーがメモリーの確認や管理場所を尋ねた場合です。
  • パラメーター: なし。

クイック判断フロー

  1. コンテキストにメモリがない、または自動想起で何も見つからなかった場合 → memory_search(query="...") を、自分で作成した短いクエリで呼び出します。

  2. 検索結果の全文を確認する必要がある場合 → memory_get(chunkId="...") を呼び出します。

  3. 検索結果に task_id が含まれ、全体のコンテキストが必要な場合 → task_summary(taskId="...") を呼び出します。

  4. 従うべき経験ガイドがタスクにある場合 → skill_get(taskId="...") または skill_get(skillId="...") を呼び出します。今後のために skill_install(skillId="...") を実行することもできます。

  5. 検索結果の前後にある会話を正確に確認する必要がある場合 → memory_timeline(chunkId="...") を呼び出します。

  6. まだ持っていない機能やガイドが必要な場合 → skill_search(query="...", scope="mix") を呼び出して、利用可能なスキルを探します。

  7. すべてのローカルエージェントに役立つ新しい共有知識がある場合 → memory_write_public(content="...") を呼び出します。

  8. 既存のメモリチャンクを公開または非公開にしたい場合 → memory_share(chunkId="...", target="agents|hub|both") または memory_unshare(chunkId="...", target="agents|hub|all") を呼び出します。

  9. チームとの共有に関する操作を行う場合 → チームサーバーの利用可否が不確かな場合は、まず network_team_info() を呼び出します。

  10. ローカルエージェントまたはチームとスキルを共有する、または共有を停止する場合 → skill_publish(skillId="...", target="agents|hub", visibility=...) と skill_unpublish(skillId="...", target="agents|hub|all") を使用することを優先します。

  11. メモリの確認や管理方法をユーザーが尋ねた場合 → memory_viewer() を呼び出し、URLを共有します。

適切な検索クエリの書き方

  • 短く、焦点を絞ったクエリ(数語、または明確な質問を1つ)を優先します。
  • 具体的な用語(名前、トピック、ツール、決定事項)を使います。
  • ユーザーのメッセージが長い場合は、全文を貼り付けるのではなく、サブクエリを1つか2つ導き出します。
  • ユーザーが言った内容を特に探したい場合は、role='user' を使用します。

メモリの所有権とエージェントの分離

各メモリには owner(例:agent:main、agent:sales-bot)が付与されています。これは自動的に処理されるため、owner パラメーターを渡す必要はありません。

  • 自分のメモリ: すべてのツール(memory_search、memory_get、memory_timeline)は、自動的に自分のエージェントのメモリのみを検索対象にします。
  • ローカル共有メモリ: ローカル共有としてマークされたメモリは、同じ OpenClaw ワークスペース内のすべてのエージェントから確認できます。memory_write_public で作成するか、memory_share(target='agents') で既存のチャンクを公開します。
  • エージェント間の分離: 他のエージェントが所有するメモリは確認できません(公開されている場合を除きます)。
  • 仕組み: システムは OpenClaw ランタイムコンテキストからエージェント ID を特定し、検索、想起、取得のたびに owner によるフィルタリングを自動的に適用します。

コメント