messaging-agents について
messaging-agents は、conversations API を使って同じ Letta サーバー上の別のエージェントにメッセージを送る Letta Code スキルです。会話の開始と継続に対応し、メッセージだけでは送信側のローカル環境にアクセスできないことも説明します。
主な機能
- 01エージェント間の会話開始
- 02ID を指定した会話の継続
- 03エージェントと過去のメッセージの検索
- 04非表示の会話記録の確認
活用シーン
- 01専門知識を持つエージェントへの質問
- 02別のエージェントのメモリから情報を取得
- 03複数エージェント間の作業調整
- 04エージェント間の会話記録の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ letta-ai/ letta-code --skill messaging-agentsインストール後、Claude Code で/messaging-agentsを入力して読み込まれたか確認します。
詳細
メッセージングエージェント
このスキルを使うと、スレッドセーフな会話 API を使用して、同じ Letta サーバー上の他のエージェントにメッセージを送信できます。
このスキルを使用する場面
- 別のエージェントに質問したい場合
- 専門知識を持つエージェントに問い合わせたい場合
- 別のエージェントのメモリにある情報が必要な場合
- タスクについて別のエージェントと連携したい場合
対象エージェントにできること、できないこと
対象エージェントにはできません:
- ローカル環境にアクセスすること(コードベース内のファイルの読み取り/書き込み)
- マシン上でシェルコマンドを実行すること
- あなたのツール(Bash、Read、Write、Edit など)を使用すること
対象エージェントにはできます:
- 自身のツール(設定済みのツール)を使用すること
- 自身のメモリブロックにアクセスすること
- Web/API ツールがあれば API を呼び出すこと
- Web 検索ツールがあれば Web を検索すること
- 自身の知識/メモリに基づく情報を回答すること
重要: このスキルは他のエージェントとのコミュニケーション用であり、ローカル作業の委任用ではありません。対象エージェントは自身の環境で動作し、あなたのコードベースを操作できません。
ローカル環境へのアクセスが必要ですか? 対象エージェントにローカル環境へのアクセス(ファイルの読み取り/書き込み、コマンドの実行)を許可する必要がある場合は、代わりに Agent ツールを使ってサブエージェントとして起動してください:
Agent({
agent_id: "agent-xxx", // Deploy this existing agent
subagent_type: "general-purpose", // read-write access to your local tools
prompt: "Look at the code in src/ and tell me about the architecture"
})
これにより、エージェントはサブエージェントとして動作しながら、コードベースにアクセスできます。
メッセージを送るエージェントを探す
特定のエージェント ID がわからない場合は、次のスキルを使って探してください。
名前またはタグから探す
finding-agents スキルを読み込んで、エージェントを検索します:
letta agents list --query "agent-name"
letta agents list --tags "origin:letta-code"
話し合ったトピックから探す
searching-messages スキルを読み込んで、ある作業を担当したエージェントを探します:
letta messages search --query "topic" --all-agents
結果には、該当する各メッセージの agent_id が含まれます。
CLI の使い方(エージェント間)
新しい会話を開始する
letta -p --from-agent $LETTA_AGENT_ID --agent <id> "message text"
引数:
| 引数 | 必須 | 説明 |
|---|---|---|
--agent <id> | はい | メッセージの送信先となるエージェント ID |
--from-agent <id> | はい | 送信元のエージェント ID(エージェント間のシステムリマインダーを挿入します) |
"message text" | はい | メッセージ本文(フラグの後に位置引数として指定) |
例:
letta -p --from-agent $LETTA_AGENT_ID \
--agent agent-abc123 \
"What do you know about the authentication system?"
応答:
{
"conversation_id": "conversation-xyz789",
"response": "The authentication system uses JWT tokens...",
"agent_id": "agent-abc123",
"agent_name": "BackendExpert"
}
会話を続ける
letta -p --from-agent $LETTA_AGENT_ID --conversation <id> "message text"
引数:
| 引数 | 必須 | 説明 |
|---|---|---|
--conversation <id> | はい | 既存の会話 ID |
--from-agent <id> | はい | 送信元のエージェント ID(エージェント間のシステムリマインダーを挿入します) |
"message text" | はい | 追加メッセージ(フラグの後に位置引数として指定) |
例:
letta -p --from-agent $LETTA_AGENT_ID \
--conversation conversation-xyz789 \
"Can you explain more about the token refresh flow?"
応答について
- スクリプトが返すのは最終的なアシスタントメッセージのみです(ツール呼び出しや推論は含みません)
- 対象エージェントはツールを使い、思考し、推論することがありますが、表示されるのは最終回答のみです
- ツール呼び出しを含む会話全体の記録を確認するには、他のエージェントを対象として
letta messages list --agent <id>を実行し、searching-messagesスキルを使います
仕組み
メッセージを送信すると、対象エージェントには次のシステムリマインダーが届きます:
<system-reminder>
This message is from "YourAgentName" (agent ID: agent-xxx), an agent currently running inside the Letta Code CLI (docs.letta.com/letta-code).
The sender will only see the final message you generate (not tool calls or reasoning).
If you need to share detailed information, include it in your response text.
</system-reminder>
これにより、対象エージェントがコンテキストを理解し、適切な形式で応答できるようになります。
非表示の会話
エージェント間の会話(--from-agent を使って開始した会話)は、対象エージェント側で非表示として作成されます。対象エージェントの ADE の既定の会話リストには表示されないため、自動化されたエージェント間のやり取りで UI が煩雑になりません。
確認するには:
archive_status=archived(またはall)を指定して、API 経由で非表示の会話を一覧表示しますletta messages transcript --conversation <id>を使って、会話記録を直接取得します- メッセージ送信時に返される
conversation_idが必要な ID です
--conversation <id> を使って非表示の会話を続けても、非表示のままです。影響を受けるのはアーカイブ状態のみで、メッセージングは通常どおり機能します。
関連スキル
- finding-agents:名前、タグ、またはあいまい検索でエージェントを探します
- searching-messages:エージェント間の過去のメッセージを検索したり、会話全体の記録を表示したりします