Files
claude/scripts/ai-integration.sh
2025-07-05 13:48:50 +09:00

184 lines
5.5 KiB
Bash
Executable File
Raw Permalink 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
# AI統合ヘルパースクリプト
# カラー定義
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
NC='\033[0m'
# 設定
CLAUDE_LOG_DIR="$HOME/claude-logs"
CHATGPT_LOG_DIR="$HOME/chatgpt-logs"
AI_CONTEXT_DIR="$HOME/.ai-context"
# ディレクトリ作成
mkdir -p "$CLAUDE_LOG_DIR" "$CHATGPT_LOG_DIR" "$AI_CONTEXT_DIR"
# ChatGPTの会話をClaude Codeにインポート
import_chatgpt_conversation() {
local chatgpt_file="$1"
local context_name="${2:-imported-context}"
if [[ ! -f "$chatgpt_file" ]]; then
echo -e "${YELLOW}ファイルが見つかりません: $chatgpt_file${NC}"
return 1
fi
# コンテキストファイルを作成
cat > "$AI_CONTEXT_DIR/$context_name.md" << EOF
# インポートされたChatGPT会話
インポート日時: $(date)
ソースファイル: $chatgpt_file
## 会話内容
$(cat "$chatgpt_file")
## Claude Codeへの指示
この会話の内容を踏まえて、以下の点に注意して作業を進めてください:
1. ChatGPTで議論された設計方針を尊重する
2. 未解決の課題があれば解決する
3. 実装の詳細を具体化する
EOF
echo -e "${GREEN}✓ ChatGPT会話をインポートしました: $AI_CONTEXT_DIR/$context_name.md${NC}"
# Claude Codeを起動
claude "以下のChatGPTとの会話を確認して、実装を進めてください: @$AI_CONTEXT_DIR/$context_name.md"
}
# 複数AIで同じタスクを実行して比較
multi_ai_task() {
local task="$1"
local output_dir="$AI_CONTEXT_DIR/comparisons/$(date +%Y%m%d-%H%M%S)"
mkdir -p "$output_dir"
echo -e "${BLUE}複数AIでタスクを実行中...${NC}"
# Claude Code
echo -e "${GREEN}Claude Code:${NC}"
claude "$task" > "$output_dir/claude_response.md" 2>&1
# 他のAIollama
if command -v ollama &> /dev/null; then
echo -e "${GREEN}Ollama (llama2):${NC}"
echo "$task" | ollama run llama2 > "$output_dir/ollama_response.md" 2>&1
fi
# 結果を統合
cat > "$output_dir/comparison.md" << EOF
# AI比較結果
タスク: $task
実行日時: $(date)
## Claude Code
\`\`\`
$(cat "$output_dir/claude_response.md")
\`\`\`
## その他のAI
$(ls "$output_dir"/*.md | grep -v comparison.md | while read f; do
echo "### $(basename "$f" .md)"
echo '```'
cat "$f"
echo '```'
done)
## 分析
各AIの回答を比較して、最適なアプローチを選択してください。
EOF
echo -e "${GREEN}✓ 比較結果: $output_dir/comparison.md${NC}"
}
# AIコンテキストチェーン前のAIの出力を次のAIの入力に
ai_chain() {
local initial_prompt="$1"
local chain_file="$AI_CONTEXT_DIR/chains/$(date +%Y%m%d-%H%M%S).md"
mkdir -p "$(dirname "$chain_file")"
echo "# AIチェーン実行" > "$chain_file"
echo "開始時刻: $(date)" >> "$chain_file"
echo "初期プロンプト: $initial_prompt" >> "$chain_file"
echo "" >> "$chain_file"
# Step 1: 設計仮想的なChatGPT応答
echo "## Step 1: 設計フェーズ" >> "$chain_file"
echo "ChatGPTに設計を依頼..." >> "$chain_file"
# ここでChatGPT APIを呼ぶか、手動で設計を入力
# Step 2: 実装Claude Code
echo -e "${BLUE}Claude Codeで実装中...${NC}"
echo "## Step 2: 実装フェーズ (Claude Code)" >> "$chain_file"
claude "$initial_prompt を実装してください。前段の設計を参考に。" | tee -a "$chain_file"
echo -e "${GREEN}✓ AIチェーン完了: $chain_file${NC}"
}
# tmuxセッション管理
setup_ai_tmux() {
local session_name="ai-workspace"
# 既存のセッションをチェック
if tmux has-session -t "$session_name" 2>/dev/null; then
echo -e "${YELLOW}既存のセッションにアタッチします${NC}"
tmux attach -t "$session_name"
return
fi
# 新しいセッションを作成
tmux new-session -d -s "$session_name" -n "claude" "claude --resume"
tmux new-window -t "$session_name" -n "editor" "$EDITOR"
tmux new-window -t "$session_name" -n "terminal"
tmux new-window -t "$session_name" -n "logs" "tail -f $CLAUDE_LOG_DIR/*.log"
# レイアウト設定
tmux select-window -t "$session_name:claude"
tmux split-window -h -p 30 "watch -n 1 'ls -la $CLAUDE_LOG_DIR | tail -10'"
echo -e "${GREEN}✓ tmuxセッション '$session_name' を作成しました${NC}"
tmux attach -t "$session_name"
}
# ヘルプメッセージ
show_help() {
cat << EOF
AI統合ヘルパー
使用方法:
$(basename "$0") import <chatgpt_file> [context_name] - ChatGPT会話をインポート
$(basename "$0") compare <task> - 複数AIでタスクを実行
$(basename "$0") chain <prompt> - AIチェーン実行
$(basename "$0") tmux - AI作業用tmuxセッション作成
$(basename "$0") help - このヘルプを表示
例:
$(basename "$0") import ~/chatgpt-logs/feature-design.md architecture
$(basename "$0") compare "FizzBuzz問題を解いて"
$(basename "$0") chain "RESTful APIを設計して実装"
$(basename "$0") tmux
EOF
}
# メイン処理
case "$1" in
import)
import_chatgpt_conversation "$2" "$3"
;;
compare)
multi_ai_task "$2"
;;
chain)
ai_chain "$2"
;;
tmux)
setup_ai_tmux
;;
help|--help|-h)
show_help
;;
*)
show_help
exit 1
;;
esac