第 19 章:团队协作与企业部署
难度: ⭐⭐⭐⭐ 高级 预计阅读: 22 分钟 前置章节: 第 8 章、第 14 章
当 OpenClaw 从个人开发者工具扩展到团队和企业环境时,需要解决多用户权限、共享知识库、审批工作流、安全合规等一系列新挑战。本章将系统讲解团队协作模式、企业级安全要求、私有化部署方案和团队最佳实践,帮助你构建一个全团队共享的 AI Agent 协作平台。
📑 本章目录
19.1 团队使用模式
共享 Agent 模式
所有团队成员通过同一个 Gateway 访问同一组 Agent,适合小型团队快速上手:
┌───────────────┐
用户 A ─────────▶│ │
用户 B ─────────▶│ 共享 Gateway │──▶ Agent (main)
用户 C ─────────▶│ │──▶ Agent (assistant)
└───────────────┘
│
┌──────▼──────┐
│ 共享知识库 │
│ 共享记忆 │
└─────────────┘
{
"team_mode": "shared",
"gateway": {
"host": "0.0.0.0",
"port": 3000,
"auth": {
"enabled": true,
"method": "token",
"tokens": {
"user-a": "tok_xxxxxxxxxxxxxxxx",
"user-b": "tok_yyyyyyyyyyyyyyyy",
"user-c": "tok_zzzzzzzzzzzzzzzz"
}
}
},
"agents": {
"main": {
"shared": true,
"max_concurrent_sessions": 5
}
}
}
[!WARNING] 共享模式下所有用户的对话记忆会互相可见。如果涉及敏感信息,请使用个人 Agent 模式或设置记忆隔离。
个人 Agent 模式
每个用户拥有独立的 Agent 实例和私有存储空间:
用户 A ──▶ Gateway ──▶ Agent-A (独立记忆、独立配置)
用户 B ──▶ Gateway ──▶ Agent-B (独立记忆、独立配置)
用户 C ──▶ Gateway ──▶ Agent-C (独立记忆、独立配置)
│
┌──────▼──────┐
│ 共享知识库 │ ← 只读共享
└─────────────┘
{
"team_mode": "personal",
"user_isolation": {
"enabled": true,
"workspace_template": "~/.openclaw/templates/user-workspace/",
"private_paths": ["memory/", "sessions/", "credentials/"],
"shared_paths": ["skills/", "workspace/knowledge/"],
"auto_provision": true
}
}
混合模式
结合共享和个人模式的优势,团队共用部分 Agent,同时每人保留私有空间:
{
"team_mode": "hybrid",
"shared_agents": {
"team-assistant": {
"description": "团队共享助手,处理通用任务",
"access": "all",
"knowledge": "shared"
},
"code-reviewer": {
"description": "代码审查 Agent",
"access": ["dev-team"],
"knowledge": "shared"
}
},
"personal_agents": {
"enabled": true,
"per_user_limit": 2,
"resources": {
"max_memory_files": 100,
"max_tokens_per_day": 500000
}
}
}
模式对比与选择
| 特性 | 共享模式 | 个人模式 | 混合模式 |
|---|---|---|---|
| 部署复杂度 | ⭐ 低 | ⭐⭐⭐ 高 | ⭐⭐ 中 |
| 资源消耗 | 低 | 高(每用户独立实例) | 中 |
| 数据隔离 | ❌ 无 | ✅ 完全隔离 | ✅ 部分隔离 |
| 知识共享 | ✅ 天然共享 | ❌ 需额外配置 | ✅ 灵活配置 |
| 适合团队规模 | 2-5 人 | 5-20 人 | 10-100 人 |
| 个性化程度 | 低 | 高 | 中高 |
| 推荐场景 | 初创团队、快速试用 | 隐私敏感、独立工作 | 企业团队、部门协作 |
[!TIP] 大多数团队建议从混合模式起步:创建 1-2 个共享 Agent 处理通用任务(如信息查询、文档生成),同时为核心成员开通个人 Agent 处理敏感或个性化任务。
19.2 多用户权限配置
角色定义
OpenClaw 团队版使用基于角色的访问控制(RBAC)模型:
| 角色 | 英文 | 权限范围 | 典型用户 |
|---|---|---|---|
| 超级管理员 | super_admin |
全部权限,包括系统配置和用户管理 | 运维负责人 |
| 管理员 | admin |
Agent 管理、知识库管理、用户管理 | 团队负责人 |
| 开发者 | developer |
Skills 开发与部署、Agent 配置 | 开发团队成员 |
| 用户 | user |
使用 Agent、查看共享知识库 | 普通团队成员 |
| 访客 | guest |
仅可使用指定的共享 Agent | 外部协作者 |
RBAC 权限模型
{
"rbac": {
"roles": {
"super_admin": {
"permissions": ["*"],
"description": "全部权限"
},
"admin": {
"permissions": [
"agent:read", "agent:write", "agent:delete",
"knowledge:read", "knowledge:write",
"user:read", "user:write",
"skill:read", "skill:write", "skill:install",
"log:read",
"approval:manage"
]
},
"developer": {
"permissions": [
"agent:read", "agent:write",
"knowledge:read", "knowledge:write",
"skill:read", "skill:write", "skill:install",
"log:read"
]
},
"user": {
"permissions": [
"agent:read", "agent:use",
"knowledge:read",
"skill:read"
]
},
"guest": {
"permissions": [
"agent:use"
],
"restrictions": {
"allowed_agents": ["team-assistant"],
"max_messages_per_day": 50,
"no_file_access": true
}
}
}
}
}
权限配置实例
为团队成员分配角色和权限:
{
"users": [
{
"id": "user-zhangsan",
"name": "张三",
"email": "zhangsan@company.com",
"role": "admin",
"feishu_id": "ou_xxxxxxxxxxxx",
"created_at": "2026-01-15T08:00:00Z"
},
{
"id": "user-lisi",
"name": "李四",
"email": "lisi@company.com",
"role": "developer",
"feishu_id": "ou_yyyyyyyyyyyy",
"custom_permissions": [
"approval:manage"
],
"created_at": "2026-02-01T08:00:00Z"
},
{
"id": "user-wangwu",
"name": "王五",
"email": "wangwu@company.com",
"role": "user",
"feishu_id": "ou_zzzzzzzzzzzz",
"restrictions": {
"max_tokens_per_day": 200000,
"allowed_models": ["gpt-4o-mini", "deepseek-v3"]
},
"created_at": "2026-02-15T08:00:00Z"
},
{
"id": "guest-partner",
"name": "合作伙伴 A",
"role": "guest",
"expires_at": "2026-06-30T23:59:59Z"
}
]
}
验证权限配置的命令:
# 查看当前用户列表和角色
cat ~/.openclaw/identity/users.json | python3 -c "
import sys, json
users = json.load(sys.stdin).get('users', [])
print(f'{'用户名':<16} {'角色':<14} {'邮箱':<30}')
print('-' * 60)
for u in users:
print(f'{u[\"name\"]:<16} {u[\"role\"]:<14} {u.get(\"email\", \"N/A\"):<30}')
print(f'\n 总计: {len(users)} 个用户')
"
# 测试特定用户的权限
openclaw auth check --user user-lisi --permission "skill:install"
# 输出: ✅ user-lisi (developer) has permission: skill:install
openclaw auth check --user guest-partner --permission "knowledge:write"
# 输出: ❌ guest-partner (guest) denied: knowledge:write
[!NOTE]
custom_permissions字段允许为特定用户追加角色之外的额外权限,实现灵活的权限管理而不需要创建新角色。
19.3 团队知识库管理
知识库架构设计
团队知识库分为三个层级:
┌────────────────────────────────────────────┐
│ 全局知识库 (Global) │ ← 公司级:规范、流程、制度
├────────────────────────────────────────────┤
│ 团队知识库 (Team) │ 部门知识库 (Dept) │ ← 团队级:项目文档、技术方案
├──────────────┬───────────┴─────────────────┤
│ 个人知识库 A │ 个人知识库 B │ 个人知识库 C │ ← 个人级:偏好、笔记、草稿
└──────────────┴──────────────┴──────────────┘
共享知识库
配置团队共享知识库的目录结构:
# 创建团队知识库目录结构
mkdir -p ~/.openclaw/workspace/knowledge/{global,team,personal}
# 全局知识库(只读,由管理员维护)
cat > ~/.openclaw/workspace/knowledge/global/README.md << 'EOF'
# 全局知识库
本目录存放公司级共享知识,所有成员可读取,仅管理员可修改。
## 内容说明
- `company-standards.md` - 公司编码和文档规范
- `workflow-guide.md` - 标准工作流程
- `tool-catalogue.md` - 内部工具目录
- `faq.md` - 常见问题解答
EOF
# 团队知识库(团队成员可读写)
cat > ~/.openclaw/workspace/knowledge/team/README.md << 'EOF'
# 团队知识库
本目录存放团队级共享知识,本团队成员可读写。
## 内容说明
- `project-docs/` - 项目文档
- `tech-decisions/` - 技术决策记录 (ADR)
- `meeting-notes/` - 会议纪要
- `onboarding/` - 新人入职材料
EOF
知识库权限配置:
{
"knowledge_base": {
"layers": [
{
"name": "global",
"path": "knowledge/global/",
"access": {
"read": ["*"],
"write": ["admin", "super_admin"]
},
"sync": {
"source": "git",
"repo": "https://github.com/company/knowledge-base.git",
"branch": "main",
"auto_pull": true,
"pull_interval": "1h"
}
},
{
"name": "team",
"path": "knowledge/team/",
"access": {
"read": ["developer", "admin", "super_admin"],
"write": ["developer", "admin", "super_admin"]
}
},
{
"name": "personal",
"path": "knowledge/personal/${user_id}/",
"access": {
"read": ["self"],
"write": ["self"]
}
}
]
}
}
知识库同步策略
| 同步方式 | 说明 | 适用场景 |
|---|---|---|
| Git Pull | 从远程仓库定期拉取 | 全局知识库、版本控制的文档 |
| 文件监听 | 监听目录变化自动索引 | 团队知识库、频繁更新的内容 |
| API 推送 | 外部系统通过 API 推送更新 | 与 Confluence/Notion 等集成 |
| 手动触发 | 管理员手动执行同步 | 敏感内容、需要审核的更新 |
# 手动同步全局知识库
cd ~/.openclaw/workspace/knowledge/global
git pull origin main
# 验证知识库索引状态
openclaw knowledge status
# 输出:
# 📚 知识库状态
# ├── global: 15 个文件,最后更新 2026-03-06 10:30
# ├── team: 23 个文件,最后更新 2026-03-06 09:15
# └── personal: 8 个文件,最后更新 2026-03-05 18:00
# 重建知识库索引
openclaw knowledge reindex --layer all
19.4 审批工作流
审批场景定义
在企业环境中,某些高风险操作需要审批流程:
{
"approval_workflows": {
"enabled": true,
"scenarios": [
{
"name": "external_api_call",
"description": "调用外部 API(非白名单)",
"risk_level": "medium",
"require_approval": true,
"approvers": ["admin"]
},
{
"name": "file_system_write",
"description": "写入非工作区的文件系统",
"risk_level": "high",
"require_approval": true,
"approvers": ["super_admin"]
},
{
"name": "skill_install",
"description": "安装新的 Skill 插件",
"risk_level": "medium",
"require_approval": true,
"approvers": ["admin", "developer"]
},
{
"name": "credential_access",
"description": "访问凭证信息",
"risk_level": "critical",
"require_approval": true,
"approvers": ["super_admin"],
"max_wait_minutes": 30
},
{
"name": "data_export",
"description": "导出数据到外部",
"risk_level": "high",
"require_approval": true,
"approvers": ["admin"],
"audit_log": true
}
]
}
}
多级审批链
对于高风险操作,支持多级审批流程:
{
"multi_level_approval": {
"data_export": {
"levels": [
{
"level": 1,
"approvers": ["team_lead"],
"description": "团队负责人初审",
"timeout_minutes": 60
},
{
"level": 2,
"approvers": ["security_officer"],
"description": "安全官员复审",
"timeout_minutes": 120
},
{
"level": 3,
"approvers": ["cto"],
"description": "CTO 终审(金额 > 10 万 时)",
"condition": "amount > 100000",
"timeout_minutes": 240
}
],
"on_timeout": "auto_reject",
"notification_channel": "feishu"
}
}
}
审批流程:
请求 ──▶ 团队负责人 ──批准──▶ 安全官员 ──批准──▶ CTO ──批准──▶ 执行
│ │ │
▼ 拒绝 ▼ 拒绝 ▼ 拒绝
终止并通知 终止并通知 终止并通知
审批记录与审计
所有审批操作都记录在审计日志中:
# 查看最近的审批记录
cat ~/.openclaw/logs/config-audit.jsonl | \
python3 -c "
import sys, json
for line in sys.stdin:
try:
entry = json.loads(line.strip())
if entry.get('type') == 'approval':
print(f'{entry[\"timestamp\"]} | {entry[\"action\"]} | '
f'申请人: {entry[\"requester\"]} | '
f'审批人: {entry[\"approver\"]} | '
f'结果: {entry[\"result\"]}')
except: pass
" | tail -20
# 统计审批通过率
cat ~/.openclaw/logs/config-audit.jsonl | \
python3 -c "
import sys, json
approved, rejected, total = 0, 0, 0
for line in sys.stdin:
try:
entry = json.loads(line.strip())
if entry.get('type') == 'approval':
total += 1
if entry['result'] == 'approved': approved += 1
elif entry['result'] == 'rejected': rejected += 1
except: pass
if total > 0:
print(f'总申请: {total}')
print(f'通过: {approved} ({approved/total*100:.1f}%)')
print(f'拒绝: {rejected} ({rejected/total*100:.1f}%)')
print(f'其他: {total-approved-rejected}')
"
19.5 企业安全合规
数据保护
企业环境中的数据保护配置:
{
"data_protection": {
"encryption": {
"at_rest": {
"enabled": true,
"algorithm": "AES-256-GCM",
"key_source": "vault",
"key_rotation_days": 90
},
"in_transit": {
"tls_min_version": "1.2",
"enforce_https": true,
"certificate_source": "acme"
}
},
"data_classification": {
"levels": ["public", "internal", "confidential", "restricted"],
"default_level": "internal",
"rules": [
{
"pattern": "credentials/*",
"level": "restricted"
},
{
"pattern": "knowledge/global/*",
"level": "internal"
},
{
"pattern": "knowledge/personal/*",
"level": "confidential"
}
]
},
"data_retention": {
"session_logs": "90d",
"audit_logs": "365d",
"memory_files": "unlimited",
"cache": "7d"
},
"pii_detection": {
"enabled": true,
"patterns": ["phone", "email", "id_card", "bank_account"],
"action": "mask_and_warn"
}
}
}
[!WARNING] 启用 PII 检测后,Agent 输出中的手机号、身份证号等敏感信息会被自动脱敏。请确保这不会影响正常业务流程。
审计日志
企业级审计日志配置:
{
"audit": {
"enabled": true,
"log_path": "~/.openclaw/logs/audit/",
"events": [
"user_login", "user_logout",
"agent_created", "agent_deleted",
"skill_installed", "skill_removed",
"knowledge_modified",
"credential_accessed",
"approval_requested", "approval_decided",
"config_changed",
"data_exported"
],
"format": "jsonl",
"fields": [
"timestamp", "event_type", "user_id", "user_ip",
"resource", "action", "result", "details"
],
"export": {
"enabled": true,
"destination": "siem",
"protocol": "syslog",
"endpoint": "siem.company.com:514"
}
}
}
审计日志查询示例:
# 查看今日所有安全相关事件
grep "$(date +%Y-%m-%d)" ~/.openclaw/logs/audit/*.jsonl | \
python3 -c "
import sys, json
for line in sys.stdin:
try:
parts = line.split(':', 1)
entry = json.loads(parts[1].strip() if len(parts) > 1 else line.strip())
event = entry.get('event_type', '')
if event in ['credential_accessed', 'config_changed', 'data_exported', 'user_login']:
print(f'[{entry[\"timestamp\"]}] {event}: '
f'用户={entry.get(\"user_id\",\"?\")} '
f'资源={entry.get(\"resource\",\"?\")} '
f'结果={entry.get(\"result\",\"?\")}')
except: pass
"
# 导出审计报告(CSV 格式)
python3 << 'PYEOF'
import json, csv, sys, glob
with open("/tmp/audit-report.csv", "w", newline="") as csvfile:
writer = csv.writer(csvfile)
writer.writerow(["时间", "事件", "用户", "资源", "操作", "结果"])
for filepath in sorted(glob.glob("~/.openclaw/logs/audit/*.jsonl")):
with open(filepath) as f:
for line in f:
try:
e = json.loads(line.strip())
writer.writerow([
e.get("timestamp", ""),
e.get("event_type", ""),
e.get("user_id", ""),
e.get("resource", ""),
e.get("action", ""),
e.get("result", "")
])
except:
pass
print("报告已导出: /tmp/audit-report.csv")
PYEOF
备份与灾难恢复
备份与灾难恢复
自动化备份脚本:
#!/bin/bash
# openclaw-backup.sh - OpenClaw 企业级备份脚本
# 用法: ./openclaw-backup.sh [备份目标路径]
# 建议通过 cron 每日执行
set -euo pipefail
BACKUP_ROOT="${1:-/backup/openclaw}"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="${BACKUP_ROOT}/${TIMESTAMP}"
OPENCLAW_HOME="${HOME}/.openclaw"
RETENTION_DAYS=30
echo "🔄 开始 OpenClaw 备份..."
echo " 时间: $(date)"
echo " 目标: ${BACKUP_DIR}"
mkdir -p "${BACKUP_DIR}"
# 1. 备份核心配置
echo "📋 备份配置文件..."
tar czf "${BACKUP_DIR}/config.tar.gz" \
-C "${OPENCLAW_HOME}" \
openclaw.json \
exec-approvals.json \
credentials/ \
identity/ \
devices/ \
2>/dev/null || true
# 2. 备份知识库和记忆
echo "🧠 备份知识库和记忆..."
tar czf "${BACKUP_DIR}/workspace.tar.gz" \
-C "${OPENCLAW_HOME}" \
workspace/ \
2>/dev/null || true
# 3. 备份 Skills
echo "🔧 备份 Skills..."
if [ -d "${OPENCLAW_HOME}/workspace/skills" ]; then
tar czf "${BACKUP_DIR}/skills.tar.gz" \
-C "${OPENCLAW_HOME}/workspace" \
skills/ \
2>/dev/null || true
fi
# 4. 备份日志(仅最近 7 天)
echo "📝 备份近期日志..."
find "${OPENCLAW_HOME}/logs" -mtime -7 -name "*.jsonl" -print0 | \
tar czf "${BACKUP_DIR}/logs-recent.tar.gz" \
--null -T - \
2>/dev/null || true
# 5. 备份 Cron 任务配置
echo "⏰ 备份 Cron 配置..."
tar czf "${BACKUP_DIR}/cron.tar.gz" \
-C "${OPENCLAW_HOME}" \
cron/jobs.json \
2>/dev/null || true
# 6. 生成备份清单
echo "📃 生成备份清单..."
cat > "${BACKUP_DIR}/manifest.json" << MANIFEST
{
"timestamp": "${TIMESTAMP}",
"openclaw_home": "${OPENCLAW_HOME}",
"files": [
$(ls -la "${BACKUP_DIR}"/*.tar.gz 2>/dev/null | awk '{printf " {\"name\": \"%s\", \"size\": \"%s\"},\n", $NF, $5}' | sed '$ s/,$//')
],
"total_size": "$(du -sh "${BACKUP_DIR}" | cut -f1)",
"hostname": "$(hostname)",
"openclaw_version": "$(openclaw --version 2>/dev/null || echo 'unknown')"
}
MANIFEST
# 7. 清理旧备份
echo "🧹 清理 ${RETENTION_DAYS} 天前的旧备份..."
find "${BACKUP_ROOT}" -maxdepth 1 -type d -mtime +${RETENTION_DAYS} -exec rm -rf {} \;
# 8. 统计
TOTAL_SIZE=$(du -sh "${BACKUP_DIR}" | cut -f1)
FILE_COUNT=$(find "${BACKUP_DIR}" -name "*.tar.gz" | wc -l)
echo ""
echo "✅ 备份完成!"
echo " 文件数: ${FILE_COUNT}"
echo " 总大小: ${TOTAL_SIZE}"
echo " 路径: ${BACKUP_DIR}"
灾难恢复流程:
# 查看可用的备份
ls -la /backup/openclaw/ | head -20
# 恢复指定日期的备份
RESTORE_FROM="/backup/openclaw/20260306_020000"
# 1. 停止 OpenClaw 服务
openclaw stop
# 2. 恢复配置
tar xzf "${RESTORE_FROM}/config.tar.gz" -C ~/.openclaw/
# 3. 恢复知识库和记忆
tar xzf "${RESTORE_FROM}/workspace.tar.gz" -C ~/.openclaw/
# 4. 恢复 Skills
tar xzf "${RESTORE_FROM}/skills.tar.gz" -C ~/.openclaw/workspace/
# 5. 恢复 Cron 配置
tar xzf "${RESTORE_FROM}/cron.tar.gz" -C ~/.openclaw/
# 6. 重启服务
openclaw start
echo "✅ 恢复完成,服务已启动"
| 备份策略 | 频率 | 保留时间 | 存储位置 | 内容 |
|---|---|---|---|---|
| 全量备份 | 每周日 | 90 天 | 异地存储/S3 | 全部数据 |
| 增量备份 | 每日 | 30 天 | 本地 + NFS | 变更的文件 |
| 配置快照 | 每次变更 | 365 天 | Git 仓库 | 配置文件 |
| 审计日志 | 实时 | 永久 | SIEM 系统 | 安全事件 |
19.6 私有化部署
离线安装
在无外网环境下安装 OpenClaw:
# ====== 在有网络的机器上准备离线包 ======
# 1. 下载 OpenClaw 安装包
mkdir -p /tmp/openclaw-offline
cd /tmp/openclaw-offline
# 下载主程序
curl -L -o openclaw-linux-x64.tar.gz \
https://github.com/openclaw/openclaw/releases/latest/download/openclaw-linux-x64.tar.gz
# 下载依赖的 Docker 镜像
docker pull openclaw/gateway:latest
docker save openclaw/gateway:latest -o gateway-image.tar
docker pull nginx:alpine
docker save nginx:alpine -o nginx-image.tar
# 下载常用 Skills
openclaw skill download complex-task-automator --output ./skills/
openclaw skill download feishu-connector --output ./skills/
# 打包全部离线资源
tar czf openclaw-offline-bundle.tar.gz ./*
echo "离线包已准备: $(du -sh openclaw-offline-bundle.tar.gz | cut -f1)"
# ====== 在离线机器上安装 ======
# 2. 传输离线包(通过 USB/内网传输)
scp openclaw-offline-bundle.tar.gz user@offline-server:/tmp/
# 3. 解压并安装
ssh user@offline-server
cd /tmp && tar xzf openclaw-offline-bundle.tar.gz
# 安装主程序
tar xzf openclaw-linux-x64.tar.gz -C /usr/local/bin/
# 加载 Docker 镜像
docker load -i gateway-image.tar
docker load -i nginx-image.tar
# 安装 Skills
cp -r ./skills/* ~/.openclaw/workspace/skills/
# 4. 验证安装
openclaw --version
openclaw status
私有模型接入
私有模型接入
在内网环境中使用私有部署的大模型:
{
"models": {
"providers": [
{
"name": "private-llm",
"type": "openai-compatible",
"base_url": "http://10.0.2.50:8080/v1",
"api_key": "internal-key-not-needed",
"models": [
{
"id": "qwen2.5-72b",
"context_window": 131072,
"pricing": { "input": 0, "output": 0 }
},
{
"id": "deepseek-coder-33b",
"context_window": 32768,
"pricing": { "input": 0, "output": 0 }
}
]
},
{
"name": "ollama-local",
"type": "ollama",
"base_url": "http://localhost:11434",
"models": [
{
"id": "llama3:70b",
"context_window": 8192
},
{
"id": "codellama:34b",
"context_window": 16384
}
]
}
],
"default_model": "qwen2.5-72b",
"routing": {
"code_tasks": "deepseek-coder-33b",
"general": "qwen2.5-72b",
"fast_tasks": "llama3:70b"
}
}
}
[!TIP] 使用 vLLM 或 Ollama 部署私有模型时,确保提供 OpenAI 兼容的 API 接口,OpenClaw 可以无缝对接。
网络隔离方案
┌─────────────────────────────────────────────────────┐
│ 内网 (10.0.0.0/8) │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │
│ │ OpenClaw │────│ 私有 LLM │ │ 知识库服务 │ │
│ │ Gateway │ │ vLLM │ │ (Milvus) │ │
│ └────┬─────┘ └──────────┘ └──────────────┘ │
│ │ │
│ ┌────▼─────┐ │
│ │ 代理网关 │ ← 唯一的外网出口(可选,受控访问) │
│ └────┬─────┘ │
│ │ │
├───────┼─────────────────────────────────────────────┤
│ │ DMZ 区域 │
│ ┌────▼─────┐ │
│ │ 防火墙 │ ← 白名单 API 端点 │
│ └────┬─────┘ │
├───────┼─────────────────────────────────────────────┤
│ 外网
▼
api.openai.com (可选)
feishu.cn (可选)
{
"network": {
"mode": "isolated",
"proxy": {
"enabled": true,
"http_proxy": "http://proxy.internal:8888",
"https_proxy": "http://proxy.internal:8888",
"no_proxy": "10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,localhost"
},
"firewall_rules": {
"outbound_whitelist": [
"api.openai.com:443",
"open.feishu.cn:443",
"github.com:443"
],
"inbound": {
"allow": ["10.0.0.0/8"],
"deny": ["0.0.0.0/0"]
}
}
}
}
19.7 团队最佳实践
规范与标准
建立团队统一的 OpenClaw 使用规范:
# OpenClaw 团队使用规范 v1.0
## 1. 命名规范
- Agent 命名: `<团队>-<功能>`,如 `dev-reviewer`、`ops-monitor`
- Skill 命名: `<功能域>-<动作>`,如 `code-analyzer`、`doc-generator`
- 记忆命名: `YYYY-MM-DD-<主题>.md`,如 `2026-03-06-api-design.md`
## 2. 代码审查
- 所有自定义 Skill 必须经过至少一名开发者 Code Review
- Skill 中的 shell 命令必须使用白名单机制
- 禁止在 Skill 中硬编码敏感信息
## 3. 安全红线
- ❌ 禁止将 API Key 写入代码或配置文件(使用 credential 管理)
- ❌ 禁止 Agent 直接访问生产数据库
- ❌ 禁止关闭执行审批功能
- ✅ 所有外部 API 调用必须通过审批
- ✅ 定期审查审计日志(每周至少一次)
## 4. 成本管控
- 每人每日 Token 上限: 500,000
- 优先使用 GPT-4o-mini / DeepSeek-V3 处理简单任务
- 批量处理任务(如文档生成)安排在低峰时段
培训计划
| 阶段 | 时长 | 内容 | 目标人群 |
|---|---|---|---|
| L1: 入门 | 2 小时 | 基础概念、对话使用、常见问答 | 全员 |
| L2: 进阶 | 4 小时 | Skill 使用、知识库管理、飞书集成 | 技术团队 |
| L3: 高级 | 8 小时 | Skill 开发、Agent 配置、性能优化 | 核心开发者 |
| L4: 管理 | 4 小时 | 权限管理、安全审计、成本控制 | 管理员 |
# 培训环境快速搭建
#!/bin/bash
# setup-training-env.sh - 一键搭建培训环境
TRAINING_DIR="/tmp/openclaw-training"
mkdir -p "${TRAINING_DIR}"
# 创建培训用配置(独立于生产环境)
cat > "${TRAINING_DIR}/openclaw.json" << 'EOF'
{
"mode": "training",
"models": {
"default": "gpt-4o-mini",
"allowed": ["gpt-4o-mini"]
},
"budget": {
"total_tokens": 100000,
"warning_threshold": 0.8
},
"safety": {
"sandbox": true,
"allow_network": false,
"allow_file_write": false
}
}
EOF
echo "✅ 培训环境已准备就绪: ${TRAINING_DIR}"
echo " 模型: gpt-4o-mini(控制成本)"
echo " Token 限制: 100,000"
echo " 沙箱模式: 已启用"
团队入职清单
团队入职清单
新成员加入团队时的 OpenClaw 引导清单:
# 🚀 OpenClaw 团队入职清单
## 第一天:环境配置
- [ ] 获取 OpenClaw 访问凭证(联系管理员)
- [ ] 验证 Gateway 连接:运行 `openclaw status`
- [ ] 配置飞书集成(扫码绑定)
- [ ] 阅读团队使用规范文档
## 第一周:基础学习
- [ ] 完成 L1 入门培训
- [ ] 向 Agent 发送第一条消息并获得回复
- [ ] 浏览共享知识库,了解已有内容
- [ ] 创建第一条个人记忆
## 第二周:日常使用
- [ ] 使用 Agent 完成至少一个实际工作任务
- [ ] 向团队知识库贡献一篇文档
- [ ] 参与 L2 进阶培训(技术成员)
- [ ] 反馈使用体验和改进建议
## 第一月:常规运作
- [ ] 熟悉常用 Skills 列表和使用方法
- [ ] 了解审批流程和安全规范
- [ ] 制定个人 Agent 使用计划
- [ ] 分享一个使用 OpenClaw 的成功案例
[!NOTE] 建议管理员将入职清单配置为飞书机器人自动推送,新成员入职当天自动发送。
进阶:企业部署架构
企业级部署需要考虑高可用和多租户架构:
| 架构模式 | 说明 | 适用规模 |
|---|---|---|
| 单实例 | 一个 Gateway 服务所有团队 | <10 人 |
| 多实例 | 每个团队独立 Gateway | 10-100 人 |
| 集群化 | 负载均衡 + 共享存储 | 100+ 人 |
| 混合云 | 本地 + 云端协同 | 跨地域团队 |
选择架构时需平衡成本、复杂度和可靠性需求。
进阶:企业部署架构
企业级部署需考虑高可用和多租户架构:
| 架构模式 | 说明 | 适用规模 |
|---|---|---|
| 单实例 | 一个 Gateway 服务所有团队 | 10 人以下 |
| 多实例 | 每团队独立 Gateway | 10 到 100 人 |
| 集群化 | 负载均衡加共享存储 | 100 人以上 |
| 混合云 | 本地加云端协同 | 跨地域团队 |
实操练习
练习 1:权限配置
- 为你的 OpenClaw 实例创建一个用户配置文件: ```bash cat > ~/.openclaw/identity/users.json « ‘EOF’ { “users”: [ { “id”: “admin-01”, “name”: “管理员”, “role”: “admin” }, { “id”: “dev-01”, “name”: “开发者 A”, “role”: “developer” }, { “id”: “user-01”, “name”: “普通用户”, “role”: “user” }
] } EOF
2. 验证不同角色的权限差异。
3. 尝试为 `dev-01` 添加 `custom_permissions`,赋予额外的审批权限。
### 练习 2:备份恢复
1. 使用本章提供的备份脚本执行一次完整备份。
2. 检查备份文件的大小和内容:
```bash
ls -la /backup/openclaw/$(date +%Y%m%d)*/
cat /backup/openclaw/$(date +%Y%m%d)*/manifest.json
- 模拟灾难恢复:删除一个记忆文件,然后从备份中恢复它。
练习 3:团队规范制定
-
参考本章的规范模板,为你的团队编写一份 OpenClaw 使用规范。
-
创建一份团队入职清单,保存到知识库中。
-
设计一个审批工作流,覆盖你团队最常见的高风险操作场景。
练习 4:私有模型接入
- 使用 Ollama 在本地部署一个小模型:
```bash
安装 Ollama
curl -fsSL https://ollama.com/install.sh | sh
拉取模型
ollama pull llama3:8b
验证模型可用
ollama run llama3:8b “你好,请自我介绍” ```
-
配置 OpenClaw 连接本地 Ollama 模型。
-
对比本地模型和云端模型在响应速度和质量方面的差异。
常见问题 (FAQ)
Q: 本章内容是否需要前置知识?
A: 建议先完成前面的章节,确保理解 OpenClaw 的基础概念和安装方式。
Q: 遇到命令执行错误怎么办?
A: 请检查 OpenClaw 是否正确安装,运行 openclaw --version 确认版本。如问题持续,请参考故障排查章节或提交 GitHub Issue。
Q: 如何获取更多帮助?
A: 可以通过以下渠道获取帮助:
- OpenClaw GitHub Issues
- ClawHub 社区讨论
- 官方文档 FAQ 页面
参考来源
| 来源 | 链接 | 说明 |
|---|---|---|
| OpenClaw 官方文档 | https://docs.OpenClaw.ai | 官方安装与配置手册 |
| OpenClaw GitHub | https://github.com/OpenClaw/OpenClaw | 源码与 Issue 追踪 |
| ClawHub 平台 | https://hub.OpenClaw.ai | Skills 市场与文档 |
本章小结
- 团队模式:共享模式(简单快速)、个人模式(隔离安全)、混合模式(灵活均衡),根据团队规模和安全需求选择合适的部署模式。
- 权限管理:基于 RBAC 模型的五级角色体系,支持自定义权限和限制,确保不同角色获得恰当的访问权限。
- 知识库管理:三级知识库架构(全局/团队/个人),支持 Git 同步、文件监听和 API 推送等多种同步策略。
- 审批工作流:按风险等级定义审批场景,支持多级审批链和超时自动处理,完整的审批记录满足审计需求。
- 安全合规:数据加密(静态 + 传输)、数据分类标记、PII 检测、审计日志导出到 SIEM,满足企业级安全要求。
- 私有化部署:支持全离线安装、私有模型接入(vLLM/Ollama)和网络隔离方案,适应内网环境。
- 最佳实践:统一命名规范、分级培训计划和标准化入职流程,帮助团队快速建立 AI Agent 协作文化。