-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrun_reflective.sh
More file actions
120 lines (101 loc) · 2.72 KB
/
Copy pathrun_reflective.sh
File metadata and controls
120 lines (101 loc) · 2.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/bin/bash
# 反思型自主代理系统启动脚本
WORK_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$WORK_DIR"
echo "================================"
echo "反思型自主代理系统"
echo "================================"
echo ""
echo "工作目录: $WORK_DIR"
echo ""
# 创建必要的目录
mkdir -p my_space
# PID 文件
AGENT_PID_FILE="$WORK_DIR/.agent.pid"
OBSERVER_PID_FILE="$WORK_DIR/.observer.pid"
# 停止已运行的进程
stop() {
if [ -f "$AGENT_PID_FILE" ]; then
AGENT_PID=$(cat "$AGENT_PID_FILE")
if ps -p "$AGENT_PID" > /dev/null 2>&1; then
echo "停止代理进程 (PID: $AGENT_PID)..."
kill "$AGENT_PID"
fi
rm -f "$AGENT_PID_FILE"
fi
if [ -f "$OBSERVER_PID_FILE" ]; then
OBSERVER_PID=$(cat "$OBSERVER_PID_FILE")
if ps -p "$OBSERVER_PID" > /dev/null 2>&1; then
echo "停止观察者进程 (PID: $OBSERVER_PID)..."
kill "$OBSERVER_PID"
fi
rm -f "$OBSERVER_PID_FILE"
fi
echo "所有进程已停止"
}
# 捕获退出信号
trap stop EXIT INT TERM
# 检查参数
MODE=${1:-"run"}
if [ "$MODE" = "stop" ]; then
stop
trap - EXIT INT TERM
exit 0
fi
if [ "$MODE" = "watch" ]; then
echo "仅启动观察者..."
python3 observer.py
exit 0
fi
if [ "$MODE" = "replay" ]; then
echo "回放日记..."
python3 observer.py --replay --limit "${2:-50}"
exit 0
fi
# 检查是否已经在运行
if [ -f "$AGENT_PID_FILE" ] || [ -f "$OBSERVER_PID_FILE" ]; then
echo "⚠️ 系统已在运行"
echo ""
echo "使用 '$0 stop' 停止"
echo "使用 '$0 watch' 仅启动观察者"
echo "使用 '$0 replay [数量]' 回放日记"
exit 1
fi
# 启动代理
echo "启动代理..."
python3 reflective_agent.py ${MAX_ITERATIONS:+"--max-iterations $MAX_ITERATIONS"} > my_space/agent.log 2>&1 &
AGENT_PID=$!
echo "$AGENT_PID" > "$AGENT_PID_FILE"
echo "代理 PID: $AGENT_PID"
# 等待一下确保代理启动
sleep 1
# 检查代理是否运行
if ! ps -p "$AGENT_PID" > /dev/null 2>&1; then
echo "❌ 代理启动失败"
rm -f "$AGENT_PID_FILE"
cat my_space/agent.log
exit 1
fi
# 启动观察者
echo "启动观察者..."
python3 observer.py &
OBSERVER_PID=$!
echo "$OBSERVER_PID" > "$OBSERVER_PID_FILE"
echo "观察者 PID: $OBSERVER_PID"
echo ""
echo "✅ 系统启动成功"
echo ""
echo "数据文件(位于 my_space/):"
echo " - 代理日志: agent.log"
echo " - 日记文件: diary.jsonl"
echo " - 状态文件: state.json"
echo ""
echo "控制命令:"
echo " - 停止系统: $0 stop"
echo " - 仅查看日记: $0 replay"
echo " - 仅启动观察者: $0 watch"
echo ""
echo "按 Ctrl+C 停止"
echo ""
# 等待任意一个进程结束
wait