Files
gh-baton8-takushinotifier/hooks/generate_message.sh
2025-11-29 18:00:39 +08:00

82 lines
2.8 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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