# 🚀 Open-Claw-Team-Superpowers

**Open-Claw-Team-Superpowers** là sự kết hợp sức mạnh điều phối của **OpenClaw**, khả năng làm việc bầy đàn (Swarm) của **ClawTeam**, và bộ skills, tri thức lập trình chuyên sâu từ **Superpowers**. 

Đã được tinh chỉnh để ngăn chặn deadlock và sẵn sàng cho các task lập trình phức tạp.

---

## 🏗️ Kiến trúc Hệ thống (Architecture)

Hệ thống chạy trên **Docker** với 2 dịch vụ cốt lõi:
1.  **Gateway (`openclaw-gateway`)**: Trái tim xử lý API, Web UI và quản lý các luồng kết nối LLM (Claude, GPT, Gemini).
2.  **CLI/Bastion (`openclaw-cli`)**: Trạm điều khiển cho phép kỹ sư truy cập trực tiếp (interactive shell) để điều phối ClawTeam và Superpowers thủ công.

Cả hai container dùng chung một image `openclaw-clawteam:latest` được build từ `Dockerfile` của dự án.

---

## 🛠️ Hướng dẫn Cài đặt (Installation)

### 1. Yêu cầu hệ thống

- **Docker Engine** >= 24.x
- **Docker Compose** >= v2.x (`docker compose` — không phải `docker-compose`)
- Quyền truy cập vào Git repository nội bộ

### 2. Clone dự án

```bash
git clone https://git.smartgift.io.vn/smartgift/open-claw-team.git open-claw-team
cd open-claw-team
```

### 3. Cấu hình biến môi trường

Mở và chỉnh sửa file `.env`:

```bash
cp .env.example .env
vi .env
```

Các biến quan trọng cần chú ý:

| Biến | Mặc định | Mô tả |
|------|----------|-------|
| `OPENCLAW_GATEWAY_TOKEN` | `team-token` | ⚠️ Token xác thực WebSocket & Web UI — **bắt buộc đổi trên production** |
| `OPENCLAW_GATEWAY_BIND` | `lan` | Bind mode: `loopback` \| `lan` \| `tailnet`. Dùng `lan` khi chạy Docker |
| `OPENCLAW_GATEWAY_PORT` | `18789` | Port WebSocket Gateway |
| `OPENCLAW_BRIDGE_PORT` | `18889` | Port Bridge / Node-to-node |
| `CLAUDE_AI_SESSION_KEY` | _(trống)_ | Session key từ claude.ai (cần ít nhất 1 key) |
| `CLAUDE_WEB_SESSION_KEY` | _(trống)_ | Session key thay thế |
| `CLAUDE_WEB_COOKIE` | _(trống)_ | Cookie raw nếu dùng Web API |
| `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS` | _(trống)_ | Đặt `1` để cho phép WS không mã hoá trên mạng nội bộ |
| `OPENCLAW_TZ` | `Asia/Ho_Chi_Minh` | Timezone container |

> **Lấy Claude session keys:** Mở https://claude.ai trên trình duyệt → F12 → tab **Application** → **Cookies** hoặc **Session Storage**.

---

## 🐳 Hướng dẫn Sử dụng Docker

### Build & Khởi động

```bash
# Lần đầu: build image và start toàn bộ stack
docker compose up -d --build

# Các lần sau (đã có image): start nhanh
docker compose up -d
```

### Xem logs

```bash
# Log riêng Gateway
docker compose logs -f openclaw-gateway

# Log riêng CLI (thường ít output)
docker compose logs -f openclaw-cli
```

### Truy cập CLI (Bastion Shell)

Container `openclaw-cli` là môi trường interactive để thao tác trực tiếp với OpenClaw:

```bash
# Mở bash shell vào CLI container
docker compose exec openclaw-cli bash

# Chạy lệnh openclaw trực tiếp từ host
docker compose exec openclaw-cli openclaw --help
docker compose exec openclaw-cli openclaw status

# Kiểm tra version OpenClaw đang dùng
docker compose exec openclaw-cli openclaw --version
```

## ⚙️ Cấu trúc Volumes & Dữ liệu

| Host Path (mặc định) | Mount trong container | Mục đích |
|----------------------|-----------------------|----------|
| `./.openclaw` | `/home/node/.openclaw` | Config, credentials OpenClaw |
| `./.openclaw/workspace` | `/home/node/.openclaw/workspace` | Workspace làm việc của agents |

> Thư mục `.openclaw/` được tạo tự động khi gateway khởi động lần đầu. Tất cả cấu hình (token, origins, …) lưu tại đây và **persist qua các lần restart**.

---

## 🌐 Cổng kết nối (Ports)

| Port | Biến | Mô tả |
|------|------|-------|
| `18789` | `OPENCLAW_GATEWAY_PORT` | WebSocket Gateway + **Web Control UI** |
| `18889` | `OPENCLAW_BRIDGE_PORT` | Bridge / Node-to-node communication |

Sau khi khởi động, mở trình duyệt:

```
http://localhost:18789
```

Đăng nhập bằng giá trị `OPENCLAW_GATEWAY_TOKEN` trong `.env`.


## 🔧 Troubleshooting

### Gateway không start — lỗi "non-loopback Control UI"

Nguyên nhân: `OPENCLAW_GATEWAY_BIND` đang là `loopback`, không tương thích với Docker port mapping.

**Sửa:**

```env
# .env
OPENCLAW_GATEWAY_BIND=lan
```

### Lỗi WebSocket kết nối qua mạng nội bộ

```env
# .env
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1
```

---

## 📁 Cấu trúc Dự án

```
open-claw-team/
├── Dockerfile                  # Image: Node 24 + OpenClaw + ClawTeam + Superpowers
├── docker-compose.yml          # 2 services: openclaw-gateway + openclaw-cli
├── .env                        # Biến môi trường (⚠️ KHÔNG commit lên Git)
├── .gitignore
└── .openclaw/                  # Auto-generated — gitignored
    ├── openclaw.json           # Config gateway (sau lần setup đầu)
    └── workspace/              # Workspace của agents
```
