bootstrap.sh 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #!/usr/bin/env bash
  2. #
  3. # 雨飏001 · 数字生命引导脚本 (Linux/macOS)
  4. # 用法: bash bootstrap.sh
  5. #
  6. set -euo pipefail
  7. HARNESS="${HOME}/.fmode-harness-agent"
  8. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  9. if [ -d "${SCRIPT_DIR}/.git" ]; then
  10. HARNESS="${SCRIPT_DIR}"
  11. fi
  12. echo "=========================================="
  13. echo " 雨飏001 · 数字生命引导"
  14. echo " 版本: v0.2"
  15. echo "=========================================="
  16. echo ""
  17. # 1. 检查环境
  18. echo "[1/6] 检查系统环境..."
  19. OS="$(uname -s)"
  20. ARCH="$(uname -m)"
  21. echo " 系统: ${OS} ${ARCH}"
  22. # 2. 检查必要命令
  23. echo "[2/6] 检查必要工具..."
  24. for cmd in git curl python3 node; do
  25. if command -v $cmd &>/dev/null; then
  26. echo " ✅ $cmd"
  27. else
  28. echo " ❌ $cmd 未安装,请安装后重试"
  29. exit 1
  30. fi
  31. done
  32. # 3. 配置 FmodeAgent(YOLO 模式 + 中文)
  33. echo "[3/6] 配置 FmodeAgent..."
  34. if command -v hermes &>/dev/null; then
  35. # 设置 YOLO 模式(跳过 execute_code 审批)
  36. hermes config set approvals.mode off 2>/dev/null || true
  37. hermes config set approvals.destructive_slash_confirm false 2>/dev/null || true
  38. echo " ✅ YOLO 模式已开启"
  39. # 设置中文
  40. hermes config set language zh 2>/dev/null || true
  41. hermes config set locale zh-CN 2>/dev/null || true
  42. echo " ✅ 中文已配置"
  43. else
  44. echo " ⚠️ FmodeAgent 未安装,请先安装"
  45. echo " 安装命令: npm install -g @fmode/agent 或参考文档"
  46. fi
  47. # 4. 检查密钥
  48. echo "[4/6] 检查密钥配置..."
  49. if [ -f "${HARNESS}/.env" ]; then
  50. echo " ✅ 密钥文件已存在"
  51. source "${HARNESS}/.env" 2>/dev/null || true
  52. else
  53. echo " ⚠️ 密钥文件不存在,创建模板"
  54. cp "${HARNESS}/secrets/.env.example" "${HARNESS}/.env" 2>/dev/null || true
  55. echo " 请编辑 ${HARNESS}/.env 填入真实密钥后重新运行"
  56. fi
  57. # 5. 检查 SSH 密钥
  58. echo "[5/6] 检查 SSH 密钥..."
  59. if [ -f "${HOME}/.ssh/id_ed25519" ]; then
  60. echo " ✅ SSH 密钥已存在"
  61. else
  62. echo " ⚠️ SSH 密钥不存在,创建..."
  63. ssh-keygen -t ed25519 -C "agent-yuyang001@fmode.cn" -f "${HOME}/.ssh/id_ed25519" -N "" 2>/dev/null || true
  64. echo " 🔑 公钥:"
  65. cat "${HOME}/.ssh/id_ed25519.pub" 2>/dev/null || true
  66. echo " 请将此公钥添加到 Git 服务器"
  67. fi
  68. # 6. 检查环境变量
  69. echo "[6/6] 检查环境变量..."
  70. if [ -f "${HARNESS}/.env" ]; then
  71. source "${HARNESS}/.env" 2>/dev/null || true
  72. # 检查关键变量
  73. for var in FMODE_API_KEY; do
  74. if [ -z "${!var:-}" ]; then
  75. echo " ⚠️ \$${var} 未设置,请编辑 ${HARNESS}/.env"
  76. else
  77. echo " ✅ \$${var} 已设置"
  78. fi
  79. done
  80. fi
  81. echo ""
  82. echo "=========================================="
  83. echo " ✅ 引导完成"
  84. echo " 仓库路径: ${HARNESS}"
  85. echo " 下一步: 编辑 .env 文件填入密钥"
  86. echo " 运行: setup.sh 安装依赖"
  87. echo " 运行: restore.sh 恢复数据"
  88. echo "=========================================="