#!/bin/bash # Agent打包脚本 - 用于快速打包某个Agent的所有文件 # 颜色定义 GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' # No Color # 显示使用说明 show_usage() { echo "使用方法: ./package_agent.sh [Agent编号或名称]" echo "" echo "示例:" echo " ./package_agent.sh 01" echo " ./package_agent.sh Auth" echo " ./package_agent.sh 01-Agent-Auth" echo "" echo "可用的Agent:" ls -d [0-9][0-9]-Agent-* 2>/dev/null | sed 's/^/ /' } # 检查参数 if [ -z "$1" ]; then show_usage exit 1 fi # 查找Agent目录 AGENT_DIR="" SEARCH_TERM=$1 # 尝试不同的匹配方式 if [ -d "$SEARCH_TERM" ]; then AGENT_DIR="$SEARCH_TERM" elif [ -d "[0-9][0-9]-Agent-$SEARCH_TERM" ]; then AGENT_DIR=$(ls -d [0-9][0-9]-Agent-$SEARCH_TERM 2>/dev/null | head -1) elif [ -d "$SEARCH_TERM-Agent-"* ]; then AGENT_DIR=$(ls -d $SEARCH_TERM-Agent-* 2>/dev/null | head -1) else # 模糊匹配 AGENT_DIR=$(ls -d *-Agent-*$SEARCH_TERM* 2>/dev/null | head -1) fi # 检查是否找到目录 if [ -z "$AGENT_DIR" ] || [ ! -d "$AGENT_DIR" ]; then echo -e "${RED}错误: 找不到Agent目录 '$SEARCH_TERM'${NC}" echo "" show_usage exit 1 fi echo -e "${GREEN}找到Agent目录: $AGENT_DIR${NC}" # 创建输出目录 OUTPUT_DIR="packaged" mkdir -p "$OUTPUT_DIR" # 生成输出文件名 TIMESTAMP=$(date +%Y%m%d_%H%M%S) OUTPUT_FILE="$OUTPUT_DIR/${AGENT_DIR}_${TIMESTAMP}.tar.gz" # 创建临时目录 TEMP_DIR=$(mktemp -d) PACKAGE_DIR="$TEMP_DIR/$AGENT_DIR" mkdir -p "$PACKAGE_DIR" # 复制Agent文件 echo "正在打包Agent文件..." cp -r "$AGENT_DIR"/* "$PACKAGE_DIR/" 2>/dev/null # 复制通用基础文件 echo "添加通用基础文件..." mkdir -p "$PACKAGE_DIR/00-通用基础" cp -r "00-通用基础"/* "$PACKAGE_DIR/00-通用基础/" 2>/dev/null # 添加项目脚手架的关键文件引用 echo "添加项目基础代码引用..." mkdir -p "$PACKAGE_DIR/_project_base" cat > "$PACKAGE_DIR/_project_base/README.md" << EOF # 项目基础代码引用 这些是项目脚手架中的关键文件,Agent开发时需要参考: ## 基础模型 - app/models/base.py - BaseModel, SoftDeleteMixin, AuditMixin - app/schemas/base.py - BaseSchema, ResponseModel, PageModel ## 核心功能 - app/core/exceptions.py - 统一异常处理 - app/core/logger.py - 日志配置 - app/core/middleware.py - 中间件定义 - app/config/settings.py - 系统配置 ## 开发规范 请查看 00-通用基础/base_prompt.md 了解详细的开发规范。 EOF # 添加快速启动脚本 cat > "$PACKAGE_DIR/START_HERE.md" << EOF # $AGENT_DIR 快速启动指南 ## 1. 了解你的角色 请先阅读 \`prompt.md\` 了解你的职责和任务。 ## 2. 理解项目上下文 查看 \`context.md\` 了解项目结构和依赖关系。 ## 3. 查看API规范 如果有 \`api_contract.yaml\`,请仔细阅读API接口定义。 ## 4. 参考示例代码 查看 \`examples/\` 目录中的示例代码。 ## 5. 遵循开发规范 务必遵循 \`00-通用基础/base_prompt.md\` 中的规范。 ## 6. 使用检查清单 按照 \`checklist.md\` 进行开发和自检。 ## 开始开发 \`\`\` 我是$AGENT_DIR,准备开始开发工作。 我已经阅读了所有相关文档,理解了我的职责。 请确认项目根目录路径,我将开始创建代码。 \`\`\` EOF # 创建压缩包 cd "$TEMP_DIR" tar -czf "$OUTPUT_FILE" "$AGENT_DIR" cd - > /dev/null # 清理临时文件 rm -rf "$TEMP_DIR" # 显示结果 echo -e "${GREEN}✅ 打包完成!${NC}" echo -e "输出文件: ${YELLOW}$OUTPUT_FILE${NC}" echo -e "文件大小: $(du -h "$OUTPUT_FILE" | cut -f1)" echo "" echo "你可以:" echo "1. 将此文件上传到Cursor云端" echo "2. 解压后在本地Cursor中使用" echo "3. 分享给其他开发者" # 显示包含的文件 echo "" echo "包含的文件:" tar -tzf "$OUTPUT_FILE" | head -20 if [ $(tar -tzf "$OUTPUT_FILE" | wc -l) -gt 20 ]; then echo "... 以及更多文件" fi