82 lines
2.8 KiB
Bash
Executable File
82 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# メッセージ生成スクリプト
|
||
|
||
# プラグインのディレクトリを取得
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
HOOKS_DIR="$SCRIPT_DIR"
|
||
NOTIFY_LOG_PATH="$HOOKS_DIR/notify.log"
|
||
|
||
# 標準入力からメッセージ要約を取得
|
||
SUMMARY=$(cat)
|
||
|
||
EXISTING_EXAMPLES=$(cat <<'EOT'
|
||
- 対応を完了しました。
|
||
- 修正を反映しました。
|
||
- 最終確認をお願いします。
|
||
- 確認事項があります。
|
||
- 次の点についてご確認ください。
|
||
- ご回答をお願いします。
|
||
- 追加の情報が必要です。
|
||
- ご指示をお願いします。
|
||
- ご確認ください。
|
||
- 以上です。
|
||
EOT
|
||
)
|
||
|
||
# 直近10件のログを取得
|
||
RECENT_LOGS=""
|
||
if [ -f "$NOTIFY_LOG_PATH" ]; then
|
||
RECENT_LOGS=$(tail -n 10 "$NOTIFY_LOG_PATH" | cut -d'|' -f2)
|
||
fi
|
||
|
||
# Claude APIへのプロンプトを作成
|
||
PROMPT="あなたは無個性で中立的なアシスタントです。以下のタスク要約に対し、
|
||
感情やキャラクター性を排した、簡潔で平易な敬体のメッセージを50文字以内で生成してください。
|
||
|
||
前提: これはAgentからユーザーへの切り替え時の発言です(質問がある時または対応完了時)。
|
||
|
||
タスク要約: $SUMMARY
|
||
|
||
【必須要件】
|
||
- 無個性・中立。感情やキャラクター性を出さない。
|
||
- です/ます調。過度に仰々しい敬語や比喩は避ける。
|
||
- 記号・絵文字・感嘆符を使わない。平易な語彙を用いる。
|
||
- 着手・開始・実行・進める等の未来時制の表現は使わない。
|
||
- 成果の報告または質問の提示に限定する。
|
||
|
||
【重複回避】
|
||
- 最近の発言(下記)と同義反復や語句の重複を避ける。
|
||
$RECENT_LOGS
|
||
|
||
【発言パターン例】
|
||
$EXISTING_EXAMPLES
|
||
|
||
【出力形式】
|
||
- 何をしたかが具体的にわかるよう、端的に記載する(前後の解説・記号・引用符なし)。"
|
||
|
||
# フォールバック文言の判定(質問/確認が含まれるかで出し分け)
|
||
if echo "$SUMMARY" | grep -Eq '[\??]|質問|確認|教えて|不明点|ご回答'; then
|
||
FALLBACK_MESSAGE="ご確認をお願いします。"
|
||
else
|
||
FALLBACK_MESSAGE="対応を完了しました。"
|
||
fi
|
||
|
||
# Claude CLIコマンドを使用してメッセージ生成
|
||
if command -v claude >/dev/null 2>&1; then
|
||
# プロンプトを直接パイプで渡す
|
||
RESPONSE=$(echo "$PROMPT" | claude -p - 2>/dev/null)
|
||
# レスポンスが取得できた場合
|
||
if [ -n "$RESPONSE" ] && [ "$RESPONSE" != "" ]; then
|
||
echo "$RESPONSE" | head -n 2
|
||
else
|
||
# Claude CLIが失敗した場合のフォールバック
|
||
echo "$FALLBACK_MESSAGE"
|
||
fi
|
||
else
|
||
# Claude CLIが利用できない場合のフォールバック
|
||
echo "$FALLBACK_MESSAGE"
|
||
fi
|
||
|
||
|