- 添加 Harbor 快速恢复脚本 (harbor-quick-restore.sh) - 添加完整恢复指南 (HARBOR-RESTORE-GUIDE.md) - 添加版本信息文件 (VERSION.md) - 更新 .gitignore 排除敏感数据 - 配置 harbor git remote - 修复 Cloudflare Tunnel 配置 系统重装后可通过以下命令快速恢复: git clone http://192.168.1.83:33000/gao/ljwx-harbor.git cd ljwx-harbor ./harbor-quick-restore.sh
636 lines
18 KiB
Bash
Executable File
636 lines
18 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#==============================================================================
|
|
# AI Development Context Generator
|
|
# 为 AI 开发生成完整的系统配置上下文
|
|
#==============================================================================
|
|
|
|
set -euo pipefail
|
|
|
|
# 颜色定义
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# 配置
|
|
OUTPUT_FILE="${1:-/Users/brunogao/work/codes/tools/macos/AI-CONTEXT.md}"
|
|
TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S")
|
|
|
|
echo -e "${BLUE}🤖 正在生成 AI 开发上下文...${NC}"
|
|
|
|
#==============================================================================
|
|
# 辅助函数
|
|
#==============================================================================
|
|
|
|
print_section() {
|
|
echo -e "\n${GREEN}▶ $1${NC}"
|
|
}
|
|
|
|
check_command() {
|
|
command -v "$1" >/dev/null 2>&1
|
|
}
|
|
|
|
get_service_status() {
|
|
local service=$1
|
|
if docker ps --format '{{.Names}}' 2>/dev/null | grep -q "^${service}$"; then
|
|
echo "✅ Running"
|
|
else
|
|
echo "❌ Stopped"
|
|
fi
|
|
}
|
|
|
|
safe_exec() {
|
|
local output
|
|
output=$("$@" 2>/dev/null) || echo "N/A"
|
|
echo "$output"
|
|
}
|
|
|
|
#==============================================================================
|
|
# 开始生成文档
|
|
#==============================================================================
|
|
|
|
cat > "$OUTPUT_FILE" << 'HEADER'
|
|
# AI Development Context
|
|
|
|
> **自动生成时间**: TIMESTAMP_PLACEHOLDER
|
|
> **用途**: 为 AI 辅助开发提供完整的系统配置上下文
|
|
|
|
---
|
|
|
|
HEADER
|
|
|
|
# 替换时间戳
|
|
sed -i '' "s/TIMESTAMP_PLACEHOLDER/$TIMESTAMP/g" "$OUTPUT_FILE"
|
|
|
|
#==============================================================================
|
|
# 1. 系统基础信息
|
|
#==============================================================================
|
|
|
|
print_section "收集系统信息..."
|
|
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
## 🖥️ 系统基础信息
|
|
|
|
### 硬件配置
|
|
- **主机名**: $(hostname)
|
|
- **架构**: $(uname -m)
|
|
- **CPU**: $(sysctl -n machdep.cpu.brand_string)
|
|
- **CPU 核心数**: $(sysctl -n hw.ncpu) cores
|
|
- **内存**: $(echo "scale=2; $(sysctl -n hw.memsize) / 1024 / 1024 / 1024" | bc) GB
|
|
- **磁盘空间**: $(df -h / | awk 'NR==2 {print $2 " (可用: " $4 ")"}')
|
|
|
|
### 操作系统
|
|
- **系统版本**: $(sw_vers -productName) $(sw_vers -productVersion)
|
|
- **内核版本**: $(uname -r)
|
|
- **Shell**: $SHELL ($($SHELL --version | head -n1))
|
|
|
|
### 网络配置
|
|
- **主 IP**: $(ipconfig getifaddr en0 2>/dev/null || echo "未检测到")
|
|
- **公网 IP**: $(curl -s ifconfig.me 2>/dev/null || echo "无法获取")
|
|
- **DNS 服务器**: $(scutil --dns | grep 'nameserver\[0\]' | head -1 | awk '{print $3}')
|
|
|
|
---
|
|
|
|
EOF
|
|
|
|
#==============================================================================
|
|
# 2. 开发工具和环境
|
|
#==============================================================================
|
|
|
|
print_section "收集开发环境信息..."
|
|
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
## 🛠️ 开发工具和环境
|
|
|
|
### 包管理器
|
|
$(if check_command brew; then
|
|
echo "- **Homebrew**: $(brew --version | head -n1)"
|
|
echo " - 安装路径: $(brew --prefix)"
|
|
echo " - 已安装包数量: $(brew list --formula | wc -l | xargs) 个"
|
|
else
|
|
echo "- **Homebrew**: ❌ 未安装"
|
|
fi)
|
|
|
|
### 容器运行时
|
|
$(if check_command docker; then
|
|
echo "- **Docker**: $(docker --version)"
|
|
echo " - 运行中容器: $(docker ps -q | wc -l | xargs) 个"
|
|
echo " - 总容器数: $(docker ps -aq | wc -l | xargs) 个"
|
|
echo " - 镜像数: $(docker images -q | wc -l | xargs) 个"
|
|
else
|
|
echo "- **Docker**: ❌ 未安装"
|
|
fi)
|
|
|
|
$(if check_command orbctl; then
|
|
echo "- **OrbStack**: $(orbctl version 2>/dev/null | head -n1 || echo "已安装")"
|
|
else
|
|
echo "- **OrbStack**: ❌ 未安装"
|
|
fi)
|
|
|
|
### Kubernetes
|
|
$(if check_command kubectl; then
|
|
echo "- **kubectl**: $(kubectl version --client --short 2>/dev/null || kubectl version --client 2>&1 | head -n1)"
|
|
if kubectl cluster-info >/dev/null 2>&1; then
|
|
echo " - 集群状态: ✅ 连接正常"
|
|
echo " - 节点数: $(kubectl get nodes --no-headers 2>/dev/null | wc -l | xargs)"
|
|
echo " - 命名空间: $(kubectl get ns --no-headers 2>/dev/null | wc -l | xargs) 个"
|
|
echo " - Pod 总数: $(kubectl get pods -A --no-headers 2>/dev/null | wc -l | xargs)"
|
|
else
|
|
echo " - 集群状态: ❌ 未连接"
|
|
fi
|
|
else
|
|
echo "- **kubectl**: ❌ 未安装"
|
|
fi)
|
|
|
|
$(if check_command helm; then
|
|
echo "- **Helm**: $(helm version --short 2>/dev/null || echo "已安装")"
|
|
echo " - 已部署 Release: $(helm list -A 2>/dev/null | tail -n +2 | wc -l | xargs) 个"
|
|
else
|
|
echo "- **Helm**: ❌ 未安装"
|
|
fi)
|
|
|
|
### 编程语言
|
|
$(if check_command python3; then
|
|
echo "- **Python**: $(python3 --version)"
|
|
echo " - pip: $(pip3 --version | awk '{print $2}')"
|
|
else
|
|
echo "- **Python**: ❌ 未安装"
|
|
fi)
|
|
|
|
$(if check_command node; then
|
|
echo "- **Node.js**: $(node --version)"
|
|
echo " - npm: $(npm --version)"
|
|
else
|
|
echo "- **Node.js**: ❌ 未安装"
|
|
fi)
|
|
|
|
$(if check_command go; then
|
|
echo "- **Go**: $(go version | awk '{print $3}')"
|
|
else
|
|
echo "- **Go**: ❌ 未安装"
|
|
fi)
|
|
|
|
### AI 工具
|
|
$(if check_command ollama; then
|
|
echo "- **Ollama**: ✅ 已安装"
|
|
if pgrep -x ollama >/dev/null; then
|
|
echo " - 状态: 🟢 运行中"
|
|
echo " - 已安装模型:"
|
|
ollama list 2>/dev/null | tail -n +2 | while read -r line; do
|
|
model=$(echo "$line" | awk '{print $1}')
|
|
size=$(echo "$line" | awk '{print $2}')
|
|
echo " - $model ($size)"
|
|
done
|
|
else
|
|
echo " - 状态: 🔴 未运行"
|
|
fi
|
|
else
|
|
echo "- **Ollama**: ❌ 未安装"
|
|
fi)
|
|
|
|
$(if check_command claude-qwen; then
|
|
echo "- **Claude-Qwen**: ✅ 已安装"
|
|
else
|
|
echo "- **Claude-Qwen**: ❌ 未安装"
|
|
fi)
|
|
|
|
---
|
|
|
|
EOF
|
|
|
|
#==============================================================================
|
|
# 3. DevOps 服务配置
|
|
#==============================================================================
|
|
|
|
print_section "收集 DevOps 服务配置..."
|
|
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
## 🚀 DevOps 服务配置
|
|
|
|
### Gitea (Git 托管 + CI/CD)
|
|
- **状态**: $(get_service_status "gitea")
|
|
- **HTTP 端口**: 33000
|
|
- **SSH 端口**: 32222
|
|
- **访问地址**: http://$(ipconfig getifaddr en0 2>/dev/null || echo "192.168.1.83"):33000
|
|
- **数据目录**: ~/ops/data/gitea
|
|
- **备份目录**: ~/ops/backups/gitea
|
|
$(if [ -d ~/ops/data/gitea ]; then
|
|
echo "- **数据占用**: $(du -sh ~/ops/data/gitea 2>/dev/null | awk '{print $1}')"
|
|
fi)
|
|
- **管理命令**:
|
|
\`\`\`bash
|
|
cd ~/ops/gitea
|
|
./gitea-data-protection.sh start|stop|restart|health
|
|
./gitea-backup.sh # 手动备份
|
|
./gitea-restore.sh # 恢复备份
|
|
\`\`\`
|
|
|
|
### Harbor (容器镜像仓库)
|
|
- **状态**: $(get_service_status "harbor-core")
|
|
- **HTTP 端口**: 8080
|
|
- **HTTPS 端口**: 8443
|
|
- **访问地址**: http://$(ipconfig getifaddr en0 2>/dev/null || echo "192.168.1.83"):8080
|
|
- **数据目录**: ~/ops/data/harbor
|
|
- **备份目录**: ~/ops/backups/harbor
|
|
- **默认凭据**: admin / admin123
|
|
$(if [ -d ~/ops/data/harbor ]; then
|
|
echo "- **数据占用**: $(du -sh ~/ops/data/harbor 2>/dev/null | awk '{print $1}')"
|
|
fi)
|
|
- **管理命令**:
|
|
\`\`\`bash
|
|
cd ~/ops/harbor
|
|
./harbor-data-protection.sh start|stop|restart|health
|
|
./harbor-k8s-images.sh sync # 同步 K8s 镜像
|
|
./harbor-k8s-images.sh list # 列出镜像
|
|
\`\`\`
|
|
|
|
### GitLab (可选)
|
|
- **状态**: $(get_service_status "gitlab")
|
|
- **HTTP 端口**: 8890
|
|
- **SSH 端口**: 8929
|
|
- **访问地址**: http://$(ipconfig getifaddr en0 2>/dev/null || echo "192.168.1.83"):8890
|
|
- **数据目录**: ~/ops/data/gitlab
|
|
- **默认凭据**: root / admin123
|
|
- **管理命令**:
|
|
\`\`\`bash
|
|
cd ~/ops/gitlab
|
|
./gitlab-data-protection.sh start|stop|restart|health
|
|
\`\`\`
|
|
|
|
---
|
|
|
|
EOF
|
|
|
|
#==============================================================================
|
|
# 4. Kubernetes 集群状态
|
|
#==============================================================================
|
|
|
|
print_section "收集 Kubernetes 集群信息..."
|
|
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
## ☸️ Kubernetes 集群状态
|
|
|
|
EOF
|
|
|
|
if check_command kubectl && kubectl cluster-info >/dev/null 2>&1; then
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
### 集群信息
|
|
- **集群类型**: $(kubectl config current-context 2>/dev/null || echo "未知")
|
|
- **API Server**: $(kubectl cluster-info 2>/dev/null | head -n1 | grep -oE 'https?://[^ ]+' || echo "N/A")
|
|
|
|
### 节点状态
|
|
\`\`\`
|
|
$(kubectl get nodes 2>/dev/null || echo "无法获取节点信息")
|
|
\`\`\`
|
|
|
|
### 命名空间列表
|
|
\`\`\`
|
|
$(kubectl get namespaces 2>/dev/null | head -n 20 || echo "无法获取命名空间")
|
|
\`\`\`
|
|
|
|
### 关键工作负载
|
|
\`\`\`
|
|
$(kubectl get pods -A --field-selector=status.phase!=Running 2>/dev/null | head -n 20 || echo "所有 Pod 运行正常")
|
|
\`\`\`
|
|
|
|
### Helm Releases
|
|
\`\`\`
|
|
$(helm list -A 2>/dev/null || echo "无 Helm Release")
|
|
\`\`\`
|
|
|
|
EOF
|
|
else
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
⚠️ Kubernetes 集群未连接或未配置
|
|
|
|
EOF
|
|
fi
|
|
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
---
|
|
|
|
EOF
|
|
|
|
#==============================================================================
|
|
# 5. 项目结构和关键路径
|
|
#==============================================================================
|
|
|
|
print_section "生成项目结构..."
|
|
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
## 📁 项目结构和关键路径
|
|
|
|
### 核心目录
|
|
\`\`\`
|
|
~/ops/ # 运行时根目录
|
|
├── logs/ # 统一日志目录
|
|
├── backups/ # 备份存储
|
|
│ ├── gitea/ # Gitea 备份
|
|
│ ├── harbor/ # Harbor 备份
|
|
│ └── gitlab/ # GitLab 备份
|
|
├── data/ # 运行时数据
|
|
│ ├── gitea/ # Gitea 数据(仓库、数据库)
|
|
│ ├── harbor/ # Harbor 数据(镜像、数据库)
|
|
│ └── gitlab/ # GitLab 数据
|
|
├── gitea/ # Gitea 管理脚本
|
|
├── harbor/ # Harbor 管理脚本
|
|
└── gitlab/ # GitLab 管理脚本
|
|
\`\`\`
|
|
|
|
### 工具脚本位置
|
|
- **主部署脚本**: \`~/work/codes/tools/macos/deploy.sh\`
|
|
- **初始化脚本**: \`~/work/codes/tools/macos/init-ops.sh\`
|
|
- **Gitea 脚本**: \`~/ops/gitea/*.sh\`
|
|
- **Harbor 脚本**: \`~/ops/harbor/*.sh\`
|
|
- **K8s 工具**: \`~/work/codes/tools/macos/k8s/*.sh\`
|
|
- **镜像缓存**: \`~/work/codes/tools/macos/k8s/cache-image.sh\`
|
|
|
|
### 配置文件
|
|
- **Docker Compose**:
|
|
- Gitea: \`~/ops/gitea/docker-compose.yml\`
|
|
- Harbor: \`~/ops/harbor/docker-compose.yml\`
|
|
- GitLab: \`~/ops/gitlab/docker-compose.yml\`
|
|
- **Harbor 配置**: \`~/ops/harbor/harbor.yml\`
|
|
- **K8s 配置**: \`~/.kube/config\`
|
|
|
|
---
|
|
|
|
EOF
|
|
|
|
#==============================================================================
|
|
# 6. 常用工作流和最佳实践
|
|
#==============================================================================
|
|
|
|
print_section "生成工作流文档..."
|
|
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
## 🔄 常用工作流
|
|
|
|
### 1. AI 辅助开发流程
|
|
\`\`\`bash
|
|
# 1. 启动 AI 助手
|
|
claude-qwen project
|
|
|
|
# 2. 在项目目录中开发
|
|
cd ~/your-project
|
|
|
|
# 3. 提交代码到 Gitea
|
|
git remote add origin git@$(ipconfig getifaddr en0 2>/dev/null || echo "192.168.1.83"):32222/username/repo.git
|
|
git push -u origin master
|
|
|
|
# 4. Gitea Actions 自动触发 CI/CD
|
|
# 查看工作流状态: http://your-ip:33000/username/repo/actions
|
|
\`\`\`
|
|
|
|
### 2. 容器镜像管理
|
|
\`\`\`bash
|
|
# 拉取镜像并推送到 Harbor
|
|
docker pull nginx:alpine
|
|
docker tag nginx:alpine harbor.omniverseai.net:8080/library/nginx:alpine
|
|
docker push harbor.omniverseai.net:8080/library/nginx:alpine
|
|
|
|
# 或使用自动缓存脚本
|
|
cd ~/work/codes/tools/macos/k8s
|
|
./cache-image.sh nginx:alpine
|
|
\`\`\`
|
|
|
|
### 3. Kubernetes 部署
|
|
\`\`\`bash
|
|
# 修复 ImagePullBackOff(自动缓存镜像并更新部署)
|
|
cd ~/work/codes/tools/macos/k8s
|
|
./cache-image.sh --update-deployment namespace/deployment-name
|
|
|
|
# 手动部署应用
|
|
kubectl apply -f your-app.yaml
|
|
|
|
# 查看状态
|
|
kubectl get pods -A
|
|
kubectl describe pod <pod-name> -n <namespace>
|
|
\`\`\`
|
|
|
|
### 4. 备份和恢复
|
|
\`\`\`bash
|
|
# Gitea 备份
|
|
cd ~/ops/gitea && ./gitea-backup.sh
|
|
|
|
# Harbor 备份
|
|
cd ~/ops/harbor && ./harbor-data-protection.sh backup
|
|
|
|
# 查看备份
|
|
ls -lh ~/ops/backups/gitea/
|
|
ls -lh ~/ops/backups/harbor/
|
|
|
|
# 恢复(会自动创建安全备份)
|
|
cd ~/ops/gitea && ./gitea-restore.sh
|
|
cd ~/ops/harbor && ./harbor-data-protection.sh restore
|
|
\`\`\`
|
|
|
|
---
|
|
|
|
EOF
|
|
|
|
#==============================================================================
|
|
# 7. 环境变量和配置
|
|
#==============================================================================
|
|
|
|
print_section "收集环境配置..."
|
|
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
## ⚙️ 环境变量和配置
|
|
|
|
### 关键环境变量
|
|
\`\`\`bash
|
|
# 主机 IP(用于服务访问)
|
|
export HOST_IP=\$(ipconfig getifaddr en0)
|
|
|
|
# Harbor 配置
|
|
export HARBOR_HOST=harbor.omniverseai.net
|
|
export HARBOR_PORT=8080
|
|
export HARBOR_HTTPS_PORT=8443
|
|
export HARBOR_ADMIN_PASSWORD=admin123
|
|
|
|
# Gitea 配置
|
|
export GITEA_HTTP_PORT=33000
|
|
export GITEA_SSH_PORT=32222
|
|
|
|
# GitLab 配置(可选)
|
|
export GITLAB_HTTP_PORT=8890
|
|
export GITLAB_SSH_PORT=8929
|
|
|
|
# Ollama 配置
|
|
export OLLAMA_HOST=localhost:11434
|
|
\`\`\`
|
|
|
|
### Docker 网络
|
|
\`\`\`
|
|
$(docker network ls 2>/dev/null | grep -E "core-network|harbor|gitea" || echo "无相关网络")
|
|
\`\`\`
|
|
|
|
---
|
|
|
|
EOF
|
|
|
|
#==============================================================================
|
|
# 8. 快速参考
|
|
#==============================================================================
|
|
|
|
print_section "生成快速参考..."
|
|
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
## 📚 快速参考
|
|
|
|
### 服务访问地址
|
|
| 服务 | HTTP | SSH/HTTPS | 凭据 |
|
|
|------|------|-----------|------|
|
|
| Gitea | http://$(ipconfig getifaddr en0 2>/dev/null || echo "192.168.1.83"):33000 | :32222 | 自行注册 |
|
|
| Harbor | http://$(ipconfig getifaddr en0 2>/dev/null || echo "192.168.1.83"):8080 | :8443 | admin/admin123 |
|
|
| GitLab | http://$(ipconfig getifaddr en0 2>/dev/null || echo "192.168.1.83"):8890 | :8929 | root/admin123 |
|
|
| Ollama | http://localhost:11434 | - | - |
|
|
|
|
### 常用命令速查
|
|
| 任务 | 命令 |
|
|
|------|------|
|
|
| **查看所有服务** | \`docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"\` |
|
|
| **重启所有服务** | \`cd ~/ops && docker-compose restart\` |
|
|
| **查看日志** | \`docker logs -f <service-name>\` |
|
|
| **K8s 集群状态** | \`kubectl get pods -A\` |
|
|
| **修复镜像拉取** | \`cd ~/work/codes/tools/macos/k8s && ./cache-image.sh --update-deployment ns/deploy\` |
|
|
| **AI 开发助手** | \`claude-qwen project\` |
|
|
| **列出 Ollama 模型** | \`ollama list\` |
|
|
|
|
### 故障排查
|
|
1. **服务无法启动**
|
|
\`\`\`bash
|
|
docker ps -a # 查看所有容器
|
|
docker logs <container-name> # 查看日志
|
|
docker-compose down && docker-compose up -d # 重启服务
|
|
\`\`\`
|
|
|
|
2. **K8s Pod ImagePullBackOff**
|
|
\`\`\`bash
|
|
cd ~/work/codes/tools/macos/k8s
|
|
./cache-image.sh --update-deployment <namespace>/<deployment>
|
|
\`\`\`
|
|
|
|
3. **磁盘空间不足**
|
|
\`\`\`bash
|
|
docker system prune -a # 清理未使用的镜像和容器
|
|
docker volume prune # 清理未使用的卷
|
|
\`\`\`
|
|
|
|
4. **网络问题**
|
|
\`\`\`bash
|
|
docker network ls # 查看网络
|
|
docker network inspect core-network # 检查网络配置
|
|
\`\`\`
|
|
|
|
---
|
|
|
|
EOF
|
|
|
|
#==============================================================================
|
|
# 9. 系统健康检查
|
|
#==============================================================================
|
|
|
|
print_section "执行健康检查..."
|
|
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
## 🏥 系统健康检查
|
|
|
|
### 关键服务状态
|
|
EOF
|
|
|
|
# 检查 Docker 服务
|
|
if docker ps >/dev/null 2>&1; then
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
- ✅ Docker 运行正常
|
|
EOF
|
|
|
|
# 列出运行中的服务
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
- 运行中的容器:
|
|
EOF
|
|
docker ps --format ' - {{.Names}} ({{.Status}})' >> "$OUTPUT_FILE"
|
|
else
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
- ❌ Docker 未运行
|
|
EOF
|
|
fi
|
|
|
|
# 检查 K8s 集群
|
|
if kubectl cluster-info >/dev/null 2>&1; then
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
- ✅ Kubernetes 集群正常
|
|
EOF
|
|
|
|
# 检查异常 Pod
|
|
unhealthy_pods=$(kubectl get pods -A --field-selector=status.phase!=Running 2>/dev/null | tail -n +2 | wc -l | xargs)
|
|
if [ "$unhealthy_pods" -gt 0 ]; then
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
- ⚠️ 发现 $unhealthy_pods 个异常 Pod
|
|
EOF
|
|
fi
|
|
else
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
- ⚠️ Kubernetes 集群未连接
|
|
EOF
|
|
fi
|
|
|
|
# 检查磁盘空间
|
|
disk_usage=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')
|
|
if [ "$disk_usage" -gt 80 ]; then
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
- ⚠️ 磁盘使用率: ${disk_usage}% (建议清理)
|
|
EOF
|
|
else
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
- ✅ 磁盘使用率: ${disk_usage}%
|
|
EOF
|
|
fi
|
|
|
|
# 检查内存使用
|
|
memory_pressure=$(vm_stat | awk '/Pages free/ {free=$3} /Pages active/ {active=$3} /Pages inactive/ {inactive=$3} END {print (free/(free+active+inactive))*100}')
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
- 内存空闲: $(printf "%.1f" "$memory_pressure")%
|
|
|
|
### 建议
|
|
EOF
|
|
|
|
# 生成建议
|
|
if [ "$disk_usage" -gt 80 ]; then
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
- 🔧 磁盘空间不足,建议执行: \`docker system prune -a\`
|
|
EOF
|
|
fi
|
|
|
|
if [ "$unhealthy_pods" -gt 0 ]; then
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
- 🔧 存在异常 Pod,建议检查: \`kubectl get pods -A --field-selector=status.phase!=Running\`
|
|
EOF
|
|
fi
|
|
|
|
cat >> "$OUTPUT_FILE" << EOF
|
|
|
|
---
|
|
|
|
## 📝 更新日志
|
|
|
|
- **生成时间**: $TIMESTAMP
|
|
- **生成脚本**: \`~/work/codes/tools/macos/scripts/generate-ai-context.sh\`
|
|
- **更新方式**: \`./scripts/generate-ai-context.sh [输出文件路径]\`
|
|
|
|
---
|
|
|
|
**提示**: 此文档会随着系统配置变化而变化,建议定期重新生成以保持最新。
|
|
EOF
|
|
|
|
echo -e "${GREEN}✅ 上下文文档已生成: $OUTPUT_FILE${NC}"
|
|
echo -e "${BLUE}📄 文档大小: $(du -h "$OUTPUT_FILE" | awk '{print $1}')${NC}"
|
|
echo -e "\n${YELLOW}💡 使用建议:${NC}"
|
|
echo -e " 1. 将此文档作为 Claude Code 的项目上下文"
|
|
echo -e " 2. 在 AI 开发时引用相关配置"
|
|
echo -e " 3. 定期更新以保持信息准确"
|
|
echo -e "\n${BLUE}🔄 更新命令: ./scripts/generate-ai-context.sh${NC}"
|