mcpField
F
frustration-detection

frustration-detection

github.com/owl-listenerデザイン・UI191296 回インストール20 週間前に更新
リポジトリ

frustration-detection について

言語や会話構造、感情のシグナルからユーザーの不満を検知し、応答の調整やエスカレーションにつなげる設計スキルです。単一の兆候ではなく、複数ターンの累積判断を重視し、適用しない状況も示します。

主な機能

  1. 01言語・構造・感情のシグナル
  2. 02複数ターンでの累積スコア
  3. 03口調変更とエスカレーションのルール
  4. 04アンチパターンと対象外の状況
  5. 05スコアカードとテストシナリオ

活用シーン

  1. 01サポートチャットで不満の高まりに応じて応答を調整
  2. 02修正を繰り返しても解決しない場合にエスカレーション
  3. 03長い応答後の離脱兆候を特定

インストール

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

$npx skills add https://github.com/owl-listener/ai-design-skills --skill frustration-detection

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

詳細

苛立ちの検知

ほとんどの AI 製品は、すべてのユーザーメッセージを同じ感情的な重みで扱います。しかし、実際はそうではありません。「サブスクリプションを解約してください。」と「お願いだからサブスクリプションを解約してください!!!」には、それぞれ異なる対応が必要です。苛立ちの検知は、システムのほかの部分が対応を調整できるよう、その兆候を捉える認識スキルです。

これは、トーンの調整、エスカレーションの設計、適切なリカバリーを支える、名前の付いていないスキルです。このスキルがなければ、ほかのスキルは適切なタイミングで機能できません。

シグナル

言語的な特徴

  • 大文字表記の変化:すべて大文字、突然の「PLEASE」「URGENT」
  • 句読点の密度:?!?!、....、!!の連続
  • 緩和表現の消失:簡潔で要求形の表現(「とにかく直して」「やめて」)
  • 繰り返し:同じ概念を複数のターンにわたって言い直す
  • 軽度または強い罵り言葉

構造的な特徴

  • ターン間の応答時間が短くなる(矢継ぎ早の返信)
  • ターン間の応答時間がしきい値を超えて長くなる(離脱)
  • 返答の後に同じ質問を再びする
  • 人間への引き継ぎを明示的に求める(「人と話したい」)
  • 突然話題を変える

語彙/感情

  • 否定的な感情を表す言葉(「役に立たない」「うっとうしい」「壊れている」)
  • 時間的な切迫感を表す言葉(「今すぐ」「ただちに」「締め切り」)
  • 疑念を表す言葉(「本当に?」「確かなの?」「それで合ってる?」)
  • 対話を打ち切る言葉(「もういい」「忘れて」「どうでもいい」「わかった」)

検知は単一の特徴ではなく、複数のシグナルとターンにわたる累積を基に行う必要があります。

判断ルール

  • シグナルが1つならノイズ、2つならパターンです。 大文字表記だけで行動を起こさず、大文字表記に繰り返しが加わった場合に対応します。
  • 苛立ちが高まり、かつ AI がすでに一度修正を試みているなら、エスカレーションします。 3度目の言い換えには頼らないでください。
  • 苛立ちを伴わない緊急性は、苛立ちとは異なります。 対応を速め、トーンは変えないでください。
  • 長い AI の返答の後に応答時間が長くなった場合、熟読ではなく離脱です。 状態を保存し、再開を促し、先へ進めないでください。
  • さりげなく対応を調整します。感情を言葉にしないでください。 「苛立っているようですね」は恩着せがましく聞こえます。確信度を下げ、ペースを落とし、親しみやすさを高めます。ただし、それはメタコメントではなく、文章そのものに反映してください。

アンチパターン

  • 演技のような感情の反映:「お聞きして本当に申し訳ありません!」は、大規模に使うと台本どおりに見えます。
  • ユーザーに自分の状態を確認させる:「苛立っていますか?」ユーザーは分析されるためではなく、助けを得るために来ています。
  • 一度きりの検知:単一のシグナルで、共感表現を全面的に繰り出す。検知は累積的である必要があります。
  • 行動を伴わない検知:シグナルを読み取っても同じ対応を続けるのでは、検知が単なる見せかけになります。
  • 過剰な共感:一文の共感と修正で済むところに、2段落の共感を重ねる。苛立っているユーザーには、親しみを受け止める余裕がありません。

このスキルを使わない場合

  • トランザクション型 UI(検索ボックス、コード補完)— 読み取るべき会話の流れがありません。代わりにfeedback-loopsを使ってください。
  • 初回ターンのコールドスタート — 検知は比較に基づくため、基準となる状態が必要です。初回ターンのシグナルは診断ではなく、特徴の記述として扱ってください。
  • 明示的なフィードバックコントロールがある製品(低評価ボタン、「役に立っていません」)— ユーザー自身がコントロールを使えるため、推定機能を付け足さないでください。

関連項目

  • tone-calibration — シグナルを検知した後に行うこと:確信度を下げ、ペースを落とし、親しみやすさを高めます。
  • escalation-design — 苛立ちは、文書化されたエスカレーションのトリガーの1つです。このスキルは、そのトリガーを検知する方法です。
  • feedback-loops — 出力品質に関する周囲のシグナルを扱う関連スキルです。こちらはユーザーの状態に関する周囲のシグナルを扱います。
  • harm-anticipation — 苛立ちが苦痛(危機の兆候、脆弱性)に近づいた場合は、より慎重に対応するため、ハーム・アンティシペーションを通じてルーティングします。

設計成果物

セッションごとに累積して採点するフラストレーションスコアカード:

シグナル重み
すべて大文字のメッセージ+2
罵り言葉+3
同じ質問の繰り返し(3回目以降)+2
!! または ?? の句読点+1
明示的な引き継ぎの依頼+5
対話を諦める言葉(「もういい」)+3
長い応答待ち時間(AI の応答後3分超)+2

エスカレーションのしきい値:5。口調を変えるしきい値:2。

具体例:

  • ターン1:「やあ、注文のキャンセルを手伝ってくれる?」 → 0
  • ターン2:「キャンセルボタンが機能しない」 → 0(問題の説明であり、フラストレーションではありません)
  • ターン3:「3回も試したのにお願いだから」 → +4(大文字、繰り返し、「お願い」) → スコア4 → 口調を変更
  • ターン4:「これは使い物にならない」 → +2(大文字) +3(否定的な感情) → スコア9 → エスカレーション

その他の成果物:

  • 製品ごとのベースライン:直近1000セッションの平均フラストレーションスコア。2σの偏差があればアラートを出します
  • 製品ごとに調整した応答待ち時間のしきい値(チャットサポート:対応中は30秒/離脱中は2分)
  • テストシナリオ:順調なケース、徐々に上昇するケース、急激な上昇、何も言わずに離脱するケース、回復(修正後にセッション中のスコアが下がる)

対話システムにおける感情コンピューティングの研究(Picard、感情的な対話エージェントに関するBickmoreの研究)をもとにしています。

コメント