liurenchaxin/agents/setup_agents.sh

167 lines
3.7 KiB
Bash
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
# Agent协作系统设置脚本
# 为一人公司创建多agent git协作环境
set -e
echo "🚀 设置AI Agent协作系统..."
# 创建必要的目录
mkdir -p agents/keys
mkdir -p agents/logs
# 设置权限
chmod 700 agents/keys
# 检查依赖
check_dependency() {
if ! command -v $1 &> /dev/null; then
echo "❌ 需要安装: $1"
exit 1
fi
}
check_dependency "git"
check_dependency "ssh-keygen"
echo "✅ 依赖检查通过"
# 初始化agent身份管理器
echo "🤖 初始化agent身份..."
python3 agents/agent_identity_manager.py
# 创建git hooks模板
cat > agents/pre-commit-hook << 'EOF'
#!/bin/bash
# Agent提交前的钩子
echo "🔍 检查agent身份..."
AGENT_NAME=$(git config user.name)
if [[ -z "$AGENT_NAME" ]]; then
echo "❌ 未设置agent身份请先使用agent协作系统"
exit 1
fi
echo "✅ 当前agent: $AGENT_NAME"
EOF
chmod +x agents/pre-commit-hook
# 创建快速切换脚本
cat > agents/switch_agent.sh << 'EOF'
#!/bin/bash
# 快速切换agent身份
if [[ $# -eq 0 ]]; then
echo "用法: ./switch_agent.sh <agent名称>"
echo "可用agents:"
python3 -c "
import sys
sys.path.append('agents')
from agent_identity_manager import AgentIdentityManager
manager = AgentIdentityManager()
for agent in manager.list_agents():
print(f' - {agent[\"name\"]} ({agent[\"role\"]})')
"
exit 1
fi
AGENT_NAME=$1
echo "🔄 切换到agent: $AGENT_NAME"
python3 -c "
import sys
sys.path.append('agents')
from agent_identity_manager import AgentIdentityManager
manager = AgentIdentityManager()
try:
manager.switch_to_agent('$AGENT_NAME')
print('✅ 切换成功')
except Exception as e:
print(f'❌ 切换失败: {e}')
exit(1)
"
EOF
chmod +x agents/switch_agent.sh
# 创建agent提交脚本
cat > agents/commit_as_agent.sh << 'EOF'
#!/bin/bash
# 以指定agent身份提交
if [[ $# -lt 2 ]]; then
echo "用法: ./commit_as_agent.sh <agent名称> \"提交信息\" [文件...]"
exit 1
fi
AGENT_NAME=$1
MESSAGE=$2
shift 2
FILES=$@
echo "📝 Agent $AGENT_NAME 正在提交..."
python3 -c "
import sys
sys.path.append('agents')
from agent_identity_manager import AgentIdentityManager
manager = AgentIdentityManager()
try:
manager.commit_as_agent('$AGENT_NAME', '$MESSAGE', '$FILES'.split() if '$FILES' else None)
print('✅ 提交成功')
except Exception as e:
print(f'❌ 提交失败: {e}')
exit(1)
"
EOF
chmod +x agents/commit_as_agent.sh
# 创建统计脚本
cat > agents/stats.sh << 'EOF'
#!/bin/bash
# 查看agent统计信息
echo "📊 Agent协作统计"
echo "=================="
python3 -c "
import sys
sys.path.append('agents')
from agent_identity_manager import AgentIdentityManager
manager = AgentIdentityManager()
for agent in manager.list_agents():
name = agent['name']
stats = manager.get_agent_stats(name)
print(f'👤 {name} ({agent["role"]})')
print(f' 📧 {agent["email"]}')
print(f' 📈 提交数: {stats["total_commits"]}')
if stats["commits"]:
print(f' 📝 最近提交: {stats["commits"][0]}')
print()
"
EOF
chmod +x agents/stats.sh
echo "🎉 设置完成!"
echo ""
echo "📋 使用说明:"
echo "1. 查看agent列表: ./agents/stats.sh"
echo "2. 切换agent: ./agents/switch_agent.sh <agent名称>"
echo "3. agent提交: ./agents/commit_as_agent.sh <agent名称> \"消息\""
echo "4. 查看统计: ./agents/stats.sh"
echo ""
echo "🔑 SSH公钥位置:"
for key in agents/keys/*_rsa.pub; do
if [[ -f "$key" ]]; then
agent_name=$(basename "$key" _rsa.pub)
echo " $agent_name: $key"
fi
done
echo ""
echo "💡 下一步:"
echo "1. 将SSH公钥添加到GitHub/Gitea/Bitbucket"
echo "2. 测试agent切换和提交功能"
echo "3. 开始真正的多agent协作开发"