167 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Bash
		
	
	
	
			
		
		
	
	
			167 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Bash
		
	
	
	
| #!/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协作开发!" |