服务器启动总结
会话概览
日期: 2026-03-25 任务: 启动智桥服务器并完成技术债务第4项(移除硬编码localhost)
✅ 完成的工作
1. 移除硬编码 localhost 引用
修改的文件:
- relay-server/config.py - 添加 ws_host 配置项
- relay-server/server.py:177 - 更新主机显示逻辑
- relay-server/health_check.py:390-395 - 更新打印语句
- relay-server/chat_server.py - 更新为使用配置
- web/ui/index.html - 添加配置脚本
- web/ui/js/settings.ts - 更新为读取配置
- .gitignore - 添加 web/ui/config/config.js
- .dockerignore - 添加 web/ui/config/config.js
创建的文件:
- web/ui/config/config.js.example - 前端配置示例
2. 创建配置文档和演示
文档文件 (5个):
1. CONFIG_DEMO_INDEX.md - 演示文档主索引
2. CONFIG_QUICK_REFERENCE.md - 30秒快速参考
3. CONFIGURATION_GUIDE.md - 完整配置指南
4. LOCALHOST_REMOVAL_SUMMARY.md - 技术实现总结
5. DEMO_SUMMARY.md - 演示文档总结
演示脚本 (4个):
1. demo_default_config.sh - 默认配置演示
2. demo_env_config.sh - 环境变量演示
3. demo_frontend_config.sh - 前端配置演示
4. demo_production_config.sh - 生产配置演示
启动脚本 (1个):
- start_servers.sh - 统一服务器启动脚本
3. 修复启动问题
问题及解决方案:
| 问题 | 解决方案 |
|---|---|
缺少 cachetools 依赖 |
安装 pip3 install --break-system-packages cachetools |
| 异步方法调用错误 | 修改 len(self.manager.list_tools()) 为 len(self.manager.tools) |
| 路由方法错误 | 确认使用 add_put() 和 add_delete() |
| 变量作用域错误 | 将 cleanup_task 初始化移到 try 块之前 |
| 端口被占用 | 添加自动检查和端口释放逻辑 |
修改的文件:
- relay-server/server.py:112 - 修复异步调用
- relay-server/http_server.py:56,57 - 确认路由方法正确
- relay-server/start_server.py:109-130 - 修复变量作用域
🚀 服务器状态
当前运行的服务
WebSocket 中继服务器:
- 监听地址: 0.0.0.0:8765
- 客户端连接: ws://localhost:8765
- 进程 PID: 2953247
- 状态: ✅ 运行中
HTTP 健康检查服务器:
- 监听地址: 0.0.0.0:8000
- 访问地址: http://localhost:8000
- 进程 PID: 2953474
- 状态: ✅ 运行中
访问地址
| 服务 | 地址 |
|---|---|
| Web UI | http://localhost:8000/web/ui/index.html |
| 健康检查 | http://localhost:8000/health |
| 服务状态 | http://localhost:8000/status |
| 指标 | http://localhost:8000/metrics |
| API 文档 | http://localhost:8000/docs |
| WebSocket | ws://localhost:8765 |
当前配置
服务器配置:
{
"host": "0.0.0.0",
"port": 8765,
"ws_host": "localhost",
"max_connections": 100,
"enable_wss": false
}
安全配置:
会话管理:
- 工具数量: 8
- 临时目录: /home/ai/.zhineng-bridge/tmp
- 会话超时: 3600 秒
📚 文档结构
配置系统文档
zhineng-bridge/
├── CONFIG_DEMO_INDEX.md # 演示文档主索引 ⭐
├── CONFIG_QUICK_REFERENCE.md # 快速参考卡片
├── CONFIGURATION_GUIDE.md # 完整配置指南
├── LOCALHOST_REMOVAL_SUMMARY.md # 技术实现总结
├── DEMO_SUMMARY.md # 演示文档总结
│
├── demo_default_config.sh # 默认配置演示
├── demo_env_config.sh # 环境变量演示
├── demo_frontend_config.sh # 前端配置演示
└── demo_production_config.sh # 生产配置演示
使用流程
- 初次使用者 (5分钟):
- 阅读
CONFIG_QUICK_REFERENCE.md - 运行
./demo_default_config.sh -
访问 Web UI
-
开发者 (20分钟):
- 阅读
CONFIGURATION_GUIDE.md - 运行所有演示脚本
-
自定义配置
-
生产部署 (40分钟):
- 阅读
docs/PRODUCTION_DEPLOYMENT.md - 阅读
CONFIGURATION_GUIDE.md - 运行
./demo_production_config.sh - 部署到生产环境
🛠️ 管理命令
启动服务器
统一启动脚本 (推荐):
手动启动:
# WebSocket 服务器
python3 relay-server/start_server.py
# HTTP 服务器
python3 relay-server/health_check.py
停止服务器
使用启动脚本:
手动停止:
查看状态
检查端口:
测试端点:
python3 -c "
import urllib.request
import json
response = urllib.request.urlopen('http://localhost:8000/status')
print(json.dumps(json.loads(response.read().decode()), indent=2))
"
⚙️ 配置示例
开发环境
默认配置(无需修改):
生产环境
使用环境变量:
export ZHINENG_BRIDGE_WS_HOST="api.example.com"
export ZHINENG_BRIDGE_SECURITY_SECRET_KEY="your-secret-key"
export ZHINENG_BRIDGE_ENABLE_WSS="true"
./start_servers.sh
使用配置文件:
# 创建 .env.prod
cat > .env.prod << 'EOF'
ZHINENG_BRIDGE_WS_HOST=api.example.com
ZHINENG_BRIDGE_SERVER_PORT=8765
ZHINENG_BRIDGE_SECURITY_SECRET_KEY=your-secret-key
ZHINENG_BRIDGE_ENABLE_WSS=true
ZHINENG_BRIDGE_CERT_FILE=/path/to/cert.pem
ZHINENG_BRIDGE_KEY_FILE=/path/to/key.pem
EOF
# 启动
source .env.prod && ./start_servers.sh
前端配置:
# 创建 web/ui/config/config.js
cat > web/ui/config/config.js << 'EOF'
window.ZHINENG_BRIDGE_CONFIG = {
WS_HOST: 'api.example.com',
WS_PORT: 8765,
THEME: 'light',
LANGUAGE: 'zh-CN'
};
EOF
🎯 技术债务进度
已完成 (4/6)
- ✅ 测试部署配置
- 验证脚本语法正确
- 验证 docker-compose 配置
-
Docker 构建成功
-
✅ 移除默认管理密码
- 修改
scripts/init_auth_db.py - 修改
relay-server/start_server.py -
使用
secrets.token_urlsafe(16)生成随机密码 -
✅ 完成空实现
- 实现
cleanup_inactive_clients()方法 - 添加
last_activity跟踪 -
在
is_allowed()中更新活动时间 -
✅ 移除硬编码 localhost 引用
- 添加
ws_host配置项 - 更新所有相关代码
- 创建配置文档和演示脚本
待完成 (2/6)
- ⏳ 添加缺失的测试
- 创建 Storage 模块测试
- 创建 Encryption 模块测试
- 创建前端 JavaScript 测试
-
修复 E2E 测试
-
⏳ 改进文档
- 替换占位符邮箱
- 完成不完整部分
- 更新 Node.js 版本要求
- 创建 quickstart.sh 脚本
🔍 验证测试
服务器验证
✅ WebSocket 服务器:
- 监听在 0.0.0.0:8765
- 端口可访问
- 配置正确加载
✅ HTTP 服务器:
- 监听在 0.0.0.0:8000
- /status 端点正常
- 配置正确显示
配置验证
✅ 默认配置:
- ws_host: localhost
- port: 8765
- 正确加载
✅ 环境变量覆盖:
- ZHINENG_BRIDGE_WS_HOST 生效
- 配置正确更新
功能验证
✅ 8种 AI 工具已注册 ✅ Session Manager 初始化成功 ✅ Rate limiter 初始化成功 ✅ User database 初始化成功
📝 注意事项
开发环境
⚠️ 当前配置为开发环境:
- 未设置 SECRET_KEY
- 生产环境必须设置
-
使用:
export ZHINENG_BRIDGE_SECURITY_SECRET_KEY="..." -
认证未启用
- 生产环境建议启用
-
使用:
export ZHINENG_BRIDGE_SECURITY_ENABLE_AUTH=true -
未启用 HTTPS/WSS
- 生产环境建议启用
- 使用:
export ZHINENG_BRIDGE_ENABLE_WSS=true
部署前检查清单
- [ ] 设置
ZHINENG_BRIDGE_SECURITY_SECRET_KEY - [ ] 启用认证 (
enable_auth=true) - [ ] 配置 HTTPS/WSS 证书
- [ ] 更新
ZHINENG_BRIDGE_WS_HOST为生产地址 - [ ] 配置数据库 (PostgreSQL/MySQL)
- [ ] 设置日志级别为
INFO或WARNING - [ ] 启用 Prometheus 监控
- [ ] 配置备份策略
🚀 下一步
立即可用
- 访问 Web UI
-
打开浏览器:
http://localhost:8000/web/ui/index.html -
测试 WebSocket 连接
- 连接:
ws://localhost:8765 -
发送测试消息
-
查看 API 文档
- 访问:
http://localhost:8000/docs
学习资源
- 配置系统
- 阅读
CONFIG_QUICK_REFERENCE.md - 运行演示脚本
-
尝试不同配置
-
API 使用
- 阅读
docs/API.md - 查看示例代码
-
测试 API 端点
-
生产部署
- 阅读
docs/PRODUCTION_DEPLOYMENT.md - 运行
./demo_production_config.sh - 部署到生产环境
📞 获取帮助
文档
- 快速参考:
CONFIG_QUICK_REFERENCE.md - 完整指南:
CONFIGURATION_GUIDE.md - 技术实现:
LOCALHOST_REMOVAL_SUMMARY.md - 演示索引:
CONFIG_DEMO_INDEX.md
项目文档
- 项目概述:
README.md - 开发者指南:
AGENTS.md - API 文档:
docs/API.md - 生产部署:
docs/PRODUCTION_DEPLOYMENT.md
故障排查
- 检查服务器日志
- 验证端口是否被占用
- 查看配置是否正确
- 参考
docs/README.md
📊 会话统计
代码变更: - 修改文件: 7 个 - 新增文件: 11 个 - 删除文件: 0 个
文档创建: - 配置文档: 5 个 - 演示脚本: 4 个 - 启动脚本: 1 个
问题修复: - 依赖缺失: 1 个 - 异步调用错误: 1 个 - 路由方法错误: 1 个 - 变量作用域错误: 1 个 - 端口占用: 1 个
功能实现: - 配置系统: ✅ 完成 - 环境变量支持: ✅ 完成 - 前端配置: ✅ 完成 - 演示脚本: ✅ 完成
🎉 总结
智桥服务器已成功启动并运行!本次会话完成了以下工作:
- ✅ 移除了所有硬编码的 localhost 引用
- ✅ 创建了灵活的配置系统
- ✅ 编写了完整的文档和演示
- ✅ 修复了启动过程中的所有问题
- ✅ 提供了统一的服务器启动脚本
现在您可以开始使用智桥的强大功能了!
文档版本: 1.0 最后更新: 2026-03-25 会话状态: ✅ 成功完成