Files
multiAgentTry/CLAUDE.md

398 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## 项目概述
**Swarm Command Center** 是一个多智能体协作系统,支持 Claude Code、Kimi CLI、OpenCode 等多种 AI CLI 工具的协同工作。
**当前状态**:前端 UI 已完成,后端协调引擎已完整实现并通过测试。
## 开发命令
### 前端React 18 + TypeScript + Vite + Tailwind CSS v4
```bash
cd frontend
npm install # 安装依赖
npm run dev # 启动开发服务器(端口 3000
npm run build # 构建生产版本tsc && vite build
npm run preview # 预览生产构建
npm run lint # ESLint 代码检查
npm run test # 运行 Playwright E2E 测试
npm run test:ui # 运行 Playwright 测试UI 模式)
```
**前端页面**
- [DashboardPage.tsx](frontend/src/pages/DashboardPage.tsx) - 仪表盘概览、Agent 状态、最近会议)
- [AgentsPage.tsx](frontend/src/pages/AgentsPage.tsx) - Agent 管理
- [MeetingsPage.tsx](frontend/src/pages/MeetingsPage.tsx) - 会议管理
- [ResourcesPage.tsx](frontend/src/pages/ResourcesPage.tsx) - 资源监控
- [WorkflowPage.tsx](frontend/src/pages/WorkflowPage.tsx) - 工作流
- [SettingsPage.tsx](frontend/src/pages/SettingsPage.tsx) - 配置
**前端 API 层**
- [api.ts](frontend/src/lib/api.ts) - 封装所有后端 API 调用
### 后端Python + FastAPI
```bash
cd backend
python -m venv venv
# Windows:
venv\Scripts\activate
# Linux/Mac:
source venv/bin/activate
pip install -r requirements.txt
# 启动服务
python -m uvicorn main:app --reload --port 8000
# 或直接运行
python -m app.main
# 运行所有服务测试
python test_all_services.py
# 运行 API 集成测试
python test_api_integration.py
```
**后端 CLI 命令**(在 `backend/` 目录下执行):
```bash
# Agent 管理
python cli.py agent list # 列出所有 Agent
python cli.py agent register <id> --name <名称> --role <角色> --model <模型>
python cli.py agent info <id> # 查看 Agent 详情
python cli.py agent state <id> get # 获取 Agent 状态
python cli.py agent state <id> set --task <任务> --progress <进度>
# 文件锁
python cli.py lock status # 查看所有锁
python cli.py lock acquire <file_path> <agent_id> # 获取锁
python cli.py lock release <file_path> <agent_id> # 释放锁
python cli.py lock check <file_path> # 检查文件是否被锁定
# 心跳
python cli.py heartbeat list # 查看所有心跳
python cli.py heartbeat ping <agent_id> --status <状态> --task <任务> --progress <进度>
python cli.py heartbeat check-timeout <秒数> # 检查超时的 Agent
# 会议调度(栅栏同步)
python cli.py meeting create <id> --title <标题> --attendees <id1,id2,...>
python cli.py meeting wait <meeting_id> --agent <agent_id> # 栅栏同步等待(阻塞)
python cli.py meeting queue <meeting_id> # 查看等待队列
python cli.py meeting end <meeting_id> # 结束会议
# 会议记录
python cli.py meeting record-create <id> --title <标题> --attendees <ids> --steps <步骤>
python cli.py meeting discuss <id> --agent <agent_id> --content <内容> --step <步骤>
python cli.py meeting progress <id> <步骤> # 更新会议进度
python cli.py meeting show <id> [--date <日期>] # 显示会议详情
python cli.py meeting list [--date <日期>] # 列出会议
python cli.py meeting finish <id> --consensus <共识> # 完成会议
# 工作流
python cli.py workflow show <path> # 显示工作流详情
python cli.py workflow load <path> # 加载工作流
python cli.py workflow next <workflow_id> # 获取下一个会议
python cli.py workflow status <workflow_id> # 获取工作流状态
python cli.py workflow complete <workflow_id> <meeting_id> # 标记会议完成
python cli.py workflow list-files # 列出可用工作流文件
python cli.py workflow detail <workflow_id> # 获取工作流详细信息
python cli.py workflow execution-status <workflow_id> <meeting_id> # 获取执行节点状态
# 角色分配
python cli.py role allocate <任务描述> <agent1,agent2,...> # AI 分配角色
python cli.py role primary <任务描述> # 获取主要角色
python cli.py role explain <任务描述> <agents> # 解释角色分配原因
# 人类输入
python cli.py human register <user_id> --name <名称> --role <角色>
python cli.py human add-task <内容> --from <用户> --priority <优先级>
python cli.py human pending-tasks # 查看待处理任务
python cli.py human urgent-tasks # 查看紧急任务
```
## 系统架构
### 四层架构
```
┌─────────────────────────────────────────┐
│ 用户界面层 (React SPA) │
│ - DashboardPage 仪表盘 │
│ - AgentsPage Agent 管理 │
│ - MeetingsPage 会议管理 │
│ - ResourcesPage 资源监控 │
│ - WorkflowPage 工作流 │
│ - SettingsPage 配置 │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ 协调层 (Python FastAPI) │
│ - WorkflowEngine 工作流编排 │
│ - MeetingScheduler 栅栏同步 │
│ - MeetingRecorder 会议记录 │
│ - ResourceManager 资源管理 │
│ - FileLockService 文件锁 │
│ - HeartbeatService 心跳检测 │
│ - AgentRegistry Agent 注册 │
│ - RoleAllocator AI 角色分配 │
│ - WorkflowOrchestrator 自动工作流驱动 │
│ - CLIInvoker CLI 工具调用 │
│ - LLMService LLM API 路由 │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ Agent 适配层 │
│ - CLIPluginAdapter 统一接口 │
│ - ClaudeCode / KimiCLI / OpenCode │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ 模型层 (Anthropic / OpenAI / Ollama) │
└─────────────────────────────────────────┘
```
### 共享存储结构 (`.doc/`)
```
.doc/
├── agents/ # Agent 注册与状态
│ └── {agent_id}/
│ ├── info.json
│ └── state.json
├── meetings/ # 会议记录与共识
│ └── {YYYY-MM-DD}/
│ ├── {meeting_id}.json
│ └── {meeting_id}.md
├── resources/ # 资源分配
├── cache/ # 实时缓存
│ ├── file_locks.json
│ ├── heartbeats.json
│ └── meeting_queue.json
├── workflow/ # 工作流定义 (YAML)
└── humans.json # 人类参与者输入
```
## 核心设计模式
### 1. 声明式资源管理
Agent 只需声明任务意图,系统通过 `TaskExecutor` 自动管理文件锁:
```python
# Agent 代码 - 无需手动处理锁
result = executor.execute("修改 src/main.py 修复登录 bug")
# 内部自动: 1)解析文件 2)获取锁 3)执行 4)释放锁
```
### 2. 栅栏同步(会议驱动)
```python
# Agent 调用 wait_for_meeting 进入等待
status = scheduler.wait_for_meeting(agent_id, meeting_id)
# 最后一个到达的 Agent 触发会议开始,所有等待者返回
```
### 3. 角色权重系统
| 角色 | 权重 | 职责 |
|------|------|------|
| pm | 1.5 | 需求分析、优先级排序 |
| architect | 1.5 | 系统设计、技术选型 |
| reviewer | 1.3 | 代码审查、安全检查 |
| qa | 1.2 | 测试用例、自动化测试 |
| developer | 1.0 | 编码实现 |
### 4. AI Provider 系统
支持多种 AI 调用方式(优先级从高到低):
1. **CLI 工具**(本地安装):
- `claude` - Claude Code CLI
- `kimi` - Kimi CLI
- `opencode` - OpenCode CLI
2. **LLM API**(环境变量配置):
- `ANTHROPIC_API_KEY` - Claude API
- `OPENAI_API_KEY` - OpenAI API
- `DEEPSEEK_API_KEY` - DeepSeek API
- `GOOGLE_API_KEY` - Google Gemini API
CLI 调用实现见 [cli_invoker.py](backend/app/services/cli_invoker.py)Provider API 见 [providers.py](backend/app/routers/providers.py)。
### 5. 工作流自动编排
[WorkflowOrchestrator](backend/app/services/workflow_orchestrator.py) 自动驱动工作流执行:
```python
# 启动自动编排
orchestrator = get_workflow_orchestrator()
run = await orchestrator.start_workflow("dinner-decision.yaml")
# 编排器自动:
# 1. 加载工作流定义
# 2. 逐个节点执行meeting/execution
# 3. 调用 Agent 对应的 CLI/API 生成发言
# 4. 记录讨论内容
# 5. 生成会议共识
# 6. 流转到下一个节点
```
API 端点:
- `POST /api/orchestrator/start` - 启动工作流编排
- `GET /api/orchestrator/runs` - 列出所有运行
- `GET /api/orchestrator/runs/{run_id}` - 获取运行详情
## 前端样式系统
### 颜色体系
- 主色Cyan `#00f0ff`
- 辅助Purple `#8b5cf6`
- 成功Green `#00ff9d`
- 警告Amber `#ff9500`
- 错误Pink `#ff006e`
- 背景Dark `#0a0a0a` / `#111111`
### 字体
- 标题Orbitron未来感
- 中文Noto Sans SC
- 代码JetBrains Mono
### 动画效果
- Agent 卡片呼吸光晕动画3s infinite
- 状态指示器:脉动效果
- 边框:渐变发光
## 后端服务架构
### 服务层(`backend/app/services/`
| 服务 | 文件 | 职责 |
|------|------|------|
| StorageService | [storage.py](backend/app/services/storage.py) | 统一文件存储JSON读写、存在检查 |
| FileLockService | [file_lock.py](backend/app/services/file_lock.py) | 文件锁管理(获取、释放、超时检测) |
| HeartbeatService | [heartbeat.py](backend/app/services/heartbeat.py) | Agent 心跳检测与活跃状态 |
| AgentRegistry | [agent_registry.py](backend/app/services/agent_registry.py) | Agent 注册、状态管理 |
| MeetingScheduler | [meeting_scheduler.py](backend/app/services/meeting_scheduler.py) | 栅栏同步、会议等待队列 |
| MeetingRecorder | [meeting_recorder.py](backend/app/services/meeting_recorder.py) | 会议记录、讨论、共识 |
| ResourceManager | [resource_manager.py](backend/app/services/resource_manager.py) | 资源协调、任务执行 |
| WorkflowEngine | [workflow_engine.py](backend/app/services/workflow_engine.py) | YAML 工作流加载与执行 |
| WorkflowOrchestrator | [workflow_orchestrator.py](backend/app/services/workflow_orchestrator.py) | 自动驱动工作流执行 |
| RoleAllocator | [role_allocator.py](backend/app/services/role_allocator.py) | AI 驱动的角色分配 |
| HumanInputService | [human_input.py](backend/app/services/human_input.py) | 人类参与者输入管理 |
| CLIInvoker | [cli_invoker.py](backend/app/services/cli_invoker.py) | 调用本地 CLI 工具 |
| LLMService | [llm_service.py](backend/app/services/llm_service.py) | LLM API 路由与调用 |
### 路由层(`backend/app/routers/`
- [agents.py](backend/app/routers/agents.py) - Agent 管理 API
- [agents_control.py](backend/app/routers/agents_control.py) - Agent 控制 API启动/停止)
- [locks.py](backend/app/routers/locks.py) - 文件锁 API
- [meetings.py](backend/app/routers/meetings.py) - 会议 API
- [heartbeats.py](backend/app/routers/heartbeats.py) - 心跳 API
- [workflows.py](backend/app/routers/workflows.py) - 工作流 API
- [resources.py](backend/app/routers/resources.py) - 资源 API
- [roles.py](backend/app/routers/roles.py) - 角色 API
- [humans.py](backend/app/routers/humans.py) - 人类输入 API
- [websocket.py](backend/app/routers/websocket.py) - WebSocket 实时通信
- [orchestrator.py](backend/app/routers/orchestrator.py) - 工作流编排 API
- [providers.py](backend/app/routers/providers.py) - AI Provider 查询 API
## API 接口
- **基础地址**: `http://localhost:8000/api`
- **健康检查**: `GET /health``GET /api/health`
**主要端点**:
- `GET /api/agents` - Agent 列表
- `GET /api/locks` - 文件锁状态
- `GET /api/heartbeats` - 心跳状态
- `GET /api/providers` - 可用 AI ProviderCLI + API
- `GET /api/providers/models` - 可用模型列表
- `POST /api/meetings/create` - 创建会议
- `GET /api/meetings/:id` - 会议详情
- `POST /api/workflows/load` - 加载工作流
- `POST /api/orchestrator/start` - 启动自动工作流编排
- `GET /api/orchestrator/runs/:id` - 获取编排运行状态
详见 `docs/api-reference.md`
## 文档索引
- `docs/design-spec.md` - 完整系统设计文档
- `docs/api-reference.md` - API 接口文档
- `docs/backend-steps.md` - 后端开发步骤
- `docs/frontend-steps.md` - 前端开发步骤
- `docs/reference-projects.md` - 参考项目
## 测试
### 后端测试
运行完整的服务测试套件:
```bash
cd backend
python test_all_services.py
```
这会测试所有 9 个核心服务:
- StorageService - 文件读写
- FileLockService - 文件锁
- HeartbeatService - 心跳
- AgentRegistry - Agent 注册
- MeetingScheduler - 会议调度(栅栏同步)
- MeetingRecorder - 会议记录
- ResourceManager - 资源管理
- WorkflowEngine - 工作流引擎
- RoleAllocator - 角色分配
运行 API 集成测试:
```bash
cd backend
python test_api_integration.py
```
### 前端测试
Playwright E2E 测试配置在 [playwright.config.ts](frontend/playwright.config.ts)
```bash
cd frontend
npm run test # 运行测试headless
npm run test:ui # 运行测试UI 模式)
```
测试文件位于 `frontend/tests/` 目录。
## 开发提示
### Windows 环境注意事项
- 使用 `venv\Scripts\activate` 激活 Python 虚拟环境
- 路径使用正斜杠 `/` 或双反斜杠 `\\`
- 使用 PowerShell 或 Git Bash 执行 shell 命令
### 单例服务
所有后端服务通过单例模式获取:
```python
from app.services.storage import get_storage
from app.services.file_lock import get_file_lock_service
from app.services.workflow_orchestrator import get_workflow_orchestrator
# ...
storage = get_storage() # 自动初始化并缓存
```
### 添加新的 AI Provider
1. **CLI 工具**:在 [cli_invoker.py](backend/app/services/cli_invoker.py) 的 `CLI_REGISTRY` 中添加映射
2. **API Provider**:在 [providers.py](backend/app/routers/providers.py) 的 `API_PROVIDERS` 中添加配置
3. **模型映射**:在 `_build_command()` 中实现 CLI 特定的参数构造