第03章:FDE的部署工具箱——环境、网络与安全

第03章:FDE的部署工具箱——环境、网络与安全

去客户现场之前,确保你的笔记本就是一个完整的部署平台。不要到了现场才发现缺少某个工具。


FDE笔记本标准配置

必装软件清单

# 开发环境
Python 3.11+          # 主语言
Node.js 18+           # MCP Server运行时
Docker Desktop        # 容器化部署
Git                   # 版本控制

# IDE & 工具
VS Code               # 主编辑器
  + Python Extension
  + Docker Extension
  + Remote SSH Extension
DBeaver/pgAdmin       # 数据库客户端
Postman/Insomnia      # API测试

# 基础设施
Terraform/Pulumi      # IaC(如果需要cloud部署)
kubectl               # K8s管理(如果客户用K8s)
AWS CLI / gcloud / az # 云平台CLI

# 网络工具
curl / httpie         # HTTP调试
ngrok                 # 临时隧道(demo用)
Wireshark             # 网络调试(极端情况)
SSH                   # 远程连接

# AI相关
OpenAI/Anthropic CLI  # 快速测试LLM
LangSmith CLI         # Agent调试
ChromaDB              # 本地向量数据库

离线工具包(Air-Gapped客户必备)

有些客户的环境完全没有网络。提前准备:

# 1. Docker镜像离线包
docker save hermes-agent:latest > hermes-agent.tar
docker save openclaw:latest > openclaw.tar
docker save chromadb:latest > chromadb.tar
docker save postgres:15 > postgres.tar

# 2. Python依赖离线包
pip download -r requirements.txt -d ./offline-packages/

# 3. 本地LLM模型文件
# 下载Llama 3 / Mixtral的GGUF文件
# 通常8-30GB,提前下载到移动硬盘

# 4. MCP Server离线包
npm pack @modelcontextprotocol/server-postgres
npm pack @modelcontextprotocol/server-filesystem

环境初始化脚本

一键初始化(到客户现场第一件事运行这个)

#!/bin/bash
# fde-init.sh — FDE环境初始化脚本

echo "=== FDE Environment Setup ==="

# 1. 创建项目结构
mkdir -p ~/fde-project/{config,data,logs,scripts,docs}
cd ~/fde-project

# 2. 创建docker-compose.yml
cat > docker-compose.yml << 'EOF'
version: '3.8'

services:
  postgres:
    image: postgres:15
    environment:
      POSTGRES_DB: openclaw
      POSTGRES_USER: fde
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - pgdata:/var/lib/postgresql/data
    ports:
      - "5432:5432"

  chromadb:
    image: chromadb/chroma:latest
    volumes:
      - chromadata:/chroma/chroma
    ports:
      - "8100:8000"

  openclaw:
    image: openclaw:latest
    environment:
      DATABASE_URL: postgresql://fde:${DB_PASSWORD}@postgres:5432/openclaw
      CHROMA_URL: http://chromadb:8000
      LLM_PROVIDER: ${LLM_PROVIDER}
      LLM_API_KEY: ${LLM_API_KEY}
    depends_on:
      - postgres
      - chromadb
    ports:
      - "8200:8000"

  hermes:
    image: hermes-agent:latest
    environment:
      OPENCLAW_URL: http://openclaw:8000
      LLM_PROVIDER: ${LLM_PROVIDER}
      LLM_API_KEY: ${LLM_API_KEY}
    depends_on:
      - openclaw
    ports:
      - "8300:8000"
    volumes:
      - ./config:/app/config

volumes:
  pgdata:
  chromadata:
EOF

# 3. 创建环境变量模板
cat > .env.template << 'EOF'
DB_PASSWORD=changeme_to_strong_password
LLM_PROVIDER=anthropic
LLM_API_KEY=sk-ant-xxxxx
EOF

# 4. 创建健康检查脚本
cat > scripts/health-check.sh << 'EOF'
#!/bin/bash
echo "Checking services..."
curl -s http://localhost:5432 > /dev/null 2>&1 && echo "✅ PostgreSQL" || echo "❌ PostgreSQL"
curl -s http://localhost:8100/api/v1/heartbeat | grep -q "nanosecond" && echo "✅ ChromaDB" || echo "❌ ChromaDB"
curl -s http://localhost:8200/health | grep -q "ok" && echo "✅ OpenClaw" || echo "❌ OpenClaw"
curl -s http://localhost:8300/health | grep -q "ok" && echo "✅ Hermes" || echo "❌ Hermes"
EOF
chmod +x scripts/health-check.sh

echo "=== Setup Complete ==="
echo "Next: cp .env.template .env && edit .env && docker-compose up -d"

网络配置

常见客户网络拓扑

[互联网]
    ↕ (防火墙)
[客户DMZ]
    ↕ (内部防火墙)
[客户内网]
    ├── [办公网络] ← 你的笔记本在这里
    ├── [服务器区]  ← 部署目标在这里
    ├── [数据库区]  ← 客户数据在这里
    └── [IoT/OT网络] ← 传感器数据在这里(制造业)

FDE需要申请的网络权限

权限 用途 通常审批时间
SSH到服务器 部署和调试 1-3天
数据库read access 查询业务数据 3-5天
出站HTTPS (443) 调用LLM API 1-2天
内部API access 连接ERP/CRM 3-7天
VPN access 远程办公 5-10天

FDE Pro Tip:到客户现场的第一天就提交所有access request。不要等到需要的时候才申请——等审批会浪费你最宝贵的现场时间。

网络不通时的排查步骤

# 1. 检查DNS
nslookup 目标地址

# 2. 检查连通性
ping 目标IP
telnet 目标IP 端口号

# 3. 检查防火墙规则
# (通常需要客户网络团队帮忙看)

# 4. 检查代理
echo $HTTP_PROXY
echo $HTTPS_PROXY

# 5. 如果在客户代理后面访问LLM API
export HTTPS_PROXY=http://客户代理:端口
curl -x $HTTPS_PROXY https://api.anthropic.com/v1/messages

安全配置

Credential管理

# ❌ 永远不要做的事
# 把密钥写在代码里
API_KEY = "sk-ant-abc123..."  # NEVER

# ❌ 把密钥commit到git
git add .env  # NEVER

# ✅ 正确的做法
# 1. 使用环境变量
export LLM_API_KEY="sk-ant-abc123..."

# 2. 使用.env文件 + .gitignore
echo ".env" >> .gitignore

# 3. 使用密钥管理服务(如果客户有)
# AWS Secrets Manager / HashiCorp Vault / Azure Key Vault

# 4. Docker secrets
echo "sk-ant-abc123..." | docker secret create llm_api_key -

数据安全配置

# OpenClaw的数据安全配置示例
security_config = {
    # 1. 数据加密
    "encryption": {
        "at_rest": True,          # 数据库加密
        "in_transit": True,       # TLS传输加密
        "embedding_encryption": True  # 向量也加密
    },
    
    # 2. 访问控制
    "access_control": {
        "authentication": "oauth2",  # 或 LDAP/SAML
        "role_based": True,
        "roles": {
            "admin": ["read", "write", "delete", "configure"],
            "analyst": ["read", "query"],
            "viewer": ["read"]
        }
    },
    
    # 3. 数据脱敏
    "data_masking": {
        "pii_detection": True,     # 自动检测PII
        "mask_in_logs": True,      # 日志中脱敏
        "mask_in_responses": False  # 响应中是否脱敏(看客户要求)
    },
    
    # 4. 审计
    "audit": {
        "log_all_queries": True,
        "log_all_responses": True,
        "retention_days": 365,     # 保留1年(看合规要求)
        "export_format": "json"
    }
}

客户安全review常见问题及回答

客户问题 你的回答
“数据会传到外部吗?” “只有LLM API调用会离开内网。如果需要,我们可以用本地部署的模型(Llama/Mixtral),数据完全不出内网。”
“谁能看到数据?” “系统有基于角色的访问控制。只有被授权的用户才能查询数据。所有操作都有审计日志。”
“AI会’记住’敏感数据吗?” “OpenClaw的记忆是可审计和可删除的。每条记忆都有明确的来源和时间戳。可以随时删除特定记忆。”
“如果AI给出错误信息怎么办?” “系统会标注信息来源。关键操作采用human-in-the-loop模式——AI建议,人工确认。”
“你走了之后谁维护?” “我会做知识转移,包括:运维手册、监控dashboard、常见问题排查指南。你的团队可以独立维护。”

客户环境评估模板

到客户现场第一天填写这个

# Client Environment Assessment

## 基本信息
- 客户名:
- 行业:
- 主要联系人:
- IT团队规模:

## 技术环境
- 操作系统:[ ] Linux [ ] Windows Server
- 容器化:[ ] Docker [ ] K8s [ ] 无
- 数据库:[ ] PostgreSQL [ ] MySQL [ ] Oracle [ ] SQL Server [ ] 其他
- 云平台:[ ] AWS [ ] GCP [ ] Azure [ ] 私有云 [ ] 无
- 网络:[ ] 可访问外网 [ ] 代理 [ ] Air-gapped

## 数据情况
- 主要数据源:
- 数据量估计:
- 数据格式:
- 敏感等级:[ ] 公开 [ ] 内部 [ ] 机密 [ ] 极机密

## 安全要求
- 认证方式:[ ] LDAP [ ] OAuth [ ] SAML [ ] 其他
- 合规要求:[ ] SOC2 [ ] HIPAA [ ] PCI-DSS [ ] GDPR [ ] 等保
- 数据出境限制:[ ] 不能出内网 [ ] 可以调用云API [ ] 无限制

## 已有系统
- ERP:
- CRM:
- 邮件:
- 即时通讯:
- 其他关键系统:

## 部署方案选择
- [ ] Cloud(客户VPC内)
- [ ] On-Premise
- [ ] 混合

## Access需求(第一天提交!)
- [ ] SSH到目标服务器
- [ ] 数据库read access
- [ ] 出站HTTPS
- [ ] VPN
- [ ] 其他:

本章核心结论

  1. 笔记本就是你的部署平台——出发前确保所有工具都装好、离线包都准备好。
  2. 第一天就提交所有access request——这是最容易浪费时间的地方。
  3. 安全不是可选项——credential管理、数据加密、访问控制、审计日志,每一项都必须配置。
  4. 客户环境评估模板是你的第一个deliverable——填完它,你才知道用哪个部署方案。
  5. 准备好回答安全review的常见问题——你的回答决定了客户是否信任这个系统。

下一章:Day 1部署——带着你的工具箱,在4小时内从零搭建一个可演示的MVP。