#!/usr/bin/env bash set -euo pipefail cd "$(dirname "$0")/.." # .env 可选(订阅模式下完全无需 key) if [[ ! -f .env ]]; then cp .env.example .env echo "已创建 .env(订阅模式无需填 key,直接继续)" fi # 首次构建提示 if ! docker image inspect claude-agent-6repos:latest >/dev/null 2>&1; then echo ">>> 首次构建镜像(约 5 分钟,下载 Node/Python/Go/Bun 工具链)" docker compose build fi # 检查容器内是否已登录(claude-home 卷里有 .credentials.json) LOGGED_IN=$(docker volume inspect ai-ops_claude-home >/dev/null 2>&1 \ && docker run --rm -v ai-ops_claude-home:/h alpine \ sh -c 'test -f /h/.credentials.json && echo yes || echo no' 2>/dev/null || echo no) if [[ "$LOGGED_IN" != "yes" && -z "${ANTHROPIC_API_KEY:-$(grep -E '^ANTHROPIC_API_KEY=sk-' .env 2>/dev/null || true)}" ]]; then cat <<'LOGIN_HINT' >>> 首次登录提示: 进入容器后执行 /login,用浏览器完成 Claude Max 订阅 OAuth。 凭证会持久化到 docker volume,下次直接复用。 LOGIN_HINT fi # 统计 agent / command 数量(供 banner 显示) AGENT_COUNT=$(ls .claude/agents/*.md 2>/dev/null | wc -l | tr -d ' ') CMD_COUNT=$(ls .claude/commands/*.md 2>/dev/null | wc -l | tr -d ' ') PLAYBOOK_COUNT=$(ls playbooks/*.md 2>/dev/null | wc -l | tr -d ' ') cat < 功能开发(brainstorm→split→impl→QA)║ ║ /team-bug-fix Bug 修复(triage→RCA→fix→test) ║ ║ /team-refactor 重构(test-first→batch→verify) ║ ║ ║ ║ 快速命令: ║ ║ /audit-deps [repo|all] 依赖 + CVE 审计 ║ ║ /add-ci 补 GitHub Actions CI ║ ║ /review-pr 深度 PR 审查 ║ ║ /sync-upstream [--dry] casdoor upstream 同步 ║ ║ /check-migrations Alembic/Prisma 一致性巡检 ║ ║ ║ ║ 专家 Subagent 自动派遣(无需手动调用): ║ ║ python-fastapi-expert · nestjs-expert · react-frontend-expert║ ║ casdoor-specialist · lobechat-brand-guardian · docs-writer ║ ║ mcp-tools-architect · celery-worker-expert · migration- ║ ║ reviewer · security-auditor · test-engineer · ci-cd-engineer ║ ║ · azure-aca-expert ║ ║ ║ ║ 首次使用请:/login 然后 /plugin install superpowers ║ ╚══════════════════════════════════════════════════════════════════╝ BANNER exec docker compose run --rm claude-agent "$@"