2026-03-14 19:59:37 +08:00
|
|
|
|
# PitChat(智队)
|
2026-03-14 19:42:59 +08:00
|
|
|
|
|
2026-03-14 19:59:37 +08:00
|
|
|
|
> PIT 用户交互层应用 - Personal Intelligent Team Client
|
|
|
|
|
|
|
|
|
|
|
|
**英文名**:PitChat
|
|
|
|
|
|
**中文名**:智队
|
2026-03-14 19:44:13 +08:00
|
|
|
|
|
|
|
|
|
|
## 项目概述
|
|
|
|
|
|
|
2026-03-14 19:59:37 +08:00
|
|
|
|
PitChat(智队)是 PIT(Personal Intelligent Team)系统的用户交互层应用,提供桌面、Web 和移动端多种访问方式,让用户能够与智能体团队进行交互。
|
2026-03-14 19:44:13 +08:00
|
|
|
|
|
|
|
|
|
|
### 核心目标
|
|
|
|
|
|
|
|
|
|
|
|
- 提供统一的用户界面
|
|
|
|
|
|
- 支持 WebSocket 实时通信
|
|
|
|
|
|
- 多平台支持(桌面/Web/移动端)
|
|
|
|
|
|
- 会话管理与历史记录
|
|
|
|
|
|
- Agent 选择与切换
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 技术栈
|
|
|
|
|
|
|
|
|
|
|
|
### 桌面应用 (Electron)
|
|
|
|
|
|
|
|
|
|
|
|
| 技术 | 版本 | 说明 |
|
|
|
|
|
|
|------|------|------|
|
|
|
|
|
|
| Electron | 28+ | 跨平台桌面应用框架 |
|
|
|
|
|
|
| React | 18+ | UI 组件库 |
|
|
|
|
|
|
| TypeScript | 5+ | 类型安全 |
|
|
|
|
|
|
| Tailwind CSS | 3+ | 样式框架 |
|
|
|
|
|
|
| Socket.IO Client | 4+ | WebSocket 客户端 |
|
|
|
|
|
|
|
|
|
|
|
|
### Web 应用 (React)
|
|
|
|
|
|
|
|
|
|
|
|
| 技术 | 版本 | 说明 |
|
|
|
|
|
|
|------|------|------|
|
|
|
|
|
|
| React | 18+ | UI 框架 |
|
|
|
|
|
|
| Vite | 5+ | 构建工具 |
|
|
|
|
|
|
| TypeScript | 5+ | 类型安全 |
|
|
|
|
|
|
| Tailwind CSS | 3+ | 样式框架 |
|
|
|
|
|
|
| Socket.IO Client | 4+ | WebSocket 客户端 |
|
|
|
|
|
|
|
|
|
|
|
|
### 移动应用 (React Native)
|
|
|
|
|
|
|
|
|
|
|
|
| 技术 | 版本 | 说明 |
|
|
|
|
|
|
|------|------|------|
|
|
|
|
|
|
| React Native | 0.73+ | 跨平台移动应用框架 |
|
|
|
|
|
|
| TypeScript | 5+ | 类型安全 |
|
|
|
|
|
|
| Socket.IO Client | 4+ | WebSocket 客户端 |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 系统架构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
|
|
|
|
│ 用户交互层 (Clients) │
|
|
|
|
|
|
│ │
|
|
|
|
|
|
│ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │
|
|
|
|
|
|
│ │ Windows 桌面 │ │ Android App │ │ Web UI │ │
|
|
|
|
|
|
│ │ Electron │ │ React Native │ │ React + Vite │ │
|
|
|
|
|
|
│ └───────┬───────┘ └───────┬───────┘ └───────┬───────┘ │
|
|
|
|
|
|
│ │ │ │ │
|
|
|
|
|
|
│ ┌───────┴──────────────────┴──────────────────┴───────┐ │
|
|
|
|
|
|
│ │ 共享核心模块 │ │
|
|
|
|
|
|
│ │ - WebSocket 连接管理 │ │
|
|
|
|
|
|
│ │ - 会话状态管理 │ │
|
|
|
|
|
|
│ │ - 消息渲染组件 │ │
|
|
|
|
|
|
│ │ - 用户认证 │ │
|
|
|
|
|
|
│ └──────────────────────────────────────────────────────┘ │
|
|
|
|
|
|
└─────────────────────────────────────────────────────────────────────────────┘
|
|
|
|
|
|
│
|
|
|
|
|
|
│ WebSocket / HTTP
|
|
|
|
|
|
▼
|
|
|
|
|
|
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
|
|
|
|
│ PIT 网关路由应用 (Gateway Router) │
|
|
|
|
|
|
│ http://1.14.58.157:9000 │
|
|
|
|
|
|
└─────────────────────────────────────────────────────────────────────────────┘
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 项目结构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
pit-client/
|
|
|
|
|
|
├── packages/
|
|
|
|
|
|
│ ├── core/ # 共享核心模块
|
|
|
|
|
|
│ │ ├── src/
|
|
|
|
|
|
│ │ │ ├── api/ # API 客户端
|
|
|
|
|
|
│ │ │ │ ├── auth.ts # 认证 API
|
|
|
|
|
|
│ │ │ │ ├── sessions.ts # 会话 API
|
|
|
|
|
|
│ │ │ │ └── agents.ts # Agent API
|
|
|
|
|
|
│ │ │ ├── socket/ # WebSocket 管理
|
|
|
|
|
|
│ │ │ │ ├── client.ts # Socket.IO 客户端
|
|
|
|
|
|
│ │ │ │ └── events.ts # 事件定义
|
|
|
|
|
|
│ │ │ ├── store/ # 状态管理
|
|
|
|
|
|
│ │ │ │ ├── session.ts # 会话状态
|
|
|
|
|
|
│ │ │ │ ├── user.ts # 用户状态
|
|
|
|
|
|
│ │ │ │ └── agent.ts # Agent 状态
|
|
|
|
|
|
│ │ │ ├── types/ # 类型定义
|
|
|
|
|
|
│ │ │ └── utils/ # 工具函数
|
|
|
|
|
|
│ │ └── package.json
|
|
|
|
|
|
│ │
|
|
|
|
|
|
│ ├── desktop/ # Electron 桌面应用
|
|
|
|
|
|
│ │ ├── src/
|
|
|
|
|
|
│ │ │ ├── main/ # 主进程
|
|
|
|
|
|
│ │ │ │ └── index.ts
|
|
|
|
|
|
│ │ │ ├── renderer/ # 渲染进程
|
|
|
|
|
|
│ │ │ │ ├── App.tsx
|
|
|
|
|
|
│ │ │ │ ├── pages/
|
|
|
|
|
|
│ │ │ │ └── components/
|
|
|
|
|
|
│ │ │ └── preload/ # 预加载脚本
|
|
|
|
|
|
│ │ ├── electron-builder.json
|
|
|
|
|
|
│ │ └── package.json
|
|
|
|
|
|
│ │
|
|
|
|
|
|
│ ├── web/ # Web 应用
|
|
|
|
|
|
│ │ ├── src/
|
|
|
|
|
|
│ │ │ ├── App.tsx
|
|
|
|
|
|
│ │ │ ├── pages/
|
|
|
|
|
|
│ │ │ │ ├── Login.tsx
|
|
|
|
|
|
│ │ │ │ ├── Chat.tsx
|
|
|
|
|
|
│ │ │ │ └── Settings.tsx
|
|
|
|
|
|
│ │ │ ├── components/
|
|
|
|
|
|
│ │ │ │ ├── MessageList.tsx
|
|
|
|
|
|
│ │ │ │ ├── MessageInput.tsx
|
|
|
|
|
|
│ │ │ │ ├── AgentSelector.tsx
|
|
|
|
|
|
│ │ │ │ └── SessionList.tsx
|
|
|
|
|
|
│ │ │ └── main.tsx
|
|
|
|
|
|
│ │ ├── vite.config.ts
|
|
|
|
|
|
│ │ └── package.json
|
|
|
|
|
|
│ │
|
|
|
|
|
|
│ └── mobile/ # React Native 移动应用
|
|
|
|
|
|
│ ├── src/
|
|
|
|
|
|
│ │ ├── App.tsx
|
|
|
|
|
|
│ │ ├── screens/
|
|
|
|
|
|
│ │ └── components/
|
|
|
|
|
|
│ └── package.json
|
|
|
|
|
|
│
|
|
|
|
|
|
├── package.json # Monorepo 根配置
|
|
|
|
|
|
├── pnpm-workspace.yaml # pnpm 工作空间
|
|
|
|
|
|
├── tsconfig.json # TypeScript 配置
|
|
|
|
|
|
└── README.md
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 核心功能
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 用户认证
|
|
|
|
|
|
|
|
|
|
|
|
- 登录/注册
|
|
|
|
|
|
- JWT Token 管理
|
|
|
|
|
|
- 自动刷新 Token
|
|
|
|
|
|
- 登出
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 会话管理
|
|
|
|
|
|
|
|
|
|
|
|
- 创建新会话
|
|
|
|
|
|
- 查看会话列表
|
|
|
|
|
|
- 切换会话
|
|
|
|
|
|
- 关闭会话
|
|
|
|
|
|
- 会话历史记录
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 消息交互
|
|
|
|
|
|
|
|
|
|
|
|
- 发送文本消息
|
|
|
|
|
|
- 接收实时消息
|
|
|
|
|
|
- 流式消息显示
|
|
|
|
|
|
- 消息历史加载
|
|
|
|
|
|
- 附件发送(图片、文件)
|
|
|
|
|
|
|
|
|
|
|
|
### 4. Agent 管理
|
|
|
|
|
|
|
|
|
|
|
|
- 查看 Agent 列表
|
|
|
|
|
|
- 选择指定 Agent
|
|
|
|
|
|
- 查看 Agent 状态
|
|
|
|
|
|
- Agent 信息展示
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## API 客户端
|
|
|
|
|
|
|
|
|
|
|
|
### 认证 API
|
|
|
|
|
|
|
|
|
|
|
|
```typescript
|
|
|
|
|
|
// 登录
|
|
|
|
|
|
POST /api/auth/login
|
|
|
|
|
|
Body: { username, password }
|
|
|
|
|
|
Response: { token, user }
|
|
|
|
|
|
|
|
|
|
|
|
// 注册
|
|
|
|
|
|
POST /api/auth/register
|
|
|
|
|
|
Body: { username, password, email }
|
|
|
|
|
|
Response: { token, user }
|
|
|
|
|
|
|
|
|
|
|
|
// 获取当前用户
|
|
|
|
|
|
GET /api/auth/me
|
|
|
|
|
|
Header: Authorization: Bearer <token>
|
|
|
|
|
|
Response: { user }
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 会话 API
|
|
|
|
|
|
|
|
|
|
|
|
```typescript
|
|
|
|
|
|
// 获取会话列表
|
|
|
|
|
|
GET /api/sessions
|
|
|
|
|
|
Response: { sessions[] }
|
|
|
|
|
|
|
|
|
|
|
|
// 创建会话
|
|
|
|
|
|
POST /api/sessions
|
|
|
|
|
|
Body: { agent_id?, title? }
|
|
|
|
|
|
Response: { session }
|
|
|
|
|
|
|
|
|
|
|
|
// 获取会话详情
|
|
|
|
|
|
GET /api/sessions/:id
|
|
|
|
|
|
Response: { session, messages[] }
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## WebSocket 事件
|
|
|
|
|
|
|
|
|
|
|
|
### 客户端发送
|
|
|
|
|
|
|
|
|
|
|
|
```typescript
|
|
|
|
|
|
// 创建会话
|
|
|
|
|
|
socket.emit('session.create', { agent_id?, title? })
|
|
|
|
|
|
|
|
|
|
|
|
// 加入会话
|
|
|
|
|
|
socket.emit('session.join', { session_id })
|
|
|
|
|
|
|
|
|
|
|
|
// 发送消息
|
|
|
|
|
|
socket.emit('message.send', { session_id, content })
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 服务端推送
|
|
|
|
|
|
|
|
|
|
|
|
```typescript
|
|
|
|
|
|
// 连接成功
|
|
|
|
|
|
socket.on('connected', { user_id })
|
|
|
|
|
|
|
|
|
|
|
|
// 会话创建成功
|
|
|
|
|
|
socket.on('session.created', { session })
|
|
|
|
|
|
|
|
|
|
|
|
// 收到消息
|
|
|
|
|
|
socket.on('message', { session_id, message })
|
|
|
|
|
|
|
|
|
|
|
|
// 错误通知
|
|
|
|
|
|
socket.on('error', { code, message })
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 开发指南
|
|
|
|
|
|
|
|
|
|
|
|
### 环境要求
|
|
|
|
|
|
|
|
|
|
|
|
- Node.js 18+
|
|
|
|
|
|
- pnpm 8+
|
|
|
|
|
|
- Electron (桌面应用)
|
|
|
|
|
|
|
|
|
|
|
|
### 安装依赖
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 安装所有依赖
|
|
|
|
|
|
pnpm install
|
|
|
|
|
|
|
|
|
|
|
|
# 只安装 core
|
|
|
|
|
|
pnpm install --filter @pit/core
|
|
|
|
|
|
|
|
|
|
|
|
# 只安装 web
|
|
|
|
|
|
pnpm install --filter @pit/web
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 开发模式
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 启动 Web 应用
|
|
|
|
|
|
pnpm --filter @pit/web dev
|
|
|
|
|
|
|
|
|
|
|
|
# 启动桌面应用
|
|
|
|
|
|
pnpm --filter @pit/desktop dev
|
|
|
|
|
|
|
|
|
|
|
|
# 启动移动应用
|
|
|
|
|
|
pnpm --filter @pit/mobile start
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 构建发布
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 构建 Web 应用
|
|
|
|
|
|
pnpm --filter @pit/web build
|
|
|
|
|
|
|
|
|
|
|
|
# 构建桌面应用
|
|
|
|
|
|
pnpm --filter @pit/desktop build
|
|
|
|
|
|
|
|
|
|
|
|
# 构建移动应用
|
|
|
|
|
|
pnpm --filter @pit/mobile build
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 界面设计
|
|
|
|
|
|
|
|
|
|
|
|
### 主界面布局
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
|
|
|
|
│ PIT Client ─ □ × [用户头像] │
|
|
|
|
|
|
├──────────────┬──────────────────────────────────────────────────┤
|
|
|
|
|
|
│ │ │
|
|
|
|
|
|
│ 会话列表 │ 消息区域 │
|
|
|
|
|
|
│ │ │
|
|
|
|
|
|
│ ┌────────┐ │ ┌────────────────────────────────────────────┐ │
|
|
|
|
|
|
│ │ 会话1 │ │ │ Agent: 小白 │ │
|
|
|
|
|
|
│ │ 会话2 │ │ │ ───────────────────────────────────────── │ │
|
|
|
|
|
|
│ │ 会话3 │ │ │ │ │
|
|
|
|
|
|
│ └────────┘ │ │ [用户] 你好 │ │
|
|
|
|
|
|
│ │ │ │ │
|
|
|
|
|
|
│ [+ 新会话] │ │ [Agent] 你好!有什么可以帮你的? │ │
|
|
|
|
|
|
│ │ │ │ │
|
|
|
|
|
|
│ │ └────────────────────────────────────────────┘ │
|
|
|
|
|
|
│ │ │
|
|
|
|
|
|
│ │ ┌────────────────────────────────────────────┐ │
|
|
|
|
|
|
│ │ │ [附件] [输入消息...] [发送] │ │
|
|
|
|
|
|
│ │ └────────────────────────────────────────────┘ │
|
|
|
|
|
|
└──────────────┴──────────────────────────────────────────────────┘
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 开发计划
|
|
|
|
|
|
|
|
|
|
|
|
### Phase 1: 核心模块 (2-3 天)
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] 项目结构搭建
|
|
|
|
|
|
- [ ] 共享核心模块
|
|
|
|
|
|
- [ ] API 客户端
|
|
|
|
|
|
- [ ] WebSocket 连接管理
|
|
|
|
|
|
|
|
|
|
|
|
### Phase 2: Web 应用 (3-4 天)
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] 登录/注册页面
|
|
|
|
|
|
- [ ] 聊天界面
|
|
|
|
|
|
- [ ] 会话管理
|
|
|
|
|
|
- [ ] Agent 选择
|
|
|
|
|
|
|
|
|
|
|
|
### Phase 3: 桌面应用 (2-3 天)
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] Electron 集成
|
|
|
|
|
|
- [ ] 原生功能
|
|
|
|
|
|
- [ ] 打包发布
|
|
|
|
|
|
|
|
|
|
|
|
### Phase 4: 移动应用 (3-4 天)
|
|
|
|
|
|
|
|
|
|
|
|
- [ ] React Native 界面
|
|
|
|
|
|
- [ ] 移动端适配
|
|
|
|
|
|
- [ ] 推送通知
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 相关项目
|
|
|
|
|
|
|
|
|
|
|
|
- [PIT Router](http://localhost:3000/yunxiafei/pit-router) - 网关路由应用
|
|
|
|
|
|
- [PIT Channel](http://localhost:3000/yunxiafei/PIT_Channel) - OpenClaw Channel 插件
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 许可证
|
|
|
|
|
|
|
|
|
|
|
|
MIT License
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
*创建时间: 2026-03-14 | 作者: 小白 🐶*
|