Initial commit

This commit is contained in:
Zhongwei Li
2025-11-29 18:00:39 +08:00
commit 8457d2c114
12 changed files with 736 additions and 0 deletions

81
hooks/generate_message.sh Executable file
View File

@@ -0,0 +1,81 @@
#!/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