- 从服务器拉取完整代码 - 按框架规范整理项目结构 - 配置 Drone CI 测试环境部署 - 包含后端(FastAPI)、前端(Vue3)、管理端 技术栈: Vue3 + TypeScript + FastAPI + MySQL
155 lines
3.9 KiB
Bash
Executable File
155 lines
3.9 KiB
Bash
Executable File
#!/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
|