✨ 新增功能 - 完整的日志记录系统(6 种日志级别) - 日志配置功能(可通过 config.json 控制) - 性能监控装饰器和请求日志中间件 - 7 个管理工具脚本 - 完整的文档和使用指南 🛠️ 管理工具 - start-with-log.sh: 启动脚本(带日志) - stop-dashboard.sh: 停止脚本 - view-logs.sh: 日志查看器 - monitor-logs.sh: 实时监控工具(支持多种过滤器) - analyze-logs.sh: 日志分析工具(自动生成报告) - demo-logging.sh: 功能演示脚本 - test-logging-config.sh: 配置测试工具 📊 日志特性 - 支持 INFO/SUCCESS/WARN/ERROR/DEBUG/PERF 6 种级别 - 自动记录启动过程、API 请求、性能统计 - 缓存命中情况追踪 - 分步性能监控 - 智能过滤器 ⚙️ 配置功能 - 可控制是否启用日志(默认:true) - 可设置日志级别(默认:INFO) - 可控制文件/控制台输出 - 支持动态配置(重启生效) 📚 文档 - LOGGING_GUIDE.md: 完整使用指南 - LOGGING_CONFIG.md: 配置说明文档 - LOGGING_CONFIG_QUICK.md: 快速配置指南 - 多个中文说明文档 🔒 安全 - 添加 .gitignore 排除敏感信息 - config.json(含 Token)不提交 - 日志文件不提交 - 示例配置使用占位符 ✅ 测试 - 语法检查通过 - 功能完整性验证 - 配置控制测试通过 - 文档完整性检查 详见 CHANGELOG_v1.1.0.md Made-with: Cursor
90 lines
2.8 KiB
Bash
90 lines
2.8 KiB
Bash
#!/bin/bash
|
|
# AI Team Bot 容器入口脚本
|
|
# 负责:配置 Git、克隆仓库、复制技能、注入 API Key、启动轮询 + Gateway
|
|
|
|
echo "🦞 AI Team Bot [$BOT_NAME] 启动中..."
|
|
echo " 角色: $BOT_ROLE"
|
|
echo " 仓库: $GITHUB_REPO"
|
|
echo " 代码仓: $CODE_REPO"
|
|
echo " 技能仓: $SKILLS_REPO"
|
|
echo " 轮询: 每 ${POLL_INTERVAL} 分钟"
|
|
|
|
export GH_TOKEN="$GITHUB_TOKEN"
|
|
echo "✅ GitHub 认证已配置"
|
|
|
|
git config --global user.name "$BOT_NAME"
|
|
git config --global user.email "${BOT_NAME}@ai-team.local"
|
|
git config --global credential.helper store
|
|
echo "https://x-access-token:${GITHUB_TOKEN}@github.com" > /home/node/.git-credentials
|
|
echo "✅ Git 已配置"
|
|
|
|
CODE_REPO_DIR="/home/node/code-repo"
|
|
if [ -n "$CODE_REPO" ]; then
|
|
if [ ! -d "$CODE_REPO_DIR/.git" ]; then
|
|
git clone "https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_OWNER}/${CODE_REPO}.git" "$CODE_REPO_DIR" 2>/dev/null
|
|
echo "✅ 代码仓已克隆: $CODE_REPO"
|
|
else
|
|
cd "$CODE_REPO_DIR" && git pull --rebase 2>/dev/null
|
|
echo "✅ 代码仓已更新: $CODE_REPO"
|
|
fi
|
|
fi
|
|
|
|
SKILLS_REPO_DIR="/home/node/skills-repo"
|
|
if [ -n "$SKILLS_REPO" ]; then
|
|
if [ ! -d "$SKILLS_REPO_DIR/.git" ]; then
|
|
git clone "https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_OWNER}/${SKILLS_REPO}.git" "$SKILLS_REPO_DIR" 2>/dev/null
|
|
echo "✅ 技能仓已克隆: $SKILLS_REPO"
|
|
else
|
|
cd "$SKILLS_REPO_DIR" && git pull --rebase 2>/dev/null
|
|
echo "✅ 技能仓已更新: $SKILLS_REPO"
|
|
fi
|
|
fi
|
|
|
|
if [ -f /home/node/.openclaw-config/openclaw.json ]; then
|
|
cp /home/node/.openclaw-config/openclaw.json /home/node/.openclaw/openclaw.json
|
|
echo "✅ OpenClaw 配置已复制"
|
|
fi
|
|
|
|
if [ -d /home/node/.openclaw-config/skills ]; then
|
|
cp -r /home/node/.openclaw-config/skills/* /home/node/.openclaw/skills/ 2>/dev/null
|
|
echo "✅ Skills 已复制"
|
|
fi
|
|
|
|
if [ -d "$SKILLS_REPO_DIR" ]; then
|
|
for f in "$SKILLS_REPO_DIR"/*.md; do
|
|
[ -f "$f" ] && cp "$f" /home/node/.openclaw/skills/ 2>/dev/null
|
|
done
|
|
echo "✅ 技能仓 Skills 已加载到 OpenClaw"
|
|
fi
|
|
|
|
mkdir -p /home/node/.openclaw/agents/main/agent
|
|
|
|
cat > /home/node/.openclaw/agents/main/agent/auth-profiles.json <<EOF
|
|
{
|
|
"version": 1,
|
|
"profiles": {
|
|
"coding-plan:default": {
|
|
"type": "api_key",
|
|
"provider": "coding-plan",
|
|
"key": "$CODING_PLAN_API_KEY"
|
|
}
|
|
}
|
|
}
|
|
EOF
|
|
echo "✅ API Key 已写入"
|
|
|
|
echo "🔄 启动任务轮询 (后台, 每 ${POLL_INTERVAL} 分钟)..."
|
|
echo "{\"startedAt\":$(date +%s),\"interval\":$((POLL_INTERVAL * 60))}" > /tmp/poll-meta.json
|
|
(
|
|
sleep 30
|
|
echo "[$(date)] 轮询守护进程启动"
|
|
while true; do
|
|
/usr/local/bin/poll-tasks.sh 2>&1 | tee -a /tmp/poll.log || true
|
|
date +%s > /tmp/last-poll.txt
|
|
sleep $((POLL_INTERVAL * 60))
|
|
done
|
|
) &
|
|
|
|
echo "🚀 启动 OpenClaw Gateway..."
|
|
exec openclaw gateway --allow-unconfigured
|