Files
hakorune/tools/codex-tmux-driver/manage-instances.sh
Moe Charm 4e1b595796 AI協調開発研究ドキュメントの完成と Phase 10.9-β 進捗
【AI協調開発研究】
- AI二重化モデルの学術論文draft完成(workshop_paper_draft.md)
- 「隠れた危機」分析とbirthの原則哲学化
- TyEnv「唯一の真実」協調会話を保存・研究資料に統合
- papers管理構造の整備(wip/under-review/published分離)

【Phase 10.9-β HostCall進捗】
- JitConfigBox: relax_numeric フラグ追加(i64→f64コアーション制御)
- HostcallRegistryBox: 署名検証・白黒リスト・コアーション対応
- JitHostcallRegistryBox: Nyash側レジストリ操作API
- Lower統合: env直読 → jit::config::current() 参照に統一
- 数値緩和設定: NYASH_JIT_HOSTCALL_RELAX_NUMERIC/Config.set_flag

【検証サンプル拡充】
- math.sin/cos/abs/min/max 関数スタイル(examples/jit_math_function_style_*.nyash)
- 境界ケース: 署名不一致・コアーション許可・mutating拒否サンプル
- E2E実証: String.length→allow, Array.push→fallback, math関数の署名一致観測

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 12:09:09 +09:00

129 lines
3.2 KiB
Bash

#!/bin/bash
# 複数Codexインスタンスの一括管理
# 使い方: ./manage-instances.sh start
# ./manage-instances.sh status
# ./manage-instances.sh stop
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
PIDFILE="/tmp/codex-instances.pid"
# インスタンス定義
declare -A INSTANCES=(
["A"]="8769"
["B"]="8770"
["C"]="8771"
)
function start_instances() {
echo "🚀 Starting all Codex instances..."
for name in "${!INSTANCES[@]}"; do
port="${INSTANCES[$name]}"
echo ""
echo "Starting instance $name on port $port..."
# hook-server起動
HOOK_SERVER_PORT=$port HOOK_SERVER_AUTO_EXIT=true \
nohup node "$SCRIPT_DIR/hook-server.js" \
> "/tmp/hook-$name.log" 2>&1 &
pid=$!
echo "$name:$port:$pid" >> "$PIDFILE"
echo " Hook server PID: $pid"
# 環境変数の出力
echo " For instance $name, use:"
echo " export CODEX_HOOK_SERVER=ws://localhost:$port"
echo " export CODEX_LOG_FILE=/tmp/codex-$name.log"
echo " codex exec"
done
echo ""
echo "✅ All instances started!"
}
function status_instances() {
echo "📊 Codex instances status:"
echo ""
if [ ! -f "$PIDFILE" ]; then
echo "No instances found."
return
fi
while IFS=: read -r name port pid; do
if kill -0 "$pid" 2>/dev/null; then
echo "✅ Instance $name (port $port): Running [PID: $pid]"
# 接続数の確認
connections=$(lsof -i :$port 2>/dev/null | grep ESTABLISHED | wc -l)
echo " Connections: $connections"
else
echo "❌ Instance $name (port $port): Stopped"
fi
done < "$PIDFILE"
}
function stop_instances() {
echo "🛑 Stopping all Codex instances..."
if [ ! -f "$PIDFILE" ]; then
echo "No instances to stop."
return
fi
while IFS=: read -r name port pid; do
if kill -0 "$pid" 2>/dev/null; then
echo "Stopping instance $name [PID: $pid]..."
kill "$pid"
fi
done < "$PIDFILE"
rm -f "$PIDFILE"
echo "✅ All instances stopped!"
}
function logs_instances() {
echo "📜 Showing recent logs..."
echo ""
for name in "${!INSTANCES[@]}"; do
echo "=== Instance $name ==="
echo "Hook log (/tmp/hook-$name.log):"
tail -5 "/tmp/hook-$name.log" 2>/dev/null || echo " (no log)"
echo ""
echo "Codex log (/tmp/codex-$name.log):"
tail -5 "/tmp/codex-$name.log" 2>/dev/null || echo " (no log)"
echo ""
done
}
# コマンド処理
case "$1" in
start)
start_instances
;;
stop)
stop_instances
;;
status)
status_instances
;;
logs)
logs_instances
;;
restart)
stop_instances
sleep 2
start_instances
;;
*)
echo "Usage: $0 {start|stop|status|logs|restart}"
echo ""
echo "Configured instances:"
for name in "${!INSTANCES[@]}"; do
echo " $name: port ${INSTANCES[$name]}"
done
exit 1
;;
esac