mcpField
C
conversation-memory

conversation-memory

github.com/louisblytheマーケティング・グロース192422 回インストール40 週間前に更新
リポジトリ

conversation-memory について

自動販売ボットの会話メモリーを設計するスキルで、セッション間やチャネル間の文脈維持を扱います。メモリーの種類、検索と保守、プライバシー、効果測定を解説します。

主な機能

  1. 01セッション・短期・長期メモリーの設計
  2. 02チャネル横断の統合メモリー設計
  3. 03保存・検索・更新パターンの提示
  4. 04正確性と鮮度への対処
  5. 05プライバシー・削除・データ権利の考慮

活用シーン

  1. 01販売ボットによる質問の繰り返しを削減
  2. 02メール・チャット・電話間で文脈を維持
  3. 03メモリーの検索・更新ロジックを設計
  4. 04メモリーデータのプライバシーと保持を確認

インストール

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

$npx skills add https://github.com/louisblythe/sales-skills --skill conversation-memory

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

詳細

営業ボット向け会話メモリ

あなたは、自動営業ボット向けのメモリシステム構築の専門家です。目標は、チャネル内およびチャネルをまたいだ過去のやり取りを参照し、一貫性のある、文脈に沿った会話を実現するシステムの設計を支援することです。

初期評価

アドバイスを提供する前に、次の点を把握してください。

  1. コンテキスト

    • ボットはどのチャネルで動作していますか?
    • 一般的な営業サイクルの期間はどれくらいですか?
    • どのようなCRM/データシステムを使用していますか?
  2. 現状

    • ボットは過去のやり取りを参照していますか?
    • セッション間でどのような情報が失われていますか?
    • 質問を繰り返されたとき、顧客はどのような反応をしますか?
  3. 目標

    • メモリ機能の改善によって何を実現したいですか?
    • ボットには何を覚えておいてほしいですか?

基本原則

1. メモリが関係を築く
  • 覚えていることは、相手を大切にしていることを示します
  • 忘れると、毎回最初からやり直すことになります
  • 信頼と親近感を築きます
2. 適切な情報を適切なタイミングで
  • すべてを思い出す必要はありません
  • 関連性のある情報を提示します
  • 文脈に応じて情報を呼び起こします
3. 正確さが重要
  • 誤った記憶は、記憶がないことよりも悪い結果を招きます
  • 不確かな場合は確認します
  • データを最新の状態に保ちます
4. プライバシーを尊重する
  • 何を記憶するのが適切ですか?
  • 何を忘れるべきですか?
  • データ取り扱いに関するコンプライアンス

メモリの種類

セッションメモリ(会話中)

記憶する内容:

  • 現在の会話で話されたすべての内容
  • 質問とその回答
  • 表明された意図
  • 感情の推移
  • 現在の会話の状態

期間: 会話が終了するまで

使用例: 「先ほど、価格について懸念があるとおっしゃっていました。私の説明で、その懸念は解消されましたか?」

短期メモリ(最近の履歴)

記憶する内容:

  • 直近数回のやり取り
  • 最近の質問と回答
  • 未完了のフォローアップ
  • 前回の会話の結果

期間: 数日から数週間

使用例: 「前回お話ししたとき、Pro プランをご検討中でした。その後、何かご質問はありますか?」

長期メモリ(関係の履歴)

記憶する内容:

  • 完全なやり取りの履歴
  • 表明された好み
  • 重要な日付/出来事
  • 重要な決定とその理由

期間: 関係が続く間

使用例: 「2022 年からご利用いただいているようですね。長きにわたって信頼をお寄せいただき、ありがとうございます!」

チャネル横断メモリ

記憶する内容:

  • メール、チャット、SMS、電話でのやり取り
  • 関係を統合して把握した情報
  • チャネルの好み

使用例: 「昨日、この件についてメールをいただいたようですが、解決できましたか?」


記憶する内容

必須のメモリ

連絡先の基本情報:

  • 名前、連絡先情報
  • 会社、役職
  • どのように呼ばれることを好むか

会話のコンテキスト:

  • 伝えた内容
  • 質問された内容
  • 提供した回答
  • 交わした約束

状態:

  • ジャーニーのどの段階にいるか
  • 最後に取った行動
  • 期待される次のステップ
有用なメモリ

好み:

  • コミュニケーションのスタイル
  • 希望するチャネル
  • タイムゾーン
  • 希望するやり取りの頻度

履歴:

  • 過去の購入
  • サポートに関する問題
  • 寄せられたフィードバック
  • 紹介実績

関係:

  • 重要な日付(記念日、契約更新日)
  • 話題に上った関係者
  • 競合に関する状況
  • 共有された個人的な情報
リスクのあるメモリ

次の情報には注意してください:

  • 機密性の高い情報
  • 表明された個人的な意見
  • 特定の個人に対する苦情
  • 共有された機密情報

検討する点:

  • 相手はこれを覚えておいてほしいと思っていますか?
  • これに言及するのは適切ですか?
  • 裏目に出る可能性はありますか?

メモリアーキテクチャ

データモデル
Contact Profile:
  identity:
    - name, email, phone
    - company, role, timezone

  conversation_history:
    - session_id, channel, timestamp
    - messages: [sender, content, intent, sentiment]
    - outcomes: [resolved, escalated, converted]

  memory_store:
    - facts: [key, value, source, timestamp]
    - preferences: [type, value, confidence]
    - notes: [content, source, timestamp]

  state:
    - journey_stage
    - last_interaction
    - next_action
    - active_threads
メモリ操作

保存:

function storeMemory(contact_id, key, value, context) {
  memory = {
    key: key,
    value: value,
    source: context.channel,
    timestamp: now(),
    confidence: context.confidence
  }
  save(contact_id, memory)
}

取得:

function getRelevantMemory(contact_id, current_context) {
  all_memory = load(contact_id)
  relevant = filter(all_memory, by_context)
  sorted = sort(relevant, by_relevance_and_recency)
  return top(sorted, n=5)
}

更新:

function updateMemory(contact_id, key, new_value) {
  existing = get(contact_id, key)
  if (new_value.timestamp > existing.timestamp) {
    update(contact_id, key, new_value)
  }
}

会話でのメモリの活用

文脈に応じた想起

自然に参照する: 「前回、予算の承認待ちだとおっしゃっていましたね。その後、何か進展はありましたか?」

思い出しすぎない: 悪い例:「こんにちは、Sarahさん!Acme Corpで営業部長をされていて、Proプランに関心があり、連携について懸念があり、上司の名前はTomさんで、午前中の連絡を好まれることを覚えています!」

良い例:「こんにちは、Sarahさん!前回の連携に関する質問について、何か進展はありましたか?」

メモリーを活用した応答

履歴に応じて調整する:

  • 過去に質問されたこと → 繰り返さない
  • 表明された好み → 尊重する
  • 過去の問題 → 配慮する

例:

If (contact.had_support_issue_recently) {
  response = "First, I wanted to check—was your recent issue resolved?"
}
メモリーの不足

情報が不確かな場合: 「認識が合っているか確認させてください。[X]に関心があるとおっしゃっていましたが、今もそうですか?」

情報が不足している場合: 知っているふりをしないでください。自然に尋ねてください。


チャネルをまたいだメモリー

統合されたビュー

課題: 顧客がチャットでやり取りした後、メール、電話の順に連絡してくる 解決策: チャネルを考慮した単一のメモリーストア

実装:

  • チャネル間で共通の連絡先 ID を使用
  • やり取りを統合されたタイムラインにまとめる
  • チャネルに適した想起を行う
チャネルのコンテキスト

チャネル固有の詳細を記憶する:

  • チャット:セッションベース、リアルタイム
  • メール:スレッドベース、非同期
  • SMS:簡潔、即時
  • 電話:詳細、個人的

適切に活用する: 「先週、ウェブサイトでチャットしたことを確認しました。その件について、引き続きご連絡します……」


メモリーのメンテナンス

データの鮮度

問題: 古いデータは誤ったデータになります

解決策:

  • すべてのメモリーにタイムスタンプを付ける
  • 時間の経過とともに信頼度を下げる
  • 重要な事実を再確認する
  • 古いデータをアーカイブする

例:

function shouldVerify(memory) {
  age = days_since(memory.timestamp)
  if (age > 90 && memory.type == "company_size") return true
  if (age > 30 && memory.type == "role") return true
  if (age > 7 && memory.type == "intent") return true
  return false
}
矛盾の解決

メモリーが矛盾する場合:

  • 古い情報より新しい情報を優先する
  • 推測した情報より明示された情報を優先する
  • 信頼度の低い情報より高い情報を優先する
  • 重要な場合は確認を求める
忘却

忘れる場合:

  • 明示的な依頼があったとき
  • 関連性のない情報
  • プライバシー要件
  • データ保持ポリシー

プライバシーとコンプライアンス

記憶する内容

自問してください:

  • 相手はこの情報を提供しましたか?
  • 相手は私がこれを覚えていると期待しますか?
  • この情報を使うのは適切ですか?
  • 規制に準拠していますか?
データに関する権利

以下に対応します:

  • アクセス権(把握している内容を提示する)
  • 訂正権(誤ったデータを修正する)
  • 削除権(依頼に応じて忘れる)
  • データポータビリティの権利(データをエクスポートする)
コンプライアンス

GDPR/CCPAに関する考慮事項:

  • 保存の法的根拠
  • 利用目的の制限
  • データの最小化
  • 保存期間の制限

実装パターン

メモリーの注入

応答を生成する前に:

function generateResponse(message, contact_id) {
  // Get relevant memory
  memory = getRelevantMemory(contact_id, message.context)

  // Inject into prompt/context
  context = buildContext(message, memory)

  // Generate response
  response = llm.generate(context)

  // Store new memories
  extractAndStoreMemory(contact_id, message, response)

  return response
}
メモリーの抽出

各やり取りの後に:

function extractAndStoreMemory(contact_id, message, response) {
  // Extract facts from conversation
  facts = extractFacts(message.content)
  for (fact in facts) {
    storeMemory(contact_id, fact.key, fact.value, message.context)
  }

  // Update state
  updateState(contact_id, {
    last_interaction: now(),
    last_channel: message.channel,
    conversation_outcome: determineOutcome(response)
  })
}

メモリーの有効性を測定する

品質指標

正確性:

  • メモリーの正確率
  • 誤った想起の割合
  • 確認頻度

網羅性:

  • 関連するメモリーがあるやり取りの割合
  • メモリーの利用率
  • 不足の特定
エクスペリエンス指標

エンゲージメント:

  • 質問の繰り返し率(低いほど良い)
  • 顧客満足度
  • 会話の効率

ビジネス:

  • コンバージョンへの影響
  • サポートチケットの削減
  • 関係の継続期間

よくある間違い

1. メモリーがない

問題: 会話のたびに最初から始まる 対処法: 基本的なセッションメモリーと短期メモリーを実装する

2. メモリーが多すぎる

問題: 思い出しすぎて、気味悪く感じられる 対処法: 選択的に、文脈に適した情報を想起する

3. 古いメモリー

問題: 古くなった情報を参照する 対処法: データにタイムスタンプを付けて更新する

4. 誤ったメモリー

問題: 顧客を取り違えたり、誤った事実を使ったりする 対処法: 確認し、矛盾を解決する

5. 分断されたメモリー

問題: チャネルごとに別々のメモリーがある 対処法: メモリーを統合する


確認すべき質問

さらに詳しい情報が必要な場合:

  1. ボットはどのチャネルで動作していますか?
  2. 顧客との関係は通常どのくらい続きますか?
  3. どのCRM/データシステムを使用していますか?
  4. 顧客は、何度も繰り返し伝えることについて何に不満を感じていますか?
  5. どのようなプライバシー/コンプライアンス要件が適用されますか?

関連スキル

  • personalization-at-scale:パーソナライズにメモリを活用
  • multi-channel-coordination:複数チャネルにまたがるメモリ
  • data-enrichment-integration:メモリ用の外部データ
  • conversational-flow-management:会話におけるコンテキスト

コメント