frustration-detection について
言語や会話構造、感情のシグナルからユーザーの不満を検知し、応答の調整やエスカレーションにつなげる設計スキルです。単一の兆候ではなく、複数ターンの累積判断を重視し、適用しない状況も示します。
主な機能
- 01言語・構造・感情のシグナル
- 02複数ターンでの累積スコア
- 03口調変更とエスカレーションのルール
- 04アンチパターンと対象外の状況
- 05スコアカードとテストシナリオ
活用シーン
- 01サポートチャットで不満の高まりに応じて応答を調整
- 02修正を繰り返しても解決しない場合にエスカレーション
- 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の研究)をもとにしています。
コメント
Markdown 対応