mirror of
https://github.com/Minidoracat/mcp-feedback-enhanced.git
synced 2025-07-27 10:42:25 +08:00
643 lines
13 KiB
Markdown
643 lines
13 KiB
Markdown
# 部署指南
|
||
|
||
## 🚀 部署架構概覽
|
||
|
||
MCP Feedback Enhanced 支援多種部署環境,具備智能環境檢測和自適應配置能力。
|
||
|
||
### 部署拓撲圖
|
||
|
||
```mermaid
|
||
graph TB
|
||
subgraph "本地開發環境"
|
||
LOCAL[本地機器]
|
||
LOCAL_BROWSER[本地瀏覽器]
|
||
LOCAL --> LOCAL_BROWSER
|
||
end
|
||
|
||
subgraph "SSH 遠程環境"
|
||
REMOTE[遠程服務器]
|
||
SSH_TUNNEL[SSH 隧道]
|
||
LOCAL_CLIENT[本地客戶端]
|
||
REMOTE --> SSH_TUNNEL
|
||
SSH_TUNNEL --> LOCAL_CLIENT
|
||
end
|
||
|
||
subgraph "WSL 環境"
|
||
WSL[WSL 子系統]
|
||
WIN_BROWSER[Windows 瀏覽器]
|
||
WSL --> WIN_BROWSER
|
||
end
|
||
|
||
subgraph "容器化部署"
|
||
DOCKER[Docker 容器]
|
||
PORT_MAP[埠映射]
|
||
HOST[宿主機]
|
||
DOCKER --> PORT_MAP
|
||
PORT_MAP --> HOST
|
||
end
|
||
```
|
||
|
||
## 🛠️ 安裝和配置
|
||
|
||
### 系統要求
|
||
|
||
#### 最低要求
|
||
- **Python**: 3.11 或更高版本
|
||
- **內存**: 512MB 可用內存
|
||
- **磁盤**: 100MB 可用空間
|
||
- **網路**: 可訪問的網路連接
|
||
- **瀏覽器**: 支援 Web Audio API 的現代瀏覽器(v2.4.3 音效功能)
|
||
|
||
#### 推薦配置
|
||
- **Python**: 3.12+
|
||
- **內存**: 1GB+ 可用內存
|
||
- **磁盤**: 500MB+ 可用空間(包含音效文件存儲)
|
||
- **CPU**: 2 核心或更多
|
||
- **瀏覽器**: Chrome 90+, Firefox 88+, Safari 14+(完整功能支援)
|
||
|
||
### 安裝方式
|
||
|
||
#### 1. 使用 uvx(推薦)
|
||
```bash
|
||
# 直接運行
|
||
uvx mcp-feedback-enhanced@latest web
|
||
|
||
# 指定版本
|
||
uvx mcp-feedback-enhanced@2.4.3 web
|
||
```
|
||
|
||
#### 2. 使用 pip
|
||
```bash
|
||
# 安裝
|
||
pip install mcp-feedback-enhanced
|
||
|
||
# 運行
|
||
mcp-feedback-enhanced web
|
||
```
|
||
|
||
#### 3. 從源碼安裝
|
||
```bash
|
||
# 克隆倉庫
|
||
git clone https://github.com/Minidoracat/mcp-feedback-enhanced.git
|
||
cd mcp-feedback-enhanced
|
||
|
||
# 使用 uv 安裝
|
||
uv sync
|
||
|
||
# 運行
|
||
uv run python -m mcp_feedback_enhanced web
|
||
```
|
||
|
||
## 🌍 環境配置
|
||
|
||
### 環境檢測機制
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
START[啟動檢測] --> SSH{SSH 環境?}
|
||
SSH -->|是| SSH_CONFIG[SSH 配置]
|
||
SSH -->|否| WSL{WSL 環境?}
|
||
WSL -->|是| WSL_CONFIG[WSL 配置]
|
||
WSL -->|否| LOCAL_CONFIG[本地配置]
|
||
|
||
SSH_CONFIG --> TUNNEL[建立 SSH 隧道]
|
||
WSL_CONFIG --> WSL_BROWSER[WSL 瀏覽器開啟]
|
||
LOCAL_CONFIG --> LOCAL_BROWSER[本地瀏覽器開啟]
|
||
|
||
TUNNEL --> SUCCESS[部署成功]
|
||
WSL_BROWSER --> SUCCESS
|
||
LOCAL_BROWSER --> SUCCESS
|
||
```
|
||
|
||
### 1. 本地環境部署
|
||
|
||
**特點**:
|
||
- 直接在本地機器運行
|
||
- 自動開啟本地瀏覽器
|
||
- 最簡單的部署方式
|
||
|
||
**配置**:
|
||
```bash
|
||
# 運行命令
|
||
mcp-feedback-enhanced web
|
||
|
||
# 自動檢測並開啟瀏覽器
|
||
# 默認地址: http://localhost:8000
|
||
```
|
||
|
||
### 2. SSH 遠程環境部署
|
||
|
||
**特點**:
|
||
- 在遠程服務器運行服務
|
||
- 自動建立 SSH 隧道
|
||
- 本地瀏覽器訪問遠程服務
|
||
|
||
**配置步驟**:
|
||
|
||
1. **在遠程服務器安裝**:
|
||
```bash
|
||
# SSH 連接到遠程服務器
|
||
ssh user@remote-server
|
||
|
||
# 安裝服務
|
||
pip install mcp-feedback-enhanced
|
||
```
|
||
|
||
2. **運行服務**:
|
||
```bash
|
||
# 在遠程服務器運行
|
||
mcp-feedback-enhanced web --host 0.0.0.0 --port 8000
|
||
```
|
||
|
||
3. **建立 SSH 隧道**(自動或手動):
|
||
```bash
|
||
# 手動建立隧道(如果自動檢測失敗)
|
||
ssh -L 8000:localhost:8000 user@remote-server
|
||
```
|
||
|
||
### 3. WSL 環境部署
|
||
|
||
**特點**:
|
||
- 在 WSL 子系統中運行
|
||
- 自動開啟 Windows 瀏覽器
|
||
- 跨系統無縫集成
|
||
|
||
**配置**:
|
||
```bash
|
||
# 在 WSL 中運行
|
||
mcp-feedback-enhanced web
|
||
|
||
# 自動檢測 WSL 環境並開啟 Windows 瀏覽器
|
||
```
|
||
|
||
### 4. 容器化部署
|
||
|
||
#### Docker 部署
|
||
```dockerfile
|
||
# Dockerfile
|
||
FROM python:3.12-slim
|
||
|
||
WORKDIR /app
|
||
COPY . .
|
||
|
||
RUN pip install mcp-feedback-enhanced
|
||
|
||
EXPOSE 8000
|
||
|
||
CMD ["mcp-feedback-enhanced", "web", "--host", "0.0.0.0", "--port", "8000"]
|
||
```
|
||
|
||
```bash
|
||
# 構建和運行
|
||
docker build -t mcp-feedback-enhanced .
|
||
docker run -p 8000:8000 mcp-feedback-enhanced
|
||
```
|
||
|
||
#### Docker Compose
|
||
```yaml
|
||
# docker-compose.yml
|
||
version: '3.8'
|
||
|
||
services:
|
||
mcp-feedback:
|
||
build: .
|
||
ports:
|
||
- "8000:8000"
|
||
environment:
|
||
- ENVIRONMENT=docker
|
||
volumes:
|
||
- ./projects:/app/projects
|
||
restart: unless-stopped
|
||
```
|
||
|
||
## ⚙️ 配置選項
|
||
|
||
### 命令行參數
|
||
|
||
```bash
|
||
mcp-feedback-enhanced web [OPTIONS]
|
||
```
|
||
|
||
| 參數 | 類型 | 預設值 | 描述 |
|
||
|------|------|--------|------|
|
||
| `--host` | `str` | `localhost` | 綁定的主機地址 |
|
||
| `--port` | `int` | `8000` | 服務埠號 |
|
||
| `--debug` | `bool` | `False` | 啟用調試模式 |
|
||
| `--no-browser` | `bool` | `False` | 不自動開啟瀏覽器 |
|
||
| `--timeout` | `int` | `600` | 預設會話超時時間(秒) |
|
||
| `--audio-enabled` | `bool` | `True` | 啟用音效通知(v2.4.3 新增) |
|
||
| `--session-retention` | `int` | `72` | 會話歷史保存時間(小時,v2.4.3 新增) |
|
||
|
||
### 環境變數
|
||
|
||
```bash
|
||
# 設置環境變數
|
||
export MCP_FEEDBACK_HOST=0.0.0.0
|
||
export MCP_FEEDBACK_PORT=9000
|
||
export MCP_FEEDBACK_DEBUG=true
|
||
export MCP_FEEDBACK_TIMEOUT=1200
|
||
export MCP_FEEDBACK_AUDIO_ENABLED=true
|
||
export MCP_FEEDBACK_SESSION_RETENTION=72
|
||
```
|
||
|
||
### 配置文件
|
||
```json
|
||
// config.json
|
||
{
|
||
"server": {
|
||
"host": "localhost",
|
||
"port": 8000,
|
||
"debug": false
|
||
},
|
||
"session": {
|
||
"timeout": 600,
|
||
"max_connections": 5
|
||
},
|
||
"ui": {
|
||
"default_language": "zh-TW",
|
||
"theme": "light"
|
||
},
|
||
"audio": {
|
||
"enabled": true,
|
||
"default_volume": 75,
|
||
"max_custom_audios": 20,
|
||
"max_file_size_mb": 2
|
||
},
|
||
"session_history": {
|
||
"retention_hours": 72,
|
||
"max_retention_hours": 168,
|
||
"privacy_level": "full",
|
||
"auto_cleanup": true
|
||
}
|
||
}
|
||
```
|
||
|
||
## 🆕 v2.4.3 版本部署考慮
|
||
|
||
### 音效通知系統部署
|
||
|
||
#### 瀏覽器相容性檢查
|
||
```javascript
|
||
// 檢查 Web Audio API 支援
|
||
function checkAudioSupport() {
|
||
if (typeof Audio === 'undefined') {
|
||
console.warn('Web Audio API 不支援,音效功能將被停用');
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
```
|
||
|
||
#### 音效文件存儲配置
|
||
```json
|
||
{
|
||
"audio_storage": {
|
||
"type": "localStorage",
|
||
"max_size_mb": 10,
|
||
"compression": true,
|
||
"fallback_enabled": true
|
||
}
|
||
}
|
||
```
|
||
|
||
#### 自動播放政策處理
|
||
```bash
|
||
# 部署時需要考慮瀏覽器自動播放限制
|
||
# Chrome: 需要用戶交互後才能播放音效
|
||
# Firefox: 預設允許音效播放
|
||
# Safari: 需要用戶手勢觸發
|
||
```
|
||
|
||
### 會話管理重構部署
|
||
|
||
#### localStorage 容量規劃
|
||
```javascript
|
||
// 估算存儲需求
|
||
const estimatedStorage = {
|
||
sessions_per_day: 50,
|
||
average_session_size_kb: 5,
|
||
retention_days: 3,
|
||
total_size_mb: (50 * 5 * 3) / 1024 // 約 0.73 MB
|
||
};
|
||
```
|
||
|
||
#### 隱私設定配置
|
||
```json
|
||
{
|
||
"privacy_defaults": {
|
||
"user_message_recording": "full",
|
||
"retention_hours": 72,
|
||
"auto_cleanup": true,
|
||
"export_enabled": true
|
||
}
|
||
}
|
||
```
|
||
|
||
### 智能記憶功能部署
|
||
|
||
#### ResizeObserver 支援檢查
|
||
```javascript
|
||
// 檢查 ResizeObserver 支援
|
||
if (typeof ResizeObserver === 'undefined') {
|
||
console.warn('ResizeObserver 不支援,高度記憶功能將使用 fallback');
|
||
// 使用 window.resize 事件作為 fallback
|
||
}
|
||
```
|
||
|
||
#### 設定存儲優化
|
||
```json
|
||
{
|
||
"memory_settings": {
|
||
"debounce_delay_ms": 500,
|
||
"max_stored_heights": 10,
|
||
"cleanup_interval_hours": 24
|
||
}
|
||
}
|
||
```
|
||
|
||
## 🔧 運維管理
|
||
|
||
### 服務監控
|
||
|
||
#### 健康檢查端點
|
||
```bash
|
||
# 檢查服務狀態
|
||
curl http://localhost:8000/health
|
||
|
||
# 響應示例
|
||
{
|
||
"status": "healthy",
|
||
"version": "2.4.3",
|
||
"uptime": "2h 30m 15s",
|
||
"active_sessions": 1,
|
||
"features": {
|
||
"audio_notifications": true,
|
||
"session_history": true,
|
||
"smart_memory": true
|
||
},
|
||
"storage": {
|
||
"session_history_count": 25,
|
||
"custom_audio_count": 3,
|
||
"localStorage_usage_mb": 1.2
|
||
}
|
||
}
|
||
```
|
||
|
||
#### 日誌監控
|
||
```python
|
||
# 日誌配置
|
||
import logging
|
||
|
||
logging.basicConfig(
|
||
level=logging.INFO,
|
||
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
||
handlers=[
|
||
logging.FileHandler('mcp-feedback.log'),
|
||
logging.StreamHandler()
|
||
]
|
||
)
|
||
```
|
||
|
||
### 性能調優
|
||
|
||
#### 內存優化
|
||
```python
|
||
# 會話清理配置
|
||
SESSION_CLEANUP_INTERVAL = 300 # 5分鐘
|
||
SESSION_TIMEOUT = 600 # 10分鐘
|
||
MAX_CONCURRENT_SESSIONS = 10
|
||
```
|
||
|
||
#### 網路優化
|
||
```python
|
||
# WebSocket 配置
|
||
WEBSOCKET_PING_INTERVAL = 30
|
||
WEBSOCKET_PING_TIMEOUT = 10
|
||
MAX_WEBSOCKET_CONNECTIONS = 50
|
||
```
|
||
|
||
### 故障排除
|
||
|
||
#### 常見問題
|
||
|
||
**v2.4.3 新增問題**:
|
||
|
||
1. **音效無法播放**
|
||
```bash
|
||
# 檢查瀏覽器自動播放政策
|
||
# 解決方案:用戶需要先與頁面交互
|
||
console.log('請點擊頁面任意位置以啟用音效功能');
|
||
|
||
# 檢查音效文件格式
|
||
# 支援格式:MP3, WAV, OGG
|
||
# 最大文件大小:2MB
|
||
```
|
||
|
||
2. **會話歷史丟失**
|
||
```bash
|
||
# 檢查 localStorage 容量
|
||
# 解決方案:清理過期數據或增加保存期限
|
||
localStorage.getItem('sessionHistory');
|
||
|
||
# 檢查隱私設定
|
||
# 確認用戶訊息記錄等級設定正確
|
||
```
|
||
|
||
3. **輸入框高度不記憶**
|
||
```bash
|
||
# 檢查 ResizeObserver 支援
|
||
if (typeof ResizeObserver === 'undefined') {
|
||
console.warn('瀏覽器不支援 ResizeObserver');
|
||
}
|
||
|
||
# 檢查設定存儲
|
||
localStorage.getItem('combinedFeedbackTextHeight');
|
||
```
|
||
|
||
4. **埠被佔用**
|
||
```bash
|
||
# 檢查埠使用情況
|
||
netstat -tulpn | grep 8000
|
||
|
||
# 解決方案:使用不同埠
|
||
mcp-feedback-enhanced web --port 8001
|
||
```
|
||
|
||
2. **瀏覽器無法開啟**
|
||
```bash
|
||
# 手動開啟瀏覽器
|
||
mcp-feedback-enhanced web --no-browser
|
||
# 然後手動訪問 http://localhost:8000
|
||
```
|
||
|
||
3. **SSH 隧道失敗**
|
||
```bash
|
||
# 手動建立隧道
|
||
ssh -L 8000:localhost:8000 user@remote-server
|
||
|
||
# 或使用不同埠
|
||
ssh -L 8001:localhost:8000 user@remote-server
|
||
```
|
||
|
||
#### 調試模式
|
||
```bash
|
||
# 啟用詳細日誌
|
||
mcp-feedback-enhanced web --debug
|
||
|
||
# 查看詳細錯誤信息
|
||
export PYTHONPATH=.
|
||
python -m mcp_feedback_enhanced.debug
|
||
```
|
||
|
||
### 安全配置
|
||
|
||
#### 生產環境安全
|
||
```python
|
||
# 限制 CORS
|
||
app.add_middleware(
|
||
CORSMiddleware,
|
||
allow_origins=["https://yourdomain.com"],
|
||
allow_credentials=True,
|
||
allow_methods=["GET", "POST"],
|
||
allow_headers=["*"],
|
||
)
|
||
|
||
# 添加安全標頭
|
||
@app.middleware("http")
|
||
async def add_security_headers(request, call_next):
|
||
response = await call_next(request)
|
||
response.headers["X-Content-Type-Options"] = "nosniff"
|
||
response.headers["X-Frame-Options"] = "DENY"
|
||
response.headers["X-XSS-Protection"] = "1; mode=block"
|
||
return response
|
||
```
|
||
|
||
#### 防火牆配置
|
||
```bash
|
||
# Ubuntu/Debian
|
||
sudo ufw allow 8000/tcp
|
||
|
||
# CentOS/RHEL
|
||
sudo firewall-cmd --permanent --add-port=8000/tcp
|
||
sudo firewall-cmd --reload
|
||
```
|
||
|
||
## 📊 監控和指標
|
||
|
||
### 系統指標
|
||
- CPU 使用率
|
||
- 內存使用量
|
||
- 網路連接數
|
||
- 活躍會話數
|
||
|
||
### 業務指標
|
||
- 會話創建率
|
||
- 回饋提交率
|
||
- 平均回應時間
|
||
- 錯誤率
|
||
|
||
### v2.4.3 新增指標
|
||
- 音效播放成功率
|
||
- 會話歷史存儲使用量
|
||
- 自訂音效上傳數量
|
||
- 輸入框高度調整頻率
|
||
- localStorage 使用量
|
||
|
||
### 監控工具集成
|
||
```python
|
||
# Prometheus 指標
|
||
from prometheus_client import Counter, Histogram, Gauge
|
||
|
||
session_counter = Counter('mcp_sessions_total', 'Total sessions created')
|
||
response_time = Histogram('mcp_response_time_seconds', 'Response time')
|
||
active_sessions = Gauge('mcp_active_sessions', 'Active sessions')
|
||
|
||
# v2.4.3 新增指標
|
||
audio_plays = Counter('mcp_audio_plays_total', 'Total audio notifications played')
|
||
audio_errors = Counter('mcp_audio_errors_total', 'Total audio playback errors')
|
||
session_history_size = Gauge('mcp_session_history_size_bytes', 'Session history storage size')
|
||
custom_audio_count = Gauge('mcp_custom_audio_count', 'Number of custom audio files')
|
||
height_adjustments = Counter('mcp_height_adjustments_total', 'Total textarea height adjustments')
|
||
```
|
||
|
||
---
|
||
|
||
## 🔄 版本升級指南
|
||
|
||
### 從 v2.4.2 升級到 v2.4.3
|
||
|
||
#### 1. 備份現有數據
|
||
```bash
|
||
# 備份用戶設定
|
||
cp ~/.mcp-feedback/settings.json ~/.mcp-feedback/settings.json.backup
|
||
|
||
# 備份提示詞數據
|
||
cp ~/.mcp-feedback/prompts.json ~/.mcp-feedback/prompts.json.backup
|
||
```
|
||
|
||
#### 2. 升級軟體
|
||
```bash
|
||
# 使用 uvx 升級
|
||
uvx mcp-feedback-enhanced@2.4.3 web
|
||
|
||
# 或使用 pip 升級
|
||
pip install --upgrade mcp-feedback-enhanced==2.4.3
|
||
```
|
||
|
||
#### 3. 驗證新功能
|
||
```bash
|
||
# 檢查音效功能
|
||
curl http://localhost:8000/health | jq '.features.audio_notifications'
|
||
|
||
# 檢查會話歷史功能
|
||
curl http://localhost:8000/health | jq '.features.session_history'
|
||
|
||
# 檢查智能記憶功能
|
||
curl http://localhost:8000/health | jq '.features.smart_memory'
|
||
```
|
||
|
||
#### 4. 配置遷移
|
||
```json
|
||
// 新增的配置項目會自動使用預設值
|
||
{
|
||
"audio": {
|
||
"enabled": true,
|
||
"volume": 75,
|
||
"selectedAudioId": "default-beep"
|
||
},
|
||
"sessionHistory": {
|
||
"retentionHours": 72,
|
||
"privacyLevel": "full"
|
||
},
|
||
"smartMemory": {
|
||
"heightMemoryEnabled": true
|
||
}
|
||
}
|
||
```
|
||
|
||
### 回滾指南
|
||
|
||
如果需要回滾到 v2.4.2:
|
||
|
||
```bash
|
||
# 停止服務
|
||
pkill -f mcp-feedback-enhanced
|
||
|
||
# 安裝舊版本
|
||
pip install mcp-feedback-enhanced==2.4.2
|
||
|
||
# 恢復備份設定
|
||
cp ~/.mcp-feedback/settings.json.backup ~/.mcp-feedback/settings.json
|
||
|
||
# 重新啟動服務
|
||
mcp-feedback-enhanced web
|
||
```
|
||
|
||
---
|
||
|
||
**版本**: 2.4.3
|
||
**最後更新**: 2025年6月14日
|
||
**維護者**: Minidoracat
|
||
**新功能**: 音效通知系統、會話管理重構、智能記憶功能、一鍵複製
|
||
**完成**: 架構文檔體系已更新完成,包含 v2.4.3 版本的完整技術文檔和部署指南。
|